| Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/SyncPreference.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/SyncPreference.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/SyncPreference.java
|
| index aa9dea8add26c2be78a3f54aa523b8e40d8e9b8b..69e79288ea65b4c7175ba9a44d5178541f8e354c 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/SyncPreference.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/SyncPreference.java
|
| @@ -35,7 +35,10 @@ public class SyncPreference extends Preference {
|
| public void updateSyncSummaryAndIcon() {
|
| setSummary(getSyncStatusSummary(getContext()));
|
|
|
| - if (ProfileSyncService.get().getAuthError() == GoogleServiceAuthError.State.NONE) {
|
| + if (SyncPreference.showSyncErrorIcon(getContext())) {
|
| + setIcon(ApiCompatibilityUtils.getDrawable(
|
| + getContext().getResources(), R.drawable.sync_error));
|
| + } else {
|
| // Sets preference icon and tints it to blue.
|
| Drawable icon = ApiCompatibilityUtils.getDrawable(
|
| getContext().getResources(), R.drawable.permission_background_sync);
|
| @@ -43,12 +46,37 @@ public class SyncPreference extends Preference {
|
| getContext().getResources(), R.color.light_active_color),
|
| PorterDuff.Mode.SRC_IN);
|
| setIcon(icon);
|
| - } else {
|
| - setIcon(ApiCompatibilityUtils.getDrawable(
|
| - getContext().getResources(), R.drawable.sync_error));
|
| }
|
| }
|
|
|
| + /**
|
| + * Checks if sync error icon should be shown. Show sync error icon if sync is off because
|
| + * of error, passphrase required or disabled in Android.
|
| + */
|
| + public static boolean showSyncErrorIcon(Context context) {
|
| + if (!AndroidSyncSettings.isMasterSyncEnabled(context)) {
|
| + return true;
|
| + }
|
| +
|
| + ProfileSyncService profileSyncService = ProfileSyncService.get();
|
| + if (profileSyncService != null) {
|
| + if (profileSyncService.hasUnrecoverableError()) {
|
| + return true;
|
| + }
|
| +
|
| + if (profileSyncService.getAuthError() != GoogleServiceAuthError.State.NONE) {
|
| + return true;
|
| + }
|
| +
|
| + if (profileSyncService.isSyncActive()
|
| + && profileSyncService.isPassphraseRequiredForDecryption()) {
|
| + return true;
|
| + }
|
| + }
|
| +
|
| + return false;
|
| + }
|
| +
|
| private static String getSyncStatusSummary(Context context) {
|
| if (!ChromeSigninController.get(context).isSignedIn()) return "";
|
|
|
|
|