| 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
|
|
|