Commit 863a2347 authored by akalin@chromium.org's avatar akalin@chromium.org

[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
parent 6f5e4bca
...@@ -103,7 +103,10 @@ void ChromeInvalidationClient::UpdateCredentials( ...@@ -103,7 +103,10 @@ void ChromeInvalidationClient::UpdateCredentials(
void ChromeInvalidationClient::RegisterIds(const ObjectIdSet& ids) { void ChromeInvalidationClient::RegisterIds(const ObjectIdSet& ids) {
DCHECK(CalledOnValidThread()); DCHECK(CalledOnValidThread());
registered_ids_ = ids; 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_); registration_manager_->SetRegisteredIds(registered_ids_);
} }
// TODO(akalin): Clear invalidation versions for unregistered types. // TODO(akalin): Clear invalidation versions for unregistered types.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment