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

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

Issue 846443005: ServiceWorker: ReadRegistration should return NOT_FOUND when the database is not initialized (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « content/browser/service_worker/service_worker_database.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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");
« no previous file with comments | « content/browser/service_worker/service_worker_database.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698