Index: sync/notifier/chrome_invalidation_client.cc |
diff --git a/sync/notifier/chrome_invalidation_client.cc b/sync/notifier/chrome_invalidation_client.cc |
index 7b47fc52243810c0f46731a26ac66b4850ce8578..f0a3deea865561197d37f28fbfd02754571904f3 100644 |
--- a/sync/notifier/chrome_invalidation_client.cc |
+++ b/sync/notifier/chrome_invalidation_client.cc |
@@ -103,7 +103,10 @@ void ChromeInvalidationClient::UpdateCredentials( |
void ChromeInvalidationClient::RegisterIds(const ObjectIdSet& ids) { |
DCHECK(CalledOnValidThread()); |
registered_ids_ = ids; |
- if (GetState() == NO_NOTIFICATION_ERROR && registration_manager_.get()) { |
+ // |ticl_state_| can go to NO_NOTIFICATION_ERROR even without a |
+ // working XMPP connection (as observed by us), so check it instead |
+ // of GetState() (see http://crbug.com/139424). |
+ if (ticl_state_ == NO_NOTIFICATION_ERROR && registration_manager_.get()) { |
registration_manager_->SetRegisteredIds(registered_ids_); |
} |
// TODO(akalin): Clear invalidation versions for unregistered types. |