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

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

Issue 1945753002: Make Service Worker DB UserData methods accept multiple keys at once (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@iid6encrypt
Patch Set: Created 4 years, 8 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
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 e7f519783cc96b125e9cc20aff2d9de20415b661..391905470dbe6f20b98f425eeaa04718394aea4c 100644
--- a/content/browser/service_worker/service_worker_database_unittest.cc
+++ b/content/browser/service_worker/service_worker_database_unittest.cc
@@ -994,52 +994,99 @@ TEST(ServiceWorkerDatabaseTest, UserData_Basic) {
data, resources, &deleted_version, &newly_purgeable_resources));
// Write user data associated with the stored registration.
- std::string user_data_out;
+ std::vector<std::string> user_data_out;
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteUserData(
- data.registration_id, kOrigin, "key1", "data"));
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data.registration_id, "key1", &user_data_out));
- EXPECT_EQ("data", user_data_out);
+ database->WriteUserData(data.registration_id, kOrigin,
+ {{"key1", "data"}}));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data.registration_id, {"key1"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ EXPECT_EQ("data", user_data_out[0]);
// Writing user data not associated with the stored registration should be
// failed.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
- database->WriteUserData(300, kOrigin, "key1", "data"));
+ database->WriteUserData(300, kOrigin, {{"key1", "data"}}));
// Write empty user data for a different key.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteUserData(
- data.registration_id, kOrigin, "key2", std::string()));
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data.registration_id, "key2", &user_data_out));
- EXPECT_EQ(std::string(), user_data_out);
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data.registration_id, "key1", &user_data_out));
- EXPECT_EQ("data", user_data_out);
+ database->WriteUserData(data.registration_id, kOrigin,
+ {{"key2", std::string()}}));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data.registration_id, {"key2"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ EXPECT_EQ(std::string(), user_data_out[0]);
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data.registration_id, {"key1"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ EXPECT_EQ("data", user_data_out[0]);
// Overwrite the existing user data.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteUserData(
- data.registration_id, kOrigin, "key1", "overwrite"));
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data.registration_id, "key1", &user_data_out));
- EXPECT_EQ("overwrite", user_data_out);
+ database->WriteUserData(data.registration_id, kOrigin,
+ {{"key1", "overwrite"}}));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data.registration_id, {"key1"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ EXPECT_EQ("overwrite", user_data_out[0]);
// Delete the user data.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->DeleteUserData(data.registration_id, "key1"));
+ database->DeleteUserData(data.registration_id, {"key1"}));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
+ database->ReadUserData(data.registration_id, {"key1"}, &user_data_out));
+ EXPECT_TRUE(user_data_out.empty());
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data.registration_id, {"key2"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ EXPECT_EQ(std::string(), user_data_out[0]);
+
+ // Write/overwrite multiple user data keys.
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->WriteUserData(
+ data.registration_id, kOrigin,
+ {{"key2", "overwrite2"}, {"key3", "data3"}, {"key4", "data4"}}));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
+ database->ReadUserData(data.registration_id, {"key1"}, &user_data_out));
+ EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data.registration_id,
+ {"key2", "key3", "key4"}, &user_data_out));
+ ASSERT_EQ(3u, user_data_out.size());
+ EXPECT_EQ("overwrite2", user_data_out[0]);
+ EXPECT_EQ("data3", user_data_out[1]);
+ EXPECT_EQ("data4", user_data_out[2]);
+ // Multiple reads fail if one is not found.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
- database->ReadUserData(
- data.registration_id, "key1", &user_data_out));
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data.registration_id, "key2", &user_data_out));
- EXPECT_EQ(std::string(), user_data_out);
+ database->ReadUserData(data.registration_id, {"key2", "key1"},
+ &user_data_out));
+ EXPECT_TRUE(user_data_out.empty());
+
+ // Delete multiple user data keys, even if some are not found.
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->DeleteUserData(data.registration_id, {"key1", "key2", "key3"}));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
+ database->ReadUserData(data.registration_id, {"key1"}, &user_data_out));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
+ database->ReadUserData(data.registration_id, {"key2"}, &user_data_out));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
+ database->ReadUserData(data.registration_id, {"key3"}, &user_data_out));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data.registration_id, {"key4"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ EXPECT_EQ("data4", user_data_out[0]);
}
TEST(ServiceWorkerDatabaseTest, UserData_DataIsolation) {
@@ -1076,31 +1123,34 @@ TEST(ServiceWorkerDatabaseTest, UserData_DataIsolation) {
&newly_purgeable_resources));
// Write user data associated with the registration1.
- std::string user_data_out;
+ std::vector<std::string> user_data_out;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteUserData(
- data1.registration_id, kOrigin, "key", "data1"));
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data1.registration_id, "key", &user_data_out));
- EXPECT_EQ("data1", user_data_out);
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
- database->ReadUserData(
- data2.registration_id, "key", &user_data_out));
+ database->WriteUserData(data1.registration_id, kOrigin,
+ {{"key", "data1"}}));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data1.registration_id, {"key"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ EXPECT_EQ("data1", user_data_out[0]);
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
+ database->ReadUserData(data2.registration_id, {"key"}, &user_data_out));
// Write user data associated with the registration2. This shouldn't overwrite
// the data associated with registration1.
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteUserData(
- data2.registration_id, kOrigin, "key", "data2"));
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data1.registration_id, "key", &user_data_out));
- EXPECT_EQ("data1", user_data_out);
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data2.registration_id, "key", &user_data_out));
- EXPECT_EQ("data2", user_data_out);
+ database->WriteUserData(data2.registration_id, kOrigin,
+ {{"key", "data2"}}));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data1.registration_id, {"key"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ EXPECT_EQ("data1", user_data_out[0]);
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data2.registration_id, {"key"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ EXPECT_EQ("data2", user_data_out[0]);
// Get all registrations with user data.
std::vector<std::pair<int64_t, std::string>> user_data_list;
@@ -1115,14 +1165,15 @@ TEST(ServiceWorkerDatabaseTest, UserData_DataIsolation) {
// Delete the data associated with the registration2. This shouldn't delete
// the data associated with registration1.
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->DeleteUserData(data2.registration_id, "key"));
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data1.registration_id, "key", &user_data_out));
- EXPECT_EQ("data1", user_data_out);
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
- database->ReadUserData(
- data2.registration_id, "key", &user_data_out));
+ database->DeleteUserData(data2.registration_id, {"key"}));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data1.registration_id, {"key"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ EXPECT_EQ("data1", user_data_out[0]);
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
+ database->ReadUserData(data2.registration_id, {"key"}, &user_data_out));
// And again get all registrations with user data.
user_data_list.clear();
@@ -1167,30 +1218,33 @@ TEST(ServiceWorkerDatabaseTest, UserData_DeleteRegistration) {
&newly_purgeable_resources));
// Write user data associated with the registration1.
- std::string user_data_out;
- ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteUserData(
- data1.registration_id, kOrigin, "key1", "data1"));
+ std::vector<std::string> user_data_out;
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteUserData(
- data1.registration_id, kOrigin, "key2", "data2"));
+ database->WriteUserData(data1.registration_id, kOrigin,
+ {{"key1", "data1"}}));
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data1.registration_id, "key1", &user_data_out));
- ASSERT_EQ("data1", user_data_out);
- ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data1.registration_id, "key2", &user_data_out));
- ASSERT_EQ("data2", user_data_out);
+ database->WriteUserData(data1.registration_id, kOrigin,
+ {{"key2", "data2"}}));
+ ASSERT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data1.registration_id, {"key1"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ ASSERT_EQ("data1", user_data_out[0]);
+ ASSERT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data1.registration_id, {"key2"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ ASSERT_EQ("data2", user_data_out[0]);
// Write user data associated with the registration2.
ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->WriteUserData(
- data2.registration_id, kOrigin, "key3", "data3"));
- ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data2.registration_id, "key3", &user_data_out));
- ASSERT_EQ("data3", user_data_out);
+ database->WriteUserData(data2.registration_id, kOrigin,
+ {{"key3", "data3"}}));
+ ASSERT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data2.registration_id, {"key3"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ ASSERT_EQ("data3", user_data_out[0]);
// Delete all data associated with the registration1. This shouldn't delete
// the data associated with registration2.
@@ -1198,16 +1252,17 @@ TEST(ServiceWorkerDatabaseTest, UserData_DeleteRegistration) {
database->DeleteRegistration(
data1.registration_id, kOrigin,
&deleted_version, &newly_purgeable_resources));
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
- database->ReadUserData(
- data1.registration_id, "key1", &user_data_out));
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
- database->ReadUserData(
- data1.registration_id, "key2", &user_data_out));
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data2.registration_id, "key3", &user_data_out));
- EXPECT_EQ("data3", user_data_out);
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
+ database->ReadUserData(data1.registration_id, {"key1"}, &user_data_out));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
+ database->ReadUserData(data1.registration_id, {"key2"}, &user_data_out));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data2.registration_id, {"key3"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ EXPECT_EQ("data3", user_data_out[0]);
}
TEST(ServiceWorkerDatabaseTest, UserData_UninitializedDatabase) {
@@ -1215,17 +1270,17 @@ TEST(ServiceWorkerDatabaseTest, UserData_UninitializedDatabase) {
const GURL kOrigin("http://example.com");
// Should be failed because the database does not exist.
- std::string user_data_out;
+ std::vector<std::string> user_data_out;
EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
- database->ReadUserData(100, "key", &user_data_out));
+ 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"));
+ database->WriteUserData(100, kOrigin, {{"key", "data"}}));
// Deleting non-existent entry should succeed.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->DeleteUserData(100, "key"));
+ database->DeleteUserData(100, {"key"}));
// Actually create a new database, but not initialized yet.
database->LazyOpen(true);
@@ -1233,13 +1288,13 @@ TEST(ServiceWorkerDatabaseTest, UserData_UninitializedDatabase) {
// 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));
+ database->ReadUserData(100, {"key"}, &user_data_out));
EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
- database->WriteUserData(100, kOrigin, "key", "data"));
+ database->WriteUserData(100, kOrigin, {{"key", "data"}}));
// Deleting non-existent entry should succeed.
EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->DeleteUserData(100, "key"));
+ database->DeleteUserData(100, {"key"}));
}
TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) {
@@ -1444,14 +1499,12 @@ TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
ServiceWorkerDatabase::STATUS_OK,
database->WriteRegistration(
data1, resources1, &deleted_version, &newly_purgeable_resources));
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteUserData(
- data1.registration_id, origin1, "key1", "data1"));
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteUserData(
- data1.registration_id, origin1, "key2", "data2"));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteUserData(data1.registration_id, origin1,
+ {{"key1", "data1"}}));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteUserData(data1.registration_id, origin1,
+ {{"key2", "data2"}}));
RegistrationData data2;
data2.registration_id = 11;
@@ -1467,14 +1520,12 @@ TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
ServiceWorkerDatabase::STATUS_OK,
database->WriteRegistration(
data2, resources2, &deleted_version, &newly_purgeable_resources));
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteUserData(
- data2.registration_id, origin1, "key3", "data3"));
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteUserData(
- data2.registration_id, origin1, "key4", "data4"));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteUserData(data2.registration_id, origin1,
+ {{"key3", "data3"}}));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteUserData(data2.registration_id, origin1,
+ {{"key4", "data4"}}));
// |origin2| has one registration (registration3).
RegistrationData data3;
@@ -1492,14 +1543,12 @@ TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
ServiceWorkerDatabase::STATUS_OK,
database->WriteRegistration(
data3, resources3, &deleted_version, &newly_purgeable_resources));
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteUserData(
- data3.registration_id, origin2, "key5", "data5"));
- ASSERT_EQ(
- ServiceWorkerDatabase::STATUS_OK,
- database->WriteUserData(
- data3.registration_id, origin2, "key6", "data6"));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteUserData(data3.registration_id, origin2,
+ {{"key5", "data5"}}));
+ ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
+ database->WriteUserData(data3.registration_id, origin2,
+ {{"key6", "data6"}}));
std::set<GURL> origins_to_delete;
origins_to_delete.insert(origin1);
@@ -1555,29 +1604,31 @@ TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
EXPECT_TRUE(ContainsKey(purgeable_ids_out, 4));
// The user data associated with |origin1| should be removed.
- std::string user_data_out;
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
- database->ReadUserData(
- data1.registration_id, "key1", &user_data_out));
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
- database->ReadUserData(
- data1.registration_id, "key2", &user_data_out));
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
- database->ReadUserData(
- data2.registration_id, "key3", &user_data_out));
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
- database->ReadUserData(
- data2.registration_id, "key4", &user_data_out));
+ std::vector<std::string> user_data_out;
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
+ database->ReadUserData(data1.registration_id, {"key1"}, &user_data_out));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
+ database->ReadUserData(data1.registration_id, {"key2"}, &user_data_out));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
+ database->ReadUserData(data2.registration_id, {"key3"}, &user_data_out));
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
+ database->ReadUserData(data2.registration_id, {"key4"}, &user_data_out));
// The user data associated with |origin2| should not be removed.
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data3.registration_id, "key5", &user_data_out));
- EXPECT_EQ("data5", user_data_out);
- EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
- database->ReadUserData(
- data3.registration_id, "key6", &user_data_out));
- EXPECT_EQ("data6", user_data_out);
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data3.registration_id, {"key5"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ EXPECT_EQ("data5", user_data_out[0]);
+ EXPECT_EQ(
+ ServiceWorkerDatabase::STATUS_OK,
+ database->ReadUserData(data3.registration_id, {"key6"}, &user_data_out));
+ ASSERT_EQ(1u, user_data_out.size());
+ EXPECT_EQ("data6", user_data_out[0]);
}
TEST(ServiceWorkerDatabaseTest, DestroyDatabase) {

Powered by Google App Engine
This is Rietveld 408576698