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/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 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 } | 399 } |
400 | 400 |
401 TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) { | 401 TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) { |
402 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 402 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
403 | 403 |
404 GURL origin1("http://example.com"); | 404 GURL origin1("http://example.com"); |
405 GURL origin2("https://www.example.com"); | 405 GURL origin2("https://www.example.com"); |
406 GURL origin3("https://example.org"); | 406 GURL origin3("https://example.org"); |
407 | 407 |
408 std::vector<RegistrationData> registrations; | 408 std::vector<RegistrationData> registrations; |
| 409 std::vector<std::vector<Resource>> resources_list; |
409 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 410 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
410 database->GetRegistrationsForOrigin(origin1, ®istrations)); | 411 database->GetRegistrationsForOrigin(origin1, ®istrations, |
| 412 &resources_list)); |
411 EXPECT_TRUE(registrations.empty()); | 413 EXPECT_TRUE(registrations.empty()); |
| 414 EXPECT_TRUE(resources_list.empty()); |
412 | 415 |
413 ServiceWorkerDatabase::RegistrationData deleted_version; | 416 ServiceWorkerDatabase::RegistrationData deleted_version; |
414 std::vector<int64> newly_purgeable_resources; | 417 std::vector<int64> newly_purgeable_resources; |
415 | 418 |
416 RegistrationData data1; | 419 RegistrationData data1; |
417 data1.registration_id = 100; | 420 data1.registration_id = 100; |
418 data1.scope = URL(origin1, "/foo"); | 421 data1.scope = URL(origin1, "/foo"); |
419 data1.script = URL(origin1, "/script1.js"); | 422 data1.script = URL(origin1, "/script1.js"); |
420 data1.version_id = 1000; | 423 data1.version_id = 1000; |
421 data1.resources_total_size_bytes = 100; | 424 data1.resources_total_size_bytes = 100; |
422 std::vector<Resource> resources1; | 425 std::vector<Resource> resources1; |
423 resources1.push_back(CreateResource(1, data1.script, 100)); | 426 resources1.push_back(CreateResource(1, data1.script, 100)); |
424 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 427 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
425 database->WriteRegistration(data1, resources1, &deleted_version, | 428 database->WriteRegistration(data1, resources1, &deleted_version, |
426 &newly_purgeable_resources)); | 429 &newly_purgeable_resources)); |
427 | 430 |
| 431 registrations.clear(); |
| 432 resources_list.clear(); |
| 433 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 434 database->GetRegistrationsForOrigin(origin1, ®istrations, |
| 435 &resources_list)); |
| 436 EXPECT_EQ(1U, registrations.size()); |
| 437 VerifyRegistrationData(data1, registrations[0]); |
| 438 EXPECT_EQ(1U, resources_list.size()); |
| 439 VerifyResourceRecords(resources1, resources_list[0]); |
| 440 |
428 RegistrationData data2; | 441 RegistrationData data2; |
429 data2.registration_id = 200; | 442 data2.registration_id = 200; |
430 data2.scope = URL(origin2, "/bar"); | 443 data2.scope = URL(origin2, "/bar"); |
431 data2.script = URL(origin2, "/script2.js"); | 444 data2.script = URL(origin2, "/script2.js"); |
432 data2.version_id = 2000; | 445 data2.version_id = 2000; |
433 data2.resources_total_size_bytes = 200; | 446 data2.resources_total_size_bytes = 200; |
434 std::vector<Resource> resources2; | 447 std::vector<Resource> resources2; |
435 resources2.push_back(CreateResource(2, data2.script, 200)); | 448 resources2.push_back(CreateResource(2, data2.script, 200)); |
436 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 449 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
437 database->WriteRegistration(data2, resources2, &deleted_version, | 450 database->WriteRegistration(data2, resources2, &deleted_version, |
438 &newly_purgeable_resources)); | 451 &newly_purgeable_resources)); |
439 | 452 |
| 453 registrations.clear(); |
| 454 resources_list.clear(); |
| 455 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 456 database->GetRegistrationsForOrigin(origin2, ®istrations, |
| 457 &resources_list)); |
| 458 EXPECT_EQ(1U, registrations.size()); |
| 459 VerifyRegistrationData(data2, registrations[0]); |
| 460 EXPECT_EQ(1U, resources_list.size()); |
| 461 VerifyResourceRecords(resources2, resources_list[0]); |
| 462 |
440 RegistrationData data3; | 463 RegistrationData data3; |
441 data3.registration_id = 300; | 464 data3.registration_id = 300; |
442 data3.scope = URL(origin3, "/hoge"); | 465 data3.scope = URL(origin3, "/hoge"); |
443 data3.script = URL(origin3, "/script3.js"); | 466 data3.script = URL(origin3, "/script3.js"); |
444 data3.version_id = 3000; | 467 data3.version_id = 3000; |
445 data3.resources_total_size_bytes = 300; | 468 data3.resources_total_size_bytes = 300; |
446 std::vector<Resource> resources3; | 469 std::vector<Resource> resources3; |
447 resources3.push_back(CreateResource(3, data3.script, 300)); | 470 resources3.push_back(CreateResource(3, data3.script, 300)); |
448 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 471 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
449 database->WriteRegistration(data3, resources3, &deleted_version, | 472 database->WriteRegistration(data3, resources3, &deleted_version, |
450 &newly_purgeable_resources)); | 473 &newly_purgeable_resources)); |
451 | 474 |
452 // |origin3| has two registrations. | 475 // |origin3| has two registrations. |
453 RegistrationData data4; | 476 RegistrationData data4; |
454 data4.registration_id = 400; | 477 data4.registration_id = 400; |
455 data4.scope = URL(origin3, "/fuga"); | 478 data4.scope = URL(origin3, "/fuga"); |
456 data4.script = URL(origin3, "/script4.js"); | 479 data4.script = URL(origin3, "/script4.js"); |
457 data4.version_id = 4000; | 480 data4.version_id = 4000; |
458 data4.resources_total_size_bytes = 400; | 481 data4.resources_total_size_bytes = 400; |
459 std::vector<Resource> resources4; | 482 std::vector<Resource> resources4; |
460 resources4.push_back(CreateResource(4, data4.script, 400)); | 483 resources4.push_back(CreateResource(4, data4.script, 400)); |
461 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 484 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
462 database->WriteRegistration(data4, resources4, &deleted_version, | 485 database->WriteRegistration(data4, resources4, &deleted_version, |
463 &newly_purgeable_resources)); | 486 &newly_purgeable_resources)); |
464 | 487 |
465 registrations.clear(); | 488 registrations.clear(); |
| 489 resources_list.clear(); |
466 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 490 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
467 database->GetRegistrationsForOrigin(origin3, ®istrations)); | 491 database->GetRegistrationsForOrigin(origin3, ®istrations, |
| 492 &resources_list)); |
468 EXPECT_EQ(2U, registrations.size()); | 493 EXPECT_EQ(2U, registrations.size()); |
469 VerifyRegistrationData(data3, registrations[0]); | 494 VerifyRegistrationData(data3, registrations[0]); |
470 VerifyRegistrationData(data4, registrations[1]); | 495 VerifyRegistrationData(data4, registrations[1]); |
| 496 EXPECT_EQ(2U, resources_list.size()); |
| 497 VerifyResourceRecords(resources3, resources_list[0]); |
| 498 VerifyResourceRecords(resources4, resources_list[1]); |
| 499 |
| 500 // The third parameter |opt_resources_list| to GetRegistrationsForOrigin() |
| 501 // is optional. So, nullptr should be acceptable. |
| 502 registrations.clear(); |
| 503 EXPECT_EQ( |
| 504 ServiceWorkerDatabase::STATUS_OK, |
| 505 database->GetRegistrationsForOrigin(origin1, ®istrations, nullptr)); |
| 506 EXPECT_EQ(1U, registrations.size()); |
| 507 VerifyRegistrationData(data1, registrations[0]); |
471 } | 508 } |
472 | 509 |
473 TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) { | 510 TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) { |
474 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 511 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
475 | 512 |
476 std::vector<RegistrationData> registrations; | 513 std::vector<RegistrationData> registrations; |
477 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 514 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
478 database->GetAllRegistrations(®istrations)); | 515 database->GetAllRegistrations(®istrations)); |
479 EXPECT_TRUE(registrations.empty()); | 516 EXPECT_TRUE(registrations.empty()); |
480 | 517 |
(...skipping 983 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1464 | 1501 |
1465 // |origin1| should be removed from the unique origin list. | 1502 // |origin1| should be removed from the unique origin list. |
1466 std::set<GURL> unique_origins; | 1503 std::set<GURL> unique_origins; |
1467 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1504 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1468 database->GetOriginsWithRegistrations(&unique_origins)); | 1505 database->GetOriginsWithRegistrations(&unique_origins)); |
1469 EXPECT_EQ(1u, unique_origins.size()); | 1506 EXPECT_EQ(1u, unique_origins.size()); |
1470 EXPECT_TRUE(ContainsKey(unique_origins, origin2)); | 1507 EXPECT_TRUE(ContainsKey(unique_origins, origin2)); |
1471 | 1508 |
1472 // The registrations for |origin1| should be removed. | 1509 // The registrations for |origin1| should be removed. |
1473 std::vector<RegistrationData> registrations; | 1510 std::vector<RegistrationData> registrations; |
1474 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1511 EXPECT_EQ( |
1475 database->GetRegistrationsForOrigin(origin1, ®istrations)); | 1512 ServiceWorkerDatabase::STATUS_OK, |
| 1513 database->GetRegistrationsForOrigin(origin1, ®istrations, nullptr)); |
1476 EXPECT_TRUE(registrations.empty()); | 1514 EXPECT_TRUE(registrations.empty()); |
1477 GURL origin_out; | 1515 GURL origin_out; |
1478 EXPECT_EQ( | 1516 EXPECT_EQ( |
1479 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | 1517 ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
1480 database->ReadRegistrationOrigin(data1.registration_id, &origin_out)); | 1518 database->ReadRegistrationOrigin(data1.registration_id, &origin_out)); |
1481 | 1519 |
1482 // The registration for |origin2| should not be removed. | 1520 // The registration for |origin2| should not be removed. |
1483 RegistrationData data_out; | 1521 RegistrationData data_out; |
1484 std::vector<Resource> resources_out; | 1522 std::vector<Resource> resources_out; |
1485 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( | 1523 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1534 CreateDatabase(database_dir.path())); | 1572 CreateDatabase(database_dir.path())); |
1535 | 1573 |
1536 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); | 1574 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); |
1537 ASSERT_TRUE(base::DirectoryExists(database_dir.path())); | 1575 ASSERT_TRUE(base::DirectoryExists(database_dir.path())); |
1538 | 1576 |
1539 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->DestroyDatabase()); | 1577 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->DestroyDatabase()); |
1540 ASSERT_FALSE(base::DirectoryExists(database_dir.path())); | 1578 ASSERT_FALSE(base::DirectoryExists(database_dir.path())); |
1541 } | 1579 } |
1542 | 1580 |
1543 } // namespace content | 1581 } // namespace content |
OLD | NEW |