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")); | |
falken
2015/01/09 07:54:35
nit: Maybe comment here that it should succeed or
nhiroki
2015/01/09 08:23:28
Done.
| |
1040 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | |
1041 database->DeleteUserData(100, "key")); | |
1042 } | |
1043 | |
981 TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) { | 1044 TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) { |
982 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 1045 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
983 GURL origin("http://example.com"); | 1046 GURL origin("http://example.com"); |
984 | 1047 |
985 ServiceWorkerDatabase::RegistrationData deleted_version; | 1048 ServiceWorkerDatabase::RegistrationData deleted_version; |
986 std::vector<int64> newly_purgeable_resources; | 1049 std::vector<int64> newly_purgeable_resources; |
987 | 1050 |
988 // Should be false because a registration does not exist. | 1051 // Should be false because a registration does not exist. |
989 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | 1052 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
990 database->UpdateVersionToActive(0, origin)); | 1053 database->UpdateVersionToActive(0, origin)); |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1336 CreateDatabase(database_dir.path())); | 1399 CreateDatabase(database_dir.path())); |
1337 | 1400 |
1338 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); | 1401 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); |
1339 ASSERT_TRUE(base::DirectoryExists(database_dir.path())); | 1402 ASSERT_TRUE(base::DirectoryExists(database_dir.path())); |
1340 | 1403 |
1341 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->DestroyDatabase()); | 1404 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->DestroyDatabase()); |
1342 ASSERT_FALSE(base::DirectoryExists(database_dir.path())); | 1405 ASSERT_FALSE(base::DirectoryExists(database_dir.path())); |
1343 } | 1406 } |
1344 | 1407 |
1345 } // namespace content | 1408 } // namespace content |
OLD | NEW |