| 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 |