From b022082dde8822156eb2fcd3a1c156b566119521 Mon Sep 17 00:00:00 2001 From: knn Date: Tue, 22 Sep 2015 02:46:30 -0700 Subject: [PATCH] [Android]Don't check for child account/EDU device for every activity. Extract a Forced Signin Processor out of FirstRun Signin Processor which checks for child accounts and EDU device and is only triggered: -Once per Chrome Application startup. -On updates to accounts on the device. Invariants: FRE ToS checks and FRE pending signin checks still happen on every activity for now. Dependent patchsets: http://crrev.com/1341423005 http://crrev.com/1353393002 NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=518830 Review URL: https://codereview.chromium.org/1357643002 Cr-Commit-Position: refs/heads/master@{#350133} --- .../chromium/chrome/browser/ChromeApplication.java | 14 ++ .../chrome/browser/ChromeTabbedActivity.java | 12 +- .../chrome/browser/document/DocumentActivity.java | 4 +- .../browser/firstrun/FirstRunFlowSequencer.java | 8 +- ...Processor.java => FirstRunSigninProcessor.java} | 177 ++++++--------------- .../browser/firstrun/ForcedSigninProcessor.java | 71 +++++++++ .../browser/preferences/SignInPreference.java | 4 +- .../services/AndroidEduAndChildAccountHelper.java | 25 +-- .../chromium/chrome/browser/sync/FirstRunTest.java | 8 +- 9 files changed, 166 insertions(+), 157 deletions(-) rename chrome/android/java/src/org/chromium/chrome/browser/firstrun/{FirstRunSignInProcessor.java => FirstRunSigninProcessor.java} (54%) create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/firstrun/ForcedSigninProcessor.java diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java index 63a86de38a53..a486ec6402d2 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java @@ -47,6 +47,7 @@ import org.chromium.chrome.browser.download.DownloadManagerService; import org.chromium.chrome.browser.externalauth.ExternalAuthUtils; import org.chromium.chrome.browser.feedback.EmptyFeedbackReporter; import org.chromium.chrome.browser.feedback.FeedbackReporter; +import org.chromium.chrome.browser.firstrun.ForcedSigninProcessor; import org.chromium.chrome.browser.gsa.GSAHelper; import org.chromium.chrome.browser.help.HelpAndFeedback; import org.chromium.chrome.browser.identity.UniqueIdentificationGeneratorFactory; @@ -74,6 +75,7 @@ import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferences; import org.chromium.chrome.browser.preferences.website.SingleWebsitePreferences; import org.chromium.chrome.browser.printing.PrintingControllerFactory; import org.chromium.chrome.browser.rlz.RevenueStats; +import org.chromium.chrome.browser.services.AccountsChangedReceiver; import org.chromium.chrome.browser.services.AndroidEduOwnerCheckCallback; import org.chromium.chrome.browser.services.GoogleServicesManager; import org.chromium.chrome.browser.share.ShareHelper; @@ -429,6 +431,18 @@ public class ChromeApplication extends ContentApplication { if (mInitializedSharedClasses) return; mInitializedSharedClasses = true; + ForcedSigninProcessor.start(this); + AccountsChangedReceiver.addObserver(new AccountsChangedReceiver.AccountsChangedObserver() { + @Override + public void onAccountsChanged(Context context, Intent intent) { + ThreadUtils.runOnUiThread(new Runnable() { + @Override + public void run() { + ForcedSigninProcessor.start(ChromeApplication.this); + } + }); + } + }); GoogleServicesManager.get(this).onMainActivityStart(); RevenueStats.getInstance(); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java index ebd84f4f0b95..5179ef25fe0b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java @@ -13,7 +13,6 @@ import android.os.Build; import android.os.Bundle; import android.os.SystemClock; import android.text.TextUtils; -import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; @@ -23,6 +22,7 @@ import android.view.WindowManager; import android.widget.FrameLayout; import org.chromium.base.CommandLine; +import org.chromium.base.Log; import org.chromium.base.MemoryPressureListener; import org.chromium.base.TraceEvent; import org.chromium.base.VisibleForTesting; @@ -51,7 +51,7 @@ import org.chromium.chrome.browser.document.DocumentUma; import org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkUtils; import org.chromium.chrome.browser.firstrun.FirstRunActivity; import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer; -import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor; +import org.chromium.chrome.browser.firstrun.FirstRunSigninProcessor; import org.chromium.chrome.browser.firstrun.FirstRunStatus; import org.chromium.chrome.browser.metrics.LaunchMetrics; import org.chromium.chrome.browser.metrics.UmaUtils; @@ -236,8 +236,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode private void refreshSignIn() { if (mIsOnFirstRun) return; - android.util.Log.i(TAG, "in refreshSignIn before starting the sign-in processor"); - FirstRunSignInProcessor.start(this); + Log.i(TAG, "in refreshSignIn before starting the sign-in processor"); + FirstRunSigninProcessor.start(this); } @Override @@ -815,10 +815,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode final boolean isIntentActionMain = getIntent() != null && TextUtils.equals(getIntent().getAction(), Intent.ACTION_MAIN); - android.util.Log.i(TAG, "begin FirstRunFlowSequencer.checkIfFirstRunIsNecessary"); + Log.i(TAG, "begin FirstRunFlowSequencer.checkIfFirstRunIsNecessary"); final Intent freIntent = FirstRunFlowSequencer.checkIfFirstRunIsNecessary( this, isIntentActionMain); - android.util.Log.i(TAG, "end FirstRunFlowSequencer.checkIfFirstRunIsNecessary"); + Log.i(TAG, "end FirstRunFlowSequencer.checkIfFirstRunIsNecessary"); if (freIntent == null) return; mIsOnFirstRun = true; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/document/DocumentActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/document/DocumentActivity.java index dae55c14f282..8e72f5b8e75a 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/document/DocumentActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/document/DocumentActivity.java @@ -33,7 +33,7 @@ import org.chromium.chrome.browser.compositor.bottombar.contextualsearch.Context import org.chromium.chrome.browser.compositor.layouts.LayoutManagerDocument; import org.chromium.chrome.browser.document.DocumentTab.DocumentTabObserver; import org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkUtils; -import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor; +import org.chromium.chrome.browser.firstrun.FirstRunSigninProcessor; import org.chromium.chrome.browser.firstrun.FirstRunStatus; import org.chromium.chrome.browser.metrics.UmaUtils; import org.chromium.chrome.browser.ntp.NewTabPage; @@ -213,7 +213,7 @@ public class DocumentActivity extends ChromeActivity { } } - FirstRunSignInProcessor.start(this); + FirstRunSigninProcessor.start(this); if (!preferenceManager.hasAttemptedMigrationOnUpgrade()) { InitializationObserver observer = new InitializationObserver( diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java index 699e721ba2e6..674258f7cd16 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java @@ -74,7 +74,7 @@ public abstract class FirstRunFlowSequencer { mHasChildAccount = hasChildAccount(); processFreEnvironment(); } - }.start(mActivity); + }.start(mActivity.getApplicationContext()); } /** @@ -173,6 +173,10 @@ public abstract class FirstRunFlowSequencer { freProperties.putBoolean(AccountFirstRunFragment.IS_CHILD_ACCOUNT, mHasChildAccount); onFlowIsKnown(mActivity, freProperties); + if (mHasChildAccount || forceEduSignIn) { + // Child and Edu forced signins are processed independently. + FirstRunSigninProcessor.setFirstRunFlowSignInComplete(context, true); + } } /** @@ -188,7 +192,7 @@ public abstract class FirstRunFlowSequencer { } // Mark the FRE flow as complete and set the sign-in flow preferences if necessary. - FirstRunSignInProcessor.finalizeFirstRunFlowState(activity, data); + FirstRunSigninProcessor.finalizeFirstRunFlowState(activity, data); } /** diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunSignInProcessor.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunSigninProcessor.java similarity index 54% rename from chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunSignInProcessor.java rename to chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunSigninProcessor.java index 925e065b148f..787e16d733ce 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunSignInProcessor.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunSigninProcessor.java @@ -11,14 +11,13 @@ import android.content.Intent; import android.os.Bundle; import android.preference.PreferenceManager; import android.text.TextUtils; -import android.util.Log; import org.chromium.base.CommandLine; +import org.chromium.base.Log; import org.chromium.base.VisibleForTesting; import org.chromium.chrome.browser.ChromeSwitches; import org.chromium.chrome.browser.preferences.Preferences; import org.chromium.chrome.browser.preferences.PreferencesLauncher; -import org.chromium.chrome.browser.services.AndroidEduAndChildAccountHelper; import org.chromium.chrome.browser.signin.SigninManager; import org.chromium.chrome.browser.signin.SigninManager.SignInFlowObserver; import org.chromium.chrome.browser.sync.ui.SyncCustomizationFragment; @@ -28,10 +27,7 @@ import org.chromium.sync.signin.ChromeSigninController; /** * A helper to perform all necessary steps for the automatic FRE sign in. - * The helper performs: - * - necessary Android EDU and child account checks; - * - automatic non-interactive forced sign in for Android EDU and child accounts; and - * - any pending automatic non-interactive request to sign in from the First Run Experience. + * The helper performs any pending request to sign in from the First Run Experience. * The helper calls the observer's onSignInComplete() if * - nothing needs to be done, or when * - the sign in is complete. @@ -40,11 +36,10 @@ import org.chromium.sync.signin.ChromeSigninController; * OnSignInCancelled. * * Usage: - * new FirstRunSignInProcessor(activity, shouldShowNotification){ - * override OnSignInComplete and OnSignInCancelled - * }.start(). + * FirstRunSigninProcessor.start(activity). */ -public class FirstRunSignInProcessor { +public final class FirstRunSigninProcessor { + private static final String TAG = "FirstRunSigninProc"; /** * SharedPreferences preference names to keep the state of the First Run Experience. */ @@ -53,147 +48,70 @@ public class FirstRunSignInProcessor { "first_run_signin_account_name"; private static final String FIRST_RUN_FLOW_SIGNIN_SETUP_SYNC = "first_run_signin_setup_sync"; - private final Activity mActivity; - private final SigninManager mSignInManager; - private final SignInFlowObserver mObserver; - private final boolean mShowSignInNotification; - - private boolean mIsAndroidEduDevice; - private boolean mHasChildAccount; - private int mSignInType; - /** * Initiates the automatic sign-in process in background. * * @param activity The context for the FRE parameters processor. */ - public static void start(Activity activity) { - new FirstRunSignInProcessor(activity, false, null); - } - - private FirstRunSignInProcessor(Activity activity, boolean showSignInNotification, - SignInFlowObserver observer) { - mActivity = activity; - mSignInManager = SigninManager.get(activity); - mObserver = observer; - mShowSignInNotification = showSignInNotification; - - new AndroidEduAndChildAccountHelper() { - @Override - public void onParametersReady() { - mIsAndroidEduDevice = isAndroidEduDevice(); - mHasChildAccount = hasChildAccount(); - mSignInManager.onFirstRunCheckDone(); - mSignInType = mHasChildAccount - ? SigninManager.SIGNIN_TYPE_FORCED_CHILD_ACCOUNT - : (mIsAndroidEduDevice - ? SigninManager.SIGNIN_TYPE_FORCED_EDU - : SigninManager.SIGNIN_TYPE_INTERACTIVE); - - // We allow to pass-through without FRE being complete only if - // - FRE is disabled, or - // - FRE hasn't been completed, but the user has already seen the ToS in - // the Setup Wizard. - boolean firstRunFlowComplete = FirstRunStatus.getFirstRunFlowComplete(mActivity); - if (CommandLine.getInstance().hasSwitch(ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE) - || (!firstRunFlowComplete - && ToSAckedReceiver.checkAnyUserHasSeenToS(mActivity))) { - mSignInManager.onFirstRunCheckDone(); - if (mObserver != null) mObserver.onSigninComplete(); - return; - } - - // Otherwise, the FRE must have been completed, so let's force it. - if (!firstRunFlowComplete) { - requestToFireIntentAndFinish(); - return; - } - - if (!getFirstRunFlowSignInComplete(mActivity)) { - // Check if we need to complete any outstanding sign-in requests from FRE. - // It setFirstRunFlowSignInComplete() once the sign-in is complete or if - // it's unnecessary. - completeFreSignInRequest(); - } else { - processAutomaticSignIn(); - } - } - }.start(mActivity); - } - - /** - * Processes the fully automatic non-FRE-related forced sign-in. - * This is used to enforce the environment for Android EDU and child accounts. - */ - private void processAutomaticSignIn() { - // This is only for non-interactive forced sign-ins. - assert getFirstRunFlowSignInComplete(mActivity); - assert !mHasChildAccount || !mIsAndroidEduDevice; - if (!mIsAndroidEduDevice && !mHasChildAccount) return; - - final Account[] googleAccounts = - AccountManagerHelper.get(mActivity).getGoogleAccounts(); - SigninManager signinManager = SigninManager.get(mActivity.getApplicationContext()); - if (!FeatureUtilities.canAllowSync(mActivity) - || !signinManager.isSignInAllowed() - || googleAccounts.length != 1) return; - - signinManager.signInToSelectedAccount(mActivity, googleAccounts[0], - mSignInType, SigninManager.SIGNIN_SYNC_IMMEDIATELY, mShowSignInNotification, - mObserver); - } - - /** - * Processes an outstanding FRE sign-in request if any. - */ - private void completeFreSignInRequest() { - // This is only for completion of the FRE sign-in process. - assert !getFirstRunFlowSignInComplete(mActivity); + public static void start(final Activity activity) { + SigninManager signinManager = SigninManager.get(activity.getApplicationContext()); + signinManager.onFirstRunCheckDone(); + + boolean firstRunFlowComplete = FirstRunStatus.getFirstRunFlowComplete(activity); + // We skip signin and the FRE only if + // - FRE is disabled, or + // - FRE hasn't been completed, but the user has already seen the ToS in the Setup Wizard. + if (CommandLine.getInstance().hasSwitch(ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE) + || (!firstRunFlowComplete && ToSAckedReceiver.checkAnyUserHasSeenToS(activity))) { + return; + } + // Otherwise, force trigger the FRE. + if (!firstRunFlowComplete) { + requestToFireIntentAndFinish(activity); + return; + } - final String accountName = getFirstRunFlowSignInAccountName(mActivity); - SigninManager signinManager = SigninManager.get(mActivity.getApplicationContext()); - if (!FeatureUtilities.canAllowSync(mActivity) - || !signinManager.isSignInAllowed() + // We are only processing signin from the FRE. + if (getFirstRunFlowSignInComplete(activity)) { + return; + } + final String accountName = getFirstRunFlowSignInAccountName(activity); + if (!FeatureUtilities.canAllowSync(activity) || !signinManager.isSignInAllowed() || TextUtils.isEmpty(accountName)) { - setFirstRunFlowSignInComplete(mActivity, true); - if (mObserver != null) mObserver.onSigninComplete(); + setFirstRunFlowSignInComplete(activity, true); return; } - final Account account = - AccountManagerHelper.get(mActivity).getAccountFromName(accountName); + final Account account = AccountManagerHelper.get(activity).getAccountFromName(accountName); if (account == null) { // TODO(aruslan): handle the account being removed during the FRE. - requestToFireIntentAndFinish(); + requestToFireIntentAndFinish(activity); return; } - final boolean delaySync = getFirstRunFlowSignInSetupSync(mActivity); + final boolean delaySync = getFirstRunFlowSignInSetupSync(activity); final int delaySyncType = delaySync ? SigninManager.SIGNIN_SYNC_SETUP_IN_PROGRESS : SigninManager.SIGNIN_SYNC_IMMEDIATELY; - signinManager.signInToSelectedAccount(mActivity, account, - mSignInType, delaySyncType, mShowSignInNotification, + signinManager.signInToSelectedAccount(activity, account, + SigninManager.SIGNIN_TYPE_INTERACTIVE, delaySyncType, false, new SignInFlowObserver() { private void completeSignIn() { // Show sync settings if user pressed the "Settings" button. if (delaySync) { - openSyncSettings( - ChromeSigninController.get(mActivity).getSignedInAccountName()); + openSyncSettings(activity); } - setFirstRunFlowSignInComplete(mActivity, true); + setFirstRunFlowSignInComplete(activity, true); } @Override public void onSigninComplete() { completeSignIn(); - if (mObserver != null) mObserver.onSigninComplete(); } @Override public void onSigninCancelled() { completeSignIn(); - if (mObserver != null) mObserver.onSigninCancelled(); } }); } @@ -202,30 +120,29 @@ public class FirstRunSignInProcessor { * Opens Sync settings as requested in the FRE sign-in dialog. * @param accountName The account to show the sync settings for. */ - private void openSyncSettings(final String accountName) { + private static void openSyncSettings(Activity activity) { + String accountName = ChromeSigninController.get(activity).getSignedInAccountName(); if (TextUtils.isEmpty(accountName)) return; Intent intent = PreferencesLauncher.createIntentForSettingsPage( - mActivity, SyncCustomizationFragment.class.getName()); + activity, SyncCustomizationFragment.class.getName()); Bundle args = new Bundle(); args.putString(SyncCustomizationFragment.ARGUMENT_ACCOUNT, accountName); intent.putExtra(Preferences.EXTRA_SHOW_FRAGMENT_ARGUMENTS, args); - mActivity.startActivity(intent); + activity.startActivity(intent); } /** * Starts the full FRE and finishes the current activity. */ - private void requestToFireIntentAndFinish() { - Log.e("FirstRunSignInProcessor", "Attempt to pass-through without completed FRE"); - if (mObserver != null) mObserver.onSigninCancelled(); + private static void requestToFireIntentAndFinish(Activity activity) { + Log.e(TAG, "Attempt to pass-through without completed FRE"); // Things went wrong -- we want the user to go through the full FRE. - FirstRunStatus.setFirstRunFlowComplete(mActivity, false); - setFirstRunFlowSignInComplete(mActivity, false); - setFirstRunFlowSignInAccountName(mActivity, null); - setFirstRunFlowSignInSetupSync(mActivity, false); - mActivity.startActivity(FirstRunFlowSequencer.createGenericFirstRunIntent( - mActivity, true)); + FirstRunStatus.setFirstRunFlowComplete(activity, false); + setFirstRunFlowSignInComplete(activity, false); + setFirstRunFlowSignInAccountName(activity, null); + setFirstRunFlowSignInSetupSync(activity, false); + activity.startActivity(FirstRunFlowSequencer.createGenericFirstRunIntent(activity, true)); } /** diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ForcedSigninProcessor.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ForcedSigninProcessor.java new file mode 100644 index 000000000000..f4b90b4007ac --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ForcedSigninProcessor.java @@ -0,0 +1,71 @@ +// Copyright 2015 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.browser.firstrun; + +import android.accounts.Account; +import android.content.Context; + +import org.chromium.chrome.browser.services.AndroidEduAndChildAccountHelper; +import org.chromium.chrome.browser.signin.SigninManager; +import org.chromium.chrome.browser.util.FeatureUtilities; +import org.chromium.sync.signin.AccountManagerHelper; +import org.chromium.sync.signin.ChromeSigninController; + +/** + * A helper to perform all necessary steps for forced sign in. + * The helper performs: + * - necessary Android EDU and child account checks; + * - automatic non-interactive forced sign in for Android EDU and child accounts; and + * The helper calls the observer's onSignInComplete() if + * - nothing needs to be done, or when + * - the sign in is complete. + * + * Usage: + * ForcedSigninProcessor.start(appContext). + */ +public final class ForcedSigninProcessor { + /* + * Only for static usage. + */ + private ForcedSigninProcessor() {} + + /** + * Check whether a forced automatic signin is required and process it if it is. + * This is triggered once per Chrome Application lifetime and everytime the Account state + * changes with early exit if an account has already been signed in. + */ + public static void start(final Context appContext) { + if (ChromeSigninController.get(appContext).isSignedIn()) return; + new AndroidEduAndChildAccountHelper() { + @Override + public void onParametersReady() { + boolean isAndroidEduDevice = isAndroidEduDevice(); + boolean hasChildAccount = hasChildAccount(); + // If neither a child account or and EDU device, we return. + if (!isAndroidEduDevice && !hasChildAccount) return; + // Child account and EDU device at the same time is not supported. + assert !(isAndroidEduDevice && hasChildAccount); + int signinType = hasChildAccount ? SigninManager.SIGNIN_TYPE_FORCED_CHILD_ACCOUNT + : SigninManager.SIGNIN_TYPE_FORCED_EDU; + processAutomaticSignIn(appContext, signinType); + } + }.start(appContext); + } + + /** + * Processes the fully automatic non-FRE-related forced sign-in. + * This is used to enforce the environment for Android EDU and child accounts. + */ + private static void processAutomaticSignIn(Context appContext, int signinType) { + final Account[] googleAccounts = AccountManagerHelper.get(appContext).getGoogleAccounts(); + SigninManager signinManager = SigninManager.get(appContext); + if (!FeatureUtilities.canAllowSync(appContext) || !signinManager.isSignInAllowed() + || googleAccounts.length != 1) { + return; + } + signinManager.signInToSelectedAccount(null, googleAccounts[0], signinType, + SigninManager.SIGNIN_SYNC_IMMEDIATELY, false, null); + } +} diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/SignInPreference.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/SignInPreference.java index b81883042921..38d7fdd17195 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/SignInPreference.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/SignInPreference.java @@ -15,7 +15,7 @@ import android.util.AttributeSet; import android.view.View; import org.chromium.chrome.R; -import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor; +import org.chromium.chrome.browser.firstrun.FirstRunSigninProcessor; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileDownloader; import org.chromium.chrome.browser.signin.AccountManagementFragment; @@ -51,7 +51,7 @@ public class SignInPreference extends Preference implements SignInAllowedObserve SigninManager manager = SigninManager.get(getContext()); manager.addSignInAllowedObserver(this); ProfileDownloader.addObserver(this); - FirstRunSignInProcessor.updateSigninManagerFirstRunCheckDone(getContext()); + FirstRunSigninProcessor.updateSigninManagerFirstRunCheckDone(getContext()); } /** diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/AndroidEduAndChildAccountHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/services/AndroidEduAndChildAccountHelper.java index 81c1c5e0c7dc..2b788d96c194 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/services/AndroidEduAndChildAccountHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/services/AndroidEduAndChildAccountHelper.java @@ -4,20 +4,23 @@ package org.chromium.chrome.browser.services; -import android.app.Activity; +import android.content.Context; +import org.chromium.base.Log; import org.chromium.chrome.browser.ChromeApplication; import org.chromium.chrome.browser.childaccounts.ChildAccountService; /** * A helper for Android EDU and child account checks. * Usage: - * new AndroidEduAndChildAccountHelper() { override onParametersReady() }.start(activity). + * new AndroidEduAndChildAccountHelper() { override onParametersReady() }.start(appContext). */ public abstract class AndroidEduAndChildAccountHelper implements ChildAccountService.HasChildAccountCallback, AndroidEduOwnerCheckCallback { private Boolean mIsAndroidEduDevice; private Boolean mHasChildAccount; + // Abbreviated to < 20 chars. + private static final String TAG = "EduChildHelper"; /** The callback called when Android EDU and child account parameters are known. */ public abstract void onParametersReady(); @@ -35,26 +38,26 @@ public abstract class AndroidEduAndChildAccountHelper /** * Starts fetching the Android EDU and child accounts information. * Calls onParametersReady() once the information is fetched. - * @param activity The context. + * @param appContext The application context. */ - public void start(Activity activity) { - android.util.Log.i("AndroidEduAndChildAccountHelper", "before checking child and EDU"); - ChildAccountService.getInstance(activity).checkHasChildAccount(this); - ((ChromeApplication) activity.getApplication()).checkIsAndroidEduDevice(this); + public void start(Context appContext) { + Log.d(TAG, "before checking child and EDU"); + ChildAccountService.getInstance(appContext).checkHasChildAccount(this); + ((ChromeApplication) appContext).checkIsAndroidEduDevice(this); // TODO(aruslan): Should we start a watchdog to kill if Child/Edu stuff takes too long? - android.util.Log.i("AndroidEduAndChildAccountHelper", "returning from start"); + Log.d(TAG, "returning from start"); } private void checkDone() { if (mIsAndroidEduDevice == null || mHasChildAccount == null) return; - android.util.Log.i("AndroidEduAndChildAccountHelper", "parameters are ready"); + Log.d(TAG, "parameters are ready"); onParametersReady(); } // AndroidEdu.OwnerCheckCallback: @Override public void onSchoolCheckDone(boolean isAndroidEduDevice) { - android.util.Log.i("AndroidEduAndChildAccountHelper", "onSchoolCheckDone"); + Log.d(TAG, "onSchoolCheckDone"); mIsAndroidEduDevice = isAndroidEduDevice; checkDone(); } @@ -62,7 +65,7 @@ public abstract class AndroidEduAndChildAccountHelper // ChildAccountManager.HasChildAccountCallback: @Override public void onChildAccountChecked(boolean hasChildAccount) { - android.util.Log.i("AndroidEduAndChildAccountHelper", "onChildAccountChecked"); + Log.d(TAG, "onChildAccountChecked"); mHasChildAccount = hasChildAccount; checkDone(); } diff --git a/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java b/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java index e228ddff2019..a44978dca13c 100644 --- a/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java +++ b/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java @@ -13,7 +13,7 @@ import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.Feature; import org.chromium.chrome.browser.ChromeSwitches; import org.chromium.chrome.browser.firstrun.FirstRunActivity; -import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor; +import org.chromium.chrome.browser.firstrun.FirstRunSigninProcessor; import org.chromium.chrome.test.util.browser.sync.SyncTestUtil; import org.chromium.sync.AndroidSyncSettings; @@ -60,16 +60,16 @@ public class FirstRunTest extends SyncTestBase { * @param showSyncSettings Whether to show the sync settings page. */ private void processFirstRun(String account, ShowSyncSettings showSyncSettings) { - FirstRunSignInProcessor.setFirstRunFlowSignInComplete(getActivity(), false); + FirstRunSigninProcessor.setFirstRunFlowSignInComplete(getActivity(), false); Bundle data = new Bundle(); data.putString(FirstRunActivity.RESULT_SIGNIN_ACCOUNT_NAME, account); data.putBoolean(FirstRunActivity.RESULT_SHOW_SYNC_SETTINGS, showSyncSettings == ShowSyncSettings.YES); - FirstRunSignInProcessor.finalizeFirstRunFlowState(getActivity(), data); + FirstRunSigninProcessor.finalizeFirstRunFlowState(getActivity(), data); ThreadUtils.runOnUiThreadBlocking(new Runnable() { @Override public void run() { - FirstRunSignInProcessor.start(getActivity()); + FirstRunSigninProcessor.start(getActivity()); } }); getInstrumentation().waitForIdleSync(); -- 2.11.4.GIT