- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / android / testshell / java / src / org / chromium / chrome / testshell / signin / AccountsChangedReceiver.java
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.testshell.signin;
6
7 import android.accounts.Account;
8 import android.accounts.AccountManager;
9 import android.content.BroadcastReceiver;
10 import android.content.Context;
11 import android.content.Intent;
12 import android.util.Log;
13
14 import org.chromium.base.ThreadUtils;
15 import org.chromium.chrome.browser.profiles.Profile;
16 import org.chromium.chrome.browser.signin.OAuth2TokenService;
17 import org.chromium.content.browser.BrowserStartupController;
18 import org.chromium.sync.signin.ChromeSigninController;
19
20 /**
21  * A BroadcastReceiver for acting on changes to Android accounts.
22  */
23 public class AccountsChangedReceiver extends BroadcastReceiver {
24     private static final String TAG = "AccountsChangedReceiver";
25
26     @Override
27     public void onReceive(final Context context, Intent intent) {
28         if (AccountManager.LOGIN_ACCOUNTS_CHANGED_ACTION.equals(intent.getAction())) {
29             final Account signedInUser =
30                     ChromeSigninController.get(context).getSignedInUser();
31             if (signedInUser != null) {
32                 BrowserStartupController.StartupCallback callback =
33                         new BrowserStartupController.StartupCallback() {
34                     @Override
35                     public void onSuccess(boolean alreadyStarted) {
36                         OAuth2TokenService.getForProfile(Profile.getLastUsedProfile())
37                                 .validateAccounts(context);
38                     }
39
40                     @Override
41                     public void onFailure() {
42                         Log.w(TAG, "Failed to start browser process.");
43                     }
44                 };
45                 startBrowserProcessOnUiThread(context, callback);
46             }
47         }
48     }
49
50     private static void startBrowserProcessOnUiThread(final Context context,
51             final BrowserStartupController.StartupCallback callback) {
52         ThreadUtils.runOnUiThread(new Runnable() {
53             @Override
54             public void run() {
55                 BrowserStartupController.get(context).startBrowserProcessesAsync(callback);
56             }
57         });
58     }
59 }