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

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

Issue 293483002: Store the service worker script and its imports on first load... really (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix nix compile 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
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 aa2cea29383f3824a113ab8f46f380c35c7945f8..0fe8c4b4afc7f2b352c68b2f1b7ed70d04afd649 100644
--- a/content/browser/service_worker/service_worker_database_unittest.cc
+++ b/content/browser/service_worker/service_worker_database_unittest.cc
@@ -118,9 +118,11 @@ TEST(ServiceWorkerDatabaseTest, DatabaseVersion) {
// First writing triggers database initialization and bumps the schema
// version.
std::vector<ServiceWorkerDatabase::ResourceRecord> resources;
+ std::vector<int64> newly_purgeable_resources;
ServiceWorkerDatabase::RegistrationData data;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data, resources));
+ database->WriteRegistration(data, resources,
+ &newly_purgeable_resources));
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
database->ReadDatabaseVersion(&db_version));
@@ -153,12 +155,14 @@ TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) {
// Writing a registration bumps the next available ids.
std::vector<Resource> resources;
RegistrationData data1;
+ std::vector<int64> newly_purgeable_resources;
data1.registration_id = 100;
data1.scope = URL(origin, "/foo");
data1.script = URL(origin, "/script1.js");
data1.version_id = 200;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data1, resources));
+ database->WriteRegistration(data1, resources,
+ &newly_purgeable_resources));
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds(
&ids.reg_id, &ids.ver_id, &ids.res_id));
@@ -174,7 +178,8 @@ TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) {
data2.script = URL(origin, "/script2.js");
data2.version_id = 20;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data2, resources));
+ database->WriteRegistration(data2, resources,
+ &newly_purgeable_resources));
// Close and reopen the database to verify the stored values.
database.reset(CreateDatabase(database_dir.path()));
@@ -195,6 +200,7 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
EXPECT_TRUE(origins.empty());
std::vector<Resource> resources;
+ std::vector<int64> newly_purgeable_resources;
GURL origin1("http://example.com");
RegistrationData data1;
@@ -203,7 +209,8 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
data1.script = URL(origin1, "/script1.js");
data1.version_id = 456;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data1, resources));
+ database->WriteRegistration(data1, resources,
+ &newly_purgeable_resources));
GURL origin2("https://www.example.com");
RegistrationData data2;
@@ -212,7 +219,8 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
data2.script = URL(origin2, "/script2.js");
data2.version_id = 567;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data2, resources));
+ database->WriteRegistration(data2, resources,
+ &newly_purgeable_resources));
GURL origin3("https://example.org");
RegistrationData data3;
@@ -221,7 +229,8 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
data3.script = URL(origin3, "/script3.js");
data3.version_id = 678;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data3, resources));
+ database->WriteRegistration(data3, resources,
+ &newly_purgeable_resources));
// |origin3| has two registrations.
RegistrationData data4;
@@ -230,7 +239,8 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
data4.script = URL(origin3, "/script4.js");
data4.version_id = 789;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data4, resources));
+ database->WriteRegistration(data4, resources,
+ &newly_purgeable_resources));
origins.clear();
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
@@ -243,7 +253,8 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
// |origin3| has another registration, so should not remove it from the
// unique origin list.
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->DeleteRegistration(data4.registration_id, origin3));
+ database->DeleteRegistration(data4.registration_id, origin3,
+ &newly_purgeable_resources));
origins.clear();
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
@@ -255,7 +266,8 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
// |origin3| should be removed from the unique origin list.
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->DeleteRegistration(data3.registration_id, origin3));
+ database->DeleteRegistration(data3.registration_id, origin3,
+ &newly_purgeable_resources));
origins.clear();
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
@@ -278,6 +290,7 @@ TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) {
EXPECT_TRUE(registrations.empty());
std::vector<Resource> resources;
+ std::vector<int64> newly_purgeable_resources;
RegistrationData data1;
data1.registration_id = 100;
@@ -285,7 +298,8 @@ TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) {
data1.script = URL(origin1, "/script1.js");
data1.version_id = 1000;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data1, resources));
+ database->WriteRegistration(data1, resources,
+ &newly_purgeable_resources));
RegistrationData data2;
data2.registration_id = 200;
@@ -293,7 +307,8 @@ TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) {
data2.script = URL(origin2, "/script2.js");
data2.version_id = 2000;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data2, resources));
+ database->WriteRegistration(data2, resources,
+ &newly_purgeable_resources));
RegistrationData data3;
data3.registration_id = 300;
@@ -301,7 +316,8 @@ TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) {
data3.script = URL(origin3, "/script3.js");
data3.version_id = 3000;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data3, resources));
+ database->WriteRegistration(data3, resources,
+ &newly_purgeable_resources));
// |origin3| has two registrations.
RegistrationData data4;
@@ -310,7 +326,8 @@ TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) {
data4.script = URL(origin3, "/script4.js");
data4.version_id = 4000;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data4, resources));
+ database->WriteRegistration(data4, resources,
+ &newly_purgeable_resources));
registrations.clear();
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
@@ -329,6 +346,7 @@ TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) {
EXPECT_TRUE(registrations.empty());
std::vector<Resource> resources;
+ std::vector<int64> newly_purgeable_resources;
GURL origin1("http://www1.example.com");
RegistrationData data1;
@@ -337,7 +355,8 @@ TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) {
data1.script = URL(origin1, "/script1.js");
data1.version_id = 1000;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data1, resources));
+ database->WriteRegistration(data1, resources,
+ &newly_purgeable_resources));
GURL origin2("http://www2.example.com");
RegistrationData data2;
@@ -346,7 +365,8 @@ TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) {
data2.script = URL(origin2, "/script2.js");
data2.version_id = 2000;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data2, resources));
+ database->WriteRegistration(data2, resources,
+ &newly_purgeable_resources));
GURL origin3("http://www3.example.com");
RegistrationData data3;
@@ -355,7 +375,8 @@ TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) {
data3.script = URL(origin3, "/script3.js");
data3.version_id = 3000;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data3, resources));
+ database->WriteRegistration(data3, resources,
+ &newly_purgeable_resources));
// |origin3| has two registrations.
RegistrationData data4;
@@ -364,7 +385,8 @@ TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) {
data4.script = URL(origin3, "/script4.js");
data4.version_id = 4000;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data4, resources));
+ database->WriteRegistration(data4, resources,
+ &newly_purgeable_resources));
registrations.clear();
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
@@ -402,8 +424,10 @@ TEST(ServiceWorkerDatabaseTest, Registration_Basic) {
database->GetUncommittedResourceIds(&uncommitted_ids_out));
EXPECT_EQ(uncommitted_ids, uncommitted_ids_out);
+ std::vector<int64> newly_purgeable_resources;
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data, resources));
+ database->WriteRegistration(data, resources,
+ &newly_purgeable_resources));
// Make sure that the registration and resource records are stored.
RegistrationData data_out;
@@ -421,7 +445,11 @@ TEST(ServiceWorkerDatabaseTest, Registration_Basic) {
EXPECT_TRUE(uncommitted_ids_out.empty());
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->DeleteRegistration(data.registration_id, origin));
+ database->DeleteRegistration(data.registration_id, origin,
+ &newly_purgeable_resources));
+ ASSERT_EQ(resources.size(), newly_purgeable_resources.size());
+ for (size_t i = 0; i < resources.size(); ++i)
+ EXPECT_EQ(newly_purgeable_resources[i], resources[i].resource_id);
// Make sure that the registration and resource records are gone.
resources_out.clear();
@@ -452,9 +480,12 @@ TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) {
std::vector<Resource> resources1;
resources1.push_back(CreateResource(1, URL(origin, "/resource1")));
resources1.push_back(CreateResource(2, URL(origin, "/resource2")));
+ std::vector<int64> newly_purgeable_resources;
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data, resources1));
+ database->WriteRegistration(data, resources1,
+ &newly_purgeable_resources));
+ EXPECT_TRUE(newly_purgeable_resources.empty());
// Make sure that the registration and resource records are stored.
RegistrationData data_out;
@@ -472,7 +503,11 @@ TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) {
resources2.push_back(CreateResource(4, URL(origin, "/resource4")));
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(updated_data, resources2));
+ database->WriteRegistration(updated_data, resources2,
+ &newly_purgeable_resources));
+ ASSERT_EQ(resources1.size(), newly_purgeable_resources.size());
+ for(size_t i = 0; i < resources1.size(); ++i)
+ EXPECT_EQ(newly_purgeable_resources[i], resources1[i].resource_id);
// Make sure that |updated_data| is stored and resources referred from |data|
// is moved to the purgeable list.
@@ -494,6 +529,8 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) {
scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
GURL origin("http://example.com");
+ std::vector<int64> newly_purgeable_resources;
+
// Add registration1.
RegistrationData data1;
data1.registration_id = 100;
@@ -505,7 +542,8 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) {
resources1.push_back(CreateResource(1, URL(origin, "/resource1")));
resources1.push_back(CreateResource(2, URL(origin, "/resource2")));
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data1, resources1));
+ database->WriteRegistration(data1, resources1,
+ &newly_purgeable_resources));
// Add registration2.
RegistrationData data2;
@@ -518,7 +556,8 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) {
resources2.push_back(CreateResource(3, URL(origin, "/resource3")));
resources2.push_back(CreateResource(4, URL(origin, "/resource4")));
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data2, resources2));
+ database->WriteRegistration(data2, resources2,
+ &newly_purgeable_resources));
// Make sure that registration1 is stored.
RegistrationData data_out;
@@ -542,7 +581,8 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) {
// Delete registration1.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->DeleteRegistration(data1.registration_id, origin));
+ database->DeleteRegistration(data1.registration_id, origin,
+ &newly_purgeable_resources));
// Make sure that registration1 is gone.
resources_out.clear();
@@ -570,6 +610,8 @@ TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) {
scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
GURL origin("http://example.com");
+ std::vector<int64> newly_purgeable_resources;
+
// Should be false because a registration does not exist.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
database->UpdateVersionToActive(0, origin));
@@ -582,7 +624,8 @@ TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) {
data.version_id = 200;
data.is_active = false;
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data, std::vector<Resource>()));
+ database->WriteRegistration(data, std::vector<Resource>(),
+ &newly_purgeable_resources));
// Make sure that the registration is stored.
RegistrationData data_out;
@@ -609,7 +652,8 @@ TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) {
// Delete the registration.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->DeleteRegistration(data.registration_id, origin));
+ database->DeleteRegistration(data.registration_id, origin,
+ &newly_purgeable_resources));
// Should be false because the registration is gone.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
@@ -619,6 +663,7 @@ TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) {
TEST(ServiceWorkerDatabaseTest, UpdateLastCheckTime) {
scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
GURL origin("http://example.com");
+ std::vector<int64> newly_purgeable_resources;
// Should be false because a registration does not exist.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
@@ -632,7 +677,8 @@ TEST(ServiceWorkerDatabaseTest, UpdateLastCheckTime) {
data.version_id = 200;
data.last_update_check = base::Time::Now();
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data, std::vector<Resource>()));
+ database->WriteRegistration(data, std::vector<Resource>(),
+ &newly_purgeable_resources));
// Make sure that the registration is stored.
RegistrationData data_out;
@@ -661,7 +707,8 @@ TEST(ServiceWorkerDatabaseTest, UpdateLastCheckTime) {
// Delete the registration.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->DeleteRegistration(data.registration_id, origin));
+ database->DeleteRegistration(data.registration_id, origin,
+ &newly_purgeable_resources));
// Should be false because the registration is gone.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
@@ -757,6 +804,7 @@ TEST(ServiceWorkerDatabaseTest, PurgeableResourceIds) {
TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
+ std::vector<int64> newly_purgeable_resources;
// Data associated with |origin1| will be removed.
GURL origin1("http://example.com");
@@ -773,7 +821,8 @@ TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
resources1.push_back(CreateResource(1, URL(origin1, "/resource1")));
resources1.push_back(CreateResource(2, URL(origin1, "/resource2")));
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data1, resources1));
+ database->WriteRegistration(data1, resources1,
+ &newly_purgeable_resources));
RegistrationData data2;
data2.registration_id = 11;
@@ -785,7 +834,8 @@ TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
resources2.push_back(CreateResource(3, URL(origin1, "/resource3")));
resources2.push_back(CreateResource(4, URL(origin1, "/resource4")));
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data2, resources2));
+ database->WriteRegistration(data2, resources2,
+ &newly_purgeable_resources));
// |origin2| has one registration.
RegistrationData data3;
@@ -798,10 +848,12 @@ TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
resources3.push_back(CreateResource(5, URL(origin2, "/resource5")));
resources3.push_back(CreateResource(6, URL(origin2, "/resource6")));
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data3, resources3));
+ database->WriteRegistration(data3, resources3,
+ &newly_purgeable_resources));
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->DeleteAllDataForOrigin(origin1));
+ database->DeleteAllDataForOrigin(origin1,
+ &newly_purgeable_resources));
// |origin1| should be removed from the unique origin list.
std::set<GURL> unique_origins;
« no previous file with comments | « content/browser/service_worker/service_worker_database.cc ('k') | content/browser/service_worker/service_worker_disk_cache.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698