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

Side by Side 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: Rebase Created 4 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/service_worker/service_worker_database.h" 5 #include "content/browser/service_worker/service_worker_database.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <string> 10 #include <string>
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after
987 data.resources_total_size_bytes = 100; 987 data.resources_total_size_bytes = 100;
988 std::vector<Resource> resources; 988 std::vector<Resource> resources;
989 resources.push_back(CreateResource(1, data.script, 100)); 989 resources.push_back(CreateResource(1, data.script, 100));
990 ServiceWorkerDatabase::RegistrationData deleted_version; 990 ServiceWorkerDatabase::RegistrationData deleted_version;
991 std::vector<int64_t> newly_purgeable_resources; 991 std::vector<int64_t> newly_purgeable_resources;
992 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 992 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
993 database->WriteRegistration( 993 database->WriteRegistration(
994 data, resources, &deleted_version, &newly_purgeable_resources)); 994 data, resources, &deleted_version, &newly_purgeable_resources));
995 995
996 // Write user data associated with the stored registration. 996 // Write user data associated with the stored registration.
997 std::string user_data_out; 997 std::vector<std::string> user_data_out;
998 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 998 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
999 database->WriteUserData( 999 database->WriteUserData(data.registration_id, kOrigin,
1000 data.registration_id, kOrigin, "key1", "data")); 1000 {{"key1", "data"}}));
1001 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1001 EXPECT_EQ(
1002 database->ReadUserData( 1002 ServiceWorkerDatabase::STATUS_OK,
1003 data.registration_id, "key1", &user_data_out)); 1003 database->ReadUserData(data.registration_id, {"key1"}, &user_data_out));
1004 EXPECT_EQ("data", user_data_out); 1004 ASSERT_EQ(1u, user_data_out.size());
1005 EXPECT_EQ("data", user_data_out[0]);
1005 1006
1006 // Writing user data not associated with the stored registration should be 1007 // Writing user data not associated with the stored registration should be
1007 // failed. 1008 // failed.
1008 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1009 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1009 database->WriteUserData(300, kOrigin, "key1", "data")); 1010 database->WriteUserData(300, kOrigin, {{"key1", "data"}}));
1010 1011
1011 // Write empty user data for a different key. 1012 // Write empty user data for a different key.
1012 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1013 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1013 database->WriteUserData( 1014 database->WriteUserData(data.registration_id, kOrigin,
1014 data.registration_id, kOrigin, "key2", std::string())); 1015 {{"key2", std::string()}}));
1015 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1016 EXPECT_EQ(
1016 database->ReadUserData( 1017 ServiceWorkerDatabase::STATUS_OK,
1017 data.registration_id, "key2", &user_data_out)); 1018 database->ReadUserData(data.registration_id, {"key2"}, &user_data_out));
1018 EXPECT_EQ(std::string(), user_data_out); 1019 ASSERT_EQ(1u, user_data_out.size());
1019 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1020 EXPECT_EQ(std::string(), user_data_out[0]);
1020 database->ReadUserData( 1021 EXPECT_EQ(
1021 data.registration_id, "key1", &user_data_out)); 1022 ServiceWorkerDatabase::STATUS_OK,
1022 EXPECT_EQ("data", user_data_out); 1023 database->ReadUserData(data.registration_id, {"key1"}, &user_data_out));
1024 ASSERT_EQ(1u, user_data_out.size());
1025 EXPECT_EQ("data", user_data_out[0]);
1023 1026
1024 // Overwrite the existing user data. 1027 // Overwrite the existing user data.
1025 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1028 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1026 database->WriteUserData( 1029 database->WriteUserData(data.registration_id, kOrigin,
1027 data.registration_id, kOrigin, "key1", "overwrite")); 1030 {{"key1", "overwrite"}}));
1028 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1031 EXPECT_EQ(
1029 database->ReadUserData( 1032 ServiceWorkerDatabase::STATUS_OK,
1030 data.registration_id, "key1", &user_data_out)); 1033 database->ReadUserData(data.registration_id, {"key1"}, &user_data_out));
1031 EXPECT_EQ("overwrite", user_data_out); 1034 ASSERT_EQ(1u, user_data_out.size());
1035 EXPECT_EQ("overwrite", user_data_out[0]);
1032 1036
1033 // Delete the user data. 1037 // Delete the user data.
1034 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1038 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1035 database->DeleteUserData(data.registration_id, "key1")); 1039 database->DeleteUserData(data.registration_id, {"key1"}));
1040 EXPECT_EQ(
1041 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1042 database->ReadUserData(data.registration_id, {"key1"}, &user_data_out));
1043 EXPECT_TRUE(user_data_out.empty());
1044 EXPECT_EQ(
1045 ServiceWorkerDatabase::STATUS_OK,
1046 database->ReadUserData(data.registration_id, {"key2"}, &user_data_out));
1047 ASSERT_EQ(1u, user_data_out.size());
1048 EXPECT_EQ(std::string(), user_data_out[0]);
1049
1050 // Write/overwrite multiple user data keys.
1051 EXPECT_EQ(
1052 ServiceWorkerDatabase::STATUS_OK,
1053 database->WriteUserData(
1054 data.registration_id, kOrigin,
1055 {{"key2", "overwrite2"}, {"key3", "data3"}, {"key4", "data4"}}));
1056 EXPECT_EQ(
1057 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1058 database->ReadUserData(data.registration_id, {"key1"}, &user_data_out));
1059 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1060 database->ReadUserData(data.registration_id,
1061 {"key2", "key3", "key4"}, &user_data_out));
1062 ASSERT_EQ(3u, user_data_out.size());
1063 EXPECT_EQ("overwrite2", user_data_out[0]);
1064 EXPECT_EQ("data3", user_data_out[1]);
1065 EXPECT_EQ("data4", user_data_out[2]);
1066 // Multiple reads fail if one is not found.
1036 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1067 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1037 database->ReadUserData( 1068 database->ReadUserData(data.registration_id, {"key2", "key1"},
1038 data.registration_id, "key1", &user_data_out)); 1069 &user_data_out));
1039 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1070 EXPECT_TRUE(user_data_out.empty());
1040 database->ReadUserData( 1071
1041 data.registration_id, "key2", &user_data_out)); 1072 // Delete multiple user data keys, even if some are not found.
1042 EXPECT_EQ(std::string(), user_data_out); 1073 EXPECT_EQ(
1074 ServiceWorkerDatabase::STATUS_OK,
1075 database->DeleteUserData(data.registration_id, {"key1", "key2", "key3"}));
1076 EXPECT_EQ(
1077 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1078 database->ReadUserData(data.registration_id, {"key1"}, &user_data_out));
1079 EXPECT_EQ(
1080 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1081 database->ReadUserData(data.registration_id, {"key2"}, &user_data_out));
1082 EXPECT_EQ(
1083 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1084 database->ReadUserData(data.registration_id, {"key3"}, &user_data_out));
1085 EXPECT_EQ(
1086 ServiceWorkerDatabase::STATUS_OK,
1087 database->ReadUserData(data.registration_id, {"key4"}, &user_data_out));
1088 ASSERT_EQ(1u, user_data_out.size());
1089 EXPECT_EQ("data4", user_data_out[0]);
1043 } 1090 }
1044 1091
1045 TEST(ServiceWorkerDatabaseTest, UserData_DataIsolation) { 1092 TEST(ServiceWorkerDatabaseTest, UserData_DataIsolation) {
1046 std::unique_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 1093 std::unique_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
1047 const GURL kOrigin("http://example.com"); 1094 const GURL kOrigin("http://example.com");
1048 1095
1049 // Add registration 1. 1096 // Add registration 1.
1050 RegistrationData data1; 1097 RegistrationData data1;
1051 data1.registration_id = 100; 1098 data1.registration_id = 100;
1052 data1.scope = URL(kOrigin, "/foo"); 1099 data1.scope = URL(kOrigin, "/foo");
(...skipping 16 matching lines...) Expand all
1069 ServiceWorkerDatabase::RegistrationData deleted_version; 1116 ServiceWorkerDatabase::RegistrationData deleted_version;
1070 std::vector<int64_t> newly_purgeable_resources; 1117 std::vector<int64_t> newly_purgeable_resources;
1071 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1118 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1072 database->WriteRegistration(data1, resources1, &deleted_version, 1119 database->WriteRegistration(data1, resources1, &deleted_version,
1073 &newly_purgeable_resources)); 1120 &newly_purgeable_resources));
1074 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1121 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1075 database->WriteRegistration(data2, resources2, &deleted_version, 1122 database->WriteRegistration(data2, resources2, &deleted_version,
1076 &newly_purgeable_resources)); 1123 &newly_purgeable_resources));
1077 1124
1078 // Write user data associated with the registration1. 1125 // Write user data associated with the registration1.
1079 std::string user_data_out; 1126 std::vector<std::string> user_data_out;
1080 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1127 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1081 database->WriteUserData( 1128 database->WriteUserData(data1.registration_id, kOrigin,
1082 data1.registration_id, kOrigin, "key", "data1")); 1129 {{"key", "data1"}}));
1083 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1130 EXPECT_EQ(
1084 database->ReadUserData( 1131 ServiceWorkerDatabase::STATUS_OK,
1085 data1.registration_id, "key", &user_data_out)); 1132 database->ReadUserData(data1.registration_id, {"key"}, &user_data_out));
1086 EXPECT_EQ("data1", user_data_out); 1133 ASSERT_EQ(1u, user_data_out.size());
1087 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1134 EXPECT_EQ("data1", user_data_out[0]);
1088 database->ReadUserData( 1135 EXPECT_EQ(
1089 data2.registration_id, "key", &user_data_out)); 1136 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1137 database->ReadUserData(data2.registration_id, {"key"}, &user_data_out));
1090 1138
1091 // Write user data associated with the registration2. This shouldn't overwrite 1139 // Write user data associated with the registration2. This shouldn't overwrite
1092 // the data associated with registration1. 1140 // the data associated with registration1.
1093 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1141 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1094 database->WriteUserData( 1142 database->WriteUserData(data2.registration_id, kOrigin,
1095 data2.registration_id, kOrigin, "key", "data2")); 1143 {{"key", "data2"}}));
1096 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1144 EXPECT_EQ(
1097 database->ReadUserData( 1145 ServiceWorkerDatabase::STATUS_OK,
1098 data1.registration_id, "key", &user_data_out)); 1146 database->ReadUserData(data1.registration_id, {"key"}, &user_data_out));
1099 EXPECT_EQ("data1", user_data_out); 1147 ASSERT_EQ(1u, user_data_out.size());
1100 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1148 EXPECT_EQ("data1", user_data_out[0]);
1101 database->ReadUserData( 1149 EXPECT_EQ(
1102 data2.registration_id, "key", &user_data_out)); 1150 ServiceWorkerDatabase::STATUS_OK,
1103 EXPECT_EQ("data2", user_data_out); 1151 database->ReadUserData(data2.registration_id, {"key"}, &user_data_out));
1152 ASSERT_EQ(1u, user_data_out.size());
1153 EXPECT_EQ("data2", user_data_out[0]);
1104 1154
1105 // Get all registrations with user data. 1155 // Get all registrations with user data.
1106 std::vector<std::pair<int64_t, std::string>> user_data_list; 1156 std::vector<std::pair<int64_t, std::string>> user_data_list;
1107 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1157 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1108 database->ReadUserDataForAllRegistrations("key", &user_data_list)); 1158 database->ReadUserDataForAllRegistrations("key", &user_data_list));
1109 EXPECT_EQ(2u, user_data_list.size()); 1159 EXPECT_EQ(2u, user_data_list.size());
1110 EXPECT_EQ(data1.registration_id, user_data_list[0].first); 1160 EXPECT_EQ(data1.registration_id, user_data_list[0].first);
1111 EXPECT_EQ("data1", user_data_list[0].second); 1161 EXPECT_EQ("data1", user_data_list[0].second);
1112 EXPECT_EQ(data2.registration_id, user_data_list[1].first); 1162 EXPECT_EQ(data2.registration_id, user_data_list[1].first);
1113 EXPECT_EQ("data2", user_data_list[1].second); 1163 EXPECT_EQ("data2", user_data_list[1].second);
1114 1164
1115 // Delete the data associated with the registration2. This shouldn't delete 1165 // Delete the data associated with the registration2. This shouldn't delete
1116 // the data associated with registration1. 1166 // the data associated with registration1.
1117 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1167 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1118 database->DeleteUserData(data2.registration_id, "key")); 1168 database->DeleteUserData(data2.registration_id, {"key"}));
1119 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1169 EXPECT_EQ(
1120 database->ReadUserData( 1170 ServiceWorkerDatabase::STATUS_OK,
1121 data1.registration_id, "key", &user_data_out)); 1171 database->ReadUserData(data1.registration_id, {"key"}, &user_data_out));
1122 EXPECT_EQ("data1", user_data_out); 1172 ASSERT_EQ(1u, user_data_out.size());
1123 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1173 EXPECT_EQ("data1", user_data_out[0]);
1124 database->ReadUserData( 1174 EXPECT_EQ(
1125 data2.registration_id, "key", &user_data_out)); 1175 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1176 database->ReadUserData(data2.registration_id, {"key"}, &user_data_out));
1126 1177
1127 // And again get all registrations with user data. 1178 // And again get all registrations with user data.
1128 user_data_list.clear(); 1179 user_data_list.clear();
1129 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1180 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1130 database->ReadUserDataForAllRegistrations("key", &user_data_list)); 1181 database->ReadUserDataForAllRegistrations("key", &user_data_list));
1131 EXPECT_EQ(1u, user_data_list.size()); 1182 EXPECT_EQ(1u, user_data_list.size());
1132 EXPECT_EQ(data1.registration_id, user_data_list[0].first); 1183 EXPECT_EQ(data1.registration_id, user_data_list[0].first);
1133 EXPECT_EQ("data1", user_data_list[0].second); 1184 EXPECT_EQ("data1", user_data_list[0].second);
1134 } 1185 }
1135 1186
(...skipping 24 matching lines...) Expand all
1160 ServiceWorkerDatabase::RegistrationData deleted_version; 1211 ServiceWorkerDatabase::RegistrationData deleted_version;
1161 std::vector<int64_t> newly_purgeable_resources; 1212 std::vector<int64_t> newly_purgeable_resources;
1162 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1213 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1163 database->WriteRegistration(data1, resources1, &deleted_version, 1214 database->WriteRegistration(data1, resources1, &deleted_version,
1164 &newly_purgeable_resources)); 1215 &newly_purgeable_resources));
1165 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1216 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1166 database->WriteRegistration(data2, resources2, &deleted_version, 1217 database->WriteRegistration(data2, resources2, &deleted_version,
1167 &newly_purgeable_resources)); 1218 &newly_purgeable_resources));
1168 1219
1169 // Write user data associated with the registration1. 1220 // Write user data associated with the registration1.
1170 std::string user_data_out; 1221 std::vector<std::string> user_data_out;
1171 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1222 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1172 database->WriteUserData( 1223 database->WriteUserData(data1.registration_id, kOrigin,
1173 data1.registration_id, kOrigin, "key1", "data1")); 1224 {{"key1", "data1"}}));
1174 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1225 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1175 database->WriteUserData( 1226 database->WriteUserData(data1.registration_id, kOrigin,
1176 data1.registration_id, kOrigin, "key2", "data2")); 1227 {{"key2", "data2"}}));
1177 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1228 ASSERT_EQ(
1178 database->ReadUserData( 1229 ServiceWorkerDatabase::STATUS_OK,
1179 data1.registration_id, "key1", &user_data_out)); 1230 database->ReadUserData(data1.registration_id, {"key1"}, &user_data_out));
1180 ASSERT_EQ("data1", user_data_out); 1231 ASSERT_EQ(1u, user_data_out.size());
1181 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1232 ASSERT_EQ("data1", user_data_out[0]);
1182 database->ReadUserData( 1233 ASSERT_EQ(
1183 data1.registration_id, "key2", &user_data_out)); 1234 ServiceWorkerDatabase::STATUS_OK,
1184 ASSERT_EQ("data2", user_data_out); 1235 database->ReadUserData(data1.registration_id, {"key2"}, &user_data_out));
1236 ASSERT_EQ(1u, user_data_out.size());
1237 ASSERT_EQ("data2", user_data_out[0]);
1185 1238
1186 // Write user data associated with the registration2. 1239 // Write user data associated with the registration2.
1187 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1240 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1188 database->WriteUserData( 1241 database->WriteUserData(data2.registration_id, kOrigin,
1189 data2.registration_id, kOrigin, "key3", "data3")); 1242 {{"key3", "data3"}}));
1190 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1243 ASSERT_EQ(
1191 database->ReadUserData( 1244 ServiceWorkerDatabase::STATUS_OK,
1192 data2.registration_id, "key3", &user_data_out)); 1245 database->ReadUserData(data2.registration_id, {"key3"}, &user_data_out));
1193 ASSERT_EQ("data3", user_data_out); 1246 ASSERT_EQ(1u, user_data_out.size());
1247 ASSERT_EQ("data3", user_data_out[0]);
1194 1248
1195 // Delete all data associated with the registration1. This shouldn't delete 1249 // Delete all data associated with the registration1. This shouldn't delete
1196 // the data associated with registration2. 1250 // the data associated with registration2.
1197 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1251 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1198 database->DeleteRegistration( 1252 database->DeleteRegistration(
1199 data1.registration_id, kOrigin, 1253 data1.registration_id, kOrigin,
1200 &deleted_version, &newly_purgeable_resources)); 1254 &deleted_version, &newly_purgeable_resources));
1201 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1255 EXPECT_EQ(
1202 database->ReadUserData( 1256 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1203 data1.registration_id, "key1", &user_data_out)); 1257 database->ReadUserData(data1.registration_id, {"key1"}, &user_data_out));
1204 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1258 EXPECT_EQ(
1205 database->ReadUserData( 1259 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1206 data1.registration_id, "key2", &user_data_out)); 1260 database->ReadUserData(data1.registration_id, {"key2"}, &user_data_out));
1207 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1261 EXPECT_EQ(
1208 database->ReadUserData( 1262 ServiceWorkerDatabase::STATUS_OK,
1209 data2.registration_id, "key3", &user_data_out)); 1263 database->ReadUserData(data2.registration_id, {"key3"}, &user_data_out));
1210 EXPECT_EQ("data3", user_data_out); 1264 ASSERT_EQ(1u, user_data_out.size());
1265 EXPECT_EQ("data3", user_data_out[0]);
1211 } 1266 }
1212 1267
1213 TEST(ServiceWorkerDatabaseTest, UserData_UninitializedDatabase) { 1268 TEST(ServiceWorkerDatabaseTest, UserData_UninitializedDatabase) {
1214 std::unique_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 1269 std::unique_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
1215 const GURL kOrigin("http://example.com"); 1270 const GURL kOrigin("http://example.com");
1216 1271
1217 // Should be failed because the database does not exist. 1272 // Should be failed because the database does not exist.
1218 std::string user_data_out; 1273 std::vector<std::string> user_data_out;
1219 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1274 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1220 database->ReadUserData(100, "key", &user_data_out)); 1275 database->ReadUserData(100, {"key"}, &user_data_out));
1221 1276
1222 // Should be failed because the associated registration does not exist. 1277 // Should be failed because the associated registration does not exist.
1223 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1278 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1224 database->WriteUserData(100, kOrigin, "key", "data")); 1279 database->WriteUserData(100, kOrigin, {{"key", "data"}}));
1225 1280
1226 // Deleting non-existent entry should succeed. 1281 // Deleting non-existent entry should succeed.
1227 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1282 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1228 database->DeleteUserData(100, "key")); 1283 database->DeleteUserData(100, {"key"}));
1229 1284
1230 // Actually create a new database, but not initialized yet. 1285 // Actually create a new database, but not initialized yet.
1231 database->LazyOpen(true); 1286 database->LazyOpen(true);
1232 1287
1233 // Should be failed because the database is not initialized. 1288 // Should be failed because the database is not initialized.
1234 ASSERT_EQ(ServiceWorkerDatabase::UNINITIALIZED, database->state_); 1289 ASSERT_EQ(ServiceWorkerDatabase::UNINITIALIZED, database->state_);
1235 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1290 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1236 database->ReadUserData(100, "key", &user_data_out)); 1291 database->ReadUserData(100, {"key"}, &user_data_out));
1237 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1292 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1238 database->WriteUserData(100, kOrigin, "key", "data")); 1293 database->WriteUserData(100, kOrigin, {{"key", "data"}}));
1239 1294
1240 // Deleting non-existent entry should succeed. 1295 // Deleting non-existent entry should succeed.
1241 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1296 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1242 database->DeleteUserData(100, "key")); 1297 database->DeleteUserData(100, {"key"}));
1243 } 1298 }
1244 1299
1245 TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) { 1300 TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) {
1246 std::unique_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 1301 std::unique_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
1247 GURL origin("http://example.com"); 1302 GURL origin("http://example.com");
1248 1303
1249 ServiceWorkerDatabase::RegistrationData deleted_version; 1304 ServiceWorkerDatabase::RegistrationData deleted_version;
1250 std::vector<int64_t> newly_purgeable_resources; 1305 std::vector<int64_t> newly_purgeable_resources;
1251 1306
1252 // Should be false because a registration does not exist. 1307 // Should be false because a registration does not exist.
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
1437 data1.resources_total_size_bytes = 2013 + 512; 1492 data1.resources_total_size_bytes = 2013 + 512;
1438 data1.foreign_fetch_scopes.push_back(URL(origin1, "/foo/ff")); 1493 data1.foreign_fetch_scopes.push_back(URL(origin1, "/foo/ff"));
1439 1494
1440 std::vector<Resource> resources1; 1495 std::vector<Resource> resources1;
1441 resources1.push_back(CreateResource(1, URL(origin1, "/resource1"), 2013)); 1496 resources1.push_back(CreateResource(1, URL(origin1, "/resource1"), 2013));
1442 resources1.push_back(CreateResource(2, URL(origin1, "/resource2"), 512)); 1497 resources1.push_back(CreateResource(2, URL(origin1, "/resource2"), 512));
1443 ASSERT_EQ( 1498 ASSERT_EQ(
1444 ServiceWorkerDatabase::STATUS_OK, 1499 ServiceWorkerDatabase::STATUS_OK,
1445 database->WriteRegistration( 1500 database->WriteRegistration(
1446 data1, resources1, &deleted_version, &newly_purgeable_resources)); 1501 data1, resources1, &deleted_version, &newly_purgeable_resources));
1447 ASSERT_EQ( 1502 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1448 ServiceWorkerDatabase::STATUS_OK, 1503 database->WriteUserData(data1.registration_id, origin1,
1449 database->WriteUserData( 1504 {{"key1", "data1"}}));
1450 data1.registration_id, origin1, "key1", "data1")); 1505 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1451 ASSERT_EQ( 1506 database->WriteUserData(data1.registration_id, origin1,
1452 ServiceWorkerDatabase::STATUS_OK, 1507 {{"key2", "data2"}}));
1453 database->WriteUserData(
1454 data1.registration_id, origin1, "key2", "data2"));
1455 1508
1456 RegistrationData data2; 1509 RegistrationData data2;
1457 data2.registration_id = 11; 1510 data2.registration_id = 11;
1458 data2.scope = URL(origin1, "/bar"); 1511 data2.scope = URL(origin1, "/bar");
1459 data2.script = URL(origin1, "/script2.js"); 1512 data2.script = URL(origin1, "/script2.js");
1460 data2.version_id = 101; 1513 data2.version_id = 101;
1461 data2.resources_total_size_bytes = 4 + 5; 1514 data2.resources_total_size_bytes = 4 + 5;
1462 1515
1463 std::vector<Resource> resources2; 1516 std::vector<Resource> resources2;
1464 resources2.push_back(CreateResource(3, URL(origin1, "/resource3"), 4)); 1517 resources2.push_back(CreateResource(3, URL(origin1, "/resource3"), 4));
1465 resources2.push_back(CreateResource(4, URL(origin1, "/resource4"), 5)); 1518 resources2.push_back(CreateResource(4, URL(origin1, "/resource4"), 5));
1466 ASSERT_EQ( 1519 ASSERT_EQ(
1467 ServiceWorkerDatabase::STATUS_OK, 1520 ServiceWorkerDatabase::STATUS_OK,
1468 database->WriteRegistration( 1521 database->WriteRegistration(
1469 data2, resources2, &deleted_version, &newly_purgeable_resources)); 1522 data2, resources2, &deleted_version, &newly_purgeable_resources));
1470 ASSERT_EQ( 1523 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1471 ServiceWorkerDatabase::STATUS_OK, 1524 database->WriteUserData(data2.registration_id, origin1,
1472 database->WriteUserData( 1525 {{"key3", "data3"}}));
1473 data2.registration_id, origin1, "key3", "data3")); 1526 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1474 ASSERT_EQ( 1527 database->WriteUserData(data2.registration_id, origin1,
1475 ServiceWorkerDatabase::STATUS_OK, 1528 {{"key4", "data4"}}));
1476 database->WriteUserData(
1477 data2.registration_id, origin1, "key4", "data4"));
1478 1529
1479 // |origin2| has one registration (registration3). 1530 // |origin2| has one registration (registration3).
1480 RegistrationData data3; 1531 RegistrationData data3;
1481 data3.registration_id = 12; 1532 data3.registration_id = 12;
1482 data3.scope = URL(origin2, "/hoge"); 1533 data3.scope = URL(origin2, "/hoge");
1483 data3.script = URL(origin2, "/script3.js"); 1534 data3.script = URL(origin2, "/script3.js");
1484 data3.version_id = 102; 1535 data3.version_id = 102;
1485 data3.resources_total_size_bytes = 6 + 7; 1536 data3.resources_total_size_bytes = 6 + 7;
1486 data3.foreign_fetch_scopes.push_back(URL(origin2, "/hoge/ff")); 1537 data3.foreign_fetch_scopes.push_back(URL(origin2, "/hoge/ff"));
1487 1538
1488 std::vector<Resource> resources3; 1539 std::vector<Resource> resources3;
1489 resources3.push_back(CreateResource(5, URL(origin2, "/resource5"), 6)); 1540 resources3.push_back(CreateResource(5, URL(origin2, "/resource5"), 6));
1490 resources3.push_back(CreateResource(6, URL(origin2, "/resource6"), 7)); 1541 resources3.push_back(CreateResource(6, URL(origin2, "/resource6"), 7));
1491 ASSERT_EQ( 1542 ASSERT_EQ(
1492 ServiceWorkerDatabase::STATUS_OK, 1543 ServiceWorkerDatabase::STATUS_OK,
1493 database->WriteRegistration( 1544 database->WriteRegistration(
1494 data3, resources3, &deleted_version, &newly_purgeable_resources)); 1545 data3, resources3, &deleted_version, &newly_purgeable_resources));
1495 ASSERT_EQ( 1546 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1496 ServiceWorkerDatabase::STATUS_OK, 1547 database->WriteUserData(data3.registration_id, origin2,
1497 database->WriteUserData( 1548 {{"key5", "data5"}}));
1498 data3.registration_id, origin2, "key5", "data5")); 1549 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1499 ASSERT_EQ( 1550 database->WriteUserData(data3.registration_id, origin2,
1500 ServiceWorkerDatabase::STATUS_OK, 1551 {{"key6", "data6"}}));
1501 database->WriteUserData(
1502 data3.registration_id, origin2, "key6", "data6"));
1503 1552
1504 std::set<GURL> origins_to_delete; 1553 std::set<GURL> origins_to_delete;
1505 origins_to_delete.insert(origin1); 1554 origins_to_delete.insert(origin1);
1506 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1555 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1507 database->DeleteAllDataForOrigins(origins_to_delete, 1556 database->DeleteAllDataForOrigins(origins_to_delete,
1508 &newly_purgeable_resources)); 1557 &newly_purgeable_resources));
1509 1558
1510 // |origin1| should be removed from the unique origin list. 1559 // |origin1| should be removed from the unique origin list.
1511 std::set<GURL> unique_origins; 1560 std::set<GURL> unique_origins;
1512 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1561 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1548 std::set<int64_t> purgeable_ids_out; 1597 std::set<int64_t> purgeable_ids_out;
1549 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1598 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1550 database->GetPurgeableResourceIds(&purgeable_ids_out)); 1599 database->GetPurgeableResourceIds(&purgeable_ids_out));
1551 EXPECT_EQ(4u, purgeable_ids_out.size()); 1600 EXPECT_EQ(4u, purgeable_ids_out.size());
1552 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 1)); 1601 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 1));
1553 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 2)); 1602 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 2));
1554 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 3)); 1603 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 3));
1555 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 4)); 1604 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 4));
1556 1605
1557 // The user data associated with |origin1| should be removed. 1606 // The user data associated with |origin1| should be removed.
1558 std::string user_data_out; 1607 std::vector<std::string> user_data_out;
1559 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1608 EXPECT_EQ(
1560 database->ReadUserData( 1609 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1561 data1.registration_id, "key1", &user_data_out)); 1610 database->ReadUserData(data1.registration_id, {"key1"}, &user_data_out));
1562 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1611 EXPECT_EQ(
1563 database->ReadUserData( 1612 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1564 data1.registration_id, "key2", &user_data_out)); 1613 database->ReadUserData(data1.registration_id, {"key2"}, &user_data_out));
1565 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1614 EXPECT_EQ(
1566 database->ReadUserData( 1615 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1567 data2.registration_id, "key3", &user_data_out)); 1616 database->ReadUserData(data2.registration_id, {"key3"}, &user_data_out));
1568 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1617 EXPECT_EQ(
1569 database->ReadUserData( 1618 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1570 data2.registration_id, "key4", &user_data_out)); 1619 database->ReadUserData(data2.registration_id, {"key4"}, &user_data_out));
1571 1620
1572 // The user data associated with |origin2| should not be removed. 1621 // The user data associated with |origin2| should not be removed.
1573 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1622 EXPECT_EQ(
1574 database->ReadUserData( 1623 ServiceWorkerDatabase::STATUS_OK,
1575 data3.registration_id, "key5", &user_data_out)); 1624 database->ReadUserData(data3.registration_id, {"key5"}, &user_data_out));
1576 EXPECT_EQ("data5", user_data_out); 1625 ASSERT_EQ(1u, user_data_out.size());
1577 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1626 EXPECT_EQ("data5", user_data_out[0]);
1578 database->ReadUserData( 1627 EXPECT_EQ(
1579 data3.registration_id, "key6", &user_data_out)); 1628 ServiceWorkerDatabase::STATUS_OK,
1580 EXPECT_EQ("data6", user_data_out); 1629 database->ReadUserData(data3.registration_id, {"key6"}, &user_data_out));
1630 ASSERT_EQ(1u, user_data_out.size());
1631 EXPECT_EQ("data6", user_data_out[0]);
1581 } 1632 }
1582 1633
1583 TEST(ServiceWorkerDatabaseTest, DestroyDatabase) { 1634 TEST(ServiceWorkerDatabaseTest, DestroyDatabase) {
1584 base::ScopedTempDir database_dir; 1635 base::ScopedTempDir database_dir;
1585 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); 1636 ASSERT_TRUE(database_dir.CreateUniqueTempDir());
1586 std::unique_ptr<ServiceWorkerDatabase> database( 1637 std::unique_ptr<ServiceWorkerDatabase> database(
1587 CreateDatabase(database_dir.path())); 1638 CreateDatabase(database_dir.path()));
1588 1639
1589 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); 1640 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true));
1590 ASSERT_TRUE(base::DirectoryExists(database_dir.path())); 1641 ASSERT_TRUE(base::DirectoryExists(database_dir.path()));
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1723 &deleted_version, 1774 &deleted_version,
1724 &newly_purgeable_resources)); 1775 &newly_purgeable_resources));
1725 1776
1726 origins.clear(); 1777 origins.clear();
1727 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1778 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1728 database->GetOriginsWithForeignFetchRegistrations(&origins)); 1779 database->GetOriginsWithForeignFetchRegistrations(&origins));
1729 EXPECT_EQ(0U, origins.size()); 1780 EXPECT_EQ(0U, origins.size());
1730 } 1781 }
1731 1782
1732 } // namespace content 1783 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698