Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/sync/GmsCoreSyncListener.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/GmsCoreSyncListener.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/GmsCoreSyncListener.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..4d3642acf33c7a43c7547bed75b169389299e189 |
| --- /dev/null |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/GmsCoreSyncListener.java |
| @@ -0,0 +1,42 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +package org.chromium.chrome.browser.sync; |
| + |
| +import org.chromium.base.VisibleForTesting; |
| + |
| +/** |
| + * A listener that will share sync's custom passphrase encryption key with GmsCore. |
| + * |
| + * This is to prevent users from seeing the custom passphrase dialog pop up in GmsCore after they |
| + * have already entered it in Chrome. |
| + */ |
| +public abstract class GmsCoreSyncListener implements ProfileSyncService.SyncStateChangedListener { |
| + private boolean mGmsCoreInformed; |
| + |
| + /** |
| + * Inform GMSCore of a new custom passphrase encryption key. |
| + * |
| + * @param key The serialized NigoriKey proto. |
| + */ |
| + public abstract void updateEncryptionKey(byte[] key); |
| + |
| + @Override |
| + @VisibleForTesting |
| + public void syncStateChanged() { |
| + ProfileSyncService syncService = ProfileSyncService.get(); |
|
nyquist
2015/11/17 20:33:09
Nit: ThreadUtils.assertOnUiThread()?
maxbogue
2015/11/17 22:14:11
ProfileSyncService.get() already does that, and th
|
| + boolean passphraseSet = syncService.isBackendInitialized() |
| + && syncService.isUsingSecondaryPassphrase() && syncService.isCryptographerReady(); |
| + if (passphraseSet && !mGmsCoreInformed) { |
| + byte[] key = syncService.getCustomPassphraseKey(); |
| + if (key.length > 0) { |
| + updateEncryptionKey(key); |
| + mGmsCoreInformed = true; |
| + } |
| + } else if (!passphraseSet && mGmsCoreInformed) { |
| + // Prepare to inform GmsCore if a passphrase is set again. |
| + mGmsCoreInformed = false; |
| + } |
| + } |
| +} |