summaryrefslogtreecommitdiffstats
path: root/sync/notifier
diff options
context:
space:
mode:
authorakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-28 23:06:29 +0000
committerakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-28 23:06:29 +0000
commit863a2347dd3ade36220f6a3325966aa3674fae58 (patch)
tree9a5884d5f660b60bfec4dc8528108145949a758a /sync/notifier
parent6f5e4bca37e94a6afffecafbf1db67aa45a35b17 (diff)
downloadchromium_src-863a2347dd3ade36220f6a3325966aa3674fae58.zip
chromium_src-863a2347dd3ade36220f6a3325966aa3674fae58.tar.gz
chromium_src-863a2347dd3ade36220f6a3325966aa3674fae58.tar.bz2
[Sync] Fix race condition with notification startup
This fixes a race condition which may cause notifications to not work on startup. This is a minimal change for ease of merging. Unit tests will be landed in a separate patch. BUG=139424 Review URL: https://chromiumcodereview.appspot.com/10836002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148907 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/notifier')
-rw-r--r--sync/notifier/chrome_invalidation_client.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/sync/notifier/chrome_invalidation_client.cc b/sync/notifier/chrome_invalidation_client.cc
index 7b47fc5..f0a3dee 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.