Index: chrome/android/java/src/org/chromium/chrome/browser/sync/ui/PassphraseActivity.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/PassphraseActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/PassphraseActivity.java |
index 6a3eff406db88b3f690455b464767eb949d1afb8..70a75849b4d5a33476ed12882442098f25cb14b1 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/PassphraseActivity.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/PassphraseActivity.java |
@@ -33,7 +33,8 @@ public class PassphraseActivity extends FragmentActivity implements |
public static final String FRAGMENT_PASSWORD = "password_fragment"; |
public static final String FRAGMENT_SPINNER = "spinner_fragment"; |
private static final String TAG = "PassphraseActivity"; |
- private static ProfileSyncService.SyncStateChangedListener sSyncStateChangedListener; |
+ |
+ private ProfileSyncService.SyncStateChangedListener mSyncStateChangedListener; |
@Override |
protected void onCreate(Bundle savedInstanceState) { |
@@ -71,11 +72,19 @@ public class PassphraseActivity extends FragmentActivity implements |
} |
} |
+ @Override |
+ protected void onPause() { |
+ super.onPause(); |
+ // Make sure we don't receive callbacks while in the background. |
+ // See http://crbug.com/469890. |
+ removeSyncStateChangedListener(); |
+ } |
+ |
private void addSyncStateChangedListener() { |
- if (sSyncStateChangedListener != null) { |
+ if (mSyncStateChangedListener != null) { |
return; |
} |
- sSyncStateChangedListener = new ProfileSyncService.SyncStateChangedListener() { |
+ mSyncStateChangedListener = new ProfileSyncService.SyncStateChangedListener() { |
@Override |
public void syncStateChanged() { |
if (ProfileSyncService.get(getApplicationContext()).isSyncInitialized()) { |
@@ -84,12 +93,14 @@ public class PassphraseActivity extends FragmentActivity implements |
} |
} |
}; |
- ProfileSyncService.get(this).addSyncStateChangedListener(sSyncStateChangedListener); |
+ ProfileSyncService.get(this).addSyncStateChangedListener(mSyncStateChangedListener); |
} |
private void removeSyncStateChangedListener() { |
- ProfileSyncService.get(this).removeSyncStateChangedListener(sSyncStateChangedListener); |
- sSyncStateChangedListener = null; |
+ if (mSyncStateChangedListener != null) { |
+ ProfileSyncService.get(this).removeSyncStateChangedListener(mSyncStateChangedListener); |
+ mSyncStateChangedListener = null; |
+ } |
} |
private boolean isShowingDialog(String tag) { |