| 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 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 491 database->WriteRegistration( | 491 database->WriteRegistration( |
| 492 data, resources, &deleted_version, &newly_purgeable_resources)); | 492 data, resources, &deleted_version, &newly_purgeable_resources)); |
| 493 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version.version_id); | 493 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version.version_id); |
| 494 EXPECT_TRUE(newly_purgeable_resources.empty()); | 494 EXPECT_TRUE(newly_purgeable_resources.empty()); |
| 495 | 495 |
| 496 // Make sure that the registration and resource records are stored. | 496 // Make sure that the registration and resource records are stored. |
| 497 RegistrationData data_out; | 497 RegistrationData data_out; |
| 498 std::vector<Resource> resources_out; | 498 std::vector<Resource> resources_out; |
| 499 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 499 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 500 database->ReadRegistration( | 500 database->ReadRegistration( |
| 501 data.registration_id, origin, &data_out, &resources_out)); | 501 data.registration_id, origin, &data_out, &resources_out)); |
| 502 VerifyRegistrationData(data, data_out); | 502 VerifyRegistrationData(data, data_out); |
| 503 VerifyResourceRecords(resources, resources_out); | 503 VerifyResourceRecords(resources, resources_out); |
| 504 | 504 |
| 505 // Make sure that the resource is removed from the uncommitted list. | 505 // Make sure that the resource is removed from the uncommitted list. |
| 506 uncommitted_ids_out.clear(); | 506 uncommitted_ids_out.clear(); |
| 507 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 507 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 508 database->GetUncommittedResourceIds(&uncommitted_ids_out)); | 508 database->GetUncommittedResourceIds(&uncommitted_ids_out)); |
| 509 EXPECT_TRUE(uncommitted_ids_out.empty()); | 509 EXPECT_TRUE(uncommitted_ids_out.empty()); |
| 510 | 510 |
| 511 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 511 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 734 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[1].resource_id)); | 734 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[1].resource_id)); |
| 735 | 735 |
| 736 // Make sure that registration2 is still alive. | 736 // Make sure that registration2 is still alive. |
| 737 resources_out.clear(); | 737 resources_out.clear(); |
| 738 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( | 738 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration( |
| 739 data2.registration_id, origin, &data_out, &resources_out)); | 739 data2.registration_id, origin, &data_out, &resources_out)); |
| 740 VerifyRegistrationData(data2, data_out); | 740 VerifyRegistrationData(data2, data_out); |
| 741 VerifyResourceRecords(resources2, resources_out); | 741 VerifyResourceRecords(resources2, resources_out); |
| 742 } | 742 } |
| 743 | 743 |
| 744 TEST(ServiceWorkerDatabaseTest, Registration_UninitializedDatabase) { |
| 745 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 746 const GURL origin("http://example.com"); |
| 747 |
| 748 // Should be failed because the database does not exist. |
| 749 RegistrationData data_out; |
| 750 std::vector<Resource> resources_out; |
| 751 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 752 database->ReadRegistration( |
| 753 100, origin, &data_out, &resources_out)); |
| 754 EXPECT_EQ(kInvalidServiceWorkerRegistrationId, data_out.registration_id); |
| 755 EXPECT_TRUE(resources_out.empty()); |
| 756 |
| 757 // Deleting non-existent registration should succeed. |
| 758 RegistrationData deleted_version; |
| 759 std::vector<int64> newly_purgeable_resources; |
| 760 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 761 database->DeleteRegistration( |
| 762 100, origin, &deleted_version, &newly_purgeable_resources)); |
| 763 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version.version_id); |
| 764 EXPECT_TRUE(newly_purgeable_resources.empty()); |
| 765 |
| 766 // Actually create a new database, but not initialized yet. |
| 767 database->LazyOpen(true); |
| 768 |
| 769 // Should be failed because the database is not initialized. |
| 770 ASSERT_EQ(ServiceWorkerDatabase::UNINITIALIZED, database->state_); |
| 771 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 772 database->ReadRegistration( |
| 773 100, origin, &data_out, &resources_out)); |
| 774 EXPECT_EQ(kInvalidServiceWorkerRegistrationId, data_out.registration_id); |
| 775 EXPECT_TRUE(resources_out.empty()); |
| 776 |
| 777 // Deleting non-existent registration should succeed. |
| 778 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 779 database->DeleteRegistration( |
| 780 100, origin, &deleted_version, &newly_purgeable_resources)); |
| 781 EXPECT_EQ(kInvalidServiceWorkerVersionId, deleted_version.version_id); |
| 782 EXPECT_TRUE(newly_purgeable_resources.empty()); |
| 783 } |
| 784 |
| 744 TEST(ServiceWorkerDatabaseTest, UserData_Basic) { | 785 TEST(ServiceWorkerDatabaseTest, UserData_Basic) { |
| 745 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 786 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 746 const GURL kOrigin("http://example.com"); | 787 const GURL kOrigin("http://example.com"); |
| 747 | 788 |
| 748 // Should be failed because the database does not exist. | |
| 749 std::string user_data_out; | |
| 750 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | |
| 751 database->WriteUserData(100, kOrigin, "key1", "data")); | |
| 752 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | |
| 753 database->ReadUserData(100, "key1", &user_data_out)); | |
| 754 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | |
| 755 database->DeleteUserData(100, "key1")); | |
| 756 | |
| 757 // Add a registration. | 789 // Add a registration. |
| 758 RegistrationData data; | 790 RegistrationData data; |
| 759 data.registration_id = 100; | 791 data.registration_id = 100; |
| 760 data.scope = URL(kOrigin, "/foo"); | 792 data.scope = URL(kOrigin, "/foo"); |
| 761 data.script = URL(kOrigin, "/script.js"); | 793 data.script = URL(kOrigin, "/script.js"); |
| 762 data.version_id = 200; | 794 data.version_id = 200; |
| 763 | 795 |
| 764 std::vector<Resource> resources; | 796 std::vector<Resource> resources; |
| 765 ServiceWorkerDatabase::RegistrationData deleted_version; | 797 ServiceWorkerDatabase::RegistrationData deleted_version; |
| 766 std::vector<int64> newly_purgeable_resources; | 798 std::vector<int64> newly_purgeable_resources; |
| 767 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 799 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 768 database->WriteRegistration( | 800 database->WriteRegistration( |
| 769 data, resources, &deleted_version, &newly_purgeable_resources)); | 801 data, resources, &deleted_version, &newly_purgeable_resources)); |
| 770 | 802 |
| 771 // Write user data associated with the stored registration. | 803 // Write user data associated with the stored registration. |
| 804 std::string user_data_out; |
| 772 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 805 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 773 database->WriteUserData( | 806 database->WriteUserData( |
| 774 data.registration_id, kOrigin, "key1", "data")); | 807 data.registration_id, kOrigin, "key1", "data")); |
| 775 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 808 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 776 database->ReadUserData( | 809 database->ReadUserData( |
| 777 data.registration_id, "key1", &user_data_out)); | 810 data.registration_id, "key1", &user_data_out)); |
| 778 EXPECT_EQ("data", user_data_out); | 811 EXPECT_EQ("data", user_data_out); |
| 779 | 812 |
| 780 // Writing user data not associated with the stored registration should be | 813 // Writing user data not associated with the stored registration should be |
| 781 // failed. | 814 // failed. |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 971 data1.registration_id, "key1", &user_data_out)); | 1004 data1.registration_id, "key1", &user_data_out)); |
| 972 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | 1005 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 973 database->ReadUserData( | 1006 database->ReadUserData( |
| 974 data1.registration_id, "key2", &user_data_out)); | 1007 data1.registration_id, "key2", &user_data_out)); |
| 975 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1008 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 976 database->ReadUserData( | 1009 database->ReadUserData( |
| 977 data2.registration_id, "key3", &user_data_out)); | 1010 data2.registration_id, "key3", &user_data_out)); |
| 978 EXPECT_EQ("data3", user_data_out); | 1011 EXPECT_EQ("data3", user_data_out); |
| 979 } | 1012 } |
| 980 | 1013 |
| 1014 TEST(ServiceWorkerDatabaseTest, UserData_UninitializedDatabase) { |
| 1015 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 1016 const GURL kOrigin("http://example.com"); |
| 1017 |
| 1018 // Should be failed because the database does not exist. |
| 1019 std::string user_data_out; |
| 1020 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 1021 database->ReadUserData(100, "key", &user_data_out)); |
| 1022 |
| 1023 // Should be failed because the associated registration does not exist. |
| 1024 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 1025 database->WriteUserData(100, kOrigin, "key", "data")); |
| 1026 |
| 1027 // Deleting non-existent entry should succeed. |
| 1028 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1029 database->DeleteUserData(100, "key")); |
| 1030 |
| 1031 // Actually create a new database, but not initialized yet. |
| 1032 database->LazyOpen(true); |
| 1033 |
| 1034 // Should be failed because the database is not initialized. |
| 1035 ASSERT_EQ(ServiceWorkerDatabase::UNINITIALIZED, database->state_); |
| 1036 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 1037 database->ReadUserData(100, "key", &user_data_out)); |
| 1038 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 1039 database->WriteUserData(100, kOrigin, "key", "data")); |
| 1040 |
| 1041 // Deleting non-existent entry should succeed. |
| 1042 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1043 database->DeleteUserData(100, "key")); |
| 1044 } |
| 1045 |
| 981 TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) { | 1046 TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) { |
| 982 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 1047 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 983 GURL origin("http://example.com"); | 1048 GURL origin("http://example.com"); |
| 984 | 1049 |
| 985 ServiceWorkerDatabase::RegistrationData deleted_version; | 1050 ServiceWorkerDatabase::RegistrationData deleted_version; |
| 986 std::vector<int64> newly_purgeable_resources; | 1051 std::vector<int64> newly_purgeable_resources; |
| 987 | 1052 |
| 988 // Should be false because a registration does not exist. | 1053 // Should be false because a registration does not exist. |
| 989 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | 1054 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 990 database->UpdateVersionToActive(0, origin)); | 1055 database->UpdateVersionToActive(0, origin)); |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1336 CreateDatabase(database_dir.path())); | 1401 CreateDatabase(database_dir.path())); |
| 1337 | 1402 |
| 1338 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); | 1403 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); |
| 1339 ASSERT_TRUE(base::DirectoryExists(database_dir.path())); | 1404 ASSERT_TRUE(base::DirectoryExists(database_dir.path())); |
| 1340 | 1405 |
| 1341 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->DestroyDatabase()); | 1406 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->DestroyDatabase()); |
| 1342 ASSERT_FALSE(base::DirectoryExists(database_dir.path())); | 1407 ASSERT_FALSE(base::DirectoryExists(database_dir.path())); |
| 1343 } | 1408 } |
| 1344 | 1409 |
| 1345 } // namespace content | 1410 } // namespace content |
| OLD | NEW |