| 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 f5fca2d100bf8e8dc3d8309e11ceaa4b60bb6216..5fbfc747efa05e9d960bd4169009f577b9139380 100644
|
| --- a/content/browser/service_worker/service_worker_database_unittest.cc
|
| +++ b/content/browser/service_worker/service_worker_database_unittest.cc
|
| @@ -5,6 +5,8 @@
|
| #include "content/browser/service_worker/service_worker_database.h"
|
|
|
| #include "base/files/scoped_temp_dir.h"
|
| +#include "base/stl_util.h"
|
| +#include "content/browser/service_worker/service_worker_database.pb.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace content {
|
| @@ -28,6 +30,15 @@ ServiceWorkerDatabase* CreateDatabaseInMemory() {
|
| return new ServiceWorkerDatabase(base::FilePath());
|
| }
|
|
|
| +void VerifyRegistrationData(
|
| + const ServiceWorkerRegistrationData& expected,
|
| + const ServiceWorkerRegistrationData& actual) {
|
| + EXPECT_EQ(expected.registration_id(), actual.registration_id());
|
| + EXPECT_EQ(expected.scope_url(), actual.scope_url());
|
| + EXPECT_EQ(expected.script_url(), actual.script_url());
|
| + EXPECT_EQ(expected.version_id(), actual.version_id());
|
| +}
|
| +
|
| } // namespace
|
|
|
| TEST(ServiceWorkerDatabaseTest, OpenDatabase) {
|
| @@ -73,7 +84,131 @@ TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) {
|
| EXPECT_EQ(0, ids.ver_id);
|
| EXPECT_EQ(0, ids.res_id);
|
|
|
| - // TODO(nhiroki): Test GetNextAvailableIds() after update these ids.
|
| + // Writing a registration bumps the next available ids.
|
| + std::vector<ServiceWorkerResourceRecord> resources;
|
| + ServiceWorkerRegistrationData data;
|
| + data.set_registration_id(100);
|
| + data.set_scope_url("http://example.com/foo");
|
| + data.set_script_url("http://example.com/script.js");
|
| + data.set_version_id(200);
|
| + ASSERT_TRUE(database->WriteRegistration(data, resources));
|
| +
|
| + EXPECT_TRUE(database->GetNextAvailableIds(
|
| + &ids.reg_id, &ids.ver_id, &ids.res_id));
|
| + EXPECT_EQ(101, ids.reg_id);
|
| + EXPECT_EQ(201, ids.ver_id);
|
| + EXPECT_EQ(0, ids.res_id);
|
| +}
|
| +
|
| +TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
|
| + scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
|
| +
|
| + std::set<GURL> origins;
|
| + EXPECT_FALSE(database->GetOriginsWithRegistrations(&origins));
|
| +
|
| + std::vector<ServiceWorkerResourceRecord> resources;
|
| +
|
| + ServiceWorkerRegistrationData data1;
|
| + data1.set_registration_id(123);
|
| + data1.set_scope_url("http://example.com/foo");
|
| + data1.set_script_url("http://example.com/script1.js");
|
| + data1.set_version_id(456);
|
| + ASSERT_TRUE(database->WriteRegistration(data1, resources));
|
| +
|
| + ServiceWorkerRegistrationData data2;
|
| + data2.set_registration_id(234);
|
| + data2.set_scope_url("https://www.example.com/bar");
|
| + data2.set_script_url("https://www.example.com/script2.js");
|
| + data2.set_version_id(567);
|
| + ASSERT_TRUE(database->WriteRegistration(data2, resources));
|
| +
|
| + ServiceWorkerRegistrationData data3;
|
| + data3.set_registration_id(345);
|
| + data3.set_scope_url("https://example.org/hoge");
|
| + data3.set_script_url("https://example.org/script3.js");
|
| + data3.set_version_id(678);
|
| + ASSERT_TRUE(database->WriteRegistration(data3, resources));
|
| +
|
| + // Same origin with |data3|.
|
| + ServiceWorkerRegistrationData data4;
|
| + data4.set_registration_id(456);
|
| + data4.set_scope_url("https://example.org/fuga");
|
| + data4.set_script_url("https://example.org/script4.js");
|
| + data4.set_version_id(789);
|
| + ASSERT_TRUE(database->WriteRegistration(data4, resources));
|
| +
|
| + EXPECT_TRUE(database->GetOriginsWithRegistrations(&origins));
|
| + EXPECT_EQ(3U, origins.size());
|
| + EXPECT_TRUE(ContainsKey(origins, GURL("http://example.com")));
|
| + EXPECT_TRUE(ContainsKey(origins, GURL("https://www.example.com")));
|
| + EXPECT_TRUE(ContainsKey(origins, GURL("https://example.org")));
|
| +}
|
| +
|
| +TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) {
|
| + scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
|
| +
|
| + GURL origin("https://example.org");
|
| + std::vector<ServiceWorkerRegistrationData> registrations;
|
| + EXPECT_FALSE(database->GetRegistrationsForOrigin(origin, ®istrations));
|
| +
|
| + std::vector<ServiceWorkerResourceRecord> resources;
|
| +
|
| + ServiceWorkerRegistrationData data1;
|
| + data1.set_registration_id(100);
|
| + data1.set_scope_url("http://example.com/foo");
|
| + data1.set_script_url("http://example.com/script1.js");
|
| + data1.set_version_id(1000);
|
| + ASSERT_TRUE(database->WriteRegistration(data1, resources));
|
| +
|
| + ServiceWorkerRegistrationData data2;
|
| + data2.set_registration_id(200);
|
| + data2.set_scope_url("https://www.example.com/bar");
|
| + data2.set_script_url("https://www.example.com/script2.js");
|
| + data2.set_version_id(2000);
|
| + ASSERT_TRUE(database->WriteRegistration(data2, resources));
|
| +
|
| + ServiceWorkerRegistrationData data3;
|
| + data3.set_registration_id(300);
|
| + data3.set_scope_url("https://example.org/hoge");
|
| + data3.set_script_url("https://example.org/script3.js");
|
| + data3.set_version_id(3000);
|
| + ASSERT_TRUE(database->WriteRegistration(data3, resources));
|
| +
|
| + // Same origin with |data3|.
|
| + ServiceWorkerRegistrationData data4;
|
| + data4.set_registration_id(400);
|
| + data4.set_scope_url("https://example.org/fuga");
|
| + data4.set_script_url("https://example.org/script4.js");
|
| + data4.set_version_id(4000);
|
| + ASSERT_TRUE(database->WriteRegistration(data4, resources));
|
| +
|
| + EXPECT_TRUE(database->GetRegistrationsForOrigin(origin, ®istrations));
|
| + EXPECT_EQ(2U, registrations.size());
|
| + VerifyRegistrationData(data3, registrations[0]);
|
| + VerifyRegistrationData(data4, registrations[1]);
|
| +}
|
| +
|
| +TEST(ServiceWorkerDatabaseTest, Registration) {
|
| + scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
|
| +
|
| + ServiceWorkerRegistrationData data;
|
| + data.set_registration_id(100);
|
| + data.set_scope_url("http://example.com/foo");
|
| + data.set_script_url("http://example.com/script.js");
|
| + data.set_version_id(200);
|
| +
|
| + // TODO(nhiroki): Test ResourceRecord manipulation.
|
| + std::vector<ServiceWorkerResourceRecord> resources;
|
| +
|
| + database->WriteRegistration(data, resources);
|
| +
|
| + ServiceWorkerRegistrationData data_out;
|
| + std::vector<ServiceWorkerResourceRecord> resources_out;
|
| + database->ReadRegistration(data.registration_id(),
|
| + GURL("http://example.com"),
|
| + &data_out, &resources_out);
|
| +
|
| + VerifyRegistrationData(data, data_out);
|
| }
|
|
|
| } // namespace content
|
|
|