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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/sync/ui/SyncCustomizationFragment.java

Issue 1660353002: Update account and sync management UX (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add TODO in comments for an additional task for the bug 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/sync/ui/SyncCustomizationFragment.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/SyncCustomizationFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/SyncCustomizationFragment.java
index 394fae03fc677eac8ba62089715f3c2c9561d288..ad7b3bdd6b76287eb979c66a4afab58ed743e0d7 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/SyncCustomizationFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/SyncCustomizationFragment.java
@@ -7,8 +7,8 @@ package org.chromium.chrome.browser.sync.ui;
import android.app.DialogFragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
+import android.content.Context;
import android.content.Intent;
-import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
@@ -25,14 +25,15 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.R;
-
import org.chromium.chrome.browser.autofill.PersonalDataManager;
import org.chromium.chrome.browser.childaccounts.ChildAccountService;
import org.chromium.chrome.browser.invalidation.InvalidationController;
import org.chromium.chrome.browser.preferences.ChromeSwitchPreference;
+import org.chromium.chrome.browser.preferences.SyncedAccountPreference;
import org.chromium.chrome.browser.sync.ProfileSyncService;
import org.chromium.sync.AndroidSyncSettings;
import org.chromium.sync.ModelType;
@@ -57,7 +58,6 @@ public class SyncCustomizationFragment extends PreferenceFragment
public static final String FRAGMENT_CUSTOM_PASSPHRASE = "custom_password";
@VisibleForTesting
public static final String FRAGMENT_PASSPHRASE_TYPE = "password_type";
-
@VisibleForTesting
public static final String PREFERENCE_SYNC_EVERYTHING = "sync_everything";
@VisibleForTesting
@@ -80,11 +80,11 @@ public class SyncCustomizationFragment extends PreferenceFragment
public static final String PREF_SYNC_SWITCH = "sync_switch";
@VisibleForTesting
public static final String PREFERENCE_SYNC_MANAGE_DATA = "sync_manage_data";
+ @VisibleForTesting
+ public static final String PREFERENCE_SYNC_ACCOUNT_LIST = "synced_account";
public static final String ARGUMENT_ACCOUNT = "account";
- private static final int ERROR_COLOR = Color.RED;
-
private ChromeSwitchPreference mSyncSwitchPreference;
private boolean mIsBackendInitialized;
private boolean mIsPassphraseRequired;
@@ -114,7 +114,6 @@ public class SyncCustomizationFragment extends PreferenceFragment
private Preference mSyncEncryption;
private Preference mManageSyncData;
private CheckBoxPreference[] mAllTypes;
- private boolean mCheckboxesInitialized;
private ProfileSyncService mProfileSyncService;
@@ -145,9 +144,9 @@ public class SyncCustomizationFragment extends PreferenceFragment
mManageSyncData = findPreference(PREFERENCE_SYNC_MANAGE_DATA);
mManageSyncData.setOnPreferenceClickListener(this);
- mAllTypes = new CheckBoxPreference[]{
- mSyncAutofill, mSyncBookmarks, mSyncOmnibox, mSyncPasswords,
- mSyncRecentTabs, mSyncSettings, mPaymentsIntegration
+ mAllTypes = new CheckBoxPreference[] {
+ mSyncAutofill, mSyncBookmarks, mSyncOmnibox, mSyncPasswords,
+ mSyncRecentTabs, mSyncSettings, mPaymentsIntegration
};
mSyncEverything.setOnPreferenceChangeListener(this);
@@ -268,6 +267,9 @@ public class SyncCustomizationFragment extends PreferenceFragment
}
PersonalDataManager.setPaymentsIntegrationEnabled(mPaymentsIntegration.isChecked());
// Setup is done. This was preventing sync from turning on even if it was enabled.
+ // TODO(crbug/557784): This needs to be set only when we think the user is done with
+ // 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);
}
}
@@ -285,6 +287,12 @@ public class SyncCustomizationFragment extends PreferenceFragment
updateSyncStateFromSwitch();
}
+ private void updateSyncAccountsListState() {
+ SyncedAccountPreference accountList =
+ (SyncedAccountPreference) findPreference(PREFERENCE_SYNC_ACCOUNT_LIST);
+ accountList.setEnabled(mSyncSwitchPreference.isChecked());
+ }
+
/**
* Update the state of settings using the switch state to determine if sync is enabled.
*/
@@ -292,6 +300,7 @@ public class SyncCustomizationFragment extends PreferenceFragment
updateSyncEverythingState();
updateDataTypeState();
updateEncryptionState();
+ updateSyncAccountsListState();
}
/**
@@ -320,16 +329,19 @@ public class SyncCustomizationFragment extends PreferenceFragment
}
if (mProfileSyncService.isPassphraseRequiredForDecryption() && isAdded()) {
mSyncEncryption.setSummary(
- errorSummary(getString(R.string.sync_need_passphrase)));
+ errorSummary(getString(R.string.sync_need_passphrase), getActivity()));
}
}
/**
* Applies a span to the given string to give it an error color.
*/
- private static Spannable errorSummary(String string) {
+ private static Spannable errorSummary(String string, Context context) {
SpannableString summary = new SpannableString(string);
- summary.setSpan(new ForegroundColorSpan(ERROR_COLOR), 0, summary.length(), 0);
+ summary.setSpan(new ForegroundColorSpan(
+ ApiCompatibilityUtils.getColor(
+ context.getResources(), R.color.input_underline_error_color)),
+ 0, summary.length(), 0);
return summary;
}
@@ -339,8 +351,7 @@ public class SyncCustomizationFragment extends PreferenceFragment
boolean syncEverything = mSyncEverything.isChecked();
mProfileSyncService.setPreferredDataTypes(syncEverything, getSelectedModelTypes());
// Update the invalidation listener with the set of types we are enabling.
- InvalidationController invController =
- InvalidationController.get(getActivity());
+ InvalidationController invController = InvalidationController.get(getActivity());
invController.ensureStartedAndUpdateRegisteredTypes();
}
@@ -475,7 +486,7 @@ public class SyncCustomizationFragment extends PreferenceFragment
public boolean onPreferenceClick(Preference preference) {
if (!isResumed()) {
// This event could come in after onPause if the user clicks back and the preference at
- // roughly the same time. See http://b/5983282
+ // roughly the same time. See http://b/5983282
return false;
}
if (preference == mSyncEncryption && mProfileSyncService.isBackendInitialized()) {
@@ -579,6 +590,7 @@ public class SyncCustomizationFragment extends PreferenceFragment
/**
* Disables Sync if all data types have been disabled.
+ *
* @return true if Sync has been disabled, false otherwise.
*/
private boolean maybeDisableSync() {

Powered by Google App Engine
This is Rietveld 408576698