summaryrefslogtreecommitdiffstats
path: root/google_apis
diff options
context:
space:
mode:
authorfgorski@chromium.org <fgorski@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-15 15:12:17 +0000
committerfgorski@chromium.org <fgorski@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-15 15:14:18 +0000
commit16a388b35afe297f3f7bbe93bd464250b168985d (patch)
tree1de09865298384b4bbf3cca59bf4512647859f0d /google_apis
parentc9e57857607cb806b6cacc934c17d666e0b78634 (diff)
downloadchromium_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.cc3
-rw-r--r--google_apis/gcm/engine/gcm_store_impl_unittest.cc19
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