Index: components/gcm_driver/gcm_client_impl.cc |
diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gcm_client_impl.cc |
index 080a7d006fb208bdbcff659566dec87c476f049b..bd44af2c7a28b9843ef1b504b8618534dac6cb39 100644 |
--- a/components/gcm_driver/gcm_client_impl.cc |
+++ b/components/gcm_driver/gcm_client_impl.cc |
@@ -812,6 +812,13 @@ void GCMClientImpl::DestroyStoreCallback(bool success) { |
} |
void GCMClientImpl::ResetStoreCallback(bool success) { |
+ // Even an incomplete reset may invalidate registrations, and this might be |
+ // the only opportunity to notify the delegate. For example a partial reset |
+ // that deletes the "CURRENT" file will cause GCMStoreImpl to consider the DB |
+ // to no longer exist, in which case the next load will simply create a new |
+ // store rather than resetting it. |
+ delegate_->OnStoreReset(); |
+ |
if (!success) { |
LOG(ERROR) << "Failed to reset GCM store"; |
RecordResetStoreErrorToUMA(DESTROYING_STORE_FAILED); |