Index: components/invalidation/impl/gcm_network_channel.cc |
diff --git a/components/invalidation/impl/gcm_network_channel.cc b/components/invalidation/impl/gcm_network_channel.cc |
index 6204ecc957e97051e99588e5ad016ed8b843616e..5b2aafeb81a01c78ad6d420f9ff989f56673e8ed 100644 |
--- a/components/invalidation/impl/gcm_network_channel.cc |
+++ b/components/invalidation/impl/gcm_network_channel.cc |
@@ -121,8 +121,10 @@ GCMNetworkChannel::GCMNetworkChannel( |
diagnostic_info_(this), |
weak_factory_(this) { |
net::NetworkChangeNotifier::AddNetworkChangeObserver(this); |
- delegate_->Initialize(base::Bind(&GCMNetworkChannel::OnConnectionStateChanged, |
- weak_factory_.GetWeakPtr())); |
+ delegate_->Initialize( |
+ base::Bind(&GCMNetworkChannel::OnConnectionStateChanged, |
+ weak_factory_.GetWeakPtr()), |
+ base::Bind(&GCMNetworkChannel::OnStoreReset, weak_factory_.GetWeakPtr())); |
Register(); |
} |
@@ -194,7 +196,7 @@ void GCMNetworkChannel::OnGetTokenComplete( |
const GoogleServiceAuthError& error, |
const std::string& token) { |
DCHECK(CalledOnValidThread()); |
- if (cached_message_.empty()) { |
+ if (cached_message_.empty() || registration_id_.empty()) { |
// Nothing to do. |
return; |
} |
@@ -302,6 +304,11 @@ void GCMNetworkChannel::OnConnectionStateChanged(bool online) { |
UpdateGcmChannelState(online); |
} |
+void GCMNetworkChannel::OnStoreReset() { |
+ // TODO(crbug.com/661660): Tell server the registration ID is no longer valid. |
+ registration_id_.clear(); |
+} |
+ |
void GCMNetworkChannel::OnNetworkChanged( |
net::NetworkChangeNotifier::ConnectionType connection_type) { |
// Network connection is restored. Let's notify cacheinvalidations so it has |