diff options
author | fgorski@chromium.org <fgorski@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-15 15:12:17 +0000 |
---|---|---|
committer | fgorski@chromium.org <fgorski@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-15 15:14:18 +0000 |
commit | 16a388b35afe297f3f7bbe93bd464250b168985d (patch) | |
tree | 1de09865298384b4bbf3cca59bf4512647859f0d /google_apis | |
parent | c9e57857607cb806b6cacc934c17d666e0b78634 (diff) | |
download | chromium_src-16a388b35afe297f3f7bbe93bd464250b168985d.zip chromium_src-16a388b35afe297f3f7bbe93bd464250b168985d.tar.gz chromium_src-16a388b35afe297f3f7bbe93bd464250b168985d.tar.bz2 |
[GCM] Fixing a bug with old registration ID not being removed
We are suffering from behavior where old registration ID is not really
removed from gcm store when unregistered.
BUG=384431
Review URL: https://codereview.chromium.org/475813003
Cr-Commit-Position: refs/heads/master@{#289860}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@289860 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'google_apis')
-rw-r--r-- | google_apis/gcm/engine/gcm_store_impl.cc | 3 | ||||
-rw-r--r-- | google_apis/gcm/engine/gcm_store_impl_unittest.cc | 19 |
2 files changed, 21 insertions, 1 deletions
diff --git a/google_apis/gcm/engine/gcm_store_impl.cc b/google_apis/gcm/engine/gcm_store_impl.cc index 3088ab3..f1f46ee 100644 --- a/google_apis/gcm/engine/gcm_store_impl.cc +++ b/google_apis/gcm/engine/gcm_store_impl.cc @@ -358,7 +358,8 @@ void GCMStoreImpl::Backend::RemoveRegistration(const std::string& app_id, leveldb::WriteOptions write_options; write_options.sync = true; - leveldb::Status status = db_->Delete(write_options, MakeSlice(app_id)); + leveldb::Status status = + db_->Delete(write_options, MakeSlice(MakeRegistrationKey(app_id))); if (status.ok()) { foreground_task_runner_->PostTask(FROM_HERE, base::Bind(callback, true)); return; diff --git a/google_apis/gcm/engine/gcm_store_impl_unittest.cc b/google_apis/gcm/engine/gcm_store_impl_unittest.cc index de22946..bbe408f 100644 --- a/google_apis/gcm/engine/gcm_store_impl_unittest.cc +++ b/google_apis/gcm/engine/gcm_store_impl_unittest.cc @@ -260,6 +260,25 @@ TEST_F(GCMStoreImplTest, Registrations) { load_result->registrations["app2"]->sender_ids[0]); EXPECT_EQ(registration2->sender_ids[1], load_result->registrations["app2"]->sender_ids[1]); + + gcm_store->RemoveRegistration( + "app2", + base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); + PumpLoop(); + + gcm_store = BuildGCMStore().Pass(); + gcm_store->Load(base::Bind( + &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); + PumpLoop(); + + ASSERT_EQ(1u, load_result->registrations.size()); + ASSERT_TRUE(load_result->registrations.find("app1") != + load_result->registrations.end()); + EXPECT_EQ(registration1->registration_id, + load_result->registrations["app1"]->registration_id); + ASSERT_EQ(1u, load_result->registrations["app1"]->sender_ids.size()); + EXPECT_EQ(registration1->sender_ids[0], + load_result->registrations["app1"]->sender_ids[0]); } // Verify saving some incoming messages, reopening the directory, and then |