// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package org.chromium.chrome.testshell.signin; import android.accounts.Account; import android.accounts.AccountManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; import org.chromium.base.ThreadUtils; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.signin.OAuth2TokenService; import org.chromium.content.browser.BrowserStartupController; import org.chromium.sync.signin.ChromeSigninController; /** * A BroadcastReceiver for acting on changes to Android accounts. */ public class AccountsChangedReceiver extends BroadcastReceiver { private static final String TAG = "AccountsChangedReceiver"; @Override public void onReceive(final Context context, Intent intent) { if (AccountManager.LOGIN_ACCOUNTS_CHANGED_ACTION.equals(intent.getAction())) { final Account signedInUser = ChromeSigninController.get(context).getSignedInUser(); if (signedInUser != null) { BrowserStartupController.StartupCallback callback = new BrowserStartupController.StartupCallback() { @Override public void onSuccess(boolean alreadyStarted) { OAuth2TokenService.getForProfile(Profile.getLastUsedProfile()) .validateAccounts(context); } @Override public void onFailure() { Log.w(TAG, "Failed to start browser process."); } }; startBrowserProcessOnUiThread(context, callback); } } } private static void startBrowserProcessOnUiThread(final Context context, final BrowserStartupController.StartupCallback callback) { ThreadUtils.runOnUiThread(new Runnable() { @Override public void run() { BrowserStartupController.get(context).startBrowserProcessesAsync(callback); } }); } }