OLD | NEW |
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 1076 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1087 EXPECT_EQ( | 1087 EXPECT_EQ( |
1088 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | 1088 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
1089 database->ReadUserData(data.registration_id, {"key3"}, &user_data_out)); | 1089 database->ReadUserData(data.registration_id, {"key3"}, &user_data_out)); |
1090 EXPECT_EQ( | 1090 EXPECT_EQ( |
1091 ServiceWorkerDatabase::STATUS_OK, | 1091 ServiceWorkerDatabase::STATUS_OK, |
1092 database->ReadUserData(data.registration_id, {"key4"}, &user_data_out)); | 1092 database->ReadUserData(data.registration_id, {"key4"}, &user_data_out)); |
1093 ASSERT_EQ(1u, user_data_out.size()); | 1093 ASSERT_EQ(1u, user_data_out.size()); |
1094 EXPECT_EQ("data4", user_data_out[0]); | 1094 EXPECT_EQ("data4", user_data_out[0]); |
1095 } | 1095 } |
1096 | 1096 |
| 1097 TEST(ServiceWorkerDatabaseTest, |
| 1098 UserData_ReadUserDataForAllRegistrationsByKeyPrefix) { |
| 1099 std::unique_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 1100 const GURL kOrigin("http://example.com"); |
| 1101 |
| 1102 // Add registration 1. |
| 1103 RegistrationData data1; |
| 1104 data1.registration_id = 100; |
| 1105 data1.scope = URL(kOrigin, "/foo"); |
| 1106 data1.script = URL(kOrigin, "/script1.js"); |
| 1107 data1.version_id = 200; |
| 1108 data1.resources_total_size_bytes = 100; |
| 1109 std::vector<Resource> resources1; |
| 1110 resources1.push_back(CreateResource(1, data1.script, 100)); |
| 1111 |
| 1112 // Add registration 2. |
| 1113 RegistrationData data2; |
| 1114 data2.registration_id = 101; |
| 1115 data2.scope = URL(kOrigin, "/bar"); |
| 1116 data2.script = URL(kOrigin, "/script2.js"); |
| 1117 data2.version_id = 201; |
| 1118 data2.resources_total_size_bytes = 200; |
| 1119 std::vector<Resource> resources2; |
| 1120 resources2.push_back(CreateResource(2, data2.script, 200)); |
| 1121 |
| 1122 ServiceWorkerDatabase::RegistrationData deleted_version; |
| 1123 std::vector<int64_t> newly_purgeable_resources; |
| 1124 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1125 database->WriteRegistration(data1, resources1, &deleted_version, |
| 1126 &newly_purgeable_resources)); |
| 1127 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1128 database->WriteRegistration(data2, resources2, &deleted_version, |
| 1129 &newly_purgeable_resources)); |
| 1130 |
| 1131 // Write user data associated with the registration1. |
| 1132 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1133 database->WriteUserData(data1.registration_id, kOrigin, |
| 1134 {{"key_prefix:key1", "value1"}})); |
| 1135 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1136 database->WriteUserData(data1.registration_id, kOrigin, |
| 1137 {{"key_prefix:key2", "value2"}})); |
| 1138 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1139 database->WriteUserData(data1.registration_id, kOrigin, |
| 1140 {{"key_prefix:key3", "value3"}})); |
| 1141 |
| 1142 // Write user data associated with the registration2. |
| 1143 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1144 database->WriteUserData(data2.registration_id, kOrigin, |
| 1145 {{"key_prefix:key1", "value1"}})); |
| 1146 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1147 database->WriteUserData(data2.registration_id, kOrigin, |
| 1148 {{"key_prefix:key2", "value2"}})); |
| 1149 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1150 database->WriteUserData(data2.registration_id, kOrigin, |
| 1151 {{"another_key_prefix:key1", "value1"}})); |
| 1152 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1153 database->WriteUserData(data2.registration_id, kOrigin, |
| 1154 {{"another_key_prefix:key2", "value2"}})); |
| 1155 |
| 1156 // Get all registrations with user data by key prefix. |
| 1157 std::vector<std::pair<int64_t, std::string>> user_data_list; |
| 1158 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1159 database->ReadUserDataForAllRegistrationsByKeyPrefix( |
| 1160 "key_prefix:", &user_data_list)); |
| 1161 ASSERT_EQ(5u, user_data_list.size()); |
| 1162 |
| 1163 EXPECT_EQ(data1.registration_id, user_data_list[0].first); |
| 1164 EXPECT_EQ("value1", user_data_list[0].second); |
| 1165 EXPECT_EQ(data2.registration_id, user_data_list[1].first); |
| 1166 EXPECT_EQ("value1", user_data_list[1].second); |
| 1167 EXPECT_EQ(data1.registration_id, user_data_list[2].first); |
| 1168 EXPECT_EQ("value2", user_data_list[2].second); |
| 1169 EXPECT_EQ(data2.registration_id, user_data_list[3].first); |
| 1170 EXPECT_EQ("value2", user_data_list[3].second); |
| 1171 EXPECT_EQ(data1.registration_id, user_data_list[4].first); |
| 1172 EXPECT_EQ("value3", user_data_list[4].second); |
| 1173 } |
| 1174 |
1097 TEST(ServiceWorkerDatabaseTest, UserData_DataIsolation) { | 1175 TEST(ServiceWorkerDatabaseTest, UserData_DataIsolation) { |
1098 std::unique_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 1176 std::unique_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
1099 const GURL kOrigin("http://example.com"); | 1177 const GURL kOrigin("http://example.com"); |
1100 | 1178 |
1101 // Add registration 1. | 1179 // Add registration 1. |
1102 RegistrationData data1; | 1180 RegistrationData data1; |
1103 data1.registration_id = 100; | 1181 data1.registration_id = 100; |
1104 data1.scope = URL(kOrigin, "/foo"); | 1182 data1.scope = URL(kOrigin, "/foo"); |
1105 data1.script = URL(kOrigin, "/script1.js"); | 1183 data1.script = URL(kOrigin, "/script1.js"); |
1106 data1.version_id = 200; | 1184 data1.version_id = 200; |
(...skipping 704 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1811 // The database should detect lack of the main resource (i.e. "/resource1"). | 1889 // The database should detect lack of the main resource (i.e. "/resource1"). |
1812 RegistrationData data_out; | 1890 RegistrationData data_out; |
1813 std::vector<Resource> resources_out; | 1891 std::vector<Resource> resources_out; |
1814 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_CORRUPTED, | 1892 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_CORRUPTED, |
1815 database->ReadRegistration(data.registration_id, origin, &data_out, | 1893 database->ReadRegistration(data.registration_id, origin, &data_out, |
1816 &resources_out)); | 1894 &resources_out)); |
1817 EXPECT_TRUE(resources_out.empty()); | 1895 EXPECT_TRUE(resources_out.empty()); |
1818 } | 1896 } |
1819 | 1897 |
1820 } // namespace content | 1898 } // namespace content |
OLD | NEW |