summaryrefslogtreecommitdiffstats
path: root/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/authenticator/FxAccountAuthenticatorService.java
blob: d138e6c45a2e739a8a2e1c3af1cf711aefe6d4a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

package org.mozilla.gecko.fxa.authenticator;

import org.mozilla.gecko.background.common.log.Logger;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

public class FxAccountAuthenticatorService extends Service {
  public static final String LOG_TAG = FxAccountAuthenticatorService.class.getSimpleName();

  // Lazily initialized by <code>getAuthenticator</code>.
  protected FxAccountAuthenticator accountAuthenticator;

  protected synchronized FxAccountAuthenticator getAuthenticator() {
    if (accountAuthenticator == null) {
      accountAuthenticator = new FxAccountAuthenticator(this);
    }

    return accountAuthenticator;
  }

  @Override
  public void onCreate() {
    Logger.debug(LOG_TAG, "onCreate");

    accountAuthenticator = getAuthenticator();
  }

  @Override
  public IBinder onBind(Intent intent) {
    Logger.debug(LOG_TAG, "onBind");

    if (intent == null) {
      // Should never happen, but can -- Bug 1025937.
      return null;
    }

    if (!android.accounts.AccountManager.ACTION_AUTHENTICATOR_INTENT.equals(intent.getAction())) {
      return null;
    }

    final FxAccountAuthenticator authenticator = getAuthenticator();
    if (authenticator == null) {
      // Should never happen.
      return null;
    }

    return authenticator.getIBinder();
  }
}