Commit 7236de69 authored by Boris Sazonov's avatar Boris Sazonov Committed by Commit Bot

[Unity][Android] Add sign-in preference to SyncAndServicesPreferences

This CL adds SignInPreference to SyncAndServicesPreferences that is only
visible when the user is not signed in. SignInPreference in
SyncAndServicesPreferences shouldn't show personalized sign-in promo, so
setPersonalizedPromoEnabled method is added to SignInPreference. This CL
also hides 'Use Sync and all services' toggle and collapses 'Sync and
personalization' section in SyncAndServicesPreferences if the user is
not signed in.

Bug: 814728
Change-Id: If09fa20144bc4669fe03e95cb5719347aa652afc
Reviewed-on: https://chromium-review.googlesource.com/1187154Reviewed-by: default avatarTheresa <twellington@chromium.org>
Commit-Queue: Boris Sazonov <bsazonov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585687}
parent 3043b5ce
...@@ -4,6 +4,10 @@ ...@@ -4,6 +4,10 @@
found in the LICENSE file. --> found in the LICENSE file. -->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<org.chromium.chrome.browser.preferences.SignInPreference
android:key="sign_in"
android:title="@string/sign_in_to_chrome"/>
<org.chromium.chrome.browser.preferences.ChromeSwitchPreference <org.chromium.chrome.browser.preferences.ChromeSwitchPreference
android:persistent="false" android:persistent="false"
android:key="use_sync_and_all_services" android:key="use_sync_and_all_services"
......
...@@ -57,12 +57,14 @@ public class SignInPreference ...@@ -57,12 +57,14 @@ public class SignInPreference
int SIGNED_IN = 3; int SIGNED_IN = 3;
} }
private boolean mPersonalizedPromoEnabled = true;
private boolean mWasGenericSigninPromoDisplayed; private boolean mWasGenericSigninPromoDisplayed;
private boolean mViewEnabled; private boolean mViewEnabled;
private @Nullable SigninPromoController mSigninPromoController; private @Nullable SigninPromoController mSigninPromoController;
private final ProfileDataCache mProfileDataCache; private final ProfileDataCache mProfileDataCache;
private @State int mState; private @State int mState;
private @Nullable Runnable mStateChangedCallback; private @Nullable Runnable mStateChangedCallback;
private boolean mObserversAdded;
/** /**
* Constructor for inflating from XML. * Constructor for inflating from XML.
...@@ -93,6 +95,7 @@ public class SignInPreference ...@@ -93,6 +95,7 @@ public class SignInPreference
if (syncService != null) { if (syncService != null) {
syncService.addSyncStateChangedListener(this); syncService.addSyncStateChangedListener(this);
} }
mObserversAdded = true;
update(); update();
} }
...@@ -110,6 +113,7 @@ public class SignInPreference ...@@ -110,6 +113,7 @@ public class SignInPreference
if (syncService != null) { if (syncService != null) {
syncService.removeSyncStateChangedListener(this); syncService.removeSyncStateChangedListener(this);
} }
mObserversAdded = false;
} }
/** /**
...@@ -130,6 +134,14 @@ public class SignInPreference ...@@ -130,6 +134,14 @@ public class SignInPreference
} }
} }
/** Enables/disables personalized promo mode. */
public void setPersonalizedPromoEnabled(boolean personalizedPromoEnabled) {
if (mPersonalizedPromoEnabled == personalizedPromoEnabled) return;
mPersonalizedPromoEnabled = personalizedPromoEnabled;
// Can't update until observers are added.
if (mObserversAdded) update();
}
/** Returns the state of the preference. Not valid until registerForUpdates is called. */ /** Returns the state of the preference. Not valid until registerForUpdates is called. */
@State @State
public int getState() { public int getState() {
...@@ -154,9 +166,9 @@ public class SignInPreference ...@@ -154,9 +166,9 @@ public class SignInPreference
return; return;
} }
if (ChromePreferenceManager.getInstance().readBoolean( boolean personalizedPromoDismissed = ChromePreferenceManager.getInstance().readBoolean(
ChromePreferenceManager.SETTINGS_PERSONALIZED_SIGNIN_PROMO_DISMISSED, false)) { ChromePreferenceManager.SETTINGS_PERSONALIZED_SIGNIN_PROMO_DISMISSED, false);
// Don't show the new promo if it was dismissed by the user. if (!mPersonalizedPromoEnabled || personalizedPromoDismissed) {
setupGenericPromo(); setupGenericPromo();
return; return;
} }
......
...@@ -77,6 +77,7 @@ public class SyncAndServicesPreferences extends PreferenceFragment ...@@ -77,6 +77,7 @@ public class SyncAndServicesPreferences extends PreferenceFragment
@VisibleForTesting @VisibleForTesting
public static final String FRAGMENT_PASSPHRASE_TYPE = "password_type"; public static final String FRAGMENT_PASSPHRASE_TYPE = "password_type";
private static final String PREF_SIGNIN = "sign_in";
private static final String PREF_USE_SYNC_AND_ALL_SERVICES = "use_sync_and_all_services"; private static final String PREF_USE_SYNC_AND_ALL_SERVICES = "use_sync_and_all_services";
private static final String PREF_SYNC_AND_PERSONALIZATION = "sync_and_personalization"; private static final String PREF_SYNC_AND_PERSONALIZATION = "sync_and_personalization";
...@@ -124,6 +125,7 @@ public class SyncAndServicesPreferences extends PreferenceFragment ...@@ -124,6 +125,7 @@ public class SyncAndServicesPreferences extends PreferenceFragment
private final ManagedPreferenceDelegate mManagedPreferenceDelegate = private final ManagedPreferenceDelegate mManagedPreferenceDelegate =
createManagedPreferenceDelegate(); createManagedPreferenceDelegate();
private SignInPreference mSigninPreference;
private ChromeSwitchPreference mUseSyncAndAllServices; private ChromeSwitchPreference mUseSyncAndAllServices;
private SigninExpandablePreferenceGroup mSyncGroup; private SigninExpandablePreferenceGroup mSyncGroup;
...@@ -170,6 +172,9 @@ public class SyncAndServicesPreferences extends PreferenceFragment ...@@ -170,6 +172,9 @@ public class SyncAndServicesPreferences extends PreferenceFragment
PreferenceUtils.addPreferencesFromResource(this, R.xml.sync_and_services_preferences); PreferenceUtils.addPreferencesFromResource(this, R.xml.sync_and_services_preferences);
mSigninPreference = (SignInPreference) findPreference(PREF_SIGNIN);
mSigninPreference.setPersonalizedPromoEnabled(false);
mUseSyncAndAllServices = mUseSyncAndAllServices =
(ChromeSwitchPreference) findPreference(PREF_USE_SYNC_AND_ALL_SERVICES); (ChromeSwitchPreference) findPreference(PREF_USE_SYNC_AND_ALL_SERVICES);
mUseSyncAndAllServices.setOnPreferenceChangeListener(this); mUseSyncAndAllServices.setOnPreferenceChangeListener(this);
...@@ -294,6 +299,8 @@ public class SyncAndServicesPreferences extends PreferenceFragment ...@@ -294,6 +299,8 @@ public class SyncAndServicesPreferences extends PreferenceFragment
mProfileSyncService.setSetupInProgress(true); mProfileSyncService.setSetupInProgress(true);
mProfileSyncService.addSyncStateChangedListener(this); mProfileSyncService.addSyncStateChangedListener(this);
updateSyncStateFromAndroidSyncSettings(); updateSyncStateFromAndroidSyncSettings();
mSigninPreference.registerForUpdates();
} }
@Override @Override
...@@ -318,6 +325,8 @@ public class SyncAndServicesPreferences extends PreferenceFragment ...@@ -318,6 +325,8 @@ public class SyncAndServicesPreferences extends PreferenceFragment
// setting up. This means: 1) If the user leaves the Sync Settings screen (via back) // setting up. This means: 1) If the user leaves the Sync Settings screen (via back)
// or, 2) If the user leaves the screen by tapping on "Manage Synced Data" // or, 2) If the user leaves the screen by tapping on "Manage Synced Data"
mProfileSyncService.setSetupInProgress(false); mProfileSyncService.setSetupInProgress(false);
mSigninPreference.unregisterForUpdates();
} }
@Override @Override
...@@ -777,7 +786,20 @@ public class SyncAndServicesPreferences extends PreferenceFragment ...@@ -777,7 +786,20 @@ public class SyncAndServicesPreferences extends PreferenceFragment
} }
private void updatePreferences() { private void updatePreferences() {
mUseSyncAndAllServices.setChecked(UnifiedConsentServiceBridge.isUnifiedConsentGiven()); boolean useSyncAndAllServices = UnifiedConsentServiceBridge.isUnifiedConsentGiven();
String signedInAccountName = ChromeSigninController.get().getSignedInAccountName();
if (signedInAccountName != null) {
getPreferenceScreen().removePreference(mSigninPreference);
getPreferenceScreen().addPreference(mUseSyncAndAllServices);
mUseSyncAndAllServices.setChecked(useSyncAndAllServices);
mSyncGroup.setEnabled(true);
} else {
getPreferenceScreen().addPreference(mSigninPreference);
getPreferenceScreen().removePreference(mUseSyncAndAllServices);
mSyncGroup.setExpanded(false);
mSyncGroup.setEnabled(false);
}
mSearchSuggestions.setChecked(mPrefServiceBridge.isSearchSuggestEnabled()); mSearchSuggestions.setChecked(mPrefServiceBridge.isSearchSuggestEnabled());
mNetworkPredictions.setChecked(mPrefServiceBridge.getNetworkPredictionEnabled()); mNetworkPredictions.setChecked(mPrefServiceBridge.getNetworkPredictionEnabled());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment