Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1709)

Unified Diff: content/browser/service_worker/service_worker_database_unittest.cc

Issue 264713011: ServiceWorker: Implement DeleteAllDataForOrigin() in ServiceWorkerDatabase (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Drop DeleteAllData() and add test Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/service_worker/service_worker_database.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/service_worker/service_worker_database_unittest.cc
diff --git a/content/browser/service_worker/service_worker_database_unittest.cc b/content/browser/service_worker/service_worker_database_unittest.cc
index a36ae7447ea3c5a305641e837600490dce2e4dbd..b0cae28607a9526bdd047ccd3795c88114e61ac4 100644
--- a/content/browser/service_worker/service_worker_database_unittest.cc
+++ b/content/browser/service_worker/service_worker_database_unittest.cc
@@ -27,6 +27,15 @@ struct AvailableIds {
~AvailableIds() {}
};
+// TODO(nhiroki): Refactor tests using this helper.
+GURL URL(const GURL& origin, const std::string& path) {
+ EXPECT_TRUE(origin.is_valid());
+ GURL out(origin.GetOrigin().spec() + path);
+ EXPECT_TRUE(out.is_valid());
+ return out;
+}
+
+// TODO(nhiroki): Remove this.
Resource CreateResource(int64 resource_id, const std::string& url) {
Resource resource;
resource.resource_id = resource_id;
@@ -35,6 +44,14 @@ Resource CreateResource(int64 resource_id, const std::string& url) {
return resource;
}
+Resource CreateResource(int64 resource_id, const GURL& url) {
+ Resource resource;
+ resource.resource_id = resource_id;
+ resource.url = url;
+ EXPECT_TRUE(resource.url.is_valid());
+ return resource;
+}
+
ServiceWorkerDatabase* CreateDatabase(const base::FilePath& path) {
return new ServiceWorkerDatabase(path);
}
@@ -558,4 +575,77 @@ TEST(ServiceWorkerDatabaseTest, PurgeableResourceIds) {
EXPECT_TRUE(ContainsKey(ids_out, 4));
}
+TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
+ scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
+
+ // Data associated with |origin1| will be removed.
+ GURL origin1("http://example.com");
+ GURL origin2("http://example.org");
+
+ // |origin1| has two registrations.
+ RegistrationData data1;
+ data1.registration_id = 10;
+ data1.scope = URL(origin1, "/foo");
+ data1.script = URL(origin1, "/script1.js");
+ data1.version_id = 100;
+
+ std::vector<Resource> resources1;
+ resources1.push_back(CreateResource(1, URL(origin1, "/resource1")));
+ resources1.push_back(CreateResource(2, URL(origin1, "/resource2")));
+ ASSERT_TRUE(database->WriteRegistration(data1, resources1));
+
+ RegistrationData data2;
+ data2.registration_id = 11;
+ data2.scope = URL(origin1, "/bar");
+ data2.script = URL(origin1, "/script2.js");
+ data2.version_id = 101;
+
+ std::vector<Resource> resources2;
+ resources2.push_back(CreateResource(3, URL(origin1, "/resource3")));
+ resources2.push_back(CreateResource(4, URL(origin1, "/resource4")));
+ ASSERT_TRUE(database->WriteRegistration(data2, resources2));
+
+ // |origin2| has one registration.
+ RegistrationData data3;
+ data3.registration_id = 12;
+ data3.scope = URL(origin2, "/hoge");
+ data3.script = URL(origin2, "/script3.js");
+ data3.version_id = 102;
+
+ std::vector<Resource> resources3;
+ resources3.push_back(CreateResource(5, URL(origin2, "/resource5")));
+ resources3.push_back(CreateResource(6, URL(origin2, "/resource6")));
+ ASSERT_TRUE(database->WriteRegistration(data3, resources3));
+
+ EXPECT_TRUE(database->DeleteAllDataForOrigin(origin1));
+
+ // |origin1| should be removed from the unique origin list.
+ std::set<GURL> unique_origins;
+ EXPECT_TRUE(database->GetOriginsWithRegistrations(&unique_origins));
+ EXPECT_EQ(1u, unique_origins.size());
+ EXPECT_TRUE(ContainsKey(unique_origins, origin2));
+
+ // The registrations for |origin1| should be removed.
+ std::vector<RegistrationData> registrations;
+ EXPECT_TRUE(database->GetRegistrationsForOrigin(origin1, &registrations));
+ EXPECT_TRUE(registrations.empty());
+
+ // The registration for |origin2| should not be removed.
+ RegistrationData data_out;
+ std::vector<Resource> resources_out;
+ EXPECT_TRUE(database->ReadRegistration(
+ data3.registration_id, origin2, &data_out, &resources_out));
+ VerifyRegistrationData(data3, data_out);
+ VerifyResourceRecords(resources3, resources_out);
+
+ // The resources associated with |origin1| should be purgeable.
+ std::set<int64> purgeable_ids_out;
+ EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out));
+ EXPECT_EQ(4u, purgeable_ids_out.size());
+ EXPECT_TRUE(ContainsKey(purgeable_ids_out, 1));
+ EXPECT_TRUE(ContainsKey(purgeable_ids_out, 2));
+ EXPECT_TRUE(ContainsKey(purgeable_ids_out, 3));
+ EXPECT_TRUE(ContainsKey(purgeable_ids_out, 4));
+}
+
} // namespace content
« no previous file with comments | « content/browser/service_worker/service_worker_database.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698