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 @@
found in the LICENSE file. -->
<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
android:persistent="false"
android:key="use_sync_and_all_services"
......
......@@ -57,12 +57,14 @@ public class SignInPreference
int SIGNED_IN = 3;
}
private boolean mPersonalizedPromoEnabled = true;
private boolean mWasGenericSigninPromoDisplayed;
private boolean mViewEnabled;
private @Nullable SigninPromoController mSigninPromoController;
private final ProfileDataCache mProfileDataCache;
private @State int mState;
private @Nullable Runnable mStateChangedCallback;
private boolean mObserversAdded;
/**
* Constructor for inflating from XML.
......@@ -93,6 +95,7 @@ public class SignInPreference
if (syncService != null) {
syncService.addSyncStateChangedListener(this);
}
mObserversAdded = true;
update();
}
......@@ -110,6 +113,7 @@ public class SignInPreference
if (syncService != null) {
syncService.removeSyncStateChangedListener(this);
}
mObserversAdded = false;
}
/**
......@@ -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. */
@State
public int getState() {
......@@ -154,9 +166,9 @@ public class SignInPreference
return;
}
if (ChromePreferenceManager.getInstance().readBoolean(
ChromePreferenceManager.SETTINGS_PERSONALIZED_SIGNIN_PROMO_DISMISSED, false)) {
// Don't show the new promo if it was dismissed by the user.
boolean personalizedPromoDismissed = ChromePreferenceManager.getInstance().readBoolean(
ChromePreferenceManager.SETTINGS_PERSONALIZED_SIGNIN_PROMO_DISMISSED, false);
if (!mPersonalizedPromoEnabled || personalizedPromoDismissed) {
setupGenericPromo();
return;
}
......
......@@ -77,6 +77,7 @@ public class SyncAndServicesPreferences extends PreferenceFragment
@VisibleForTesting
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_SYNC_AND_PERSONALIZATION = "sync_and_personalization";
......@@ -124,6 +125,7 @@ public class SyncAndServicesPreferences extends PreferenceFragment
private final ManagedPreferenceDelegate mManagedPreferenceDelegate =
createManagedPreferenceDelegate();
private SignInPreference mSigninPreference;
private ChromeSwitchPreference mUseSyncAndAllServices;
private SigninExpandablePreferenceGroup mSyncGroup;
......@@ -170,6 +172,9 @@ public class SyncAndServicesPreferences extends PreferenceFragment
PreferenceUtils.addPreferencesFromResource(this, R.xml.sync_and_services_preferences);
mSigninPreference = (SignInPreference) findPreference(PREF_SIGNIN);
mSigninPreference.setPersonalizedPromoEnabled(false);
mUseSyncAndAllServices =
(ChromeSwitchPreference) findPreference(PREF_USE_SYNC_AND_ALL_SERVICES);
mUseSyncAndAllServices.setOnPreferenceChangeListener(this);
......@@ -294,6 +299,8 @@ public class SyncAndServicesPreferences extends PreferenceFragment
mProfileSyncService.setSetupInProgress(true);
mProfileSyncService.addSyncStateChangedListener(this);
updateSyncStateFromAndroidSyncSettings();
mSigninPreference.registerForUpdates();
}
@Override
......@@ -318,6 +325,8 @@ public class SyncAndServicesPreferences extends PreferenceFragment
// 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"
mProfileSyncService.setSetupInProgress(false);
mSigninPreference.unregisterForUpdates();
}
@Override
......@@ -777,7 +786,20 @@ public class SyncAndServicesPreferences extends PreferenceFragment
}
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());
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