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

Side by Side Diff: content/browser/service_worker/service_worker_database_unittest.cc

Issue 1221643014: Service Worker: Migrate to version_uuid and surface ServiceWorker.id. (Chromium 2/3) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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 <string> 7 #include <string>
8 8
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/files/scoped_temp_dir.h" 10 #include "base/files/scoped_temp_dir.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 50
51 ServiceWorkerDatabase* CreateDatabaseInMemory() { 51 ServiceWorkerDatabase* CreateDatabaseInMemory() {
52 return new ServiceWorkerDatabase(base::FilePath()); 52 return new ServiceWorkerDatabase(base::FilePath());
53 } 53 }
54 54
55 void VerifyRegistrationData(const RegistrationData& expected, 55 void VerifyRegistrationData(const RegistrationData& expected,
56 const RegistrationData& actual) { 56 const RegistrationData& actual) {
57 EXPECT_EQ(expected.registration_id, actual.registration_id); 57 EXPECT_EQ(expected.registration_id, actual.registration_id);
58 EXPECT_EQ(expected.scope, actual.scope); 58 EXPECT_EQ(expected.scope, actual.scope);
59 EXPECT_EQ(expected.script, actual.script); 59 EXPECT_EQ(expected.script, actual.script);
60 EXPECT_EQ(expected.version_id, actual.version_id); 60 EXPECT_EQ(expected.version_uuid, actual.version_uuid);
61 EXPECT_EQ(expected.is_active, actual.is_active); 61 EXPECT_EQ(expected.is_active, actual.is_active);
62 EXPECT_EQ(expected.has_fetch_handler, actual.has_fetch_handler); 62 EXPECT_EQ(expected.has_fetch_handler, actual.has_fetch_handler);
63 EXPECT_EQ(expected.last_update_check, actual.last_update_check); 63 EXPECT_EQ(expected.last_update_check, actual.last_update_check);
64 EXPECT_EQ(expected.resources_total_size_bytes, 64 EXPECT_EQ(expected.resources_total_size_bytes,
65 actual.resources_total_size_bytes); 65 actual.resources_total_size_bytes);
66 } 66 }
67 67
68 void VerifyResourceRecords(const std::vector<Resource>& expected, 68 void VerifyResourceRecords(const std::vector<Resource>& expected,
69 const std::vector<Resource>& actual) { 69 const std::vector<Resource>& actual) {
70 ASSERT_EQ(expected.size(), actual.size()); 70 ASSERT_EQ(expected.size(), actual.size());
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 156
157 // Simulate an existing database created before diskcache migration. 157 // Simulate an existing database created before diskcache migration.
158 database->set_skip_writing_diskcache_migration_state_on_init_for_testing(); 158 database->set_skip_writing_diskcache_migration_state_on_init_for_testing();
159 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; 159 std::vector<ServiceWorkerDatabase::ResourceRecord> resources;
160 ServiceWorkerDatabase::RegistrationData deleted_version; 160 ServiceWorkerDatabase::RegistrationData deleted_version;
161 std::vector<int64> newly_purgeable_resources; 161 std::vector<int64> newly_purgeable_resources;
162 ServiceWorkerDatabase::RegistrationData data; 162 ServiceWorkerDatabase::RegistrationData data;
163 data.registration_id = 100; 163 data.registration_id = 100;
164 data.scope = URL(origin, "/foo"); 164 data.scope = URL(origin, "/foo");
165 data.script = URL(origin, "/script.js"); 165 data.script = URL(origin, "/script.js");
166 data.version_id = 200; 166 data.version_uuid = "1b304e16-1464-4a75-855a-4e4e62baac81";
167 data.resources_total_size_bytes = 300; 167 data.resources_total_size_bytes = 300;
168 resources.push_back(CreateResource(1, data.script, 300)); 168 resources.push_back(CreateResource(1, data.script, 300));
169 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 169 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
170 database->WriteRegistration(data, resources, &deleted_version, 170 database->WriteRegistration(data, resources, &deleted_version,
171 &newly_purgeable_resources)); 171 &newly_purgeable_resources));
172 migration_needed = false; 172 migration_needed = false;
173 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 173 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
174 database->IsDiskCacheMigrationNeeded(&migration_needed)); 174 database->IsDiskCacheMigrationNeeded(&migration_needed));
175 ASSERT_TRUE(migration_needed); 175 ASSERT_TRUE(migration_needed);
176 deletion_needed = false; 176 deletion_needed = false;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 GURL origin("http://example.com"); 215 GURL origin("http://example.com");
216 216
217 // Add a registration to the database. 217 // Add a registration to the database.
218 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; 218 std::vector<ServiceWorkerDatabase::ResourceRecord> resources;
219 ServiceWorkerDatabase::RegistrationData deleted_version; 219 ServiceWorkerDatabase::RegistrationData deleted_version;
220 std::vector<int64> newly_purgeable_resources; 220 std::vector<int64> newly_purgeable_resources;
221 ServiceWorkerDatabase::RegistrationData data; 221 ServiceWorkerDatabase::RegistrationData data;
222 data.registration_id = 100; 222 data.registration_id = 100;
223 data.scope = URL(origin, "/foo"); 223 data.scope = URL(origin, "/foo");
224 data.script = URL(origin, "/script1.js"); 224 data.script = URL(origin, "/script1.js");
225 data.version_id = 200; 225 data.version_uuid = "1b304e16-1464-4a75-855a-4e4e62baac81";
226 data.resources_total_size_bytes = 300; 226 data.resources_total_size_bytes = 300;
227 resources.push_back(CreateResource(1, data.script, 300)); 227 resources.push_back(CreateResource(1, data.script, 300));
228 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 228 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
229 database->WriteRegistration(data, resources, &deleted_version, 229 database->WriteRegistration(data, resources, &deleted_version,
230 &newly_purgeable_resources)); 230 &newly_purgeable_resources));
231 231
232 // Sanity check on current version. 232 // Sanity check on current version.
233 int64 db_version = -1; 233 int64 db_version = -1;
234 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 234 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
235 database->ReadDatabaseVersion(&db_version)); 235 database->ReadDatabaseVersion(&db_version));
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) { 267 TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) {
268 base::ScopedTempDir database_dir; 268 base::ScopedTempDir database_dir;
269 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); 269 ASSERT_TRUE(database_dir.CreateUniqueTempDir());
270 scoped_ptr<ServiceWorkerDatabase> database( 270 scoped_ptr<ServiceWorkerDatabase> database(
271 CreateDatabase(database_dir.path())); 271 CreateDatabase(database_dir.path()));
272 272
273 GURL origin("http://example.com"); 273 GURL origin("http://example.com");
274 274
275 // The database has never been used, so returns initial values. 275 // The database has never been used, so returns initial values.
276 AvailableIds ids; 276 AvailableIds ids;
277 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( 277 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
278 &ids.reg_id, &ids.ver_id, &ids.res_id)); 278 database->GetNextAvailableIds(&ids.reg_id, &ids.res_id));
279 EXPECT_EQ(0, ids.reg_id); 279 EXPECT_EQ(0, ids.reg_id);
280 EXPECT_EQ(0, ids.ver_id);
281 EXPECT_EQ(0, ids.res_id); 280 EXPECT_EQ(0, ids.res_id);
282 281
283 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); 282 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true));
284 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( 283 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
285 &ids.reg_id, &ids.ver_id, &ids.res_id)); 284 database->GetNextAvailableIds(&ids.reg_id, &ids.res_id));
286 EXPECT_EQ(0, ids.reg_id); 285 EXPECT_EQ(0, ids.reg_id);
287 EXPECT_EQ(0, ids.ver_id);
288 EXPECT_EQ(0, ids.res_id); 286 EXPECT_EQ(0, ids.res_id);
289 287
290 // Writing a registration bumps the next available ids. 288 // Writing a registration bumps the next available ids.
291 std::vector<Resource> resources1; 289 std::vector<Resource> resources1;
292 RegistrationData data1; 290 RegistrationData data1;
293 ServiceWorkerDatabase::RegistrationData deleted_version; 291 ServiceWorkerDatabase::RegistrationData deleted_version;
294 std::vector<int64> newly_purgeable_resources; 292 std::vector<int64> newly_purgeable_resources;
295 data1.registration_id = 100; 293 data1.registration_id = 100;
296 data1.scope = URL(origin, "/foo"); 294 data1.scope = URL(origin, "/foo");
297 data1.script = URL(origin, "/script1.js"); 295 data1.script = URL(origin, "/script1.js");
298 data1.version_id = 200; 296 data1.version_uuid = "1b304e16-1464-4a75-855a-4e4e62baac81";
299 data1.resources_total_size_bytes = 300; 297 data1.resources_total_size_bytes = 300;
300 resources1.push_back(CreateResource(1, data1.script, 300)); 298 resources1.push_back(CreateResource(1, data1.script, 300));
301 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 299 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
302 database->WriteRegistration(data1, resources1, &deleted_version, 300 database->WriteRegistration(data1, resources1, &deleted_version,
303 &newly_purgeable_resources)); 301 &newly_purgeable_resources));
304 302
305 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( 303 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
306 &ids.reg_id, &ids.ver_id, &ids.res_id)); 304 database->GetNextAvailableIds(&ids.reg_id, &ids.res_id));
307 EXPECT_EQ(101, ids.reg_id); 305 EXPECT_EQ(101, ids.reg_id);
308 EXPECT_EQ(201, ids.ver_id);
309 EXPECT_EQ(0, ids.res_id); 306 EXPECT_EQ(0, ids.res_id);
310 307
311 // Writing uncommitted resources bumps the next available id. 308 // Writing uncommitted resources bumps the next available id.
312 const int64 kUncommittedIds[] = {0, 1, 3, 5, 6, 10}; 309 const int64 kUncommittedIds[] = {0, 1, 3, 5, 6, 10};
313 EXPECT_EQ( 310 EXPECT_EQ(
314 ServiceWorkerDatabase::STATUS_OK, 311 ServiceWorkerDatabase::STATUS_OK,
315 database->WriteUncommittedResourceIds(std::set<int64>( 312 database->WriteUncommittedResourceIds(std::set<int64>(
316 kUncommittedIds, kUncommittedIds + arraysize(kUncommittedIds)))); 313 kUncommittedIds, kUncommittedIds + arraysize(kUncommittedIds))));
317 EXPECT_EQ( 314 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
318 ServiceWorkerDatabase::STATUS_OK, 315 database->GetNextAvailableIds(&ids.reg_id, &ids.res_id));
319 database->GetNextAvailableIds(&ids.reg_id, &ids.ver_id, &ids.res_id));
320 EXPECT_EQ(101, ids.reg_id); 316 EXPECT_EQ(101, ids.reg_id);
321 EXPECT_EQ(201, ids.ver_id);
322 EXPECT_EQ(11, ids.res_id); 317 EXPECT_EQ(11, ids.res_id);
323 318
324 // Writing purgeable resources bumps the next available id. 319 // Writing purgeable resources bumps the next available id.
325 const int64 kPurgeableIds[] = {4, 12, 16, 17, 20}; 320 const int64 kPurgeableIds[] = {4, 12, 16, 17, 20};
326 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 321 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
327 database->WriteUncommittedResourceIds(std::set<int64>( 322 database->WriteUncommittedResourceIds(std::set<int64>(
328 kPurgeableIds, kPurgeableIds + arraysize(kPurgeableIds)))); 323 kPurgeableIds, kPurgeableIds + arraysize(kPurgeableIds))));
329 EXPECT_EQ( 324 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
330 ServiceWorkerDatabase::STATUS_OK, 325 database->GetNextAvailableIds(&ids.reg_id, &ids.res_id));
331 database->GetNextAvailableIds(&ids.reg_id, &ids.ver_id, &ids.res_id));
332 EXPECT_EQ(101, ids.reg_id); 326 EXPECT_EQ(101, ids.reg_id);
333 EXPECT_EQ(201, ids.ver_id);
334 EXPECT_EQ(21, ids.res_id); 327 EXPECT_EQ(21, ids.res_id);
335 328
336 // Writing a registration whose ids are lower than the stored ones should not 329 // Writing a registration whose ids are lower than the stored ones should not
337 // bump the next available ids. 330 // bump the next available ids.
338 RegistrationData data2; 331 RegistrationData data2;
339 data2.registration_id = 10; 332 data2.registration_id = 10;
340 data2.scope = URL(origin, "/bar"); 333 data2.scope = URL(origin, "/bar");
341 data2.script = URL(origin, "/script2.js"); 334 data2.script = URL(origin, "/script2.js");
342 data2.version_id = 20; 335 data2.version_uuid = "a616c852-7fc0-46c4-9f6e-0f6f2cb4aa4c";
343 data2.resources_total_size_bytes = 400; 336 data2.resources_total_size_bytes = 400;
344 std::vector<Resource> resources2; 337 std::vector<Resource> resources2;
345 resources2.push_back(CreateResource(2, data2.script, 400)); 338 resources2.push_back(CreateResource(2, data2.script, 400));
346 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 339 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
347 database->WriteRegistration(data2, resources2, &deleted_version, 340 database->WriteRegistration(data2, resources2, &deleted_version,
348 &newly_purgeable_resources)); 341 &newly_purgeable_resources));
349 342
350 // Same with resources. 343 // Same with resources.
351 int64 kLowResourceId = 15; 344 int64 kLowResourceId = 15;
352 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 345 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
353 database->WriteUncommittedResourceIds( 346 database->WriteUncommittedResourceIds(
354 std::set<int64>(&kLowResourceId, &kLowResourceId + 1))); 347 std::set<int64>(&kLowResourceId, &kLowResourceId + 1)));
355 348
356 // Close and reopen the database to verify the stored values. 349 // Close and reopen the database to verify the stored values.
357 database.reset(CreateDatabase(database_dir.path())); 350 database.reset(CreateDatabase(database_dir.path()));
358 351
359 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( 352 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
360 &ids.reg_id, &ids.ver_id, &ids.res_id)); 353 database->GetNextAvailableIds(&ids.reg_id, &ids.res_id));
361 EXPECT_EQ(101, ids.reg_id); 354 EXPECT_EQ(101, ids.reg_id);
362 EXPECT_EQ(201, ids.ver_id);
363 EXPECT_EQ(21, ids.res_id); 355 EXPECT_EQ(21, ids.res_id);
364 } 356 }
365 357
366 TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) { 358 TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
367 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 359 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
368 360
369 std::set<GURL> origins; 361 std::set<GURL> origins;
370 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 362 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
371 database->GetOriginsWithRegistrations(&origins)); 363 database->GetOriginsWithRegistrations(&origins));
372 EXPECT_TRUE(origins.empty()); 364 EXPECT_TRUE(origins.empty());
373 365
374 ServiceWorkerDatabase::RegistrationData deleted_version; 366 ServiceWorkerDatabase::RegistrationData deleted_version;
375 std::vector<int64> newly_purgeable_resources; 367 std::vector<int64> newly_purgeable_resources;
376 368
377 GURL origin1("http://example.com"); 369 GURL origin1("http://example.com");
378 RegistrationData data1; 370 RegistrationData data1;
379 data1.registration_id = 123; 371 data1.registration_id = 123;
380 data1.scope = URL(origin1, "/foo"); 372 data1.scope = URL(origin1, "/foo");
381 data1.script = URL(origin1, "/script1.js"); 373 data1.script = URL(origin1, "/script1.js");
382 data1.version_id = 456; 374 data1.version_uuid = "0ab2638a-2005-411e-aa89-76e14892b618";
383 data1.resources_total_size_bytes = 100; 375 data1.resources_total_size_bytes = 100;
384 std::vector<Resource> resources1; 376 std::vector<Resource> resources1;
385 resources1.push_back(CreateResource(1, data1.script, 100)); 377 resources1.push_back(CreateResource(1, data1.script, 100));
386 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 378 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
387 database->WriteRegistration(data1, resources1, &deleted_version, 379 database->WriteRegistration(data1, resources1, &deleted_version,
388 &newly_purgeable_resources)); 380 &newly_purgeable_resources));
389 381
390 GURL origin2("https://www.example.com"); 382 GURL origin2("https://www.example.com");
391 RegistrationData data2; 383 RegistrationData data2;
392 data2.registration_id = 234; 384 data2.registration_id = 234;
393 data2.scope = URL(origin2, "/bar"); 385 data2.scope = URL(origin2, "/bar");
394 data2.script = URL(origin2, "/script2.js"); 386 data2.script = URL(origin2, "/script2.js");
395 data2.version_id = 567; 387 data2.version_uuid = "0acb271b-b4eb-4323-b049-6db3d1571c43";
396 data2.resources_total_size_bytes = 200; 388 data2.resources_total_size_bytes = 200;
397 std::vector<Resource> resources2; 389 std::vector<Resource> resources2;
398 resources2.push_back(CreateResource(2, data2.script, 200)); 390 resources2.push_back(CreateResource(2, data2.script, 200));
399 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 391 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
400 database->WriteRegistration(data2, resources2, &deleted_version, 392 database->WriteRegistration(data2, resources2, &deleted_version,
401 &newly_purgeable_resources)); 393 &newly_purgeable_resources));
402 394
403 GURL origin3("https://example.org"); 395 GURL origin3("https://example.org");
404 RegistrationData data3; 396 RegistrationData data3;
405 data3.registration_id = 345; 397 data3.registration_id = 345;
406 data3.scope = URL(origin3, "/hoge"); 398 data3.scope = URL(origin3, "/hoge");
407 data3.script = URL(origin3, "/script3.js"); 399 data3.script = URL(origin3, "/script3.js");
408 data3.version_id = 678; 400 data3.version_uuid = "de8cc4f5-3f3b-4f60-b4f5-d4ddc1cb5e69";
409 data3.resources_total_size_bytes = 300; 401 data3.resources_total_size_bytes = 300;
410 std::vector<Resource> resources3; 402 std::vector<Resource> resources3;
411 resources3.push_back(CreateResource(3, data3.script, 300)); 403 resources3.push_back(CreateResource(3, data3.script, 300));
412 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 404 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
413 database->WriteRegistration(data3, resources3, &deleted_version, 405 database->WriteRegistration(data3, resources3, &deleted_version,
414 &newly_purgeable_resources)); 406 &newly_purgeable_resources));
415 407
416 // |origin3| has two registrations. 408 // |origin3| has two registrations.
417 RegistrationData data4; 409 RegistrationData data4;
418 data4.registration_id = 456; 410 data4.registration_id = 456;
419 data4.scope = URL(origin3, "/fuga"); 411 data4.scope = URL(origin3, "/fuga");
420 data4.script = URL(origin3, "/script4.js"); 412 data4.script = URL(origin3, "/script4.js");
421 data4.version_id = 789; 413 data4.version_uuid = "fe7fcca9-904b-4e45-85e2-2414c4424f18";
422 data4.resources_total_size_bytes = 400; 414 data4.resources_total_size_bytes = 400;
423 std::vector<Resource> resources4; 415 std::vector<Resource> resources4;
424 resources4.push_back(CreateResource(4, data4.script, 400)); 416 resources4.push_back(CreateResource(4, data4.script, 400));
425 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 417 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
426 database->WriteRegistration(data4, resources4, &deleted_version, 418 database->WriteRegistration(data4, resources4, &deleted_version,
427 &newly_purgeable_resources)); 419 &newly_purgeable_resources));
428 420
429 origins.clear(); 421 origins.clear();
430 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 422 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
431 database->GetOriginsWithRegistrations(&origins)); 423 database->GetOriginsWithRegistrations(&origins));
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 EXPECT_TRUE(registrations.empty()); 474 EXPECT_TRUE(registrations.empty());
483 EXPECT_TRUE(resources_list.empty()); 475 EXPECT_TRUE(resources_list.empty());
484 476
485 ServiceWorkerDatabase::RegistrationData deleted_version; 477 ServiceWorkerDatabase::RegistrationData deleted_version;
486 std::vector<int64> newly_purgeable_resources; 478 std::vector<int64> newly_purgeable_resources;
487 479
488 RegistrationData data1; 480 RegistrationData data1;
489 data1.registration_id = 100; 481 data1.registration_id = 100;
490 data1.scope = URL(origin1, "/foo"); 482 data1.scope = URL(origin1, "/foo");
491 data1.script = URL(origin1, "/script1.js"); 483 data1.script = URL(origin1, "/script1.js");
492 data1.version_id = 1000; 484 data1.version_uuid = "5e837d34-3ad6-4043-bcea-41bc02ec203e";
493 data1.resources_total_size_bytes = 100; 485 data1.resources_total_size_bytes = 100;
494 std::vector<Resource> resources1; 486 std::vector<Resource> resources1;
495 resources1.push_back(CreateResource(1, data1.script, 100)); 487 resources1.push_back(CreateResource(1, data1.script, 100));
496 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 488 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
497 database->WriteRegistration(data1, resources1, &deleted_version, 489 database->WriteRegistration(data1, resources1, &deleted_version,
498 &newly_purgeable_resources)); 490 &newly_purgeable_resources));
499 491
500 registrations.clear(); 492 registrations.clear();
501 resources_list.clear(); 493 resources_list.clear();
502 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 494 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
503 database->GetRegistrationsForOrigin(origin1, &registrations, 495 database->GetRegistrationsForOrigin(origin1, &registrations,
504 &resources_list)); 496 &resources_list));
505 EXPECT_EQ(1U, registrations.size()); 497 EXPECT_EQ(1U, registrations.size());
506 VerifyRegistrationData(data1, registrations[0]); 498 VerifyRegistrationData(data1, registrations[0]);
507 EXPECT_EQ(1U, resources_list.size()); 499 EXPECT_EQ(1U, resources_list.size());
508 VerifyResourceRecords(resources1, resources_list[0]); 500 VerifyResourceRecords(resources1, resources_list[0]);
509 501
510 RegistrationData data2; 502 RegistrationData data2;
511 data2.registration_id = 200; 503 data2.registration_id = 200;
512 data2.scope = URL(origin2, "/bar"); 504 data2.scope = URL(origin2, "/bar");
513 data2.script = URL(origin2, "/script2.js"); 505 data2.script = URL(origin2, "/script2.js");
514 data2.version_id = 2000; 506 data2.version_uuid = "9bb6c620-8ea3-4b17-9654-e0346a8fc2ce";
515 data2.resources_total_size_bytes = 200; 507 data2.resources_total_size_bytes = 200;
516 std::vector<Resource> resources2; 508 std::vector<Resource> resources2;
517 resources2.push_back(CreateResource(2, data2.script, 200)); 509 resources2.push_back(CreateResource(2, data2.script, 200));
518 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 510 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
519 database->WriteRegistration(data2, resources2, &deleted_version, 511 database->WriteRegistration(data2, resources2, &deleted_version,
520 &newly_purgeable_resources)); 512 &newly_purgeable_resources));
521 513
522 registrations.clear(); 514 registrations.clear();
523 resources_list.clear(); 515 resources_list.clear();
524 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 516 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
525 database->GetRegistrationsForOrigin(origin2, &registrations, 517 database->GetRegistrationsForOrigin(origin2, &registrations,
526 &resources_list)); 518 &resources_list));
527 EXPECT_EQ(1U, registrations.size()); 519 EXPECT_EQ(1U, registrations.size());
528 VerifyRegistrationData(data2, registrations[0]); 520 VerifyRegistrationData(data2, registrations[0]);
529 EXPECT_EQ(1U, resources_list.size()); 521 EXPECT_EQ(1U, resources_list.size());
530 VerifyResourceRecords(resources2, resources_list[0]); 522 VerifyResourceRecords(resources2, resources_list[0]);
531 523
532 RegistrationData data3; 524 RegistrationData data3;
533 data3.registration_id = 300; 525 data3.registration_id = 300;
534 data3.scope = URL(origin3, "/hoge"); 526 data3.scope = URL(origin3, "/hoge");
535 data3.script = URL(origin3, "/script3.js"); 527 data3.script = URL(origin3, "/script3.js");
536 data3.version_id = 3000; 528 data3.version_uuid = "afa0e540-8432-491e-af58-9461850477dd";
537 data3.resources_total_size_bytes = 300; 529 data3.resources_total_size_bytes = 300;
538 std::vector<Resource> resources3; 530 std::vector<Resource> resources3;
539 resources3.push_back(CreateResource(3, data3.script, 300)); 531 resources3.push_back(CreateResource(3, data3.script, 300));
540 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 532 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
541 database->WriteRegistration(data3, resources3, &deleted_version, 533 database->WriteRegistration(data3, resources3, &deleted_version,
542 &newly_purgeable_resources)); 534 &newly_purgeable_resources));
543 535
544 // |origin3| has two registrations. 536 // |origin3| has two registrations.
545 RegistrationData data4; 537 RegistrationData data4;
546 data4.registration_id = 400; 538 data4.registration_id = 400;
547 data4.scope = URL(origin3, "/fuga"); 539 data4.scope = URL(origin3, "/fuga");
548 data4.script = URL(origin3, "/script4.js"); 540 data4.script = URL(origin3, "/script4.js");
549 data4.version_id = 4000; 541 data4.version_uuid = "142b546d-5b7c-4932-89b9-efca171bd28f";
550 data4.resources_total_size_bytes = 400; 542 data4.resources_total_size_bytes = 400;
551 std::vector<Resource> resources4; 543 std::vector<Resource> resources4;
552 resources4.push_back(CreateResource(4, data4.script, 400)); 544 resources4.push_back(CreateResource(4, data4.script, 400));
553 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 545 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
554 database->WriteRegistration(data4, resources4, &deleted_version, 546 database->WriteRegistration(data4, resources4, &deleted_version,
555 &newly_purgeable_resources)); 547 &newly_purgeable_resources));
556 548
557 registrations.clear(); 549 registrations.clear();
558 resources_list.clear(); 550 resources_list.clear();
559 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 551 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
(...skipping 25 matching lines...) Expand all
585 EXPECT_TRUE(registrations.empty()); 577 EXPECT_TRUE(registrations.empty());
586 578
587 ServiceWorkerDatabase::RegistrationData deleted_version; 579 ServiceWorkerDatabase::RegistrationData deleted_version;
588 std::vector<int64> newly_purgeable_resources; 580 std::vector<int64> newly_purgeable_resources;
589 581
590 GURL origin1("http://www1.example.com"); 582 GURL origin1("http://www1.example.com");
591 RegistrationData data1; 583 RegistrationData data1;
592 data1.registration_id = 100; 584 data1.registration_id = 100;
593 data1.scope = URL(origin1, "/foo"); 585 data1.scope = URL(origin1, "/foo");
594 data1.script = URL(origin1, "/script1.js"); 586 data1.script = URL(origin1, "/script1.js");
595 data1.version_id = 1000; 587 data1.version_uuid = "5e837d34-3ad6-4043-bcea-41bc02ec203e";
596 data1.resources_total_size_bytes = 100; 588 data1.resources_total_size_bytes = 100;
597 std::vector<Resource> resources1; 589 std::vector<Resource> resources1;
598 resources1.push_back(CreateResource(1, data1.script, 100)); 590 resources1.push_back(CreateResource(1, data1.script, 100));
599 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 591 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
600 database->WriteRegistration(data1, resources1, &deleted_version, 592 database->WriteRegistration(data1, resources1, &deleted_version,
601 &newly_purgeable_resources)); 593 &newly_purgeable_resources));
602 594
603 GURL origin2("http://www2.example.com"); 595 GURL origin2("http://www2.example.com");
604 RegistrationData data2; 596 RegistrationData data2;
605 data2.registration_id = 200; 597 data2.registration_id = 200;
606 data2.scope = URL(origin2, "/bar"); 598 data2.scope = URL(origin2, "/bar");
607 data2.script = URL(origin2, "/script2.js"); 599 data2.script = URL(origin2, "/script2.js");
608 data2.version_id = 2000; 600 data2.version_uuid = "9bb6c620-8ea3-4b17-9654-e0346a8fc2ce";
609 data2.resources_total_size_bytes = 200; 601 data2.resources_total_size_bytes = 200;
610 std::vector<Resource> resources2; 602 std::vector<Resource> resources2;
611 resources2.push_back(CreateResource(2, data2.script, 200)); 603 resources2.push_back(CreateResource(2, data2.script, 200));
612 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 604 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
613 database->WriteRegistration(data2, resources2, &deleted_version, 605 database->WriteRegistration(data2, resources2, &deleted_version,
614 &newly_purgeable_resources)); 606 &newly_purgeable_resources));
615 607
616 GURL origin3("http://www3.example.com"); 608 GURL origin3("http://www3.example.com");
617 RegistrationData data3; 609 RegistrationData data3;
618 data3.registration_id = 300; 610 data3.registration_id = 300;
619 data3.scope = URL(origin3, "/hoge"); 611 data3.scope = URL(origin3, "/hoge");
620 data3.script = URL(origin3, "/script3.js"); 612 data3.script = URL(origin3, "/script3.js");
621 data3.version_id = 3000; 613 data3.version_uuid = "afa0e540-8432-491e-af58-9461850477dd";
622 data3.resources_total_size_bytes = 300; 614 data3.resources_total_size_bytes = 300;
623 std::vector<Resource> resources3; 615 std::vector<Resource> resources3;
624 resources3.push_back(CreateResource(3, data3.script, 300)); 616 resources3.push_back(CreateResource(3, data3.script, 300));
625 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 617 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
626 database->WriteRegistration(data3, resources3, &deleted_version, 618 database->WriteRegistration(data3, resources3, &deleted_version,
627 &newly_purgeable_resources)); 619 &newly_purgeable_resources));
628 620
629 // |origin3| has two registrations. 621 // |origin3| has two registrations.
630 RegistrationData data4; 622 RegistrationData data4;
631 data4.registration_id = 400; 623 data4.registration_id = 400;
632 data4.scope = URL(origin3, "/fuga"); 624 data4.scope = URL(origin3, "/fuga");
633 data4.script = URL(origin3, "/script4.js"); 625 data4.script = URL(origin3, "/script4.js");
634 data4.version_id = 4000; 626 data4.version_uuid = "142b546d-5b7c-4932-89b9-efca171bd28f";
635 data4.resources_total_size_bytes = 400; 627 data4.resources_total_size_bytes = 400;
636 std::vector<Resource> resources4; 628 std::vector<Resource> resources4;
637 resources4.push_back(CreateResource(4, data4.script, 400)); 629 resources4.push_back(CreateResource(4, data4.script, 400));
638 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 630 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
639 database->WriteRegistration(data4, resources4, &deleted_version, 631 database->WriteRegistration(data4, resources4, &deleted_version,
640 &newly_purgeable_resources)); 632 &newly_purgeable_resources));
641 633
642 registrations.clear(); 634 registrations.clear();
643 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 635 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
644 database->GetAllRegistrations(&registrations)); 636 database->GetAllRegistrations(&registrations));
645 EXPECT_EQ(4U, registrations.size()); 637 EXPECT_EQ(4U, registrations.size());
646 VerifyRegistrationData(data1, registrations[0]); 638 VerifyRegistrationData(data1, registrations[0]);
647 VerifyRegistrationData(data2, registrations[1]); 639 VerifyRegistrationData(data2, registrations[1]);
648 VerifyRegistrationData(data3, registrations[2]); 640 VerifyRegistrationData(data3, registrations[2]);
649 VerifyRegistrationData(data4, registrations[3]); 641 VerifyRegistrationData(data4, registrations[3]);
650 } 642 }
651 643
652 TEST(ServiceWorkerDatabaseTest, Registration_Basic) { 644 TEST(ServiceWorkerDatabaseTest, Registration_Basic) {
653 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 645 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
654 646
655 GURL origin("http://example.com"); 647 GURL origin("http://example.com");
656 RegistrationData data; 648 RegistrationData data;
657 data.registration_id = 100; 649 data.registration_id = 100;
658 data.scope = URL(origin, "/foo"); 650 data.scope = URL(origin, "/foo");
659 data.script = URL(origin, "/script.js"); 651 data.script = URL(origin, "/script.js");
660 data.version_id = 200; 652 data.version_uuid = "663f73e1-37d6-4ec9-a809-01afdcb1634d";
661 data.resources_total_size_bytes = 10939 + 200; 653 data.resources_total_size_bytes = 10939 + 200;
662 654
663 std::vector<Resource> resources; 655 std::vector<Resource> resources;
664 resources.push_back(CreateResource(1, URL(origin, "/resource1"), 10939)); 656 resources.push_back(CreateResource(1, URL(origin, "/resource1"), 10939));
665 resources.push_back(CreateResource(2, URL(origin, "/resource2"), 200)); 657 resources.push_back(CreateResource(2, URL(origin, "/resource2"), 200));
666 658
667 // Write a resource to the uncommitted list to make sure that writing 659 // Write a resource to the uncommitted list to make sure that writing
668 // registration removes resource ids associated with the registration from 660 // registration removes resource ids associated with the registration from
669 // the uncommitted list. 661 // the uncommitted list.
670 std::set<int64> uncommitted_ids; 662 std::set<int64> uncommitted_ids;
671 uncommitted_ids.insert(resources[0].resource_id); 663 uncommitted_ids.insert(resources[0].resource_id);
672 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 664 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
673 database->WriteUncommittedResourceIds(uncommitted_ids)); 665 database->WriteUncommittedResourceIds(uncommitted_ids));
674 std::set<int64> uncommitted_ids_out; 666 std::set<int64> uncommitted_ids_out;
675 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 667 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
676 database->GetUncommittedResourceIds(&uncommitted_ids_out)); 668 database->GetUncommittedResourceIds(&uncommitted_ids_out));
677 EXPECT_EQ(uncommitted_ids, uncommitted_ids_out); 669 EXPECT_EQ(uncommitted_ids, uncommitted_ids_out);
678 670
679 ServiceWorkerDatabase::RegistrationData deleted_version; 671 ServiceWorkerDatabase::RegistrationData deleted_version;
680 deleted_version.version_id = 222; // Dummy initial value 672 deleted_version.version_uuid =
673 "0185fb13-bb72-42ad-8cdc-cbaabf794dc6"; // Dummy initial value
681 std::vector<int64> newly_purgeable_resources; 674 std::vector<int64> newly_purgeable_resources;
682 675
683 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 676 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
684 database->WriteRegistration( 677 database->WriteRegistration(
685 data, resources, &deleted_version, &newly_purgeable_resources)); 678 data, resources, &deleted_version, &newly_purgeable_resources));
686 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version.version_id); 679 EXPECT_TRUE(deleted_version.version_uuid.empty());
687 EXPECT_TRUE(newly_purgeable_resources.empty()); 680 EXPECT_TRUE(newly_purgeable_resources.empty());
688 681
689 // Make sure that the registration and resource records are stored. 682 // Make sure that the registration and resource records are stored.
690 RegistrationData data_out; 683 RegistrationData data_out;
691 std::vector<Resource> resources_out; 684 std::vector<Resource> resources_out;
692 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 685 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
693 database->ReadRegistration( 686 database->ReadRegistration(
694 data.registration_id, origin, &data_out, &resources_out)); 687 data.registration_id, origin, &data_out, &resources_out));
695 VerifyRegistrationData(data, data_out); 688 VerifyRegistrationData(data, data_out);
696 VerifyResourceRecords(resources, resources_out); 689 VerifyResourceRecords(resources, resources_out);
697 GURL origin_out; 690 GURL origin_out;
698 EXPECT_EQ( 691 EXPECT_EQ(
699 ServiceWorkerDatabase::STATUS_OK, 692 ServiceWorkerDatabase::STATUS_OK,
700 database->ReadRegistrationOrigin(data.registration_id, &origin_out)); 693 database->ReadRegistrationOrigin(data.registration_id, &origin_out));
701 EXPECT_EQ(origin, origin_out); 694 EXPECT_EQ(origin, origin_out);
702 695
703 // Make sure that the resource is removed from the uncommitted list. 696 // Make sure that the resource is removed from the uncommitted list.
704 uncommitted_ids_out.clear(); 697 uncommitted_ids_out.clear();
705 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 698 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
706 database->GetUncommittedResourceIds(&uncommitted_ids_out)); 699 database->GetUncommittedResourceIds(&uncommitted_ids_out));
707 EXPECT_TRUE(uncommitted_ids_out.empty()); 700 EXPECT_TRUE(uncommitted_ids_out.empty());
708 701
709 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 702 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
710 database->DeleteRegistration(data.registration_id, 703 database->DeleteRegistration(data.registration_id,
711 origin, 704 origin,
712 &deleted_version, 705 &deleted_version,
713 &newly_purgeable_resources)); 706 &newly_purgeable_resources));
714 EXPECT_EQ(data.version_id, deleted_version.version_id); 707 EXPECT_EQ(data.version_uuid, deleted_version.version_uuid);
715 ASSERT_EQ(resources.size(), newly_purgeable_resources.size()); 708 ASSERT_EQ(resources.size(), newly_purgeable_resources.size());
716 for (size_t i = 0; i < resources.size(); ++i) 709 for (size_t i = 0; i < resources.size(); ++i)
717 EXPECT_EQ(newly_purgeable_resources[i], resources[i].resource_id); 710 EXPECT_EQ(newly_purgeable_resources[i], resources[i].resource_id);
718 711
719 // Make sure that the registration and resource records are gone. 712 // Make sure that the registration and resource records are gone.
720 resources_out.clear(); 713 resources_out.clear();
721 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 714 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
722 database->ReadRegistration( 715 database->ReadRegistration(
723 data.registration_id, origin, &data_out, &resources_out)); 716 data.registration_id, origin, &data_out, &resources_out));
724 EXPECT_TRUE(resources_out.empty()); 717 EXPECT_TRUE(resources_out.empty());
(...skipping 11 matching lines...) Expand all
736 } 729 }
737 730
738 TEST(ServiceWorkerDatabaseTest, DeleteNonExistentRegistration) { 731 TEST(ServiceWorkerDatabaseTest, DeleteNonExistentRegistration) {
739 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 732 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
740 733
741 GURL origin("http://example.com"); 734 GURL origin("http://example.com");
742 RegistrationData data; 735 RegistrationData data;
743 data.registration_id = 100; 736 data.registration_id = 100;
744 data.scope = URL(origin, "/foo"); 737 data.scope = URL(origin, "/foo");
745 data.script = URL(origin, "/script.js"); 738 data.script = URL(origin, "/script.js");
746 data.version_id = 200; 739 data.version_uuid = "c4684df5-39e2-4dde-ba61-793c17e61491";
747 data.resources_total_size_bytes = 19 + 29129; 740 data.resources_total_size_bytes = 19 + 29129;
748 741
749 std::vector<Resource> resources; 742 std::vector<Resource> resources;
750 resources.push_back(CreateResource(1, URL(origin, "/resource1"), 19)); 743 resources.push_back(CreateResource(1, URL(origin, "/resource1"), 19));
751 resources.push_back(CreateResource(2, URL(origin, "/resource2"), 29129)); 744 resources.push_back(CreateResource(2, URL(origin, "/resource2"), 29129));
752 745
753 const int64 kNonExistentRegistrationId = 999; 746 const int64 kNonExistentRegistrationId = 999;
754 const int64 kArbitraryVersionId = 222; // Used as a dummy initial value 747 const std::string kArbitraryVersionId =
748 "19682155-36a8-4a21-b8d0-9de545e645a6"; // Used as a dummy initial value
755 749
756 ServiceWorkerDatabase::RegistrationData deleted_version; 750 ServiceWorkerDatabase::RegistrationData deleted_version;
757 deleted_version.version_id = kArbitraryVersionId; 751 deleted_version.version_uuid = kArbitraryVersionId;
758 std::vector<int64> newly_purgeable_resources; 752 std::vector<int64> newly_purgeable_resources;
759 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 753 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
760 database->WriteRegistration( 754 database->WriteRegistration(
761 data, resources, &deleted_version, &newly_purgeable_resources)); 755 data, resources, &deleted_version, &newly_purgeable_resources));
762 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version.version_id); 756 EXPECT_TRUE(deleted_version.version_uuid.empty());
763 EXPECT_TRUE(newly_purgeable_resources.empty()); 757 EXPECT_TRUE(newly_purgeable_resources.empty());
764 758
765 // Delete from an origin that has a registration. 759 // Delete from an origin that has a registration.
766 deleted_version.version_id = kArbitraryVersionId; 760 deleted_version.version_uuid = kArbitraryVersionId;
767 newly_purgeable_resources.clear(); 761 newly_purgeable_resources.clear();
768 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 762 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
769 database->DeleteRegistration(kNonExistentRegistrationId, 763 database->DeleteRegistration(kNonExistentRegistrationId,
770 origin, 764 origin,
771 &deleted_version, 765 &deleted_version,
772 &newly_purgeable_resources)); 766 &newly_purgeable_resources));
773 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version.version_id); 767 EXPECT_TRUE(deleted_version.version_uuid.empty());
774 EXPECT_TRUE(newly_purgeable_resources.empty()); 768 EXPECT_TRUE(newly_purgeable_resources.empty());
775 769
776 // Delete from an origin that has no registration. 770 // Delete from an origin that has no registration.
777 deleted_version.version_id = kArbitraryVersionId; 771 deleted_version.version_uuid = kArbitraryVersionId;
778 newly_purgeable_resources.clear(); 772 newly_purgeable_resources.clear();
779 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 773 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
780 database->DeleteRegistration(kNonExistentRegistrationId, 774 database->DeleteRegistration(kNonExistentRegistrationId,
781 GURL("http://example.net"), 775 GURL("http://example.net"),
782 &deleted_version, 776 &deleted_version,
783 &newly_purgeable_resources)); 777 &newly_purgeable_resources));
784 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version.version_id); 778 EXPECT_TRUE(deleted_version.version_uuid.empty());
785 EXPECT_TRUE(newly_purgeable_resources.empty()); 779 EXPECT_TRUE(newly_purgeable_resources.empty());
786 } 780 }
787 781
788 TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) { 782 TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) {
789 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 783 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
790 784
791 GURL origin("http://example.com"); 785 GURL origin("http://example.com");
792 RegistrationData data; 786 RegistrationData data;
793 data.registration_id = 100; 787 data.registration_id = 100;
794 data.scope = URL(origin, "/foo"); 788 data.scope = URL(origin, "/foo");
795 data.script = URL(origin, "/script.js"); 789 data.script = URL(origin, "/script.js");
796 data.version_id = 200; 790 data.version_uuid = "b294411b-4a2c-4bf4-b072-6775a499bbd7";
797 data.resources_total_size_bytes = 10 + 11; 791 data.resources_total_size_bytes = 10 + 11;
798 792
799 std::vector<Resource> resources1; 793 std::vector<Resource> resources1;
800 resources1.push_back(CreateResource(1, URL(origin, "/resource1"), 10)); 794 resources1.push_back(CreateResource(1, URL(origin, "/resource1"), 10));
801 resources1.push_back(CreateResource(2, URL(origin, "/resource2"), 11)); 795 resources1.push_back(CreateResource(2, URL(origin, "/resource2"), 11));
802 796
803 ServiceWorkerDatabase::RegistrationData deleted_version; 797 ServiceWorkerDatabase::RegistrationData deleted_version;
804 deleted_version.version_id = 222; // Dummy inital value 798 deleted_version.version_uuid =
799 "904d263b-9872-49f2-bd33-147b98f6d1b8"; // Dummy inital value
805 std::vector<int64> newly_purgeable_resources; 800 std::vector<int64> newly_purgeable_resources;
806 801
807 EXPECT_EQ( 802 EXPECT_EQ(
808 ServiceWorkerDatabase::STATUS_OK, 803 ServiceWorkerDatabase::STATUS_OK,
809 database->WriteRegistration( 804 database->WriteRegistration(
810 data, resources1, &deleted_version, &newly_purgeable_resources)); 805 data, resources1, &deleted_version, &newly_purgeable_resources));
811 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version.version_id); 806 EXPECT_TRUE(deleted_version.version_uuid.empty());
812 EXPECT_TRUE(newly_purgeable_resources.empty()); 807 EXPECT_TRUE(newly_purgeable_resources.empty());
813 808
814 // Make sure that the registration and resource records are stored. 809 // Make sure that the registration and resource records are stored.
815 RegistrationData data_out; 810 RegistrationData data_out;
816 std::vector<Resource> resources_out; 811 std::vector<Resource> resources_out;
817 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( 812 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration(
818 data.registration_id, origin, &data_out, &resources_out)); 813 data.registration_id, origin, &data_out, &resources_out));
819 VerifyRegistrationData(data, data_out); 814 VerifyRegistrationData(data, data_out);
820 VerifyResourceRecords(resources1, resources_out); 815 VerifyResourceRecords(resources1, resources_out);
821 816
822 // Update the registration. 817 // Update the registration.
823 RegistrationData updated_data = data; 818 RegistrationData updated_data = data;
824 updated_data.version_id = data.version_id + 1; 819 updated_data.version_uuid =
820 "a504ba56-4f06-4c48-a904-474e25bca691"; // New version id
825 updated_data.resources_total_size_bytes = 12 + 13; 821 updated_data.resources_total_size_bytes = 12 + 13;
826 std::vector<Resource> resources2; 822 std::vector<Resource> resources2;
827 resources2.push_back(CreateResource(3, URL(origin, "/resource3"), 12)); 823 resources2.push_back(CreateResource(3, URL(origin, "/resource3"), 12));
828 resources2.push_back(CreateResource(4, URL(origin, "/resource4"), 13)); 824 resources2.push_back(CreateResource(4, URL(origin, "/resource4"), 13));
829 825
830 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 826 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
831 database->WriteRegistration(updated_data, 827 database->WriteRegistration(updated_data,
832 resources2, 828 resources2,
833 &deleted_version, 829 &deleted_version,
834 &newly_purgeable_resources)); 830 &newly_purgeable_resources));
835 EXPECT_EQ(data.version_id, deleted_version.version_id); 831 EXPECT_EQ(data.version_uuid, deleted_version.version_uuid);
836 ASSERT_EQ(resources1.size(), newly_purgeable_resources.size()); 832 ASSERT_EQ(resources1.size(), newly_purgeable_resources.size());
837 for (size_t i = 0; i < resources1.size(); ++i) 833 for (size_t i = 0; i < resources1.size(); ++i)
838 EXPECT_EQ(newly_purgeable_resources[i], resources1[i].resource_id); 834 EXPECT_EQ(newly_purgeable_resources[i], resources1[i].resource_id);
839 835
840 // Make sure that |updated_data| is stored and resources referred from |data| 836 // Make sure that |updated_data| is stored and resources referred from |data|
841 // is moved to the purgeable list. 837 // is moved to the purgeable list.
842 resources_out.clear(); 838 resources_out.clear();
843 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( 839 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration(
844 updated_data.registration_id, origin, &data_out, &resources_out)); 840 updated_data.registration_id, origin, &data_out, &resources_out));
845 VerifyRegistrationData(updated_data, data_out); 841 VerifyRegistrationData(updated_data, data_out);
(...skipping 12 matching lines...) Expand all
858 GURL origin("http://example.com"); 854 GURL origin("http://example.com");
859 855
860 ServiceWorkerDatabase::RegistrationData deleted_version; 856 ServiceWorkerDatabase::RegistrationData deleted_version;
861 std::vector<int64> newly_purgeable_resources; 857 std::vector<int64> newly_purgeable_resources;
862 858
863 // Add registration1. 859 // Add registration1.
864 RegistrationData data1; 860 RegistrationData data1;
865 data1.registration_id = 100; 861 data1.registration_id = 100;
866 data1.scope = URL(origin, "/foo"); 862 data1.scope = URL(origin, "/foo");
867 data1.script = URL(origin, "/script1.js"); 863 data1.script = URL(origin, "/script1.js");
868 data1.version_id = 200; 864 data1.version_uuid = "f731439c-d7ea-423d-91e4-9fc910f439f2";
869 data1.resources_total_size_bytes = 1451 + 15234; 865 data1.resources_total_size_bytes = 1451 + 15234;
870 866
871 std::vector<Resource> resources1; 867 std::vector<Resource> resources1;
872 resources1.push_back(CreateResource(1, URL(origin, "/resource1"), 1451)); 868 resources1.push_back(CreateResource(1, URL(origin, "/resource1"), 1451));
873 resources1.push_back(CreateResource(2, URL(origin, "/resource2"), 15234)); 869 resources1.push_back(CreateResource(2, URL(origin, "/resource2"), 15234));
874 EXPECT_EQ( 870 EXPECT_EQ(
875 ServiceWorkerDatabase::STATUS_OK, 871 ServiceWorkerDatabase::STATUS_OK,
876 database->WriteRegistration( 872 database->WriteRegistration(
877 data1, resources1, &deleted_version, &newly_purgeable_resources)); 873 data1, resources1, &deleted_version, &newly_purgeable_resources));
878 874
879 // Add registration2. 875 // Add registration2.
880 RegistrationData data2; 876 RegistrationData data2;
881 data2.registration_id = 101; 877 data2.registration_id = 101;
882 data2.scope = URL(origin, "/bar"); 878 data2.scope = URL(origin, "/bar");
883 data2.script = URL(origin, "/script2.js"); 879 data2.script = URL(origin, "/script2.js");
884 data2.version_id = 201; 880 data2.version_uuid = "3eba69fd-38f3-4807-a5ac-329d22d91357";
885 data2.resources_total_size_bytes = 5 + 6; 881 data2.resources_total_size_bytes = 5 + 6;
886 882
887 std::vector<Resource> resources2; 883 std::vector<Resource> resources2;
888 resources2.push_back(CreateResource(3, URL(origin, "/resource3"), 5)); 884 resources2.push_back(CreateResource(3, URL(origin, "/resource3"), 5));
889 resources2.push_back(CreateResource(4, URL(origin, "/resource4"), 6)); 885 resources2.push_back(CreateResource(4, URL(origin, "/resource4"), 6));
890 EXPECT_EQ( 886 EXPECT_EQ(
891 ServiceWorkerDatabase::STATUS_OK, 887 ServiceWorkerDatabase::STATUS_OK,
892 database->WriteRegistration( 888 database->WriteRegistration(
893 data2, resources2, &deleted_version, &newly_purgeable_resources)); 889 data2, resources2, &deleted_version, &newly_purgeable_resources));
894 890
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
973 GURL origin_out; 969 GURL origin_out;
974 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 970 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
975 database->ReadRegistrationOrigin(100, &origin_out)); 971 database->ReadRegistrationOrigin(100, &origin_out));
976 972
977 // Deleting non-existent registration should succeed. 973 // Deleting non-existent registration should succeed.
978 RegistrationData deleted_version; 974 RegistrationData deleted_version;
979 std::vector<int64> newly_purgeable_resources; 975 std::vector<int64> newly_purgeable_resources;
980 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 976 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
981 database->DeleteRegistration( 977 database->DeleteRegistration(
982 100, origin, &deleted_version, &newly_purgeable_resources)); 978 100, origin, &deleted_version, &newly_purgeable_resources));
983 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version.version_id); 979 EXPECT_TRUE(deleted_version.version_uuid.empty());
984 EXPECT_TRUE(newly_purgeable_resources.empty()); 980 EXPECT_TRUE(newly_purgeable_resources.empty());
985 981
986 // Actually create a new database, but not initialized yet. 982 // Actually create a new database, but not initialized yet.
987 database->LazyOpen(true); 983 database->LazyOpen(true);
988 984
989 // Should be failed because the database is not initialized. 985 // Should be failed because the database is not initialized.
990 ASSERT_EQ(ServiceWorkerDatabase::UNINITIALIZED, database->state_); 986 ASSERT_EQ(ServiceWorkerDatabase::UNINITIALIZED, database->state_);
991 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 987 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
992 database->ReadRegistration( 988 database->ReadRegistration(
993 100, origin, &data_out, &resources_out)); 989 100, origin, &data_out, &resources_out));
994 EXPECT_EQ(kInvalidServiceWorkerRegistrationId, data_out.registration_id); 990 EXPECT_EQ(kInvalidServiceWorkerRegistrationId, data_out.registration_id);
995 EXPECT_TRUE(resources_out.empty()); 991 EXPECT_TRUE(resources_out.empty());
996 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 992 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
997 database->ReadRegistrationOrigin(100, &origin_out)); 993 database->ReadRegistrationOrigin(100, &origin_out));
998 994
999 // Deleting non-existent registration should succeed. 995 // Deleting non-existent registration should succeed.
1000 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 996 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1001 database->DeleteRegistration( 997 database->DeleteRegistration(
1002 100, origin, &deleted_version, &newly_purgeable_resources)); 998 100, origin, &deleted_version, &newly_purgeable_resources));
1003 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version.version_id); 999 EXPECT_TRUE(deleted_version.version_uuid.empty());
1004 EXPECT_TRUE(newly_purgeable_resources.empty()); 1000 EXPECT_TRUE(newly_purgeable_resources.empty());
1005 } 1001 }
1006 1002
1007 TEST(ServiceWorkerDatabaseTest, UserData_Basic) { 1003 TEST(ServiceWorkerDatabaseTest, UserData_Basic) {
1008 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 1004 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
1009 const GURL kOrigin("http://example.com"); 1005 const GURL kOrigin("http://example.com");
1010 1006
1011 // Add a registration. 1007 // Add a registration.
1012 RegistrationData data; 1008 RegistrationData data;
1013 data.registration_id = 100; 1009 data.registration_id = 100;
1014 data.scope = URL(kOrigin, "/foo"); 1010 data.scope = URL(kOrigin, "/foo");
1015 data.script = URL(kOrigin, "/script.js"); 1011 data.script = URL(kOrigin, "/script.js");
1016 data.version_id = 200; 1012 data.version_uuid = "85cf6e28-8c50-4abd-9ef5-5f425b893010";
1017 data.resources_total_size_bytes = 100; 1013 data.resources_total_size_bytes = 100;
1018 std::vector<Resource> resources; 1014 std::vector<Resource> resources;
1019 resources.push_back(CreateResource(1, data.script, 100)); 1015 resources.push_back(CreateResource(1, data.script, 100));
1020 ServiceWorkerDatabase::RegistrationData deleted_version; 1016 ServiceWorkerDatabase::RegistrationData deleted_version;
1021 std::vector<int64> newly_purgeable_resources; 1017 std::vector<int64> newly_purgeable_resources;
1022 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1018 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1023 database->WriteRegistration( 1019 database->WriteRegistration(
1024 data, resources, &deleted_version, &newly_purgeable_resources)); 1020 data, resources, &deleted_version, &newly_purgeable_resources));
1025 1021
1026 // Write user data associated with the stored registration. 1022 // Write user data associated with the stored registration.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1074 1070
1075 TEST(ServiceWorkerDatabaseTest, UserData_DataIsolation) { 1071 TEST(ServiceWorkerDatabaseTest, UserData_DataIsolation) {
1076 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 1072 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
1077 const GURL kOrigin("http://example.com"); 1073 const GURL kOrigin("http://example.com");
1078 1074
1079 // Add registration 1. 1075 // Add registration 1.
1080 RegistrationData data1; 1076 RegistrationData data1;
1081 data1.registration_id = 100; 1077 data1.registration_id = 100;
1082 data1.scope = URL(kOrigin, "/foo"); 1078 data1.scope = URL(kOrigin, "/foo");
1083 data1.script = URL(kOrigin, "/script1.js"); 1079 data1.script = URL(kOrigin, "/script1.js");
1084 data1.version_id = 200; 1080 data1.version_uuid = "85cf6e28-8c50-4abd-9ef5-5f425b893010";
1085 data1.resources_total_size_bytes = 100; 1081 data1.resources_total_size_bytes = 100;
1086 std::vector<Resource> resources1; 1082 std::vector<Resource> resources1;
1087 resources1.push_back(CreateResource(1, data1.script, 100)); 1083 resources1.push_back(CreateResource(1, data1.script, 100));
1088 1084
1089 // Add registration 2. 1085 // Add registration 2.
1090 RegistrationData data2; 1086 RegistrationData data2;
1091 data2.registration_id = 101; 1087 data2.registration_id = 101;
1092 data2.scope = URL(kOrigin, "/bar"); 1088 data2.scope = URL(kOrigin, "/bar");
1093 data2.script = URL(kOrigin, "/script2.js"); 1089 data2.script = URL(kOrigin, "/script2.js");
1094 data2.version_id = 201; 1090 data2.version_uuid = "645ba1bc-bc64-4867-bfb8-71a909704254";
1095 data2.resources_total_size_bytes = 200; 1091 data2.resources_total_size_bytes = 200;
1096 std::vector<Resource> resources2; 1092 std::vector<Resource> resources2;
1097 resources2.push_back(CreateResource(2, data2.script, 200)); 1093 resources2.push_back(CreateResource(2, data2.script, 200));
1098 1094
1099 ServiceWorkerDatabase::RegistrationData deleted_version; 1095 ServiceWorkerDatabase::RegistrationData deleted_version;
1100 std::vector<int64> newly_purgeable_resources; 1096 std::vector<int64> newly_purgeable_resources;
1101 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1097 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1102 database->WriteRegistration(data1, resources1, &deleted_version, 1098 database->WriteRegistration(data1, resources1, &deleted_version,
1103 &newly_purgeable_resources)); 1099 &newly_purgeable_resources));
1104 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1100 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1165 1161
1166 TEST(ServiceWorkerDatabaseTest, UserData_DeleteRegistration) { 1162 TEST(ServiceWorkerDatabaseTest, UserData_DeleteRegistration) {
1167 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 1163 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
1168 const GURL kOrigin("http://example.com"); 1164 const GURL kOrigin("http://example.com");
1169 1165
1170 // Add registration 1. 1166 // Add registration 1.
1171 RegistrationData data1; 1167 RegistrationData data1;
1172 data1.registration_id = 100; 1168 data1.registration_id = 100;
1173 data1.scope = URL(kOrigin, "/foo"); 1169 data1.scope = URL(kOrigin, "/foo");
1174 data1.script = URL(kOrigin, "/script1.js"); 1170 data1.script = URL(kOrigin, "/script1.js");
1175 data1.version_id = 200; 1171 data1.version_uuid = "85cf6e28-8c50-4abd-9ef5-5f425b893010";
1176 data1.resources_total_size_bytes = 100; 1172 data1.resources_total_size_bytes = 100;
1177 std::vector<Resource> resources1; 1173 std::vector<Resource> resources1;
1178 resources1.push_back(CreateResource(1, data1.script, 100)); 1174 resources1.push_back(CreateResource(1, data1.script, 100));
1179 1175
1180 // Add registration 2. 1176 // Add registration 2.
1181 RegistrationData data2; 1177 RegistrationData data2;
1182 data2.registration_id = 101; 1178 data2.registration_id = 101;
1183 data2.scope = URL(kOrigin, "/bar"); 1179 data2.scope = URL(kOrigin, "/bar");
1184 data2.script = URL(kOrigin, "/script2.js"); 1180 data2.script = URL(kOrigin, "/script2.js");
1185 data2.version_id = 201; 1181 data2.version_uuid = "645ba1bc-bc64-4867-bfb8-71a909704254";
1186 data2.resources_total_size_bytes = 200; 1182 data2.resources_total_size_bytes = 200;
1187 std::vector<Resource> resources2; 1183 std::vector<Resource> resources2;
1188 resources2.push_back(CreateResource(2, data2.script, 200)); 1184 resources2.push_back(CreateResource(2, data2.script, 200));
1189 1185
1190 ServiceWorkerDatabase::RegistrationData deleted_version; 1186 ServiceWorkerDatabase::RegistrationData deleted_version;
1191 std::vector<int64> newly_purgeable_resources; 1187 std::vector<int64> newly_purgeable_resources;
1192 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1188 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
1193 database->WriteRegistration(data1, resources1, &deleted_version, 1189 database->WriteRegistration(data1, resources1, &deleted_version,
1194 &newly_purgeable_resources)); 1190 &newly_purgeable_resources));
1195 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, 1191 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1281 1277
1282 // Should be false because a registration does not exist. 1278 // Should be false because a registration does not exist.
1283 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1279 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1284 database->UpdateVersionToActive(0, origin)); 1280 database->UpdateVersionToActive(0, origin));
1285 1281
1286 // Add a registration. 1282 // Add a registration.
1287 RegistrationData data; 1283 RegistrationData data;
1288 data.registration_id = 100; 1284 data.registration_id = 100;
1289 data.scope = URL(origin, "/foo"); 1285 data.scope = URL(origin, "/foo");
1290 data.script = URL(origin, "/script.js"); 1286 data.script = URL(origin, "/script.js");
1291 data.version_id = 200; 1287 data.version_uuid = "85cf6e28-8c50-4abd-9ef5-5f425b893010";
1292 data.is_active = false; 1288 data.is_active = false;
1293 data.resources_total_size_bytes = 100; 1289 data.resources_total_size_bytes = 100;
1294 std::vector<Resource> resources; 1290 std::vector<Resource> resources;
1295 resources.push_back(CreateResource(1, data.script, 100)); 1291 resources.push_back(CreateResource(1, data.script, 100));
1296 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1292 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1297 database->WriteRegistration(data, resources, &deleted_version, 1293 database->WriteRegistration(data, resources, &deleted_version,
1298 &newly_purgeable_resources)); 1294 &newly_purgeable_resources));
1299 1295
1300 // Make sure that the registration is stored. 1296 // Make sure that the registration is stored.
1301 RegistrationData data_out; 1297 RegistrationData data_out;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1341 1337
1342 // Should be false because a registration does not exist. 1338 // Should be false because a registration does not exist.
1343 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, 1339 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
1344 database->UpdateLastCheckTime(0, origin, base::Time::Now())); 1340 database->UpdateLastCheckTime(0, origin, base::Time::Now()));
1345 1341
1346 // Add a registration. 1342 // Add a registration.
1347 RegistrationData data; 1343 RegistrationData data;
1348 data.registration_id = 100; 1344 data.registration_id = 100;
1349 data.scope = URL(origin, "/foo"); 1345 data.scope = URL(origin, "/foo");
1350 data.script = URL(origin, "/script.js"); 1346 data.script = URL(origin, "/script.js");
1351 data.version_id = 200; 1347 data.version_uuid = "85cf6e28-8c50-4abd-9ef5-5f425b893010";
1352 data.last_update_check = base::Time::Now(); 1348 data.last_update_check = base::Time::Now();
1353 data.resources_total_size_bytes = 100; 1349 data.resources_total_size_bytes = 100;
1354 std::vector<Resource> resources; 1350 std::vector<Resource> resources;
1355 resources.push_back(CreateResource(1, data.script, 100)); 1351 resources.push_back(CreateResource(1, data.script, 100));
1356 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1352 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1357 database->WriteRegistration(data, resources, &deleted_version, 1353 database->WriteRegistration(data, resources, &deleted_version,
1358 &newly_purgeable_resources)); 1354 &newly_purgeable_resources));
1359 1355
1360 // Make sure that the registration is stored. 1356 // Make sure that the registration is stored.
1361 RegistrationData data_out; 1357 RegistrationData data_out;
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
1489 1485
1490 // Data associated with |origin1| will be removed. 1486 // Data associated with |origin1| will be removed.
1491 GURL origin1("http://example.com"); 1487 GURL origin1("http://example.com");
1492 GURL origin2("http://example.org"); 1488 GURL origin2("http://example.org");
1493 1489
1494 // |origin1| has two registrations (registration1 and registration2). 1490 // |origin1| has two registrations (registration1 and registration2).
1495 RegistrationData data1; 1491 RegistrationData data1;
1496 data1.registration_id = 10; 1492 data1.registration_id = 10;
1497 data1.scope = URL(origin1, "/foo"); 1493 data1.scope = URL(origin1, "/foo");
1498 data1.script = URL(origin1, "/script1.js"); 1494 data1.script = URL(origin1, "/script1.js");
1499 data1.version_id = 100; 1495 data1.version_uuid = "8dba4236-45fc-4694-b451-c34b45a4666d";
1500 data1.resources_total_size_bytes = 2013 + 512; 1496 data1.resources_total_size_bytes = 2013 + 512;
1501 1497
1502 std::vector<Resource> resources1; 1498 std::vector<Resource> resources1;
1503 resources1.push_back(CreateResource(1, URL(origin1, "/resource1"), 2013)); 1499 resources1.push_back(CreateResource(1, URL(origin1, "/resource1"), 2013));
1504 resources1.push_back(CreateResource(2, URL(origin1, "/resource2"), 512)); 1500 resources1.push_back(CreateResource(2, URL(origin1, "/resource2"), 512));
1505 ASSERT_EQ( 1501 ASSERT_EQ(
1506 ServiceWorkerDatabase::STATUS_OK, 1502 ServiceWorkerDatabase::STATUS_OK,
1507 database->WriteRegistration( 1503 database->WriteRegistration(
1508 data1, resources1, &deleted_version, &newly_purgeable_resources)); 1504 data1, resources1, &deleted_version, &newly_purgeable_resources));
1509 ASSERT_EQ( 1505 ASSERT_EQ(
1510 ServiceWorkerDatabase::STATUS_OK, 1506 ServiceWorkerDatabase::STATUS_OK,
1511 database->WriteUserData( 1507 database->WriteUserData(
1512 data1.registration_id, origin1, "key1", "data1")); 1508 data1.registration_id, origin1, "key1", "data1"));
1513 ASSERT_EQ( 1509 ASSERT_EQ(
1514 ServiceWorkerDatabase::STATUS_OK, 1510 ServiceWorkerDatabase::STATUS_OK,
1515 database->WriteUserData( 1511 database->WriteUserData(
1516 data1.registration_id, origin1, "key2", "data2")); 1512 data1.registration_id, origin1, "key2", "data2"));
1517 1513
1518 RegistrationData data2; 1514 RegistrationData data2;
1519 data2.registration_id = 11; 1515 data2.registration_id = 11;
1520 data2.scope = URL(origin1, "/bar"); 1516 data2.scope = URL(origin1, "/bar");
1521 data2.script = URL(origin1, "/script2.js"); 1517 data2.script = URL(origin1, "/script2.js");
1522 data2.version_id = 101; 1518 data2.version_uuid = "9cdf4806-400b-4238-b890-f480273d4ea8";
1523 data2.resources_total_size_bytes = 4 + 5; 1519 data2.resources_total_size_bytes = 4 + 5;
1524 1520
1525 std::vector<Resource> resources2; 1521 std::vector<Resource> resources2;
1526 resources2.push_back(CreateResource(3, URL(origin1, "/resource3"), 4)); 1522 resources2.push_back(CreateResource(3, URL(origin1, "/resource3"), 4));
1527 resources2.push_back(CreateResource(4, URL(origin1, "/resource4"), 5)); 1523 resources2.push_back(CreateResource(4, URL(origin1, "/resource4"), 5));
1528 ASSERT_EQ( 1524 ASSERT_EQ(
1529 ServiceWorkerDatabase::STATUS_OK, 1525 ServiceWorkerDatabase::STATUS_OK,
1530 database->WriteRegistration( 1526 database->WriteRegistration(
1531 data2, resources2, &deleted_version, &newly_purgeable_resources)); 1527 data2, resources2, &deleted_version, &newly_purgeable_resources));
1532 ASSERT_EQ( 1528 ASSERT_EQ(
1533 ServiceWorkerDatabase::STATUS_OK, 1529 ServiceWorkerDatabase::STATUS_OK,
1534 database->WriteUserData( 1530 database->WriteUserData(
1535 data2.registration_id, origin1, "key3", "data3")); 1531 data2.registration_id, origin1, "key3", "data3"));
1536 ASSERT_EQ( 1532 ASSERT_EQ(
1537 ServiceWorkerDatabase::STATUS_OK, 1533 ServiceWorkerDatabase::STATUS_OK,
1538 database->WriteUserData( 1534 database->WriteUserData(
1539 data2.registration_id, origin1, "key4", "data4")); 1535 data2.registration_id, origin1, "key4", "data4"));
1540 1536
1541 // |origin2| has one registration (registration3). 1537 // |origin2| has one registration (registration3).
1542 RegistrationData data3; 1538 RegistrationData data3;
1543 data3.registration_id = 12; 1539 data3.registration_id = 12;
1544 data3.scope = URL(origin2, "/hoge"); 1540 data3.scope = URL(origin2, "/hoge");
1545 data3.script = URL(origin2, "/script3.js"); 1541 data3.script = URL(origin2, "/script3.js");
1546 data3.version_id = 102; 1542 data3.version_uuid = "743b5448-f6e3-4141-ad5b-2e40118bf07f";
1547 data3.resources_total_size_bytes = 6 + 7; 1543 data3.resources_total_size_bytes = 6 + 7;
1548 1544
1549 std::vector<Resource> resources3; 1545 std::vector<Resource> resources3;
1550 resources3.push_back(CreateResource(5, URL(origin2, "/resource5"), 6)); 1546 resources3.push_back(CreateResource(5, URL(origin2, "/resource5"), 6));
1551 resources3.push_back(CreateResource(6, URL(origin2, "/resource6"), 7)); 1547 resources3.push_back(CreateResource(6, URL(origin2, "/resource6"), 7));
1552 ASSERT_EQ( 1548 ASSERT_EQ(
1553 ServiceWorkerDatabase::STATUS_OK, 1549 ServiceWorkerDatabase::STATUS_OK,
1554 database->WriteRegistration( 1550 database->WriteRegistration(
1555 data3, resources3, &deleted_version, &newly_purgeable_resources)); 1551 data3, resources3, &deleted_version, &newly_purgeable_resources));
1556 ASSERT_EQ( 1552 ASSERT_EQ(
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1641 CreateDatabase(database_dir.path())); 1637 CreateDatabase(database_dir.path()));
1642 1638
1643 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); 1639 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true));
1644 ASSERT_TRUE(base::DirectoryExists(database_dir.path())); 1640 ASSERT_TRUE(base::DirectoryExists(database_dir.path()));
1645 1641
1646 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->DestroyDatabase()); 1642 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->DestroyDatabase());
1647 ASSERT_FALSE(base::DirectoryExists(database_dir.path())); 1643 ASSERT_FALSE(base::DirectoryExists(database_dir.path()));
1648 } 1644 }
1649 1645
1650 } // namespace content 1646 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698