| 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 <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
| 11 #include "base/stl_util.h" | 11 #include "base/stl_util.h" |
| 12 #include "content/browser/service_worker/service_worker_database.pb.h" | 12 #include "content/browser/service_worker/service_worker_database.pb.h" |
| 13 #include "content/common/service_worker/service_worker_types.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 15 |
| 15 namespace content { | 16 namespace content { |
| 16 | 17 |
| 17 namespace { | 18 namespace { |
| 18 | 19 |
| 19 typedef ServiceWorkerDatabase::RegistrationData RegistrationData; | 20 typedef ServiceWorkerDatabase::RegistrationData RegistrationData; |
| 20 typedef ServiceWorkerDatabase::ResourceRecord Resource; | 21 typedef ServiceWorkerDatabase::ResourceRecord Resource; |
| 21 | 22 |
| 22 struct AvailableIds { | 23 struct AvailableIds { |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 // Opening a new database does not write anything, so its schema version | 113 // Opening a new database does not write anything, so its schema version |
| 113 // should be 0. | 114 // should be 0. |
| 114 int64 db_version = -1; | 115 int64 db_version = -1; |
| 115 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 116 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 116 database->ReadDatabaseVersion(&db_version)); | 117 database->ReadDatabaseVersion(&db_version)); |
| 117 EXPECT_EQ(0u, db_version); | 118 EXPECT_EQ(0u, db_version); |
| 118 | 119 |
| 119 // First writing triggers database initialization and bumps the schema | 120 // First writing triggers database initialization and bumps the schema |
| 120 // version. | 121 // version. |
| 121 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; | 122 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; |
| 123 int64 deleted_version_id; |
| 122 std::vector<int64> newly_purgeable_resources; | 124 std::vector<int64> newly_purgeable_resources; |
| 123 ServiceWorkerDatabase::RegistrationData data; | 125 ServiceWorkerDatabase::RegistrationData data; |
| 124 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 126 ASSERT_EQ( |
| 125 database->WriteRegistration(data, resources, | 127 ServiceWorkerDatabase::STATUS_OK, |
| 126 &newly_purgeable_resources)); | 128 database->WriteRegistration( |
| 129 data, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 127 | 130 |
| 128 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 131 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 129 database->ReadDatabaseVersion(&db_version)); | 132 database->ReadDatabaseVersion(&db_version)); |
| 130 EXPECT_LT(0, db_version); | 133 EXPECT_LT(0, db_version); |
| 131 } | 134 } |
| 132 | 135 |
| 133 TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) { | 136 TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) { |
| 134 base::ScopedTempDir database_dir; | 137 base::ScopedTempDir database_dir; |
| 135 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); | 138 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); |
| 136 scoped_ptr<ServiceWorkerDatabase> database( | 139 scoped_ptr<ServiceWorkerDatabase> database( |
| (...skipping 12 matching lines...) Expand all Loading... |
| 149 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); | 152 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); |
| 150 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( | 153 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( |
| 151 &ids.reg_id, &ids.ver_id, &ids.res_id)); | 154 &ids.reg_id, &ids.ver_id, &ids.res_id)); |
| 152 EXPECT_EQ(0, ids.reg_id); | 155 EXPECT_EQ(0, ids.reg_id); |
| 153 EXPECT_EQ(0, ids.ver_id); | 156 EXPECT_EQ(0, ids.ver_id); |
| 154 EXPECT_EQ(0, ids.res_id); | 157 EXPECT_EQ(0, ids.res_id); |
| 155 | 158 |
| 156 // Writing a registration bumps the next available ids. | 159 // Writing a registration bumps the next available ids. |
| 157 std::vector<Resource> resources; | 160 std::vector<Resource> resources; |
| 158 RegistrationData data1; | 161 RegistrationData data1; |
| 162 int64 deleted_version_id; |
| 159 std::vector<int64> newly_purgeable_resources; | 163 std::vector<int64> newly_purgeable_resources; |
| 160 data1.registration_id = 100; | 164 data1.registration_id = 100; |
| 161 data1.scope = URL(origin, "/foo"); | 165 data1.scope = URL(origin, "/foo"); |
| 162 data1.script = URL(origin, "/script1.js"); | 166 data1.script = URL(origin, "/script1.js"); |
| 163 data1.version_id = 200; | 167 data1.version_id = 200; |
| 164 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 168 ASSERT_EQ( |
| 165 database->WriteRegistration(data1, resources, | 169 ServiceWorkerDatabase::STATUS_OK, |
| 166 &newly_purgeable_resources)); | 170 database->WriteRegistration( |
| 171 data1, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 167 | 172 |
| 168 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( | 173 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( |
| 169 &ids.reg_id, &ids.ver_id, &ids.res_id)); | 174 &ids.reg_id, &ids.ver_id, &ids.res_id)); |
| 170 EXPECT_EQ(101, ids.reg_id); | 175 EXPECT_EQ(101, ids.reg_id); |
| 171 EXPECT_EQ(201, ids.ver_id); | 176 EXPECT_EQ(201, ids.ver_id); |
| 172 EXPECT_EQ(0, ids.res_id); | 177 EXPECT_EQ(0, ids.res_id); |
| 173 | 178 |
| 174 // Writing a registration whose ids are lower than the stored ones should not | 179 // Writing a registration whose ids are lower than the stored ones should not |
| 175 // bump the next available ids. | 180 // bump the next available ids. |
| 176 RegistrationData data2; | 181 RegistrationData data2; |
| 177 data2.registration_id = 10; | 182 data2.registration_id = 10; |
| 178 data2.scope = URL(origin, "/bar"); | 183 data2.scope = URL(origin, "/bar"); |
| 179 data2.script = URL(origin, "/script2.js"); | 184 data2.script = URL(origin, "/script2.js"); |
| 180 data2.version_id = 20; | 185 data2.version_id = 20; |
| 181 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 186 ASSERT_EQ( |
| 182 database->WriteRegistration(data2, resources, | 187 ServiceWorkerDatabase::STATUS_OK, |
| 183 &newly_purgeable_resources)); | 188 database->WriteRegistration( |
| 189 data2, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 184 | 190 |
| 185 // Close and reopen the database to verify the stored values. | 191 // Close and reopen the database to verify the stored values. |
| 186 database.reset(CreateDatabase(database_dir.path())); | 192 database.reset(CreateDatabase(database_dir.path())); |
| 187 | 193 |
| 188 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( | 194 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( |
| 189 &ids.reg_id, &ids.ver_id, &ids.res_id)); | 195 &ids.reg_id, &ids.ver_id, &ids.res_id)); |
| 190 EXPECT_EQ(101, ids.reg_id); | 196 EXPECT_EQ(101, ids.reg_id); |
| 191 EXPECT_EQ(201, ids.ver_id); | 197 EXPECT_EQ(201, ids.ver_id); |
| 192 EXPECT_EQ(0, ids.res_id); | 198 EXPECT_EQ(0, ids.res_id); |
| 193 } | 199 } |
| 194 | 200 |
| 195 TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) { | 201 TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) { |
| 196 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 202 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 197 | 203 |
| 198 std::set<GURL> origins; | 204 std::set<GURL> origins; |
| 199 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 205 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 200 database->GetOriginsWithRegistrations(&origins)); | 206 database->GetOriginsWithRegistrations(&origins)); |
| 201 EXPECT_TRUE(origins.empty()); | 207 EXPECT_TRUE(origins.empty()); |
| 202 | 208 |
| 203 std::vector<Resource> resources; | 209 std::vector<Resource> resources; |
| 210 int64 deleted_version_id; |
| 204 std::vector<int64> newly_purgeable_resources; | 211 std::vector<int64> newly_purgeable_resources; |
| 205 | 212 |
| 206 GURL origin1("http://example.com"); | 213 GURL origin1("http://example.com"); |
| 207 RegistrationData data1; | 214 RegistrationData data1; |
| 208 data1.registration_id = 123; | 215 data1.registration_id = 123; |
| 209 data1.scope = URL(origin1, "/foo"); | 216 data1.scope = URL(origin1, "/foo"); |
| 210 data1.script = URL(origin1, "/script1.js"); | 217 data1.script = URL(origin1, "/script1.js"); |
| 211 data1.version_id = 456; | 218 data1.version_id = 456; |
| 212 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 219 ASSERT_EQ( |
| 213 database->WriteRegistration(data1, resources, | 220 ServiceWorkerDatabase::STATUS_OK, |
| 214 &newly_purgeable_resources)); | 221 database->WriteRegistration( |
| 222 data1, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 215 | 223 |
| 216 GURL origin2("https://www.example.com"); | 224 GURL origin2("https://www.example.com"); |
| 217 RegistrationData data2; | 225 RegistrationData data2; |
| 218 data2.registration_id = 234; | 226 data2.registration_id = 234; |
| 219 data2.scope = URL(origin2, "/bar"); | 227 data2.scope = URL(origin2, "/bar"); |
| 220 data2.script = URL(origin2, "/script2.js"); | 228 data2.script = URL(origin2, "/script2.js"); |
| 221 data2.version_id = 567; | 229 data2.version_id = 567; |
| 222 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 230 ASSERT_EQ( |
| 223 database->WriteRegistration(data2, resources, | 231 ServiceWorkerDatabase::STATUS_OK, |
| 224 &newly_purgeable_resources)); | 232 database->WriteRegistration( |
| 233 data2, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 225 | 234 |
| 226 GURL origin3("https://example.org"); | 235 GURL origin3("https://example.org"); |
| 227 RegistrationData data3; | 236 RegistrationData data3; |
| 228 data3.registration_id = 345; | 237 data3.registration_id = 345; |
| 229 data3.scope = URL(origin3, "/hoge"); | 238 data3.scope = URL(origin3, "/hoge"); |
| 230 data3.script = URL(origin3, "/script3.js"); | 239 data3.script = URL(origin3, "/script3.js"); |
| 231 data3.version_id = 678; | 240 data3.version_id = 678; |
| 232 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 241 ASSERT_EQ( |
| 233 database->WriteRegistration(data3, resources, | 242 ServiceWorkerDatabase::STATUS_OK, |
| 234 &newly_purgeable_resources)); | 243 database->WriteRegistration( |
| 244 data3, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 235 | 245 |
| 236 // |origin3| has two registrations. | 246 // |origin3| has two registrations. |
| 237 RegistrationData data4; | 247 RegistrationData data4; |
| 238 data4.registration_id = 456; | 248 data4.registration_id = 456; |
| 239 data4.scope = URL(origin3, "/fuga"); | 249 data4.scope = URL(origin3, "/fuga"); |
| 240 data4.script = URL(origin3, "/script4.js"); | 250 data4.script = URL(origin3, "/script4.js"); |
| 241 data4.version_id = 789; | 251 data4.version_id = 789; |
| 242 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 252 ASSERT_EQ( |
| 243 database->WriteRegistration(data4, resources, | 253 ServiceWorkerDatabase::STATUS_OK, |
| 244 &newly_purgeable_resources)); | 254 database->WriteRegistration( |
| 255 data4, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 245 | 256 |
| 246 origins.clear(); | 257 origins.clear(); |
| 247 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 258 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 248 database->GetOriginsWithRegistrations(&origins)); | 259 database->GetOriginsWithRegistrations(&origins)); |
| 249 EXPECT_EQ(3U, origins.size()); | 260 EXPECT_EQ(3U, origins.size()); |
| 250 EXPECT_TRUE(ContainsKey(origins, origin1)); | 261 EXPECT_TRUE(ContainsKey(origins, origin1)); |
| 251 EXPECT_TRUE(ContainsKey(origins, origin2)); | 262 EXPECT_TRUE(ContainsKey(origins, origin2)); |
| 252 EXPECT_TRUE(ContainsKey(origins, origin3)); | 263 EXPECT_TRUE(ContainsKey(origins, origin3)); |
| 253 | 264 |
| 254 // |origin3| has another registration, so should not remove it from the | 265 // |origin3| has another registration, so should not remove it from the |
| 255 // unique origin list. | 266 // unique origin list. |
| 267 int64 version_id; |
| 256 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 268 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 257 database->DeleteRegistration(data4.registration_id, origin3, | 269 database->DeleteRegistration(data4.registration_id, |
| 270 origin3, |
| 271 &version_id, |
| 258 &newly_purgeable_resources)); | 272 &newly_purgeable_resources)); |
| 259 | 273 |
| 260 origins.clear(); | 274 origins.clear(); |
| 261 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 275 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 262 database->GetOriginsWithRegistrations(&origins)); | 276 database->GetOriginsWithRegistrations(&origins)); |
| 263 EXPECT_EQ(3U, origins.size()); | 277 EXPECT_EQ(3U, origins.size()); |
| 264 EXPECT_TRUE(ContainsKey(origins, origin1)); | 278 EXPECT_TRUE(ContainsKey(origins, origin1)); |
| 265 EXPECT_TRUE(ContainsKey(origins, origin2)); | 279 EXPECT_TRUE(ContainsKey(origins, origin2)); |
| 266 EXPECT_TRUE(ContainsKey(origins, origin3)); | 280 EXPECT_TRUE(ContainsKey(origins, origin3)); |
| 267 | 281 |
| 268 // |origin3| should be removed from the unique origin list. | 282 // |origin3| should be removed from the unique origin list. |
| 269 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 283 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 270 database->DeleteRegistration(data3.registration_id, origin3, | 284 database->DeleteRegistration(data3.registration_id, |
| 285 origin3, |
| 286 &version_id, |
| 271 &newly_purgeable_resources)); | 287 &newly_purgeable_resources)); |
| 272 | 288 |
| 273 origins.clear(); | 289 origins.clear(); |
| 274 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 290 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 275 database->GetOriginsWithRegistrations(&origins)); | 291 database->GetOriginsWithRegistrations(&origins)); |
| 276 EXPECT_EQ(2U, origins.size()); | 292 EXPECT_EQ(2U, origins.size()); |
| 277 EXPECT_TRUE(ContainsKey(origins, origin1)); | 293 EXPECT_TRUE(ContainsKey(origins, origin1)); |
| 278 EXPECT_TRUE(ContainsKey(origins, origin2)); | 294 EXPECT_TRUE(ContainsKey(origins, origin2)); |
| 279 } | 295 } |
| 280 | 296 |
| 281 TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) { | 297 TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) { |
| 282 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 298 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 283 | 299 |
| 284 GURL origin1("http://example.com"); | 300 GURL origin1("http://example.com"); |
| 285 GURL origin2("https://www.example.com"); | 301 GURL origin2("https://www.example.com"); |
| 286 GURL origin3("https://example.org"); | 302 GURL origin3("https://example.org"); |
| 287 | 303 |
| 288 std::vector<RegistrationData> registrations; | 304 std::vector<RegistrationData> registrations; |
| 289 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 305 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 290 database->GetRegistrationsForOrigin(origin1, ®istrations)); | 306 database->GetRegistrationsForOrigin(origin1, ®istrations)); |
| 291 EXPECT_TRUE(registrations.empty()); | 307 EXPECT_TRUE(registrations.empty()); |
| 292 | 308 |
| 293 std::vector<Resource> resources; | 309 std::vector<Resource> resources; |
| 310 int64 deleted_version_id; |
| 294 std::vector<int64> newly_purgeable_resources; | 311 std::vector<int64> newly_purgeable_resources; |
| 295 | 312 |
| 296 RegistrationData data1; | 313 RegistrationData data1; |
| 297 data1.registration_id = 100; | 314 data1.registration_id = 100; |
| 298 data1.scope = URL(origin1, "/foo"); | 315 data1.scope = URL(origin1, "/foo"); |
| 299 data1.script = URL(origin1, "/script1.js"); | 316 data1.script = URL(origin1, "/script1.js"); |
| 300 data1.version_id = 1000; | 317 data1.version_id = 1000; |
| 301 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 318 ASSERT_EQ( |
| 302 database->WriteRegistration(data1, resources, | 319 ServiceWorkerDatabase::STATUS_OK, |
| 303 &newly_purgeable_resources)); | 320 database->WriteRegistration( |
| 321 data1, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 304 | 322 |
| 305 RegistrationData data2; | 323 RegistrationData data2; |
| 306 data2.registration_id = 200; | 324 data2.registration_id = 200; |
| 307 data2.scope = URL(origin2, "/bar"); | 325 data2.scope = URL(origin2, "/bar"); |
| 308 data2.script = URL(origin2, "/script2.js"); | 326 data2.script = URL(origin2, "/script2.js"); |
| 309 data2.version_id = 2000; | 327 data2.version_id = 2000; |
| 310 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 328 ASSERT_EQ( |
| 311 database->WriteRegistration(data2, resources, | 329 ServiceWorkerDatabase::STATUS_OK, |
| 312 &newly_purgeable_resources)); | 330 database->WriteRegistration( |
| 331 data2, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 313 | 332 |
| 314 RegistrationData data3; | 333 RegistrationData data3; |
| 315 data3.registration_id = 300; | 334 data3.registration_id = 300; |
| 316 data3.scope = URL(origin3, "/hoge"); | 335 data3.scope = URL(origin3, "/hoge"); |
| 317 data3.script = URL(origin3, "/script3.js"); | 336 data3.script = URL(origin3, "/script3.js"); |
| 318 data3.version_id = 3000; | 337 data3.version_id = 3000; |
| 319 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 338 ASSERT_EQ( |
| 320 database->WriteRegistration(data3, resources, | 339 ServiceWorkerDatabase::STATUS_OK, |
| 321 &newly_purgeable_resources)); | 340 database->WriteRegistration( |
| 341 data3, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 322 | 342 |
| 323 // |origin3| has two registrations. | 343 // |origin3| has two registrations. |
| 324 RegistrationData data4; | 344 RegistrationData data4; |
| 325 data4.registration_id = 400; | 345 data4.registration_id = 400; |
| 326 data4.scope = URL(origin3, "/fuga"); | 346 data4.scope = URL(origin3, "/fuga"); |
| 327 data4.script = URL(origin3, "/script4.js"); | 347 data4.script = URL(origin3, "/script4.js"); |
| 328 data4.version_id = 4000; | 348 data4.version_id = 4000; |
| 329 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 349 ASSERT_EQ( |
| 330 database->WriteRegistration(data4, resources, | 350 ServiceWorkerDatabase::STATUS_OK, |
| 331 &newly_purgeable_resources)); | 351 database->WriteRegistration( |
| 352 data4, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 332 | 353 |
| 333 registrations.clear(); | 354 registrations.clear(); |
| 334 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 355 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 335 database->GetRegistrationsForOrigin(origin3, ®istrations)); | 356 database->GetRegistrationsForOrigin(origin3, ®istrations)); |
| 336 EXPECT_EQ(2U, registrations.size()); | 357 EXPECT_EQ(2U, registrations.size()); |
| 337 VerifyRegistrationData(data3, registrations[0]); | 358 VerifyRegistrationData(data3, registrations[0]); |
| 338 VerifyRegistrationData(data4, registrations[1]); | 359 VerifyRegistrationData(data4, registrations[1]); |
| 339 } | 360 } |
| 340 | 361 |
| 341 TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) { | 362 TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) { |
| 342 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 363 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 343 | 364 |
| 344 std::vector<RegistrationData> registrations; | 365 std::vector<RegistrationData> registrations; |
| 345 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 366 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 346 database->GetAllRegistrations(®istrations)); | 367 database->GetAllRegistrations(®istrations)); |
| 347 EXPECT_TRUE(registrations.empty()); | 368 EXPECT_TRUE(registrations.empty()); |
| 348 | 369 |
| 349 std::vector<Resource> resources; | 370 std::vector<Resource> resources; |
| 371 int64 deleted_version_id; |
| 350 std::vector<int64> newly_purgeable_resources; | 372 std::vector<int64> newly_purgeable_resources; |
| 351 | 373 |
| 352 GURL origin1("http://www1.example.com"); | 374 GURL origin1("http://www1.example.com"); |
| 353 RegistrationData data1; | 375 RegistrationData data1; |
| 354 data1.registration_id = 100; | 376 data1.registration_id = 100; |
| 355 data1.scope = URL(origin1, "/foo"); | 377 data1.scope = URL(origin1, "/foo"); |
| 356 data1.script = URL(origin1, "/script1.js"); | 378 data1.script = URL(origin1, "/script1.js"); |
| 357 data1.version_id = 1000; | 379 data1.version_id = 1000; |
| 358 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 380 ASSERT_EQ( |
| 359 database->WriteRegistration(data1, resources, | 381 ServiceWorkerDatabase::STATUS_OK, |
| 360 &newly_purgeable_resources)); | 382 database->WriteRegistration( |
| 383 data1, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 361 | 384 |
| 362 GURL origin2("http://www2.example.com"); | 385 GURL origin2("http://www2.example.com"); |
| 363 RegistrationData data2; | 386 RegistrationData data2; |
| 364 data2.registration_id = 200; | 387 data2.registration_id = 200; |
| 365 data2.scope = URL(origin2, "/bar"); | 388 data2.scope = URL(origin2, "/bar"); |
| 366 data2.script = URL(origin2, "/script2.js"); | 389 data2.script = URL(origin2, "/script2.js"); |
| 367 data2.version_id = 2000; | 390 data2.version_id = 2000; |
| 368 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 391 ASSERT_EQ( |
| 369 database->WriteRegistration(data2, resources, | 392 ServiceWorkerDatabase::STATUS_OK, |
| 370 &newly_purgeable_resources)); | 393 database->WriteRegistration( |
| 394 data2, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 371 | 395 |
| 372 GURL origin3("http://www3.example.com"); | 396 GURL origin3("http://www3.example.com"); |
| 373 RegistrationData data3; | 397 RegistrationData data3; |
| 374 data3.registration_id = 300; | 398 data3.registration_id = 300; |
| 375 data3.scope = URL(origin3, "/hoge"); | 399 data3.scope = URL(origin3, "/hoge"); |
| 376 data3.script = URL(origin3, "/script3.js"); | 400 data3.script = URL(origin3, "/script3.js"); |
| 377 data3.version_id = 3000; | 401 data3.version_id = 3000; |
| 378 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 402 ASSERT_EQ( |
| 379 database->WriteRegistration(data3, resources, | 403 ServiceWorkerDatabase::STATUS_OK, |
| 380 &newly_purgeable_resources)); | 404 database->WriteRegistration( |
| 405 data3, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 381 | 406 |
| 382 // |origin3| has two registrations. | 407 // |origin3| has two registrations. |
| 383 RegistrationData data4; | 408 RegistrationData data4; |
| 384 data4.registration_id = 400; | 409 data4.registration_id = 400; |
| 385 data4.scope = URL(origin3, "/fuga"); | 410 data4.scope = URL(origin3, "/fuga"); |
| 386 data4.script = URL(origin3, "/script4.js"); | 411 data4.script = URL(origin3, "/script4.js"); |
| 387 data4.version_id = 4000; | 412 data4.version_id = 4000; |
| 388 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 413 ASSERT_EQ( |
| 389 database->WriteRegistration(data4, resources, | 414 ServiceWorkerDatabase::STATUS_OK, |
| 390 &newly_purgeable_resources)); | 415 database->WriteRegistration( |
| 416 data4, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 391 | 417 |
| 392 registrations.clear(); | 418 registrations.clear(); |
| 393 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 419 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 394 database->GetAllRegistrations(®istrations)); | 420 database->GetAllRegistrations(®istrations)); |
| 395 EXPECT_EQ(4U, registrations.size()); | 421 EXPECT_EQ(4U, registrations.size()); |
| 396 VerifyRegistrationData(data1, registrations[0]); | 422 VerifyRegistrationData(data1, registrations[0]); |
| 397 VerifyRegistrationData(data2, registrations[1]); | 423 VerifyRegistrationData(data2, registrations[1]); |
| 398 VerifyRegistrationData(data3, registrations[2]); | 424 VerifyRegistrationData(data3, registrations[2]); |
| 399 VerifyRegistrationData(data4, registrations[3]); | 425 VerifyRegistrationData(data4, registrations[3]); |
| 400 } | 426 } |
| (...skipping 17 matching lines...) Expand all Loading... |
| 418 // the uncommitted list. | 444 // the uncommitted list. |
| 419 std::set<int64> uncommitted_ids; | 445 std::set<int64> uncommitted_ids; |
| 420 uncommitted_ids.insert(resources[0].resource_id); | 446 uncommitted_ids.insert(resources[0].resource_id); |
| 421 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 447 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 422 database->WriteUncommittedResourceIds(uncommitted_ids)); | 448 database->WriteUncommittedResourceIds(uncommitted_ids)); |
| 423 std::set<int64> uncommitted_ids_out; | 449 std::set<int64> uncommitted_ids_out; |
| 424 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 450 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 425 database->GetUncommittedResourceIds(&uncommitted_ids_out)); | 451 database->GetUncommittedResourceIds(&uncommitted_ids_out)); |
| 426 EXPECT_EQ(uncommitted_ids, uncommitted_ids_out); | 452 EXPECT_EQ(uncommitted_ids, uncommitted_ids_out); |
| 427 | 453 |
| 454 int64 deleted_version_id = 222; // Dummy initial value |
| 428 std::vector<int64> newly_purgeable_resources; | 455 std::vector<int64> newly_purgeable_resources; |
| 429 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 456 |
| 430 database->WriteRegistration(data, resources, | 457 EXPECT_EQ( |
| 431 &newly_purgeable_resources)); | 458 ServiceWorkerDatabase::STATUS_OK, |
| 459 database->WriteRegistration( |
| 460 data, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 461 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version_id); |
| 462 EXPECT_TRUE(newly_purgeable_resources.empty()); |
| 432 | 463 |
| 433 // Make sure that the registration and resource records are stored. | 464 // Make sure that the registration and resource records are stored. |
| 434 RegistrationData data_out; | 465 RegistrationData data_out; |
| 435 std::vector<Resource> resources_out; | 466 std::vector<Resource> resources_out; |
| 436 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 467 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 437 database->ReadRegistration( | 468 database->ReadRegistration( |
| 438 data.registration_id, origin, &data_out, &resources_out)); | 469 data.registration_id, origin, &data_out, &resources_out)); |
| 439 VerifyRegistrationData(data, data_out); | 470 VerifyRegistrationData(data, data_out); |
| 440 VerifyResourceRecords(resources, resources_out); | 471 VerifyResourceRecords(resources, resources_out); |
| 441 | 472 |
| 442 // Make sure that the resource is removed from the uncommitted list. | 473 // Make sure that the resource is removed from the uncommitted list. |
| 443 uncommitted_ids_out.clear(); | 474 uncommitted_ids_out.clear(); |
| 444 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 475 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 445 database->GetUncommittedResourceIds(&uncommitted_ids_out)); | 476 database->GetUncommittedResourceIds(&uncommitted_ids_out)); |
| 446 EXPECT_TRUE(uncommitted_ids_out.empty()); | 477 EXPECT_TRUE(uncommitted_ids_out.empty()); |
| 447 | 478 |
| 448 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 479 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 449 database->DeleteRegistration(data.registration_id, origin, | 480 database->DeleteRegistration(data.registration_id, |
| 481 origin, |
| 482 &deleted_version_id, |
| 450 &newly_purgeable_resources)); | 483 &newly_purgeable_resources)); |
| 484 EXPECT_EQ(data.version_id, deleted_version_id); |
| 451 ASSERT_EQ(resources.size(), newly_purgeable_resources.size()); | 485 ASSERT_EQ(resources.size(), newly_purgeable_resources.size()); |
| 452 for (size_t i = 0; i < resources.size(); ++i) | 486 for (size_t i = 0; i < resources.size(); ++i) |
| 453 EXPECT_EQ(newly_purgeable_resources[i], resources[i].resource_id); | 487 EXPECT_EQ(newly_purgeable_resources[i], resources[i].resource_id); |
| 454 | 488 |
| 455 // Make sure that the registration and resource records are gone. | 489 // Make sure that the registration and resource records are gone. |
| 456 resources_out.clear(); | 490 resources_out.clear(); |
| 457 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | 491 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 458 database->ReadRegistration( | 492 database->ReadRegistration( |
| 459 data.registration_id, origin, &data_out, &resources_out)); | 493 data.registration_id, origin, &data_out, &resources_out)); |
| 460 EXPECT_TRUE(resources_out.empty()); | 494 EXPECT_TRUE(resources_out.empty()); |
| 461 | 495 |
| 462 // Resources should be purgeable because these are no longer referred. | 496 // Resources should be purgeable because these are no longer referred. |
| 463 std::set<int64> purgeable_ids_out; | 497 std::set<int64> purgeable_ids_out; |
| 464 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 498 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 465 database->GetPurgeableResourceIds(&purgeable_ids_out)); | 499 database->GetPurgeableResourceIds(&purgeable_ids_out)); |
| 466 EXPECT_EQ(2u, purgeable_ids_out.size()); | 500 EXPECT_EQ(2u, purgeable_ids_out.size()); |
| 467 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources[0].resource_id)); | 501 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources[0].resource_id)); |
| 468 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources[1].resource_id)); | 502 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources[1].resource_id)); |
| 469 } | 503 } |
| 470 | 504 |
| 505 TEST(ServiceWorkerDatabaseTest, DeleteNonExistentRegistration) { |
| 506 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 507 |
| 508 GURL origin("http://example.com"); |
| 509 RegistrationData data; |
| 510 data.registration_id = 100; |
| 511 data.scope = URL(origin, "/foo"); |
| 512 data.script = URL(origin, "/script.js"); |
| 513 data.version_id = 200; |
| 514 |
| 515 std::vector<Resource> resources; |
| 516 resources.push_back(CreateResource(1, URL(origin, "/resource1"))); |
| 517 resources.push_back(CreateResource(2, URL(origin, "/resource2"))); |
| 518 |
| 519 const int64 kNonExistentRegistrationId = 999; |
| 520 const int64 kArbitraryVersionId = 222; // Used as a dummy initial value |
| 521 |
| 522 int64 deleted_version_id = kArbitraryVersionId; |
| 523 std::vector<int64> newly_purgeable_resources; |
| 524 EXPECT_EQ( |
| 525 ServiceWorkerDatabase::STATUS_OK, |
| 526 database->WriteRegistration( |
| 527 data, resources, &deleted_version_id, &newly_purgeable_resources)); |
| 528 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version_id); |
| 529 EXPECT_TRUE(newly_purgeable_resources.empty()); |
| 530 |
| 531 // Delete from an origin that has a registration. |
| 532 deleted_version_id = kArbitraryVersionId; |
| 533 newly_purgeable_resources.clear(); |
| 534 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 535 database->DeleteRegistration(kNonExistentRegistrationId, |
| 536 origin, |
| 537 &deleted_version_id, |
| 538 &newly_purgeable_resources)); |
| 539 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version_id); |
| 540 EXPECT_TRUE(newly_purgeable_resources.empty()); |
| 541 |
| 542 // Delete from an origin that has no registration. |
| 543 deleted_version_id = kArbitraryVersionId; |
| 544 newly_purgeable_resources.clear(); |
| 545 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 546 database->DeleteRegistration(kNonExistentRegistrationId, |
| 547 GURL("http://example.net"), |
| 548 &deleted_version_id, |
| 549 &newly_purgeable_resources)); |
| 550 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version_id); |
| 551 EXPECT_TRUE(newly_purgeable_resources.empty()); |
| 552 } |
| 553 |
| 471 TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) { | 554 TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) { |
| 472 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 555 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 473 | 556 |
| 474 GURL origin("http://example.com"); | 557 GURL origin("http://example.com"); |
| 475 RegistrationData data; | 558 RegistrationData data; |
| 476 data.registration_id = 100; | 559 data.registration_id = 100; |
| 477 data.scope = URL(origin, "/foo"); | 560 data.scope = URL(origin, "/foo"); |
| 478 data.script = URL(origin, "/script.js"); | 561 data.script = URL(origin, "/script.js"); |
| 479 data.version_id = 200; | 562 data.version_id = 200; |
| 480 | 563 |
| 481 std::vector<Resource> resources1; | 564 std::vector<Resource> resources1; |
| 482 resources1.push_back(CreateResource(1, URL(origin, "/resource1"))); | 565 resources1.push_back(CreateResource(1, URL(origin, "/resource1"))); |
| 483 resources1.push_back(CreateResource(2, URL(origin, "/resource2"))); | 566 resources1.push_back(CreateResource(2, URL(origin, "/resource2"))); |
| 567 |
| 568 int64 deleted_version_id = 222; // Dummy inital value |
| 484 std::vector<int64> newly_purgeable_resources; | 569 std::vector<int64> newly_purgeable_resources; |
| 485 | 570 |
| 486 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 571 EXPECT_EQ( |
| 487 database->WriteRegistration(data, resources1, | 572 ServiceWorkerDatabase::STATUS_OK, |
| 488 &newly_purgeable_resources)); | 573 database->WriteRegistration( |
| 574 data, resources1, &deleted_version_id, &newly_purgeable_resources)); |
| 575 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version_id); |
| 489 EXPECT_TRUE(newly_purgeable_resources.empty()); | 576 EXPECT_TRUE(newly_purgeable_resources.empty()); |
| 490 | 577 |
| 491 // Make sure that the registration and resource records are stored. | 578 // Make sure that the registration and resource records are stored. |
| 492 RegistrationData data_out; | 579 RegistrationData data_out; |
| 493 std::vector<Resource> resources_out; | 580 std::vector<Resource> resources_out; |
| 494 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( | 581 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( |
| 495 data.registration_id, origin, &data_out, &resources_out)); | 582 data.registration_id, origin, &data_out, &resources_out)); |
| 496 VerifyRegistrationData(data, data_out); | 583 VerifyRegistrationData(data, data_out); |
| 497 VerifyResourceRecords(resources1, resources_out); | 584 VerifyResourceRecords(resources1, resources_out); |
| 498 | 585 |
| 499 // Update the registration. | 586 // Update the registration. |
| 500 RegistrationData updated_data = data; | 587 RegistrationData updated_data = data; |
| 501 updated_data.version_id = data.version_id + 1; | 588 updated_data.version_id = data.version_id + 1; |
| 502 std::vector<Resource> resources2; | 589 std::vector<Resource> resources2; |
| 503 resources2.push_back(CreateResource(3, URL(origin, "/resource3"))); | 590 resources2.push_back(CreateResource(3, URL(origin, "/resource3"))); |
| 504 resources2.push_back(CreateResource(4, URL(origin, "/resource4"))); | 591 resources2.push_back(CreateResource(4, URL(origin, "/resource4"))); |
| 505 | 592 |
| 506 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 593 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 507 database->WriteRegistration(updated_data, resources2, | 594 database->WriteRegistration(updated_data, |
| 595 resources2, |
| 596 &deleted_version_id, |
| 508 &newly_purgeable_resources)); | 597 &newly_purgeable_resources)); |
| 598 EXPECT_EQ(data.version_id, deleted_version_id); |
| 509 ASSERT_EQ(resources1.size(), newly_purgeable_resources.size()); | 599 ASSERT_EQ(resources1.size(), newly_purgeable_resources.size()); |
| 510 for(size_t i = 0; i < resources1.size(); ++i) | 600 for(size_t i = 0; i < resources1.size(); ++i) |
| 511 EXPECT_EQ(newly_purgeable_resources[i], resources1[i].resource_id); | 601 EXPECT_EQ(newly_purgeable_resources[i], resources1[i].resource_id); |
| 512 | 602 |
| 513 // Make sure that |updated_data| is stored and resources referred from |data| | 603 // Make sure that |updated_data| is stored and resources referred from |data| |
| 514 // is moved to the purgeable list. | 604 // is moved to the purgeable list. |
| 515 resources_out.clear(); | 605 resources_out.clear(); |
| 516 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( | 606 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( |
| 517 updated_data.registration_id, origin, &data_out, &resources_out)); | 607 updated_data.registration_id, origin, &data_out, &resources_out)); |
| 518 VerifyRegistrationData(updated_data, data_out); | 608 VerifyRegistrationData(updated_data, data_out); |
| 519 VerifyResourceRecords(resources2, resources_out); | 609 VerifyResourceRecords(resources2, resources_out); |
| 520 | 610 |
| 521 std::set<int64> purgeable_ids_out; | 611 std::set<int64> purgeable_ids_out; |
| 522 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 612 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 523 database->GetPurgeableResourceIds(&purgeable_ids_out)); | 613 database->GetPurgeableResourceIds(&purgeable_ids_out)); |
| 524 EXPECT_EQ(2u, purgeable_ids_out.size()); | 614 EXPECT_EQ(2u, purgeable_ids_out.size()); |
| 525 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[0].resource_id)); | 615 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[0].resource_id)); |
| 526 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[1].resource_id)); | 616 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[1].resource_id)); |
| 527 } | 617 } |
| 528 | 618 |
| 529 TEST(ServiceWorkerDatabaseTest, Registration_Multiple) { | 619 TEST(ServiceWorkerDatabaseTest, Registration_Multiple) { |
| 530 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 620 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 531 GURL origin("http://example.com"); | 621 GURL origin("http://example.com"); |
| 532 | 622 |
| 623 int64 deleted_version_id; |
| 533 std::vector<int64> newly_purgeable_resources; | 624 std::vector<int64> newly_purgeable_resources; |
| 534 | 625 |
| 535 // Add registration1. | 626 // Add registration1. |
| 536 RegistrationData data1; | 627 RegistrationData data1; |
| 537 data1.registration_id = 100; | 628 data1.registration_id = 100; |
| 538 data1.scope = URL(origin, "/foo"); | 629 data1.scope = URL(origin, "/foo"); |
| 539 data1.script = URL(origin, "/script1.js"); | 630 data1.script = URL(origin, "/script1.js"); |
| 540 data1.version_id = 200; | 631 data1.version_id = 200; |
| 541 | 632 |
| 542 std::vector<Resource> resources1; | 633 std::vector<Resource> resources1; |
| 543 resources1.push_back(CreateResource(1, URL(origin, "/resource1"))); | 634 resources1.push_back(CreateResource(1, URL(origin, "/resource1"))); |
| 544 resources1.push_back(CreateResource(2, URL(origin, "/resource2"))); | 635 resources1.push_back(CreateResource(2, URL(origin, "/resource2"))); |
| 545 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 636 EXPECT_EQ( |
| 546 database->WriteRegistration(data1, resources1, | 637 ServiceWorkerDatabase::STATUS_OK, |
| 547 &newly_purgeable_resources)); | 638 database->WriteRegistration( |
| 639 data1, resources1, &deleted_version_id, &newly_purgeable_resources)); |
| 548 | 640 |
| 549 // Add registration2. | 641 // Add registration2. |
| 550 RegistrationData data2; | 642 RegistrationData data2; |
| 551 data2.registration_id = 101; | 643 data2.registration_id = 101; |
| 552 data2.scope = URL(origin, "/bar"); | 644 data2.scope = URL(origin, "/bar"); |
| 553 data2.script = URL(origin, "/script2.js"); | 645 data2.script = URL(origin, "/script2.js"); |
| 554 data2.version_id = 201; | 646 data2.version_id = 201; |
| 555 | 647 |
| 556 std::vector<Resource> resources2; | 648 std::vector<Resource> resources2; |
| 557 resources2.push_back(CreateResource(3, URL(origin, "/resource3"))); | 649 resources2.push_back(CreateResource(3, URL(origin, "/resource3"))); |
| 558 resources2.push_back(CreateResource(4, URL(origin, "/resource4"))); | 650 resources2.push_back(CreateResource(4, URL(origin, "/resource4"))); |
| 559 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 651 EXPECT_EQ( |
| 560 database->WriteRegistration(data2, resources2, | 652 ServiceWorkerDatabase::STATUS_OK, |
| 561 &newly_purgeable_resources)); | 653 database->WriteRegistration( |
| 654 data2, resources2, &deleted_version_id, &newly_purgeable_resources)); |
| 562 | 655 |
| 563 // Make sure that registration1 is stored. | 656 // Make sure that registration1 is stored. |
| 564 RegistrationData data_out; | 657 RegistrationData data_out; |
| 565 std::vector<Resource> resources_out; | 658 std::vector<Resource> resources_out; |
| 566 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( | 659 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( |
| 567 data1.registration_id, origin, &data_out, &resources_out)); | 660 data1.registration_id, origin, &data_out, &resources_out)); |
| 568 VerifyRegistrationData(data1, data_out); | 661 VerifyRegistrationData(data1, data_out); |
| 569 VerifyResourceRecords(resources1, resources_out); | 662 VerifyResourceRecords(resources1, resources_out); |
| 570 | 663 |
| 571 // Make sure that registration2 is also stored. | 664 // Make sure that registration2 is also stored. |
| 572 resources_out.clear(); | 665 resources_out.clear(); |
| 573 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( | 666 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( |
| 574 data2.registration_id, origin, &data_out, &resources_out)); | 667 data2.registration_id, origin, &data_out, &resources_out)); |
| 575 VerifyRegistrationData(data2, data_out); | 668 VerifyRegistrationData(data2, data_out); |
| 576 VerifyResourceRecords(resources2, resources_out); | 669 VerifyResourceRecords(resources2, resources_out); |
| 577 | 670 |
| 578 std::set<int64> purgeable_ids_out; | 671 std::set<int64> purgeable_ids_out; |
| 579 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 672 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 580 database->GetPurgeableResourceIds(&purgeable_ids_out)); | 673 database->GetPurgeableResourceIds(&purgeable_ids_out)); |
| 581 EXPECT_TRUE(purgeable_ids_out.empty()); | 674 EXPECT_TRUE(purgeable_ids_out.empty()); |
| 582 | 675 |
| 583 // Delete registration1. | 676 // Delete registration1. |
| 677 int64 version_id; |
| 584 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 678 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 585 database->DeleteRegistration(data1.registration_id, origin, | 679 database->DeleteRegistration(data1.registration_id, |
| 680 origin, |
| 681 &version_id, |
| 586 &newly_purgeable_resources)); | 682 &newly_purgeable_resources)); |
| 587 | 683 |
| 588 // Make sure that registration1 is gone. | 684 // Make sure that registration1 is gone. |
| 589 resources_out.clear(); | 685 resources_out.clear(); |
| 590 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | 686 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 591 database->ReadRegistration( | 687 database->ReadRegistration( |
| 592 data1.registration_id, origin, &data_out, &resources_out)); | 688 data1.registration_id, origin, &data_out, &resources_out)); |
| 593 EXPECT_TRUE(resources_out.empty()); | 689 EXPECT_TRUE(resources_out.empty()); |
| 594 | 690 |
| 595 purgeable_ids_out.clear(); | 691 purgeable_ids_out.clear(); |
| 596 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 692 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 597 database->GetPurgeableResourceIds(&purgeable_ids_out)); | 693 database->GetPurgeableResourceIds(&purgeable_ids_out)); |
| 598 EXPECT_EQ(2u, purgeable_ids_out.size()); | 694 EXPECT_EQ(2u, purgeable_ids_out.size()); |
| 599 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[0].resource_id)); | 695 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[0].resource_id)); |
| 600 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[1].resource_id)); | 696 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[1].resource_id)); |
| 601 | 697 |
| 602 // Make sure that registration2 is still alive. | 698 // Make sure that registration2 is still alive. |
| 603 resources_out.clear(); | 699 resources_out.clear(); |
| 604 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( | 700 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( |
| 605 data2.registration_id, origin, &data_out, &resources_out)); | 701 data2.registration_id, origin, &data_out, &resources_out)); |
| 606 VerifyRegistrationData(data2, data_out); | 702 VerifyRegistrationData(data2, data_out); |
| 607 VerifyResourceRecords(resources2, resources_out); | 703 VerifyResourceRecords(resources2, resources_out); |
| 608 } | 704 } |
| 609 | 705 |
| 610 TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) { | 706 TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) { |
| 611 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 707 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 612 GURL origin("http://example.com"); | 708 GURL origin("http://example.com"); |
| 613 | 709 |
| 710 int64 deleted_version_id; |
| 614 std::vector<int64> newly_purgeable_resources; | 711 std::vector<int64> newly_purgeable_resources; |
| 615 | 712 |
| 616 // Should be false because a registration does not exist. | 713 // Should be false because a registration does not exist. |
| 617 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | 714 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 618 database->UpdateVersionToActive(0, origin)); | 715 database->UpdateVersionToActive(0, origin)); |
| 619 | 716 |
| 620 // Add a registration. | 717 // Add a registration. |
| 621 RegistrationData data; | 718 RegistrationData data; |
| 622 data.registration_id = 100; | 719 data.registration_id = 100; |
| 623 data.scope = URL(origin, "/foo"); | 720 data.scope = URL(origin, "/foo"); |
| 624 data.script = URL(origin, "/script.js"); | 721 data.script = URL(origin, "/script.js"); |
| 625 data.version_id = 200; | 722 data.version_id = 200; |
| 626 data.is_active = false; | 723 data.is_active = false; |
| 627 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 724 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 628 database->WriteRegistration(data, std::vector<Resource>(), | 725 database->WriteRegistration(data, |
| 726 std::vector<Resource>(), |
| 727 &deleted_version_id, |
| 629 &newly_purgeable_resources)); | 728 &newly_purgeable_resources)); |
| 630 | 729 |
| 631 // Make sure that the registration is stored. | 730 // Make sure that the registration is stored. |
| 632 RegistrationData data_out; | 731 RegistrationData data_out; |
| 633 std::vector<Resource> resources_out; | 732 std::vector<Resource> resources_out; |
| 634 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 733 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 635 database->ReadRegistration( | 734 database->ReadRegistration( |
| 636 data.registration_id, origin, &data_out, &resources_out)); | 735 data.registration_id, origin, &data_out, &resources_out)); |
| 637 VerifyRegistrationData(data, data_out); | 736 VerifyRegistrationData(data, data_out); |
| 638 EXPECT_TRUE(resources_out.empty()); | 737 EXPECT_TRUE(resources_out.empty()); |
| 639 | 738 |
| 640 // Activate the registration. | 739 // Activate the registration. |
| 641 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 740 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 642 database->UpdateVersionToActive(data.registration_id, origin)); | 741 database->UpdateVersionToActive(data.registration_id, origin)); |
| 643 | 742 |
| 644 // Make sure that the registration is activated. | 743 // Make sure that the registration is activated. |
| 645 resources_out.clear(); | 744 resources_out.clear(); |
| 646 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 745 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 647 database->ReadRegistration( | 746 database->ReadRegistration( |
| 648 data.registration_id, origin, &data_out, &resources_out)); | 747 data.registration_id, origin, &data_out, &resources_out)); |
| 649 RegistrationData expected_data = data; | 748 RegistrationData expected_data = data; |
| 650 expected_data.is_active = true; | 749 expected_data.is_active = true; |
| 651 VerifyRegistrationData(expected_data, data_out); | 750 VerifyRegistrationData(expected_data, data_out); |
| 652 EXPECT_TRUE(resources_out.empty()); | 751 EXPECT_TRUE(resources_out.empty()); |
| 653 | 752 |
| 654 // Delete the registration. | 753 // Delete the registration. |
| 754 int64 version_id; |
| 655 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 755 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 656 database->DeleteRegistration(data.registration_id, origin, | 756 database->DeleteRegistration(data.registration_id, |
| 757 origin, |
| 758 &version_id, |
| 657 &newly_purgeable_resources)); | 759 &newly_purgeable_resources)); |
| 658 | 760 |
| 659 // Should be false because the registration is gone. | 761 // Should be false because the registration is gone. |
| 660 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | 762 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 661 database->UpdateVersionToActive(data.registration_id, origin)); | 763 database->UpdateVersionToActive(data.registration_id, origin)); |
| 662 } | 764 } |
| 663 | 765 |
| 664 TEST(ServiceWorkerDatabaseTest, UpdateLastCheckTime) { | 766 TEST(ServiceWorkerDatabaseTest, UpdateLastCheckTime) { |
| 665 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 767 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 666 GURL origin("http://example.com"); | 768 GURL origin("http://example.com"); |
| 769 int64 deleted_version_id; |
| 667 std::vector<int64> newly_purgeable_resources; | 770 std::vector<int64> newly_purgeable_resources; |
| 668 | 771 |
| 669 // Should be false because a registration does not exist. | 772 // Should be false because a registration does not exist. |
| 670 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | 773 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 671 database->UpdateLastCheckTime(0, origin, base::Time::Now())); | 774 database->UpdateLastCheckTime(0, origin, base::Time::Now())); |
| 672 | 775 |
| 673 // Add a registration. | 776 // Add a registration. |
| 674 RegistrationData data; | 777 RegistrationData data; |
| 675 data.registration_id = 100; | 778 data.registration_id = 100; |
| 676 data.scope = URL(origin, "/foo"); | 779 data.scope = URL(origin, "/foo"); |
| 677 data.script = URL(origin, "/script.js"); | 780 data.script = URL(origin, "/script.js"); |
| 678 data.version_id = 200; | 781 data.version_id = 200; |
| 679 data.last_update_check = base::Time::Now(); | 782 data.last_update_check = base::Time::Now(); |
| 680 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 783 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 681 database->WriteRegistration(data, std::vector<Resource>(), | 784 database->WriteRegistration(data, |
| 785 std::vector<Resource>(), |
| 786 &deleted_version_id, |
| 682 &newly_purgeable_resources)); | 787 &newly_purgeable_resources)); |
| 683 | 788 |
| 684 // Make sure that the registration is stored. | 789 // Make sure that the registration is stored. |
| 685 RegistrationData data_out; | 790 RegistrationData data_out; |
| 686 std::vector<Resource> resources_out; | 791 std::vector<Resource> resources_out; |
| 687 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 792 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 688 database->ReadRegistration( | 793 database->ReadRegistration( |
| 689 data.registration_id, origin, &data_out, &resources_out)); | 794 data.registration_id, origin, &data_out, &resources_out)); |
| 690 VerifyRegistrationData(data, data_out); | 795 VerifyRegistrationData(data, data_out); |
| 691 EXPECT_TRUE(resources_out.empty()); | 796 EXPECT_TRUE(resources_out.empty()); |
| 692 | 797 |
| 693 // Update the last check time. | 798 // Update the last check time. |
| 694 base::Time updated_time = base::Time::Now(); | 799 base::Time updated_time = base::Time::Now(); |
| 695 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 800 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 696 database->UpdateLastCheckTime( | 801 database->UpdateLastCheckTime( |
| 697 data.registration_id, origin, updated_time)); | 802 data.registration_id, origin, updated_time)); |
| 698 | 803 |
| 699 // Make sure that the registration is updated. | 804 // Make sure that the registration is updated. |
| 700 resources_out.clear(); | 805 resources_out.clear(); |
| 701 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 806 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 702 database->ReadRegistration( | 807 database->ReadRegistration( |
| 703 data.registration_id, origin, &data_out, &resources_out)); | 808 data.registration_id, origin, &data_out, &resources_out)); |
| 704 RegistrationData expected_data = data; | 809 RegistrationData expected_data = data; |
| 705 expected_data.last_update_check = updated_time; | 810 expected_data.last_update_check = updated_time; |
| 706 VerifyRegistrationData(expected_data, data_out); | 811 VerifyRegistrationData(expected_data, data_out); |
| 707 EXPECT_TRUE(resources_out.empty()); | 812 EXPECT_TRUE(resources_out.empty()); |
| 708 | 813 |
| 709 // Delete the registration. | 814 // Delete the registration. |
| 815 int64 version_id; |
| 710 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 816 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 711 database->DeleteRegistration(data.registration_id, origin, | 817 database->DeleteRegistration(data.registration_id, |
| 818 origin, |
| 819 &version_id, |
| 712 &newly_purgeable_resources)); | 820 &newly_purgeable_resources)); |
| 713 | 821 |
| 714 // Should be false because the registration is gone. | 822 // Should be false because the registration is gone. |
| 715 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | 823 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 716 database->UpdateLastCheckTime( | 824 database->UpdateLastCheckTime( |
| 717 data.registration_id, origin, base::Time::Now())); | 825 data.registration_id, origin, base::Time::Now())); |
| 718 } | 826 } |
| 719 | 827 |
| 720 TEST(ServiceWorkerDatabaseTest, UncommittedResourceIds) { | 828 TEST(ServiceWorkerDatabaseTest, UncommittedResourceIds) { |
| 721 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 829 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 798 | 906 |
| 799 ids_out.clear(); | 907 ids_out.clear(); |
| 800 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 908 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 801 database->GetPurgeableResourceIds(&ids_out)); | 909 database->GetPurgeableResourceIds(&ids_out)); |
| 802 expected = base::STLSetDifference<std::set<int64> >(expected, ids3); | 910 expected = base::STLSetDifference<std::set<int64> >(expected, ids3); |
| 803 EXPECT_EQ(expected, ids_out); | 911 EXPECT_EQ(expected, ids_out); |
| 804 } | 912 } |
| 805 | 913 |
| 806 TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) { | 914 TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) { |
| 807 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 915 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 916 int64 deleted_version_id; |
| 808 std::vector<int64> newly_purgeable_resources; | 917 std::vector<int64> newly_purgeable_resources; |
| 809 | 918 |
| 810 // Data associated with |origin1| will be removed. | 919 // Data associated with |origin1| will be removed. |
| 811 GURL origin1("http://example.com"); | 920 GURL origin1("http://example.com"); |
| 812 GURL origin2("http://example.org"); | 921 GURL origin2("http://example.org"); |
| 813 | 922 |
| 814 // |origin1| has two registrations. | 923 // |origin1| has two registrations. |
| 815 RegistrationData data1; | 924 RegistrationData data1; |
| 816 data1.registration_id = 10; | 925 data1.registration_id = 10; |
| 817 data1.scope = URL(origin1, "/foo"); | 926 data1.scope = URL(origin1, "/foo"); |
| 818 data1.script = URL(origin1, "/script1.js"); | 927 data1.script = URL(origin1, "/script1.js"); |
| 819 data1.version_id = 100; | 928 data1.version_id = 100; |
| 820 | 929 |
| 821 std::vector<Resource> resources1; | 930 std::vector<Resource> resources1; |
| 822 resources1.push_back(CreateResource(1, URL(origin1, "/resource1"))); | 931 resources1.push_back(CreateResource(1, URL(origin1, "/resource1"))); |
| 823 resources1.push_back(CreateResource(2, URL(origin1, "/resource2"))); | 932 resources1.push_back(CreateResource(2, URL(origin1, "/resource2"))); |
| 824 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 933 ASSERT_EQ( |
| 825 database->WriteRegistration(data1, resources1, | 934 ServiceWorkerDatabase::STATUS_OK, |
| 826 &newly_purgeable_resources)); | 935 database->WriteRegistration( |
| 936 data1, resources1, &deleted_version_id, &newly_purgeable_resources)); |
| 827 | 937 |
| 828 RegistrationData data2; | 938 RegistrationData data2; |
| 829 data2.registration_id = 11; | 939 data2.registration_id = 11; |
| 830 data2.scope = URL(origin1, "/bar"); | 940 data2.scope = URL(origin1, "/bar"); |
| 831 data2.script = URL(origin1, "/script2.js"); | 941 data2.script = URL(origin1, "/script2.js"); |
| 832 data2.version_id = 101; | 942 data2.version_id = 101; |
| 833 | 943 |
| 834 std::vector<Resource> resources2; | 944 std::vector<Resource> resources2; |
| 835 resources2.push_back(CreateResource(3, URL(origin1, "/resource3"))); | 945 resources2.push_back(CreateResource(3, URL(origin1, "/resource3"))); |
| 836 resources2.push_back(CreateResource(4, URL(origin1, "/resource4"))); | 946 resources2.push_back(CreateResource(4, URL(origin1, "/resource4"))); |
| 837 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 947 ASSERT_EQ( |
| 838 database->WriteRegistration(data2, resources2, | 948 ServiceWorkerDatabase::STATUS_OK, |
| 839 &newly_purgeable_resources)); | 949 database->WriteRegistration( |
| 950 data2, resources2, &deleted_version_id, &newly_purgeable_resources)); |
| 840 | 951 |
| 841 // |origin2| has one registration. | 952 // |origin2| has one registration. |
| 842 RegistrationData data3; | 953 RegistrationData data3; |
| 843 data3.registration_id = 12; | 954 data3.registration_id = 12; |
| 844 data3.scope = URL(origin2, "/hoge"); | 955 data3.scope = URL(origin2, "/hoge"); |
| 845 data3.script = URL(origin2, "/script3.js"); | 956 data3.script = URL(origin2, "/script3.js"); |
| 846 data3.version_id = 102; | 957 data3.version_id = 102; |
| 847 | 958 |
| 848 std::vector<Resource> resources3; | 959 std::vector<Resource> resources3; |
| 849 resources3.push_back(CreateResource(5, URL(origin2, "/resource5"))); | 960 resources3.push_back(CreateResource(5, URL(origin2, "/resource5"))); |
| 850 resources3.push_back(CreateResource(6, URL(origin2, "/resource6"))); | 961 resources3.push_back(CreateResource(6, URL(origin2, "/resource6"))); |
| 851 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 962 ASSERT_EQ( |
| 852 database->WriteRegistration(data3, resources3, | 963 ServiceWorkerDatabase::STATUS_OK, |
| 853 &newly_purgeable_resources)); | 964 database->WriteRegistration( |
| 965 data3, resources3, &deleted_version_id, &newly_purgeable_resources)); |
| 854 | 966 |
| 855 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 967 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 856 database->DeleteAllDataForOrigin(origin1, | 968 database->DeleteAllDataForOrigin(origin1, |
| 857 &newly_purgeable_resources)); | 969 &newly_purgeable_resources)); |
| 858 | 970 |
| 859 // |origin1| should be removed from the unique origin list. | 971 // |origin1| should be removed from the unique origin list. |
| 860 std::set<GURL> unique_origins; | 972 std::set<GURL> unique_origins; |
| 861 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 973 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 862 database->GetOriginsWithRegistrations(&unique_origins)); | 974 database->GetOriginsWithRegistrations(&unique_origins)); |
| 863 EXPECT_EQ(1u, unique_origins.size()); | 975 EXPECT_EQ(1u, unique_origins.size()); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 895 CreateDatabase(database_dir.path())); | 1007 CreateDatabase(database_dir.path())); |
| 896 | 1008 |
| 897 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); | 1009 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); |
| 898 ASSERT_TRUE(base::DirectoryExists(database_dir.path())); | 1010 ASSERT_TRUE(base::DirectoryExists(database_dir.path())); |
| 899 | 1011 |
| 900 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->DestroyDatabase()); | 1012 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->DestroyDatabase()); |
| 901 ASSERT_FALSE(base::DirectoryExists(database_dir.path())); | 1013 ASSERT_FALSE(base::DirectoryExists(database_dir.path())); |
| 902 } | 1014 } |
| 903 | 1015 |
| 904 } // namespace content | 1016 } // namespace content |
| OLD | NEW |