Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/signin/AccountSigninView.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/AccountFirstRunView.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountSigninView.java |
| similarity index 85% |
| rename from chrome/android/java/src/org/chromium/chrome/browser/firstrun/AccountFirstRunView.java |
| rename to chrome/android/java/src/org/chromium/chrome/browser/signin/AccountSigninView.java |
| index 856c7d2bc0fc791d629afc0c546085aad5b44c80..6c57ea364a03b038ceb8e32b5af01f93a6714b0b 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/AccountFirstRunView.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountSigninView.java |
| @@ -2,7 +2,7 @@ |
| // 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; |
| +package org.chromium.chrome.browser.signin; |
| import android.content.Context; |
| import android.graphics.Bitmap; |
| @@ -25,9 +25,13 @@ import android.widget.TextView; |
| import org.chromium.base.ApiCompatibilityUtils; |
| import org.chromium.chrome.R; |
| +import org.chromium.chrome.browser.firstrun.ImageCarousel; |
| import org.chromium.chrome.browser.firstrun.ImageCarousel.ImageCarouselPositionChangeListener; |
| +import org.chromium.chrome.browser.firstrun.ProfileDataCache; |
| +import org.chromium.chrome.browser.preferences.PrefServiceBridge; |
| import org.chromium.chrome.browser.profiles.ProfileDownloader; |
| -import org.chromium.chrome.browser.signin.SigninManager; |
| +import org.chromium.chrome.browser.sync.ui.ConfirmImportSyncDataFragment; |
| +import org.chromium.signin.InvestigatedScenario; |
| import org.chromium.sync.signin.AccountManagerHelper; |
| import org.chromium.ui.text.SpanApplier; |
| import org.chromium.ui.text.SpanApplier.SpanInfo; |
| @@ -37,10 +41,10 @@ import java.util.List; |
| /** |
| * This view allows the user to select an account to log in to, add an account, |
| * cancel account selection, etc. Users of this class should |
| - * {@link AccountFirstRunView#setListener(Listener)} after the view has been |
| + * {@link AccountSigninView#setListener(Listener)} after the view has been |
| * inflated. |
| */ |
| -public class AccountFirstRunView extends FrameLayout |
| +public class AccountSigninView extends FrameLayout |
| implements ImageCarouselPositionChangeListener, ProfileDownloader.Observer { |
| /** |
| @@ -59,7 +63,7 @@ public class AccountFirstRunView extends FrameLayout |
| /** |
| * The user selected an account. |
| - * This call will be followed by either {@link #onSettingsClicked} or |
| + * This call will be followed immediately by either {@link #onSettingsClicked} or |
| * {@link #onDoneClicked}. |
| * @param accountName The name of the account |
| */ |
| @@ -82,6 +86,17 @@ public class AccountFirstRunView extends FrameLayout |
| * @param forcedAccountName The name of the forced-sign-in account |
| */ |
| public void onFailedToSetForcedAccount(String forcedAccountName); |
| + |
| + /** |
| + * The user has selected an account to sign into but has previous account information. |
| + * You should deal with the conflict (for example displaying ConfirmImportSyncDataFragment) |
| + * and ensure the callback is used afterwards. |
| + * @param oldAccountName Name of the previously signed in account. |
| + * @param newAccountName Name of the account we are hoping to sign in to. |
| + * @param callback A callback that must be called after the conflict is dealt with. |
| + */ |
| + public void onPreviousAccountFound(String oldAccountName, String newAccountName, |
|
gogerald1
2016/02/22 23:32:19
Showing ConfirmImportSyncDataFragment seems the on
PEConn
2016/02/23 15:01:53
Unfortunately we need a fragment manager to create
|
| + ConfirmImportSyncDataFragment.Listener callback); |
| } |
| private class SpinnerOnItemSelectedListener implements AdapterView.OnItemSelectedListener { |
| @@ -107,7 +122,7 @@ public class AccountFirstRunView extends FrameLayout |
| } |
| } |
| - private static final String TAG = "AccountFirstRunView"; |
| + private static final String TAG = "AccountSigninView"; |
| private static final int EXPERIMENT_TITLE_VARIANT_MASK = 1; |
| private static final int EXPERIMENT_SUMMARY_VARIANT_MASK = 2; |
| @@ -140,7 +155,7 @@ public class AccountFirstRunView extends FrameLayout |
| private boolean mHorizontalModeEnabled = true; |
| private boolean mShowSettingsSpan = true; |
| - public AccountFirstRunView(Context context, AttributeSet attrs) { |
| + public AccountSigninView(Context context, AttributeSet attrs) { |
| super(context, attrs); |
| mAccountManagerHelper = AccountManagerHelper.get(getContext().getApplicationContext()); |
| } |
| @@ -182,16 +197,16 @@ public class AccountFirstRunView extends FrameLayout |
| mDescriptionText = (TextView) findViewById(R.id.description); |
| // For the spans to be clickable. |
| mDescriptionText.setMovementMethod(LinkMovementMethod.getInstance()); |
| - mDescriptionTextId = R.string.fre_account_choice_description; |
| + mDescriptionTextId = R.string.signin_account_choice_description; |
| // TODO(peconn): Ensure this is changed to R.string.cancel when used in Settings > Sign In. |
| - mCancelButtonTextId = R.string.fre_skip_text; |
| + mCancelButtonTextId = R.string.no_thanks; |
| // Set the invisible TextView to contain the longest text the visible TextView can hold. |
| // It assumes that the signed in description for child accounts is the longest text. |
| ((TextView) findViewById(R.id.longest_description)).setText(getSignedInDescription(true)); |
| - mAddAnotherAccount = getResources().getString(R.string.fre_add_account); |
| + mAddAnotherAccount = getResources().getString(R.string.signin_add_account); |
| mSpinner = (Spinner) findViewById(R.id.google_accounts_spinner); |
| mSpinnerBackground = mSpinner.getBackground(); |
| @@ -213,13 +228,13 @@ public class AccountFirstRunView extends FrameLayout |
| public boolean performAccessibilityAction(View host, int action, Bundle args) { |
| if (mSpinner.getContentDescription() == null) { |
| mSpinner.setContentDescription(getResources().getString( |
| - R.string.accessibility_fre_account_spinner)); |
| + R.string.accessibility_signin_account_spinner)); |
| } |
| return super.performAccessibilityAction(host, action, args); |
| } |
| }); |
| - showSignInPage(); |
| + showSigninPage(); |
| } |
| @Override |
| @@ -236,7 +251,7 @@ public class AccountFirstRunView extends FrameLayout |
| // A new account has been added and the visibility has returned to us. |
| // The updateAccounts function will have selected the new account. |
| // Shortcut to confirm sign in page. |
| - showConfirmSignInPage(); |
| + checkForPreviousAccountThenShowConfirmSigninPage(); |
| } |
| } |
| } |
| @@ -247,7 +262,7 @@ public class AccountFirstRunView extends FrameLayout |
| assert MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.EXACTLY; |
| int width = MeasureSpec.getSize(widthMeasureSpec); |
| int height = MeasureSpec.getSize(heightMeasureSpec); |
| - LinearLayout content = (LinearLayout) findViewById(R.id.fre_content); |
| + LinearLayout content = (LinearLayout) findViewById(R.id.content); |
| int paddingStart = 0; |
| if (mHorizontalModeEnabled |
| && width >= 2 * getResources().getDimension(R.dimen.fre_image_carousel_width) |
| @@ -297,7 +312,8 @@ public class AccountFirstRunView extends FrameLayout |
| } |
| mDescriptionTextId = (experimentGroup & EXPERIMENT_SUMMARY_VARIANT_MASK) != 0 |
| - ? R.string.sign_in_to_chrome_summary_variant : R.string.sign_in_to_chrome_summary; |
| + ? R.string.signin_sign_in_to_chrome_summary_variant |
| + : R.string.sign_in_to_chrome_summary; |
| if ((experimentGroup & EXPERIMENT_LAYOUT_VARIANT_MASK) != 0) { |
| mImageCarousel.setVisibility(GONE); |
| @@ -307,7 +323,7 @@ public class AccountFirstRunView extends FrameLayout |
| illustrationView.setBackgroundColor(ApiCompatibilityUtils.getColor(getResources(), |
| R.color.illustration_background_color)); |
| - LinearLayout linearLayout = (LinearLayout) findViewById(R.id.fre_account_linear_layout); |
| + LinearLayout linearLayout = (LinearLayout) findViewById(R.id.account_linear_layout); |
| linearLayout.addView(illustrationView, 0); |
| } |
| } |
| @@ -359,14 +375,14 @@ public class AccountFirstRunView extends FrameLayout |
| mArrayAdapter.addAll(mAccountNames); |
| mArrayAdapter.add(mAddAnotherAccount); |
| - setUpSignInButton(true); |
| + setUpSigninButton(true); |
| mDescriptionText.setText(mDescriptionTextId); |
| } else { |
| mSpinner.setVisibility(View.GONE); |
| mArrayAdapter.add(mAddAnotherAccount); |
| - setUpSignInButton(false); |
| - mDescriptionText.setText(R.string.fre_no_account_choice_description); |
| + setUpSigninButton(false); |
| + mDescriptionText.setText(R.string.signin_no_account_choice_description); |
| } |
| if (mProfileData != null) mProfileData.update(); |
| @@ -438,18 +454,21 @@ public class AccountFirstRunView extends FrameLayout |
| if (name == null) name = mProfileData.getFullName(mAccountName); |
| } |
| if (name == null) name = mAccountName; |
| - String text = String.format(getResources().getString(R.string.fre_hi_name), name); |
| + String text = String.format(getResources().getString(R.string.signin_hi_name), name); |
| mTitle.setText(text); |
| } |
| /** |
| * Updates the view to show that sign in has completed. |
| + * This should only be used if the user is not currently signed in (eg on the First |
| + * Run Experience). |
| */ |
| public void switchToSignedMode() { |
| - showConfirmSignInPage(); |
| + // TODO(peconn): Add a warning here |
| + showConfirmSigninPage(); |
| } |
| - private void showSignInPage() { |
| + private void showSigninPage() { |
| mSignedIn = false; |
| mTitle.setText(R.string.sign_in_to_chrome); |
| @@ -463,7 +482,7 @@ public class AccountFirstRunView extends FrameLayout |
| mImageCarousel.setSignedInMode(false); |
| } |
| - private void showConfirmSignInPage() { |
| + private void showConfirmSigninPage() { |
| mSignedIn = true; |
| updateProfileName(); |
| @@ -499,6 +518,25 @@ public class AccountFirstRunView extends FrameLayout |
| mImageCarousel.setSignedInMode(true); |
| } |
| + private void checkForPreviousAccountThenShowConfirmSigninPage() { |
| + if (SigninInvestigator.investigate(mAccountName) == InvestigatedScenario.DIFFERENT_ACCOUNT |
| + && mAccountName != PrefServiceBridge.getInstance().getSyncLastAccountName()) { |
| + |
| + mListener.onPreviousAccountFound( |
| + PrefServiceBridge.getInstance().getSyncLastAccountName(), |
| + mAccountName, |
| + new ConfirmImportSyncDataFragment.Listener(){ |
| + @Override |
| + public void onConfirm() { |
| + showConfirmSigninPage(); |
| + } |
| + } |
| + ); |
| + } else { |
| + showConfirmSigninPage(); |
| + } |
| + } |
| + |
| private void setUpCancelButton() { |
| setNegativeButtonVisible(true); |
| @@ -512,17 +550,17 @@ public class AccountFirstRunView extends FrameLayout |
| }); |
| } |
| - private void setUpSignInButton(boolean hasAccounts) { |
| + private void setUpSigninButton(boolean hasAccounts) { |
| if (hasAccounts) { |
| mPositiveButton.setText(R.string.choose_account_sign_in); |
| - mPositiveButton.setOnClickListener(new OnClickListener() { |
| + mPositiveButton.setOnClickListener(new OnClickListener(){ |
| @Override |
| public void onClick(View v) { |
| - showConfirmSignInPage(); |
| + checkForPreviousAccountThenShowConfirmSigninPage(); |
| } |
| }); |
| } else { |
| - mPositiveButton.setText(R.string.fre_no_accounts); |
| + mPositiveButton.setText(R.string.signin_no_accounts); |
| mPositiveButton.setOnClickListener(new OnClickListener() { |
| @Override |
| public void onClick(View v) { |
| @@ -540,13 +578,13 @@ public class AccountFirstRunView extends FrameLayout |
| mNegativeButton.setOnClickListener(new OnClickListener() { |
| @Override |
| public void onClick(View v) { |
|
gogerald1
2016/02/22 23:32:19
RecordUserAction.record("Signin_Undo_Signin");
PEConn
2016/02/23 15:01:53
Done.
|
| - showSignInPage(); |
| + showSigninPage(); |
| } |
| }); |
| } |
| private void setUpConfirmButton() { |
| - mPositiveButton.setText(getResources().getText(R.string.fre_accept)); |
| + mPositiveButton.setText(getResources().getText(R.string.signin_accept)); |
| mPositiveButton.setOnClickListener(new OnClickListener() { |
| @Override |
| public void onClick(View v) { |
| @@ -568,10 +606,10 @@ public class AccountFirstRunView extends FrameLayout |
| private String getSignedInDescription(boolean childAccount) { |
| if (childAccount) { |
| - return getResources().getString(R.string.fre_signed_in_description) + '\n' |
| - + getResources().getString(R.string.fre_signed_in_description_uca_addendum); |
| + return getResources().getString(R.string.signin_signed_in_description) + '\n' |
| + + getResources().getString(R.string.signin_signed_in_description_uca_addendum); |
| } else { |
| - return getResources().getString(R.string.fre_signed_in_description); |
| + return getResources().getString(R.string.signin_signed_in_description); |
| } |
| } |