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

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

Issue 2394443002: ServiceWorker: Ensure that a resource list contains the main script (Closed)
Patch Set: fix tests Created 4 years, 2 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 ebede138c41c6a6f9b256571c42a00dfa6f8278a..6806a8b4a1321c57586f98f8b599657ec7f59828 100644
--- a/content/browser/service_worker/service_worker_database_unittest.cc
+++ b/content/browser/service_worker/service_worker_database_unittest.cc
@@ -619,7 +619,7 @@ TEST(ServiceWorkerDatabaseTest, Registration_Basic) {
RegistrationData data;
data.registration_id = 100;
data.scope = URL(origin, "/foo");
- data.script = URL(origin, "/script.js");
+ data.script = URL(origin, "/resource1");
data.version_id = 200;
data.resources_total_size_bytes = 10939 + 200;
data.foreign_fetch_scopes.push_back(URL(origin, "/foo/bar"));
@@ -706,7 +706,7 @@ TEST(ServiceWorkerDatabaseTest, DeleteNonExistentRegistration) {
RegistrationData data;
data.registration_id = 100;
data.scope = URL(origin, "/foo");
- data.script = URL(origin, "/script.js");
+ data.script = URL(origin, "/resource1");
data.version_id = 200;
data.resources_total_size_bytes = 19 + 29129;
@@ -756,7 +756,7 @@ TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) {
RegistrationData data;
data.registration_id = 100;
data.scope = URL(origin, "/foo");
- data.script = URL(origin, "/script.js");
+ data.script = URL(origin, "/resource1");
data.version_id = 200;
data.resources_total_size_bytes = 10 + 11;
data.foreign_fetch_scopes.push_back(URL(origin, "/foo"));
@@ -788,6 +788,7 @@ TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) {
// Update the registration.
RegistrationData updated_data = data;
+ updated_data.script = URL(origin, "/resource3");
updated_data.version_id = data.version_id + 1;
updated_data.resources_total_size_bytes = 12 + 13;
updated_data.foreign_fetch_scopes.clear();
@@ -834,7 +835,7 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) {
RegistrationData data1;
data1.registration_id = 100;
data1.scope = URL(origin, "/foo");
- data1.script = URL(origin, "/script1.js");
+ data1.script = URL(origin, "/resource1");
data1.version_id = 200;
data1.resources_total_size_bytes = 1451 + 15234;
@@ -850,7 +851,7 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) {
RegistrationData data2;
data2.registration_id = 101;
data2.scope = URL(origin, "/bar");
- data2.script = URL(origin, "/script2.js");
+ data2.script = URL(origin, "/resource3");
data2.version_id = 201;
data2.resources_total_size_bytes = 5 + 6;
@@ -1487,7 +1488,7 @@ TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
RegistrationData data1;
data1.registration_id = 10;
data1.scope = URL(origin1, "/foo");
- data1.script = URL(origin1, "/script1.js");
+ data1.script = URL(origin1, "/resource1");
data1.version_id = 100;
data1.resources_total_size_bytes = 2013 + 512;
data1.foreign_fetch_scopes.push_back(URL(origin1, "/foo/ff"));
@@ -1509,7 +1510,7 @@ TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
RegistrationData data2;
data2.registration_id = 11;
data2.scope = URL(origin1, "/bar");
- data2.script = URL(origin1, "/script2.js");
+ data2.script = URL(origin1, "/resource3");
data2.version_id = 101;
data2.resources_total_size_bytes = 4 + 5;
@@ -1531,7 +1532,7 @@ TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
RegistrationData data3;
data3.registration_id = 12;
data3.scope = URL(origin2, "/hoge");
- data3.script = URL(origin2, "/script3.js");
+ data3.script = URL(origin2, "/resource5");
data3.version_id = 102;
data3.resources_total_size_bytes = 6 + 7;
data3.foreign_fetch_scopes.push_back(URL(origin2, "/hoge/ff"));
@@ -1780,4 +1781,36 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithForeignFetchRegistrations) {
EXPECT_EQ(0U, origins.size());
}
+TEST(ServiceWorkerDatabaseTest, Corruption_NoMainResource) {
+ std::unique_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
+ ServiceWorkerDatabase::RegistrationData deleted_version;
+ std::vector<int64_t> newly_purgeable_resources;
+
+ GURL origin("http://example.com");
+
+ RegistrationData data;
+ data.registration_id = 10;
+ data.scope = URL(origin, "/foo");
+ data.script = URL(origin, "/resource1");
+ data.version_id = 100;
+ data.resources_total_size_bytes = 2016;
+
+ // Simulate that "/resource1" wasn't correctly written in the database by not
+ // adding it.
+ std::vector<Resource> resources;
+ resources.push_back(CreateResource(2, URL(origin, "/resource2"), 2016));
+
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteRegistration(data, resources, &deleted_version,
+ &newly_purgeable_resources));
+
+ // The database should detect lack of the main resource (i.e. "/resource1").
+ RegistrationData data_out;
+ std::vector<Resource> resources_out;
+ EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_CORRUPTED,
+ database->ReadRegistration(data.registration_id, origin, &data_out,
+ &resources_out));
+ EXPECT_TRUE(resources_out.empty());
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698