Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2727)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/signin/AccountSigninView.java

Issue 1698043006: Created the dialog offering the user to merge their account data or keep it (Closed) Base URL: maybelle.lon.corp.google.com:/usr/local/google/code/clankium/src@sync_settings
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 84%
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 5b83dffa4902df32d303f58437f9749883960160..bb73a8c9d240e2e74399a47fae8e04b648e8fccb 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,8 +2,9 @@
// 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.app.FragmentManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
@@ -24,10 +25,16 @@ import android.widget.Spinner;
import android.widget.TextView;
import org.chromium.base.ApiCompatibilityUtils;
+import org.chromium.base.metrics.RecordUserAction;
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.ConfirmImportSyncDataDialog;
+import org.chromium.chrome.browser.sync.ui.ConfirmImportSyncDataDialog.ImportSyncType;
+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 +44,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
- * inflated.
+ * {@link AccountSigninView#setListener(Listener)} and
+ * {@link AccountSigninView#setDelegate(Delegate) after the view has been inflated.
*/
-public class AccountFirstRunView extends FrameLayout
+public class AccountSigninView extends FrameLayout
implements ImageCarouselPositionChangeListener, ProfileDownloader.Observer {
/**
@@ -59,7 +66,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
*/
@@ -84,6 +91,18 @@ public class AccountFirstRunView extends FrameLayout
public void onFailedToSetForcedAccount(String forcedAccountName);
}
+ // TODO(peconn): Investigate expanding the Delegate to simplify the Listener implementations.
+
+ /**
+ * Provides UI objects for new UI component creation.
+ */
+ public interface Delegate {
+ /**
+ * Provides a FragmentManager for the view to create dialogs.
+ */
+ public FragmentManager getFragmentManager();
+ }
+
private class SpinnerOnItemSelectedListener implements AdapterView.OnItemSelectedListener {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
@@ -95,6 +114,7 @@ public class AccountFirstRunView extends FrameLayout
mSpinner.setSelection(oldPosition, false);
mListener.onNewAccount();
+ RecordUserAction.record("Signin_AddAccountToDevice");
} else {
mAccountName = accountName;
if (!mPositionSetProgrammatically) mImageCarousel.scrollTo(pos, false, false);
@@ -107,7 +127,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;
@@ -126,6 +146,7 @@ public class AccountFirstRunView extends FrameLayout
private TextView mTitle;
private TextView mDescriptionText;
private Listener mListener;
+ private Delegate mDelegate;
private Spinner mSpinner;
private Drawable mSpinnerBackground;
private String mForcedAccountName;
@@ -140,7 +161,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 +203,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 +234,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 +257,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,10 +268,10 @@ 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)
+ && width >= 2 * getResources().getDimension(R.dimen.signin_image_carousel_width)
&& width > height) {
content.setOrientation(LinearLayout.HORIZONTAL);
paddingStart = getResources().getDimensionPixelSize(R.dimen.fre_margin);
@@ -297,7 +318,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 +329,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);
}
}
@@ -332,6 +354,14 @@ public class AccountFirstRunView extends FrameLayout
}
/**
+ * Set the UI object creation delegate. See {@link Delegate}
+ * @param delegate The delegate.
+ */
+ public void setDelegate(Delegate delegate) {
+ mDelegate = delegate;
+ }
+
+ /**
* Refresh the list of available system account.
* @return Whether any new accounts were added (the first newly added account will now be
* selected).
@@ -359,14 +389,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 +468,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 +496,7 @@ public class AccountFirstRunView extends FrameLayout
mImageCarousel.setSignedInMode(false);
}
- private void showConfirmSignInPage() {
+ private void showConfirmSigninPage() {
mSignedIn = true;
updateProfileName();
@@ -499,6 +532,26 @@ public class AccountFirstRunView extends FrameLayout
mImageCarousel.setSignedInMode(true);
}
+ private void checkForPreviousAccountThenShowConfirmSigninPage() {
+ if (SigninInvestigator.investigate(mAccountName)
+ == InvestigatedScenario.DIFFERENT_ACCOUNT) {
+
+ ConfirmImportSyncDataDialog.showNewInstance(
+ PrefServiceBridge.getInstance().getSyncLastAccountName(),
+ mAccountName,
+ ImportSyncType.PREVIOUS_DATA_FOUND,
+ mDelegate.getFragmentManager(),
+ new ConfirmImportSyncDataDialog.Listener() {
+ @Override
+ public void onConfirm() {
+ showConfirmSigninPage();
+ }
+ });
+ } else {
+ showConfirmSigninPage();
+ }
+ }
+
private void setUpCancelButton() {
setNegativeButtonVisible(true);
@@ -512,20 +565,21 @@ 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() {
@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) {
+ RecordUserAction.record("Signin_AddAccountToDevice");
mListener.onNewAccount();
}
});
@@ -540,13 +594,14 @@ public class AccountFirstRunView extends FrameLayout
mNegativeButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- showSignInPage();
+ RecordUserAction.record("Signin_Undo_Signin");
+ 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 +623,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);
}
}

Powered by Google App Engine
This is Rietveld 408576698