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 4a26a80786d28600784c779d43cf8f8adbb0b0ff..fb7982759306f3208cc53903b9a42e077d5ab8e5 100644 |
--- a/content/browser/service_worker/service_worker_database_unittest.cc |
+++ b/content/browser/service_worker/service_worker_database_unittest.cc |
@@ -498,7 +498,7 @@ TEST(ServiceWorkerDatabaseTest, Registration_Basic) { |
std::vector<Resource> resources_out; |
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
database->ReadRegistration( |
- data.registration_id, origin, &data_out, &resources_out)); |
+ data.registration_id, origin, &data_out, &resources_out)); |
VerifyRegistrationData(data, data_out); |
VerifyResourceRecords(resources, resources_out); |
@@ -741,18 +741,50 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) { |
VerifyResourceRecords(resources2, resources_out); |
} |
-TEST(ServiceWorkerDatabaseTest, UserData_Basic) { |
+TEST(ServiceWorkerDatabaseTest, Registration_UninitializedDatabase) { |
scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
- const GURL kOrigin("http://example.com"); |
+ const GURL origin("http://example.com"); |
// Should be failed because the database does not exist. |
- std::string user_data_out; |
+ RegistrationData data_out; |
+ std::vector<Resource> resources_out; |
EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
- database->WriteUserData(100, kOrigin, "key1", "data")); |
+ database->ReadRegistration( |
+ 100, origin, &data_out, &resources_out)); |
+ EXPECT_EQ(kInvalidServiceWorkerRegistrationId, data_out.registration_id); |
+ EXPECT_TRUE(resources_out.empty()); |
+ |
+ // Deleting non-existent registration should succeed. |
+ RegistrationData deleted_version; |
+ std::vector<int64> newly_purgeable_resources; |
+ EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
+ database->DeleteRegistration( |
+ 100, origin, &deleted_version, &newly_purgeable_resources)); |
+ EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version.version_id); |
+ EXPECT_TRUE(newly_purgeable_resources.empty()); |
+ |
+ // Actually create a new database, but not initialized yet. |
+ database->LazyOpen(true); |
+ |
+ // Should be failed because the database is not initialized. |
+ ASSERT_EQ(ServiceWorkerDatabase::UNINITIALIZED, database->state_); |
EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
- database->ReadUserData(100, "key1", &user_data_out)); |
+ database->ReadRegistration( |
+ 100, origin, &data_out, &resources_out)); |
+ EXPECT_EQ(kInvalidServiceWorkerRegistrationId, data_out.registration_id); |
+ EXPECT_TRUE(resources_out.empty()); |
+ |
+ // Deleting non-existent registration should succeed. |
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
- database->DeleteUserData(100, "key1")); |
+ database->DeleteRegistration( |
+ 100, origin, &deleted_version, &newly_purgeable_resources)); |
+ EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version.version_id); |
+ EXPECT_TRUE(newly_purgeable_resources.empty()); |
+} |
+ |
+TEST(ServiceWorkerDatabaseTest, UserData_Basic) { |
+ scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
+ const GURL kOrigin("http://example.com"); |
// Add a registration. |
RegistrationData data; |
@@ -769,6 +801,7 @@ TEST(ServiceWorkerDatabaseTest, UserData_Basic) { |
data, resources, &deleted_version, &newly_purgeable_resources)); |
// Write user data associated with the stored registration. |
+ std::string user_data_out; |
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
database->WriteUserData( |
data.registration_id, kOrigin, "key1", "data")); |
@@ -978,6 +1011,38 @@ TEST(ServiceWorkerDatabaseTest, UserData_DeleteRegistration) { |
EXPECT_EQ("data3", user_data_out); |
} |
+TEST(ServiceWorkerDatabaseTest, UserData_UninitializedDatabase) { |
+ scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
+ const GURL kOrigin("http://example.com"); |
+ |
+ // Should be failed because the database does not exist. |
+ std::string user_data_out; |
+ EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
+ database->ReadUserData(100, "key", &user_data_out)); |
+ |
+ // Should be failed because the associated registration does not exist. |
+ EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
+ database->WriteUserData(100, kOrigin, "key", "data")); |
+ |
+ // Deleting non-existent entry should succeed. |
+ EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
+ database->DeleteUserData(100, "key")); |
+ |
+ // Actually create a new database, but not initialized yet. |
+ database->LazyOpen(true); |
+ |
+ // Should be failed because the database is not initialized. |
+ ASSERT_EQ(ServiceWorkerDatabase::UNINITIALIZED, database->state_); |
+ EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
+ database->ReadUserData(100, "key", &user_data_out)); |
+ EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
+ database->WriteUserData(100, kOrigin, "key", "data")); |
+ |
+ // Deleting non-existent entry should succeed. |
+ EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
+ database->DeleteUserData(100, "key")); |
+} |
+ |
TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) { |
scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
GURL origin("http://example.com"); |