| 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 baa2542cbc1b2d5ae272842f7e72352b86e12138..4bf042f46e14b602bbe74fc6dd4747b8df68553d 100644
|
| --- a/content/browser/service_worker/service_worker_database_unittest.cc
|
| +++ b/content/browser/service_worker/service_worker_database_unittest.cc
|
| @@ -10,6 +10,7 @@
|
| #include "base/files/scoped_temp_dir.h"
|
| #include "base/stl_util.h"
|
| #include "content/browser/service_worker/service_worker_database.pb.h"
|
| +#include "content/common/service_worker/service_worker_types.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace content {
|
| @@ -119,11 +120,13 @@ TEST(ServiceWorkerDatabaseTest, DatabaseVersion) {
|
| // First writing triggers database initialization and bumps the schema
|
| // version.
|
| std::vector<ServiceWorkerDatabase::ResourceRecord> resources;
|
| + int64 deleted_version_id;
|
| std::vector<int64> newly_purgeable_resources;
|
| ServiceWorkerDatabase::RegistrationData data;
|
| - ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| - database->WriteRegistration(data, resources,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data, resources, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| database->ReadDatabaseVersion(&db_version));
|
| @@ -156,14 +159,16 @@ TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) {
|
| // Writing a registration bumps the next available ids.
|
| std::vector<Resource> resources;
|
| RegistrationData data1;
|
| + int64 deleted_version_id;
|
| 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data1, resources, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds(
|
| &ids.reg_id, &ids.ver_id, &ids.res_id));
|
| @@ -178,9 +183,10 @@ 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data2, resources, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| // Close and reopen the database to verify the stored values.
|
| database.reset(CreateDatabase(database_dir.path()));
|
| @@ -201,6 +207,7 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
|
| EXPECT_TRUE(origins.empty());
|
|
|
| std::vector<Resource> resources;
|
| + int64 deleted_version_id;
|
| std::vector<int64> newly_purgeable_resources;
|
|
|
| GURL origin1("http://example.com");
|
| @@ -209,9 +216,10 @@ 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data1, resources, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| GURL origin2("https://www.example.com");
|
| RegistrationData data2;
|
| @@ -219,9 +227,10 @@ 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data2, resources, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| GURL origin3("https://example.org");
|
| RegistrationData data3;
|
| @@ -229,9 +238,10 @@ 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data3, resources, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| // |origin3| has two registrations.
|
| RegistrationData data4;
|
| @@ -239,9 +249,10 @@ 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data4, resources, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| origins.clear();
|
| EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| @@ -253,8 +264,11 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
|
|
|
| // |origin3| has another registration, so should not remove it from the
|
| // unique origin list.
|
| + int64 version_id;
|
| ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| - database->DeleteRegistration(data4.registration_id, origin3,
|
| + database->DeleteRegistration(data4.registration_id,
|
| + origin3,
|
| + &version_id,
|
| &newly_purgeable_resources));
|
|
|
| origins.clear();
|
| @@ -267,7 +281,9 @@ 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,
|
| + &version_id,
|
| &newly_purgeable_resources));
|
|
|
| origins.clear();
|
| @@ -291,6 +307,7 @@ TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) {
|
| EXPECT_TRUE(registrations.empty());
|
|
|
| std::vector<Resource> resources;
|
| + int64 deleted_version_id;
|
| std::vector<int64> newly_purgeable_resources;
|
|
|
| RegistrationData data1;
|
| @@ -298,27 +315,30 @@ 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data1, resources, &deleted_version_id, &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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data2, resources, &deleted_version_id, &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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data3, resources, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| // |origin3| has two registrations.
|
| RegistrationData data4;
|
| @@ -326,9 +346,10 @@ 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data4, resources, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| registrations.clear();
|
| EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| @@ -347,6 +368,7 @@ TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) {
|
| EXPECT_TRUE(registrations.empty());
|
|
|
| std::vector<Resource> resources;
|
| + int64 deleted_version_id;
|
| std::vector<int64> newly_purgeable_resources;
|
|
|
| GURL origin1("http://www1.example.com");
|
| @@ -355,9 +377,10 @@ 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data1, resources, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| GURL origin2("http://www2.example.com");
|
| RegistrationData data2;
|
| @@ -365,9 +388,10 @@ 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data2, resources, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| GURL origin3("http://www3.example.com");
|
| RegistrationData data3;
|
| @@ -375,9 +399,10 @@ 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data3, resources, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| // |origin3| has two registrations.
|
| RegistrationData data4;
|
| @@ -385,9 +410,10 @@ 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data4, resources, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| registrations.clear();
|
| EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| @@ -425,10 +451,15 @@ TEST(ServiceWorkerDatabaseTest, Registration_Basic) {
|
| database->GetUncommittedResourceIds(&uncommitted_ids_out));
|
| EXPECT_EQ(uncommitted_ids, uncommitted_ids_out);
|
|
|
| + int64 deleted_version_id = 222; // Dummy initial value
|
| std::vector<int64> newly_purgeable_resources;
|
| - EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| - database->WriteRegistration(data, resources,
|
| - &newly_purgeable_resources));
|
| +
|
| + EXPECT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data, resources, &deleted_version_id, &newly_purgeable_resources));
|
| + EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version_id);
|
| + EXPECT_TRUE(newly_purgeable_resources.empty());
|
|
|
| // Make sure that the registration and resource records are stored.
|
| RegistrationData data_out;
|
| @@ -446,8 +477,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,
|
| + &deleted_version_id,
|
| &newly_purgeable_resources));
|
| + EXPECT_EQ(data.version_id, deleted_version_id);
|
| 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);
|
| @@ -468,6 +502,55 @@ TEST(ServiceWorkerDatabaseTest, Registration_Basic) {
|
| EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources[1].resource_id));
|
| }
|
|
|
| +TEST(ServiceWorkerDatabaseTest, DeleteNonExistentRegistration) {
|
| + scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
|
| +
|
| + GURL origin("http://example.com");
|
| + RegistrationData data;
|
| + data.registration_id = 100;
|
| + data.scope = URL(origin, "/foo");
|
| + data.script = URL(origin, "/script.js");
|
| + data.version_id = 200;
|
| +
|
| + std::vector<Resource> resources;
|
| + resources.push_back(CreateResource(1, URL(origin, "/resource1")));
|
| + resources.push_back(CreateResource(2, URL(origin, "/resource2")));
|
| +
|
| + const int64 kNonExistentRegistrationId = 999;
|
| + const int64 kArbitraryVersionId = 222; // Used as a dummy initial value
|
| +
|
| + int64 deleted_version_id = kArbitraryVersionId;
|
| + std::vector<int64> newly_purgeable_resources;
|
| + EXPECT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data, resources, &deleted_version_id, &newly_purgeable_resources));
|
| + EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version_id);
|
| + EXPECT_TRUE(newly_purgeable_resources.empty());
|
| +
|
| + // Delete from an origin that has a registration.
|
| + deleted_version_id = kArbitraryVersionId;
|
| + newly_purgeable_resources.clear();
|
| + EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| + database->DeleteRegistration(kNonExistentRegistrationId,
|
| + origin,
|
| + &deleted_version_id,
|
| + &newly_purgeable_resources));
|
| + EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version_id);
|
| + EXPECT_TRUE(newly_purgeable_resources.empty());
|
| +
|
| + // Delete from an origin that has no registration.
|
| + deleted_version_id = kArbitraryVersionId;
|
| + newly_purgeable_resources.clear();
|
| + EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| + database->DeleteRegistration(kNonExistentRegistrationId,
|
| + GURL("http://example.net"),
|
| + &deleted_version_id,
|
| + &newly_purgeable_resources));
|
| + EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version_id);
|
| + EXPECT_TRUE(newly_purgeable_resources.empty());
|
| +}
|
| +
|
| TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) {
|
| scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
|
|
|
| @@ -481,11 +564,15 @@ TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) {
|
| std::vector<Resource> resources1;
|
| resources1.push_back(CreateResource(1, URL(origin, "/resource1")));
|
| resources1.push_back(CreateResource(2, URL(origin, "/resource2")));
|
| +
|
| + int64 deleted_version_id = 222; // Dummy inital value
|
| std::vector<int64> newly_purgeable_resources;
|
|
|
| - EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| - database->WriteRegistration(data, resources1,
|
| - &newly_purgeable_resources));
|
| + EXPECT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data, resources1, &deleted_version_id, &newly_purgeable_resources));
|
| + EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version_id);
|
| EXPECT_TRUE(newly_purgeable_resources.empty());
|
|
|
| // Make sure that the registration and resource records are stored.
|
| @@ -504,8 +591,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,
|
| + &deleted_version_id,
|
| &newly_purgeable_resources));
|
| + EXPECT_EQ(data.version_id, deleted_version_id);
|
| 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);
|
| @@ -530,6 +620,7 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) {
|
| scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
|
| GURL origin("http://example.com");
|
|
|
| + int64 deleted_version_id;
|
| std::vector<int64> newly_purgeable_resources;
|
|
|
| // Add registration1.
|
| @@ -542,9 +633,10 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) {
|
| std::vector<Resource> resources1;
|
| 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,
|
| - &newly_purgeable_resources));
|
| + EXPECT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data1, resources1, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| // Add registration2.
|
| RegistrationData data2;
|
| @@ -556,9 +648,10 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) {
|
| std::vector<Resource> resources2;
|
| 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,
|
| - &newly_purgeable_resources));
|
| + EXPECT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data2, resources2, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| // Make sure that registration1 is stored.
|
| RegistrationData data_out;
|
| @@ -581,8 +674,11 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) {
|
| EXPECT_TRUE(purgeable_ids_out.empty());
|
|
|
| // Delete registration1.
|
| + int64 version_id;
|
| EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| - database->DeleteRegistration(data1.registration_id, origin,
|
| + database->DeleteRegistration(data1.registration_id,
|
| + origin,
|
| + &version_id,
|
| &newly_purgeable_resources));
|
|
|
| // Make sure that registration1 is gone.
|
| @@ -611,6 +707,7 @@ TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) {
|
| scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
|
| GURL origin("http://example.com");
|
|
|
| + int64 deleted_version_id;
|
| std::vector<int64> newly_purgeable_resources;
|
|
|
| // Should be false because a registration does not exist.
|
| @@ -625,7 +722,9 @@ 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>(),
|
| + &deleted_version_id,
|
| &newly_purgeable_resources));
|
|
|
| // Make sure that the registration is stored.
|
| @@ -652,8 +751,11 @@ TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) {
|
| EXPECT_TRUE(resources_out.empty());
|
|
|
| // Delete the registration.
|
| + int64 version_id;
|
| EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| - database->DeleteRegistration(data.registration_id, origin,
|
| + database->DeleteRegistration(data.registration_id,
|
| + origin,
|
| + &version_id,
|
| &newly_purgeable_resources));
|
|
|
| // Should be false because the registration is gone.
|
| @@ -664,6 +766,7 @@ TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) {
|
| TEST(ServiceWorkerDatabaseTest, UpdateLastCheckTime) {
|
| scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
|
| GURL origin("http://example.com");
|
| + int64 deleted_version_id;
|
| std::vector<int64> newly_purgeable_resources;
|
|
|
| // Should be false because a registration does not exist.
|
| @@ -678,7 +781,9 @@ 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>(),
|
| + &deleted_version_id,
|
| &newly_purgeable_resources));
|
|
|
| // Make sure that the registration is stored.
|
| @@ -707,8 +812,11 @@ TEST(ServiceWorkerDatabaseTest, UpdateLastCheckTime) {
|
| EXPECT_TRUE(resources_out.empty());
|
|
|
| // Delete the registration.
|
| + int64 version_id;
|
| EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| - database->DeleteRegistration(data.registration_id, origin,
|
| + database->DeleteRegistration(data.registration_id,
|
| + origin,
|
| + &version_id,
|
| &newly_purgeable_resources));
|
|
|
| // Should be false because the registration is gone.
|
| @@ -805,6 +913,7 @@ TEST(ServiceWorkerDatabaseTest, PurgeableResourceIds) {
|
|
|
| TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
|
| scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
|
| + int64 deleted_version_id;
|
| std::vector<int64> newly_purgeable_resources;
|
|
|
| // Data associated with |origin1| will be removed.
|
| @@ -821,9 +930,10 @@ TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
|
| std::vector<Resource> resources1;
|
| 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data1, resources1, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| RegistrationData data2;
|
| data2.registration_id = 11;
|
| @@ -834,9 +944,10 @@ TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
|
| std::vector<Resource> resources2;
|
| 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data2, resources2, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| // |origin2| has one registration.
|
| RegistrationData data3;
|
| @@ -848,9 +959,10 @@ TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
|
| std::vector<Resource> resources3;
|
| 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,
|
| - &newly_purgeable_resources));
|
| + ASSERT_EQ(
|
| + ServiceWorkerDatabase::STATUS_OK,
|
| + database->WriteRegistration(
|
| + data3, resources3, &deleted_version_id, &newly_purgeable_resources));
|
|
|
| EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| database->DeleteAllDataForOrigin(origin1,
|
|
|