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

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

Issue 846443005: ServiceWorker: ReadRegistration should return NOT_FOUND when the database is not initialized (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « content/browser/service_worker/service_worker_database.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 480 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_database.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698