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

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

Issue 1135743002: Check the size of ResourceRecords in ServiceWorkerDatabase::ReadRegistration() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: DCHECK in ServiceWorkerStorage::ReturnFoundRegistration() Created 5 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 e67a5ba916278e79dd2345577f59190bb06ab4f8..84424f7d980ccb74ed5a53eb7ef01687612ce9c5 100644
--- a/content/browser/service_worker/service_worker_database_unittest.cc
+++ b/content/browser/service_worker/service_worker_database_unittest.cc
@@ -109,6 +109,7 @@ TEST(ServiceWorkerDatabaseTest, OpenDatabase_InMemory) {
}
TEST(ServiceWorkerDatabaseTest, DatabaseVersion) {
+ GURL origin("http://example.com");
scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true));
@@ -122,9 +123,11 @@ TEST(ServiceWorkerDatabaseTest, DatabaseVersion) {
// First writing triggers database initialization and bumps the schema
// version.
std::vector<ServiceWorkerDatabase::ResourceRecord> resources;
+ resources.push_back(CreateResource(1, URL(origin, "/resource"), 10));
ServiceWorkerDatabase::RegistrationData deleted_version;
std::vector<int64> newly_purgeable_resources;
ServiceWorkerDatabase::RegistrationData data;
+ data.resources_total_size_bytes = 10;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
database->WriteRegistration(
data, resources, &deleted_version, &newly_purgeable_resources));
@@ -151,6 +154,8 @@ TEST(ServiceWorkerDatabaseTest, UpgradeSchemaToVersion2) {
data.scope = URL(origin, "/foo");
data.script = URL(origin, "/script1.js");
data.version_id = 200;
+ data.resources_total_size_bytes = 300;
+ resources.push_back(CreateResource(1, data.script, 300));
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
database->WriteRegistration(data, resources, &deleted_version,
&newly_purgeable_resources));
@@ -214,7 +219,7 @@ TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) {
EXPECT_EQ(0, ids.res_id);
// Writing a registration bumps the next available ids.
- std::vector<Resource> resources;
+ std::vector<Resource> resources1;
RegistrationData data1;
ServiceWorkerDatabase::RegistrationData deleted_version;
std::vector<int64> newly_purgeable_resources;
@@ -222,10 +227,11 @@ TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) {
data1.scope = URL(origin, "/foo");
data1.script = URL(origin, "/script1.js");
data1.version_id = 200;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data1, resources, &deleted_version, &newly_purgeable_resources));
+ data1.resources_total_size_bytes = 300;
+ resources1.push_back(CreateResource(1, data1.script, 300));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data1, resources1, &deleted_version,
+ &newly_purgeable_resources));
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds(
&ids.reg_id, &ids.ver_id, &ids.res_id));
@@ -265,10 +271,12 @@ TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) {
data2.scope = URL(origin, "/bar");
data2.script = URL(origin, "/script2.js");
data2.version_id = 20;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data2, resources, &deleted_version, &newly_purgeable_resources));
+ data2.resources_total_size_bytes = 400;
+ std::vector<Resource> resources2;
+ resources2.push_back(CreateResource(2, data2.script, 400));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data2, resources2, &deleted_version,
+ &newly_purgeable_resources));
// Same with resources.
int64 kLowResourceId = 15;
@@ -294,7 +302,6 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
database->GetOriginsWithRegistrations(&origins));
EXPECT_TRUE(origins.empty());
- std::vector<Resource> resources;
ServiceWorkerDatabase::RegistrationData deleted_version;
std::vector<int64> newly_purgeable_resources;
@@ -304,10 +311,12 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
data1.scope = URL(origin1, "/foo");
data1.script = URL(origin1, "/script1.js");
data1.version_id = 456;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data1, resources, &deleted_version, &newly_purgeable_resources));
+ data1.resources_total_size_bytes = 100;
+ std::vector<Resource> resources1;
+ resources1.push_back(CreateResource(1, data1.script, 100));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data1, resources1, &deleted_version,
+ &newly_purgeable_resources));
GURL origin2("https://www.example.com");
RegistrationData data2;
@@ -315,10 +324,12 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
data2.scope = URL(origin2, "/bar");
data2.script = URL(origin2, "/script2.js");
data2.version_id = 567;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data2, resources, &deleted_version, &newly_purgeable_resources));
+ data2.resources_total_size_bytes = 200;
+ std::vector<Resource> resources2;
+ resources2.push_back(CreateResource(2, data2.script, 200));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data2, resources2, &deleted_version,
+ &newly_purgeable_resources));
GURL origin3("https://example.org");
RegistrationData data3;
@@ -326,10 +337,12 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
data3.scope = URL(origin3, "/hoge");
data3.script = URL(origin3, "/script3.js");
data3.version_id = 678;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data3, resources, &deleted_version, &newly_purgeable_resources));
+ data3.resources_total_size_bytes = 300;
+ std::vector<Resource> resources3;
+ resources3.push_back(CreateResource(3, data3.script, 300));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data3, resources3, &deleted_version,
+ &newly_purgeable_resources));
// |origin3| has two registrations.
RegistrationData data4;
@@ -337,10 +350,12 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
data4.scope = URL(origin3, "/fuga");
data4.script = URL(origin3, "/script4.js");
data4.version_id = 789;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data4, resources, &deleted_version, &newly_purgeable_resources));
+ data4.resources_total_size_bytes = 400;
+ std::vector<Resource> resources4;
+ resources4.push_back(CreateResource(4, data4.script, 400));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data4, resources4, &deleted_version,
+ &newly_purgeable_resources));
origins.clear();
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
@@ -395,7 +410,6 @@ TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) {
database->GetRegistrationsForOrigin(origin1, &registrations));
EXPECT_TRUE(registrations.empty());
- std::vector<Resource> resources;
ServiceWorkerDatabase::RegistrationData deleted_version;
std::vector<int64> newly_purgeable_resources;
@@ -404,30 +418,36 @@ TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) {
data1.scope = URL(origin1, "/foo");
data1.script = URL(origin1, "/script1.js");
data1.version_id = 1000;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data1, resources, &deleted_version, &newly_purgeable_resources));
+ data1.resources_total_size_bytes = 100;
+ std::vector<Resource> resources1;
+ resources1.push_back(CreateResource(1, data1.script, 100));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data1, resources1, &deleted_version,
+ &newly_purgeable_resources));
RegistrationData data2;
data2.registration_id = 200;
data2.scope = URL(origin2, "/bar");
data2.script = URL(origin2, "/script2.js");
data2.version_id = 2000;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data2, resources, &deleted_version, &newly_purgeable_resources));
+ data2.resources_total_size_bytes = 200;
+ std::vector<Resource> resources2;
+ resources2.push_back(CreateResource(2, data2.script, 200));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data2, resources2, &deleted_version,
+ &newly_purgeable_resources));
RegistrationData data3;
data3.registration_id = 300;
data3.scope = URL(origin3, "/hoge");
data3.script = URL(origin3, "/script3.js");
data3.version_id = 3000;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data3, resources, &deleted_version, &newly_purgeable_resources));
+ data3.resources_total_size_bytes = 300;
+ std::vector<Resource> resources3;
+ resources3.push_back(CreateResource(3, data3.script, 300));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data3, resources3, &deleted_version,
+ &newly_purgeable_resources));
// |origin3| has two registrations.
RegistrationData data4;
@@ -435,10 +455,12 @@ TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) {
data4.scope = URL(origin3, "/fuga");
data4.script = URL(origin3, "/script4.js");
data4.version_id = 4000;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data4, resources, &deleted_version, &newly_purgeable_resources));
+ data4.resources_total_size_bytes = 400;
+ std::vector<Resource> resources4;
+ resources4.push_back(CreateResource(4, data4.script, 400));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data4, resources4, &deleted_version,
+ &newly_purgeable_resources));
registrations.clear();
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
@@ -456,7 +478,6 @@ TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) {
database->GetAllRegistrations(&registrations));
EXPECT_TRUE(registrations.empty());
- std::vector<Resource> resources;
ServiceWorkerDatabase::RegistrationData deleted_version;
std::vector<int64> newly_purgeable_resources;
@@ -466,10 +487,12 @@ TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) {
data1.scope = URL(origin1, "/foo");
data1.script = URL(origin1, "/script1.js");
data1.version_id = 1000;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data1, resources, &deleted_version, &newly_purgeable_resources));
+ data1.resources_total_size_bytes = 100;
+ std::vector<Resource> resources1;
+ resources1.push_back(CreateResource(1, data1.script, 100));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data1, resources1, &deleted_version,
+ &newly_purgeable_resources));
GURL origin2("http://www2.example.com");
RegistrationData data2;
@@ -477,10 +500,12 @@ TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) {
data2.scope = URL(origin2, "/bar");
data2.script = URL(origin2, "/script2.js");
data2.version_id = 2000;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data2, resources, &deleted_version, &newly_purgeable_resources));
+ data2.resources_total_size_bytes = 200;
+ std::vector<Resource> resources2;
+ resources2.push_back(CreateResource(2, data2.script, 200));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data2, resources2, &deleted_version,
+ &newly_purgeable_resources));
GURL origin3("http://www3.example.com");
RegistrationData data3;
@@ -488,10 +513,12 @@ TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) {
data3.scope = URL(origin3, "/hoge");
data3.script = URL(origin3, "/script3.js");
data3.version_id = 3000;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data3, resources, &deleted_version, &newly_purgeable_resources));
+ data3.resources_total_size_bytes = 300;
+ std::vector<Resource> resources3;
+ resources3.push_back(CreateResource(3, data3.script, 300));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data3, resources3, &deleted_version,
+ &newly_purgeable_resources));
// |origin3| has two registrations.
RegistrationData data4;
@@ -499,10 +526,12 @@ TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) {
data4.scope = URL(origin3, "/fuga");
data4.script = URL(origin3, "/script4.js");
data4.version_id = 4000;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data4, resources, &deleted_version, &newly_purgeable_resources));
+ data4.resources_total_size_bytes = 400;
+ std::vector<Resource> resources4;
+ resources4.push_back(CreateResource(4, data4.script, 400));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data4, resources4, &deleted_version,
+ &newly_purgeable_resources));
registrations.clear();
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
@@ -879,8 +908,9 @@ TEST(ServiceWorkerDatabaseTest, UserData_Basic) {
data.scope = URL(kOrigin, "/foo");
data.script = URL(kOrigin, "/script.js");
data.version_id = 200;
-
+ data.resources_total_size_bytes = 100;
std::vector<Resource> resources;
+ resources.push_back(CreateResource(1, data.script, 100));
ServiceWorkerDatabase::RegistrationData deleted_version;
std::vector<int64> newly_purgeable_resources;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
@@ -946,6 +976,9 @@ TEST(ServiceWorkerDatabaseTest, UserData_DataIsolation) {
data1.scope = URL(kOrigin, "/foo");
data1.script = URL(kOrigin, "/script1.js");
data1.version_id = 200;
+ data1.resources_total_size_bytes = 100;
+ std::vector<Resource> resources1;
+ resources1.push_back(CreateResource(1, data1.script, 100));
// Add registration 2.
RegistrationData data2;
@@ -953,18 +986,18 @@ TEST(ServiceWorkerDatabaseTest, UserData_DataIsolation) {
data2.scope = URL(kOrigin, "/bar");
data2.script = URL(kOrigin, "/script2.js");
data2.version_id = 201;
+ data2.resources_total_size_bytes = 200;
+ std::vector<Resource> resources2;
+ resources2.push_back(CreateResource(2, data2.script, 200));
- std::vector<Resource> resources;
ServiceWorkerDatabase::RegistrationData deleted_version;
std::vector<int64> newly_purgeable_resources;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data1, resources, &deleted_version, &newly_purgeable_resources));
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data2, resources, &deleted_version, &newly_purgeable_resources));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data1, resources1, &deleted_version,
+ &newly_purgeable_resources));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data2, resources2, &deleted_version,
+ &newly_purgeable_resources));
// Write user data associated with the registration1.
std::string user_data_out;
@@ -1034,6 +1067,9 @@ TEST(ServiceWorkerDatabaseTest, UserData_DeleteRegistration) {
data1.scope = URL(kOrigin, "/foo");
data1.script = URL(kOrigin, "/script1.js");
data1.version_id = 200;
+ data1.resources_total_size_bytes = 100;
+ std::vector<Resource> resources1;
+ resources1.push_back(CreateResource(1, data1.script, 100));
// Add registration 2.
RegistrationData data2;
@@ -1041,18 +1077,18 @@ TEST(ServiceWorkerDatabaseTest, UserData_DeleteRegistration) {
data2.scope = URL(kOrigin, "/bar");
data2.script = URL(kOrigin, "/script2.js");
data2.version_id = 201;
+ data2.resources_total_size_bytes = 200;
+ std::vector<Resource> resources2;
+ resources2.push_back(CreateResource(2, data2.script, 200));
- std::vector<Resource> resources;
ServiceWorkerDatabase::RegistrationData deleted_version;
std::vector<int64> newly_purgeable_resources;
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data1, resources, &deleted_version, &newly_purgeable_resources));
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(
- data2, resources, &deleted_version, &newly_purgeable_resources));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data1, resources1, &deleted_version,
+ &newly_purgeable_resources));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data2, resources2, &deleted_version,
+ &newly_purgeable_resources));
// Write user data associated with the registration1.
std::string user_data_out;
@@ -1148,10 +1184,11 @@ TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) {
data.script = URL(origin, "/script.js");
data.version_id = 200;
data.is_active = false;
+ data.resources_total_size_bytes = 100;
+ std::vector<Resource> resources;
+ resources.push_back(CreateResource(1, data.script, 100));
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data,
- std::vector<Resource>(),
- &deleted_version,
+ database->WriteRegistration(data, resources, &deleted_version,
&newly_purgeable_resources));
// Make sure that the registration is stored.
@@ -1161,7 +1198,7 @@ TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) {
database->ReadRegistration(
data.registration_id, origin, &data_out, &resources_out));
VerifyRegistrationData(data, data_out);
- EXPECT_TRUE(resources_out.empty());
+ EXPECT_EQ(1u, resources_out.size());
// Activate the registration.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
@@ -1175,7 +1212,7 @@ TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) {
RegistrationData expected_data = data;
expected_data.is_active = true;
VerifyRegistrationData(expected_data, data_out);
- EXPECT_TRUE(resources_out.empty());
+ EXPECT_EQ(1u, resources_out.size());
// Delete the registration.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
@@ -1207,10 +1244,11 @@ TEST(ServiceWorkerDatabaseTest, UpdateLastCheckTime) {
data.script = URL(origin, "/script.js");
data.version_id = 200;
data.last_update_check = base::Time::Now();
+ data.resources_total_size_bytes = 100;
+ std::vector<Resource> resources;
+ resources.push_back(CreateResource(1, data.script, 100));
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteRegistration(data,
- std::vector<Resource>(),
- &deleted_version,
+ database->WriteRegistration(data, resources, &deleted_version,
&newly_purgeable_resources));
// Make sure that the registration is stored.
@@ -1220,7 +1258,7 @@ TEST(ServiceWorkerDatabaseTest, UpdateLastCheckTime) {
database->ReadRegistration(
data.registration_id, origin, &data_out, &resources_out));
VerifyRegistrationData(data, data_out);
- EXPECT_TRUE(resources_out.empty());
+ EXPECT_EQ(1u, resources_out.size());
// Update the last check time.
base::Time updated_time = base::Time::Now();
@@ -1236,7 +1274,7 @@ TEST(ServiceWorkerDatabaseTest, UpdateLastCheckTime) {
RegistrationData expected_data = data;
expected_data.last_update_check = updated_time;
VerifyRegistrationData(expected_data, data_out);
- EXPECT_TRUE(resources_out.empty());
+ EXPECT_EQ(1u, resources_out.size());
// Delete the registration.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,

Powered by Google App Engine
This is Rietveld 408576698