Index: components/proximity_auth/cryptauth/cryptauth_device_manager.cc |
diff --git a/components/proximity_auth/cryptauth/cryptauth_device_manager.cc b/components/proximity_auth/cryptauth/cryptauth_device_manager.cc |
index 396d1915fd1939c457a30c029e9c3520e12d230d..3e641bbc96c31a01d3ff92cbea28cb59553ea1fc 100644 |
--- a/components/proximity_auth/cryptauth/cryptauth_device_manager.cc |
+++ b/components/proximity_auth/cryptauth/cryptauth_device_manager.cc |
@@ -88,14 +88,16 @@ bool DictionaryToUnlockKey(const base::DictionaryValue& dictionary, |
CryptAuthDeviceManager::CryptAuthDeviceManager( |
scoped_ptr<base::Clock> clock, |
scoped_ptr<CryptAuthClientFactory> client_factory, |
+ CryptAuthGCMManager* gcm_manager, |
PrefService* pref_service) |
: clock_(clock.Pass()), |
client_factory_(client_factory.Pass()), |
+ gcm_manager_(gcm_manager), |
pref_service_(pref_service), |
- weak_ptr_factory_(this) { |
-} |
+ weak_ptr_factory_(this) {} |
CryptAuthDeviceManager::~CryptAuthDeviceManager() { |
+ gcm_manager_->RemoveObserver(this); |
} |
// static |
@@ -112,6 +114,8 @@ void CryptAuthDeviceManager::RegisterPrefs(PrefRegistrySimple* registry) { |
void CryptAuthDeviceManager::Start() { |
UpdateUnlockKeysFromPrefs(); |
+ gcm_manager_->AddObserver(this); |
+ |
base::Time last_successful_sync = GetLastSyncTime(); |
base::TimeDelta elapsed_time_since_last_sync = |
clock_->Now() - last_successful_sync; |
@@ -216,6 +220,10 @@ scoped_ptr<SyncScheduler> CryptAuthDeviceManager::CreateSyncScheduler() { |
kDeviceSyncMaxJitterRatio, "CryptAuth DeviceSync")); |
} |
+void CryptAuthDeviceManager::OnResyncMessage() { |
+ ForceSyncNow(cryptauth::INVOCATION_REASON_SERVER_INITIATED); |
+} |
+ |
void CryptAuthDeviceManager::UpdateUnlockKeysFromPrefs() { |
const base::ListValue* unlock_key_list = |
pref_service_->GetList(prefs::kCryptAuthDeviceSyncUnlockKeys); |