| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_storage.h" | 5 #include "content/browser/service_worker/service_worker_storage.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| 11 #include "base/files/file_util.h" | 11 #include "base/files/file_util.h" |
| 12 #include "base/files/scoped_temp_dir.h" | 12 #include "base/files/scoped_temp_dir.h" |
| 13 #include "base/logging.h" | 13 #include "base/logging.h" |
| 14 #include "base/macros.h" | 14 #include "base/macros.h" |
| 15 #include "base/run_loop.h" | 15 #include "base/run_loop.h" |
| 16 #include "base/threading/thread_task_runner_handle.h" | 16 #include "base/threading/thread_task_runner_handle.h" |
| 17 #include "build/build_config.h" | 17 #include "build/build_config.h" |
| 18 #include "content/browser/browser_thread_impl.h" | 18 #include "content/browser/browser_thread_impl.h" |
| 19 #include "content/browser/service_worker/embedded_worker_test_helper.h" | 19 #include "content/browser/service_worker/embedded_worker_test_helper.h" |
| 20 #include "content/browser/service_worker/service_worker_context_core.h" | 20 #include "content/browser/service_worker/service_worker_context_core.h" |
| 21 #include "content/browser/service_worker/service_worker_disk_cache.h" | 21 #include "content/browser/service_worker/service_worker_disk_cache.h" |
| 22 #include "content/browser/service_worker/service_worker_registration.h" | 22 #include "content/browser/service_worker/service_worker_registration.h" |
| 23 #include "content/browser/service_worker/service_worker_test_utils.h" |
| 23 #include "content/browser/service_worker/service_worker_version.h" | 24 #include "content/browser/service_worker/service_worker_version.h" |
| 24 #include "content/common/service_worker/service_worker_status_code.h" | 25 #include "content/common/service_worker/service_worker_status_code.h" |
| 25 #include "content/common/service_worker/service_worker_utils.h" | 26 #include "content/common/service_worker/service_worker_utils.h" |
| 26 #include "content/public/common/content_client.h" | 27 #include "content/public/common/content_client.h" |
| 27 #include "content/public/common/origin_trial_policy.h" | 28 #include "content/public/common/origin_trial_policy.h" |
| 28 #include "content/public/test/test_browser_thread_bundle.h" | 29 #include "content/public/test/test_browser_thread_bundle.h" |
| 29 #include "ipc/ipc_message.h" | 30 #include "ipc/ipc_message.h" |
| 30 #include "net/base/io_buffer.h" | 31 #include "net/base/io_buffer.h" |
| 31 #include "net/base/net_errors.h" | 32 #include "net/base/net_errors.h" |
| 32 #include "net/base/test_completion_callback.h" | 33 #include "net/base/test_completion_callback.h" |
| (...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 522 return result; | 523 return result; |
| 523 } | 524 } |
| 524 | 525 |
| 525 // user_data_directory_ must be declared first to preserve destructor order. | 526 // user_data_directory_ must be declared first to preserve destructor order. |
| 526 base::ScopedTempDir user_data_directory_; | 527 base::ScopedTempDir user_data_directory_; |
| 527 base::FilePath user_data_directory_path_; | 528 base::FilePath user_data_directory_path_; |
| 528 std::unique_ptr<EmbeddedWorkerTestHelper> helper_; | 529 std::unique_ptr<EmbeddedWorkerTestHelper> helper_; |
| 529 TestBrowserThreadBundle browser_thread_bundle_; | 530 TestBrowserThreadBundle browser_thread_bundle_; |
| 530 }; | 531 }; |
| 531 | 532 |
| 532 TEST_F(ServiceWorkerStorageTest, DisabledStorage) { | 533 class ServiceWorkerStorageTestP |
| 534 : public MojoServiceWorkerTestP<ServiceWorkerStorageTest> {}; |
| 535 |
| 536 TEST_P(ServiceWorkerStorageTestP, DisabledStorage) { |
| 533 const GURL kScope("http://www.example.com/scope/"); | 537 const GURL kScope("http://www.example.com/scope/"); |
| 534 const GURL kScript("http://www.example.com/script.js"); | 538 const GURL kScript("http://www.example.com/script.js"); |
| 535 const GURL kDocumentUrl("http://www.example.com/scope/document.html"); | 539 const GURL kDocumentUrl("http://www.example.com/scope/document.html"); |
| 536 const int64_t kRegistrationId = 0; | 540 const int64_t kRegistrationId = 0; |
| 537 const int64_t kVersionId = 0; | 541 const int64_t kVersionId = 0; |
| 538 const int64_t kResourceId = 0; | 542 const int64_t kResourceId = 0; |
| 539 | 543 |
| 540 LazyInitialize(); | 544 LazyInitialize(); |
| 541 storage()->Disable(); | 545 storage()->Disable(); |
| 542 | 546 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 600 EXPECT_FALSE( | 604 EXPECT_FALSE( |
| 601 storage()->OriginHasForeignFetchRegistrations(kScope.GetOrigin())); | 605 storage()->OriginHasForeignFetchRegistrations(kScope.GetOrigin())); |
| 602 | 606 |
| 603 // Next available ids should be invalid. | 607 // Next available ids should be invalid. |
| 604 EXPECT_EQ(kInvalidServiceWorkerRegistrationId, | 608 EXPECT_EQ(kInvalidServiceWorkerRegistrationId, |
| 605 storage()->NewRegistrationId()); | 609 storage()->NewRegistrationId()); |
| 606 EXPECT_EQ(kInvalidServiceWorkerVersionId, storage()->NewVersionId()); | 610 EXPECT_EQ(kInvalidServiceWorkerVersionId, storage()->NewVersionId()); |
| 607 EXPECT_EQ(kInvalidServiceWorkerResourceId, storage()->NewRegistrationId()); | 611 EXPECT_EQ(kInvalidServiceWorkerResourceId, storage()->NewRegistrationId()); |
| 608 } | 612 } |
| 609 | 613 |
| 610 TEST_F(ServiceWorkerStorageTest, StoreFindUpdateDeleteRegistration) { | 614 TEST_P(ServiceWorkerStorageTestP, StoreFindUpdateDeleteRegistration) { |
| 611 const GURL kScope("http://www.test.not/scope/"); | 615 const GURL kScope("http://www.test.not/scope/"); |
| 612 const GURL kDocumentUrl("http://www.test.not/scope/document.html"); | 616 const GURL kDocumentUrl("http://www.test.not/scope/document.html"); |
| 613 const GURL kResource1("http://www.test.not/scope/resource1.js"); | 617 const GURL kResource1("http://www.test.not/scope/resource1.js"); |
| 614 const int64_t kResource1Size = 1591234; | 618 const int64_t kResource1Size = 1591234; |
| 615 const GURL kResource2("http://www.test.not/scope/resource2.js"); | 619 const GURL kResource2("http://www.test.not/scope/resource2.js"); |
| 616 const int64_t kResource2Size = 51; | 620 const int64_t kResource2Size = 51; |
| 617 const int64_t kRegistrationId = 0; | 621 const int64_t kRegistrationId = 0; |
| 618 const int64_t kVersionId = 0; | 622 const int64_t kVersionId = 0; |
| 619 const GURL kForeignFetchScope("http://www.test.not/scope/ff/"); | 623 const GURL kForeignFetchScope("http://www.test.not/scope/ff/"); |
| 620 const url::Origin kForeignFetchOrigin(GURL("https://example.com/")); | 624 const url::Origin kForeignFetchOrigin(GURL("https://example.com/")); |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 802 EXPECT_FALSE(found_registration.get()); | 806 EXPECT_FALSE(found_registration.get()); |
| 803 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, | 807 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, |
| 804 FindRegistrationForIdOnly(kRegistrationId, &found_registration)); | 808 FindRegistrationForIdOnly(kRegistrationId, &found_registration)); |
| 805 EXPECT_FALSE(found_registration.get()); | 809 EXPECT_FALSE(found_registration.get()); |
| 806 | 810 |
| 807 // Deleting an unstored registration should succeed. | 811 // Deleting an unstored registration should succeed. |
| 808 EXPECT_EQ(SERVICE_WORKER_OK, | 812 EXPECT_EQ(SERVICE_WORKER_OK, |
| 809 DeleteRegistration(kRegistrationId + 1, kScope.GetOrigin())); | 813 DeleteRegistration(kRegistrationId + 1, kScope.GetOrigin())); |
| 810 } | 814 } |
| 811 | 815 |
| 812 TEST_F(ServiceWorkerStorageTest, InstallingRegistrationsAreFindable) { | 816 TEST_P(ServiceWorkerStorageTestP, InstallingRegistrationsAreFindable) { |
| 813 const GURL kScope("http://www.test.not/scope/"); | 817 const GURL kScope("http://www.test.not/scope/"); |
| 814 const GURL kScript("http://www.test.not/script.js"); | 818 const GURL kScript("http://www.test.not/script.js"); |
| 815 const GURL kDocumentUrl("http://www.test.not/scope/document.html"); | 819 const GURL kDocumentUrl("http://www.test.not/scope/document.html"); |
| 816 const int64_t kRegistrationId = 0; | 820 const int64_t kRegistrationId = 0; |
| 817 const int64_t kVersionId = 0; | 821 const int64_t kVersionId = 0; |
| 818 | 822 |
| 819 scoped_refptr<ServiceWorkerRegistration> found_registration; | 823 scoped_refptr<ServiceWorkerRegistration> found_registration; |
| 820 | 824 |
| 821 // Create an unstored registration. | 825 // Create an unstored registration. |
| 822 scoped_refptr<ServiceWorkerRegistration> live_registration = | 826 scoped_refptr<ServiceWorkerRegistration> live_registration = |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 931 SERVICE_WORKER_OK, | 935 SERVICE_WORKER_OK, |
| 932 GetRegistrationsForOrigin(kScope.GetOrigin(), ®istrations_for_origin)); | 936 GetRegistrationsForOrigin(kScope.GetOrigin(), ®istrations_for_origin)); |
| 933 EXPECT_TRUE(registrations_for_origin.empty()); | 937 EXPECT_TRUE(registrations_for_origin.empty()); |
| 934 | 938 |
| 935 EXPECT_EQ(SERVICE_WORKER_OK, | 939 EXPECT_EQ(SERVICE_WORKER_OK, |
| 936 GetRegistrationsForOrigin(GURL("http://example.com/").GetOrigin(), | 940 GetRegistrationsForOrigin(GURL("http://example.com/").GetOrigin(), |
| 937 ®istrations_for_origin)); | 941 ®istrations_for_origin)); |
| 938 EXPECT_TRUE(registrations_for_origin.empty()); | 942 EXPECT_TRUE(registrations_for_origin.empty()); |
| 939 } | 943 } |
| 940 | 944 |
| 941 TEST_F(ServiceWorkerStorageTest, StoreUserData) { | 945 TEST_P(ServiceWorkerStorageTestP, StoreUserData) { |
| 942 const GURL kScope("http://www.test.not/scope/"); | 946 const GURL kScope("http://www.test.not/scope/"); |
| 943 const GURL kScript("http://www.test.not/script.js"); | 947 const GURL kScript("http://www.test.not/script.js"); |
| 944 const int64_t kRegistrationId = 0; | 948 const int64_t kRegistrationId = 0; |
| 945 const int64_t kVersionId = 0; | 949 const int64_t kVersionId = 0; |
| 946 | 950 |
| 947 LazyInitialize(); | 951 LazyInitialize(); |
| 948 | 952 |
| 949 // Store a registration. | 953 // Store a registration. |
| 950 scoped_refptr<ServiceWorkerRegistration> live_registration = | 954 scoped_refptr<ServiceWorkerRegistration> live_registration = |
| 951 new ServiceWorkerRegistration(kScope, kRegistrationId, | 955 new ServiceWorkerRegistration(kScope, kRegistrationId, |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1070 ClearUserData(kRegistrationId, std::vector<std::string>())); | 1074 ClearUserData(kRegistrationId, std::vector<std::string>())); |
| 1071 EXPECT_EQ(SERVICE_WORKER_ERROR_FAILED, | 1075 EXPECT_EQ(SERVICE_WORKER_ERROR_FAILED, |
| 1072 ClearUserData(kRegistrationId, {std::string()})); | 1076 ClearUserData(kRegistrationId, {std::string()})); |
| 1073 EXPECT_EQ(SERVICE_WORKER_ERROR_FAILED, | 1077 EXPECT_EQ(SERVICE_WORKER_ERROR_FAILED, |
| 1074 ClearUserData(kRegistrationId, {std::string(), "key"})); | 1078 ClearUserData(kRegistrationId, {std::string(), "key"})); |
| 1075 data_list_out.clear(); | 1079 data_list_out.clear(); |
| 1076 EXPECT_EQ(SERVICE_WORKER_ERROR_FAILED, | 1080 EXPECT_EQ(SERVICE_WORKER_ERROR_FAILED, |
| 1077 GetUserDataForAllRegistrations(std::string(), &data_list_out)); | 1081 GetUserDataForAllRegistrations(std::string(), &data_list_out)); |
| 1078 } | 1082 } |
| 1079 | 1083 |
| 1080 class ServiceWorkerResourceStorageTest : public ServiceWorkerStorageTest { | 1084 class ServiceWorkerResourceStorageTest : public ServiceWorkerStorageTestP { |
| 1081 public: | 1085 public: |
| 1082 void SetUp() override { | 1086 void SetUp() override { |
| 1083 ServiceWorkerStorageTest::SetUp(); | 1087 ServiceWorkerStorageTestP::SetUp(); |
| 1084 LazyInitialize(); | 1088 LazyInitialize(); |
| 1085 | 1089 |
| 1086 scope_ = GURL("http://www.test.not/scope/"); | 1090 scope_ = GURL("http://www.test.not/scope/"); |
| 1087 script_ = GURL("http://www.test.not/script.js"); | 1091 script_ = GURL("http://www.test.not/script.js"); |
| 1088 import_ = GURL("http://www.test.not/import.js"); | 1092 import_ = GURL("http://www.test.not/import.js"); |
| 1089 document_url_ = GURL("http://www.test.not/scope/document.html"); | 1093 document_url_ = GURL("http://www.test.not/scope/document.html"); |
| 1090 registration_id_ = storage()->NewRegistrationId(); | 1094 registration_id_ = storage()->NewRegistrationId(); |
| 1091 version_id_ = storage()->NewVersionId(); | 1095 version_id_ = storage()->NewVersionId(); |
| 1092 resource_id1_ = storage()->NewResourceId(); | 1096 resource_id1_ = storage()->NewResourceId(); |
| 1093 resource_id2_ = storage()->NewResourceId(); | 1097 resource_id2_ = storage()->NewResourceId(); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1152 class ServiceWorkerResourceStorageDiskTest | 1156 class ServiceWorkerResourceStorageDiskTest |
| 1153 : public ServiceWorkerResourceStorageTest { | 1157 : public ServiceWorkerResourceStorageTest { |
| 1154 public: | 1158 public: |
| 1155 void SetUp() override { | 1159 void SetUp() override { |
| 1156 ASSERT_TRUE(InitUserDataDirectory()); | 1160 ASSERT_TRUE(InitUserDataDirectory()); |
| 1157 ServiceWorkerResourceStorageTest::SetUp(); | 1161 ServiceWorkerResourceStorageTest::SetUp(); |
| 1158 } | 1162 } |
| 1159 | 1163 |
| 1160 }; | 1164 }; |
| 1161 | 1165 |
| 1162 TEST_F(ServiceWorkerResourceStorageTest, | 1166 TEST_P(ServiceWorkerResourceStorageTest, |
| 1163 WriteMetadataWithServiceWorkerResponseMetadataWriter) { | 1167 WriteMetadataWithServiceWorkerResponseMetadataWriter) { |
| 1164 const char kMetadata1[] = "Test metadata"; | 1168 const char kMetadata1[] = "Test metadata"; |
| 1165 const char kMetadata2[] = "small"; | 1169 const char kMetadata2[] = "small"; |
| 1166 int64_t new_resource_id_ = storage()->NewResourceId(); | 1170 int64_t new_resource_id_ = storage()->NewResourceId(); |
| 1167 // Writing metadata to nonexistent resoirce ID must fail. | 1171 // Writing metadata to nonexistent resoirce ID must fail. |
| 1168 EXPECT_GE(0, WriteResponseMetadata(storage(), new_resource_id_, kMetadata1)); | 1172 EXPECT_GE(0, WriteResponseMetadata(storage(), new_resource_id_, kMetadata1)); |
| 1169 | 1173 |
| 1170 // Check metadata is written. | 1174 // Check metadata is written. |
| 1171 EXPECT_EQ(static_cast<int>(strlen(kMetadata1)), | 1175 EXPECT_EQ(static_cast<int>(strlen(kMetadata1)), |
| 1172 WriteResponseMetadata(storage(), resource_id1_, kMetadata1)); | 1176 WriteResponseMetadata(storage(), resource_id1_, kMetadata1)); |
| 1173 EXPECT_TRUE(VerifyResponseMetadata(storage(), resource_id1_, kMetadata1)); | 1177 EXPECT_TRUE(VerifyResponseMetadata(storage(), resource_id1_, kMetadata1)); |
| 1174 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true)); | 1178 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true)); |
| 1175 | 1179 |
| 1176 // Check metadata is written and truncated. | 1180 // Check metadata is written and truncated. |
| 1177 EXPECT_EQ(static_cast<int>(strlen(kMetadata2)), | 1181 EXPECT_EQ(static_cast<int>(strlen(kMetadata2)), |
| 1178 WriteResponseMetadata(storage(), resource_id1_, kMetadata2)); | 1182 WriteResponseMetadata(storage(), resource_id1_, kMetadata2)); |
| 1179 EXPECT_TRUE(VerifyResponseMetadata(storage(), resource_id1_, kMetadata2)); | 1183 EXPECT_TRUE(VerifyResponseMetadata(storage(), resource_id1_, kMetadata2)); |
| 1180 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true)); | 1184 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true)); |
| 1181 | 1185 |
| 1182 // Check metadata is deleted. | 1186 // Check metadata is deleted. |
| 1183 EXPECT_EQ(0, WriteResponseMetadata(storage(), resource_id1_, "")); | 1187 EXPECT_EQ(0, WriteResponseMetadata(storage(), resource_id1_, "")); |
| 1184 EXPECT_FALSE(VerifyResponseMetadata(storage(), resource_id1_, "")); | 1188 EXPECT_FALSE(VerifyResponseMetadata(storage(), resource_id1_, "")); |
| 1185 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true)); | 1189 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true)); |
| 1186 } | 1190 } |
| 1187 | 1191 |
| 1188 TEST_F(ServiceWorkerResourceStorageTest, | 1192 TEST_P(ServiceWorkerResourceStorageTest, |
| 1189 WriteMetadataWithServiceWorkerScriptCacheMap) { | 1193 WriteMetadataWithServiceWorkerScriptCacheMap) { |
| 1190 const char kMetadata1[] = "Test metadata"; | 1194 const char kMetadata1[] = "Test metadata"; |
| 1191 const char kMetadata2[] = "small"; | 1195 const char kMetadata2[] = "small"; |
| 1192 ServiceWorkerVersion* version = registration_->waiting_version(); | 1196 ServiceWorkerVersion* version = registration_->waiting_version(); |
| 1193 EXPECT_TRUE(version); | 1197 EXPECT_TRUE(version); |
| 1194 | 1198 |
| 1195 // Writing metadata to nonexistent URL must fail. | 1199 // Writing metadata to nonexistent URL must fail. |
| 1196 EXPECT_GE(0, | 1200 EXPECT_GE(0, |
| 1197 WriteMetadata(version, GURL("http://www.test.not/nonexistent.js"), | 1201 WriteMetadata(version, GURL("http://www.test.not/nonexistent.js"), |
| 1198 kMetadata1)); | 1202 kMetadata1)); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1211 WriteMetadata(version, script_, kMetadata2)); | 1215 WriteMetadata(version, script_, kMetadata2)); |
| 1212 EXPECT_TRUE(VerifyResponseMetadata(storage(), resource_id1_, kMetadata2)); | 1216 EXPECT_TRUE(VerifyResponseMetadata(storage(), resource_id1_, kMetadata2)); |
| 1213 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true)); | 1217 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true)); |
| 1214 | 1218 |
| 1215 // Check metadata is deleted. | 1219 // Check metadata is deleted. |
| 1216 EXPECT_EQ(0, ClearMetadata(version, script_)); | 1220 EXPECT_EQ(0, ClearMetadata(version, script_)); |
| 1217 EXPECT_FALSE(VerifyResponseMetadata(storage(), resource_id1_, "")); | 1221 EXPECT_FALSE(VerifyResponseMetadata(storage(), resource_id1_, "")); |
| 1218 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true)); | 1222 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true)); |
| 1219 } | 1223 } |
| 1220 | 1224 |
| 1221 TEST_F(ServiceWorkerResourceStorageTest, DeleteRegistration_NoLiveVersion) { | 1225 TEST_P(ServiceWorkerResourceStorageTest, DeleteRegistration_NoLiveVersion) { |
| 1222 bool was_called = false; | 1226 bool was_called = false; |
| 1223 ServiceWorkerStatusCode result = SERVICE_WORKER_ERROR_FAILED; | 1227 ServiceWorkerStatusCode result = SERVICE_WORKER_ERROR_FAILED; |
| 1224 std::set<int64_t> verify_ids; | 1228 std::set<int64_t> verify_ids; |
| 1225 | 1229 |
| 1226 registration_->SetWaitingVersion(NULL); | 1230 registration_->SetWaitingVersion(NULL); |
| 1227 registration_ = NULL; | 1231 registration_ = NULL; |
| 1228 | 1232 |
| 1229 // Deleting the registration should result in the resources being added to the | 1233 // Deleting the registration should result in the resources being added to the |
| 1230 // purgeable list and then doomed in the disk cache and removed from that | 1234 // purgeable list and then doomed in the disk cache and removed from that |
| 1231 // list. | 1235 // list. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1243 EXPECT_EQ(2u, verify_ids.size()); | 1247 EXPECT_EQ(2u, verify_ids.size()); |
| 1244 verify_ids.clear(); | 1248 verify_ids.clear(); |
| 1245 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1249 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1246 storage()->database_->GetPurgeableResourceIds(&verify_ids)); | 1250 storage()->database_->GetPurgeableResourceIds(&verify_ids)); |
| 1247 EXPECT_TRUE(verify_ids.empty()); | 1251 EXPECT_TRUE(verify_ids.empty()); |
| 1248 | 1252 |
| 1249 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id1_, false)); | 1253 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id1_, false)); |
| 1250 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id2_, false)); | 1254 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id2_, false)); |
| 1251 } | 1255 } |
| 1252 | 1256 |
| 1253 TEST_F(ServiceWorkerResourceStorageTest, DeleteRegistration_WaitingVersion) { | 1257 TEST_P(ServiceWorkerResourceStorageTest, DeleteRegistration_WaitingVersion) { |
| 1254 bool was_called = false; | 1258 bool was_called = false; |
| 1255 ServiceWorkerStatusCode result = SERVICE_WORKER_ERROR_FAILED; | 1259 ServiceWorkerStatusCode result = SERVICE_WORKER_ERROR_FAILED; |
| 1256 std::set<int64_t> verify_ids; | 1260 std::set<int64_t> verify_ids; |
| 1257 | 1261 |
| 1258 // Deleting the registration should result in the resources being added to the | 1262 // Deleting the registration should result in the resources being added to the |
| 1259 // purgeable list and then doomed in the disk cache and removed from that | 1263 // purgeable list and then doomed in the disk cache and removed from that |
| 1260 // list. | 1264 // list. |
| 1261 storage()->DeleteRegistration( | 1265 storage()->DeleteRegistration( |
| 1262 registration_->id(), | 1266 registration_->id(), |
| 1263 scope_.GetOrigin(), | 1267 scope_.GetOrigin(), |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1285 EXPECT_EQ(2u, verify_ids.size()); | 1289 EXPECT_EQ(2u, verify_ids.size()); |
| 1286 verify_ids.clear(); | 1290 verify_ids.clear(); |
| 1287 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1291 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1288 storage()->database_->GetPurgeableResourceIds(&verify_ids)); | 1292 storage()->database_->GetPurgeableResourceIds(&verify_ids)); |
| 1289 EXPECT_TRUE(verify_ids.empty()); | 1293 EXPECT_TRUE(verify_ids.empty()); |
| 1290 | 1294 |
| 1291 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id1_, false)); | 1295 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id1_, false)); |
| 1292 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id2_, false)); | 1296 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id2_, false)); |
| 1293 } | 1297 } |
| 1294 | 1298 |
| 1295 TEST_F(ServiceWorkerResourceStorageTest, DeleteRegistration_ActiveVersion) { | 1299 TEST_P(ServiceWorkerResourceStorageTest, DeleteRegistration_ActiveVersion) { |
| 1296 // Promote the worker to active and add a controllee. | 1300 // Promote the worker to active and add a controllee. |
| 1297 registration_->SetActiveVersion(registration_->waiting_version()); | 1301 registration_->SetActiveVersion(registration_->waiting_version()); |
| 1298 storage()->UpdateToActiveState( | 1302 storage()->UpdateToActiveState( |
| 1299 registration_.get(), base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); | 1303 registration_.get(), base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
| 1300 std::unique_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost( | 1304 std::unique_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost( |
| 1301 33 /* dummy render process id */, MSG_ROUTING_NONE, | 1305 33 /* dummy render process id */, MSG_ROUTING_NONE, |
| 1302 1 /* dummy provider_id */, SERVICE_WORKER_PROVIDER_FOR_WINDOW, | 1306 1 /* dummy provider_id */, SERVICE_WORKER_PROVIDER_FOR_WINDOW, |
| 1303 ServiceWorkerProviderHost::FrameSecurityLevel::SECURE, | 1307 ServiceWorkerProviderHost::FrameSecurityLevel::SECURE, |
| 1304 context()->AsWeakPtr(), NULL)); | 1308 context()->AsWeakPtr(), NULL)); |
| 1305 registration_->active_version()->AddControllee(host.get()); | 1309 registration_->active_version()->AddControllee(host.get()); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1336 base::RunLoop().RunUntilIdle(); | 1340 base::RunLoop().RunUntilIdle(); |
| 1337 verify_ids.clear(); | 1341 verify_ids.clear(); |
| 1338 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1342 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1339 storage()->database_->GetPurgeableResourceIds(&verify_ids)); | 1343 storage()->database_->GetPurgeableResourceIds(&verify_ids)); |
| 1340 EXPECT_TRUE(verify_ids.empty()); | 1344 EXPECT_TRUE(verify_ids.empty()); |
| 1341 | 1345 |
| 1342 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id1_, false)); | 1346 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id1_, false)); |
| 1343 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id2_, false)); | 1347 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id2_, false)); |
| 1344 } | 1348 } |
| 1345 | 1349 |
| 1346 TEST_F(ServiceWorkerResourceStorageDiskTest, CleanupOnRestart) { | 1350 TEST_P(ServiceWorkerResourceStorageDiskTest, CleanupOnRestart) { |
| 1347 // Promote the worker to active and add a controllee. | 1351 // Promote the worker to active and add a controllee. |
| 1348 registration_->SetActiveVersion(registration_->waiting_version()); | 1352 registration_->SetActiveVersion(registration_->waiting_version()); |
| 1349 registration_->SetWaitingVersion(NULL); | 1353 registration_->SetWaitingVersion(NULL); |
| 1350 storage()->UpdateToActiveState( | 1354 storage()->UpdateToActiveState( |
| 1351 registration_.get(), base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); | 1355 registration_.get(), base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
| 1352 std::unique_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost( | 1356 std::unique_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost( |
| 1353 33 /* dummy render process id */, MSG_ROUTING_NONE, | 1357 33 /* dummy render process id */, MSG_ROUTING_NONE, |
| 1354 1 /* dummy provider_id */, SERVICE_WORKER_PROVIDER_FOR_WINDOW, | 1358 1 /* dummy provider_id */, SERVICE_WORKER_PROVIDER_FOR_WINDOW, |
| 1355 ServiceWorkerProviderHost::FrameSecurityLevel::SECURE, | 1359 ServiceWorkerProviderHost::FrameSecurityLevel::SECURE, |
| 1356 context()->AsWeakPtr(), NULL)); | 1360 context()->AsWeakPtr(), NULL)); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1421 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1425 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1422 storage()->database_->GetPurgeableResourceIds(&verify_ids)); | 1426 storage()->database_->GetPurgeableResourceIds(&verify_ids)); |
| 1423 EXPECT_TRUE(verify_ids.empty()); | 1427 EXPECT_TRUE(verify_ids.empty()); |
| 1424 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id1_, false)); | 1428 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id1_, false)); |
| 1425 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id2_, false)); | 1429 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id2_, false)); |
| 1426 EXPECT_FALSE( | 1430 EXPECT_FALSE( |
| 1427 VerifyBasicResponse(storage(), kStaleUncommittedResourceId, false)); | 1431 VerifyBasicResponse(storage(), kStaleUncommittedResourceId, false)); |
| 1428 EXPECT_TRUE(VerifyBasicResponse(storage(), kNewResourceId, true)); | 1432 EXPECT_TRUE(VerifyBasicResponse(storage(), kNewResourceId, true)); |
| 1429 } | 1433 } |
| 1430 | 1434 |
| 1431 TEST_F(ServiceWorkerResourceStorageDiskTest, DeleteAndStartOver) { | 1435 TEST_P(ServiceWorkerResourceStorageDiskTest, DeleteAndStartOver) { |
| 1432 EXPECT_FALSE(storage()->IsDisabled()); | 1436 EXPECT_FALSE(storage()->IsDisabled()); |
| 1433 ASSERT_TRUE(base::DirectoryExists(storage()->GetDiskCachePath())); | 1437 ASSERT_TRUE(base::DirectoryExists(storage()->GetDiskCachePath())); |
| 1434 ASSERT_TRUE(base::DirectoryExists(storage()->GetDatabasePath())); | 1438 ASSERT_TRUE(base::DirectoryExists(storage()->GetDatabasePath())); |
| 1435 | 1439 |
| 1436 base::RunLoop run_loop; | 1440 base::RunLoop run_loop; |
| 1437 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE; | 1441 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE; |
| 1438 storage()->DeleteAndStartOver( | 1442 storage()->DeleteAndStartOver( |
| 1439 base::Bind(&StatusAndQuitCallback, &status, run_loop.QuitClosure())); | 1443 base::Bind(&StatusAndQuitCallback, &status, run_loop.QuitClosure())); |
| 1440 run_loop.Run(); | 1444 run_loop.Run(); |
| 1441 | 1445 |
| 1442 EXPECT_EQ(SERVICE_WORKER_OK, status); | 1446 EXPECT_EQ(SERVICE_WORKER_OK, status); |
| 1443 EXPECT_TRUE(storage()->IsDisabled()); | 1447 EXPECT_TRUE(storage()->IsDisabled()); |
| 1444 EXPECT_FALSE(base::DirectoryExists(storage()->GetDiskCachePath())); | 1448 EXPECT_FALSE(base::DirectoryExists(storage()->GetDiskCachePath())); |
| 1445 EXPECT_FALSE(base::DirectoryExists(storage()->GetDatabasePath())); | 1449 EXPECT_FALSE(base::DirectoryExists(storage()->GetDatabasePath())); |
| 1446 } | 1450 } |
| 1447 | 1451 |
| 1448 TEST_F(ServiceWorkerResourceStorageDiskTest, | 1452 TEST_P(ServiceWorkerResourceStorageDiskTest, |
| 1449 DeleteAndStartOver_UnrelatedFileExists) { | 1453 DeleteAndStartOver_UnrelatedFileExists) { |
| 1450 EXPECT_FALSE(storage()->IsDisabled()); | 1454 EXPECT_FALSE(storage()->IsDisabled()); |
| 1451 ASSERT_TRUE(base::DirectoryExists(storage()->GetDiskCachePath())); | 1455 ASSERT_TRUE(base::DirectoryExists(storage()->GetDiskCachePath())); |
| 1452 ASSERT_TRUE(base::DirectoryExists(storage()->GetDatabasePath())); | 1456 ASSERT_TRUE(base::DirectoryExists(storage()->GetDatabasePath())); |
| 1453 | 1457 |
| 1454 // Create an unrelated file in the database directory to make sure such a file | 1458 // Create an unrelated file in the database directory to make sure such a file |
| 1455 // does not prevent DeleteAndStartOver. | 1459 // does not prevent DeleteAndStartOver. |
| 1456 base::FilePath file_path; | 1460 base::FilePath file_path; |
| 1457 ASSERT_TRUE( | 1461 ASSERT_TRUE( |
| 1458 base::CreateTemporaryFileInDir(storage()->GetDatabasePath(), &file_path)); | 1462 base::CreateTemporaryFileInDir(storage()->GetDatabasePath(), &file_path)); |
| 1459 ASSERT_TRUE(base::PathExists(file_path)); | 1463 ASSERT_TRUE(base::PathExists(file_path)); |
| 1460 | 1464 |
| 1461 base::RunLoop run_loop; | 1465 base::RunLoop run_loop; |
| 1462 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE; | 1466 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE; |
| 1463 storage()->DeleteAndStartOver( | 1467 storage()->DeleteAndStartOver( |
| 1464 base::Bind(&StatusAndQuitCallback, &status, run_loop.QuitClosure())); | 1468 base::Bind(&StatusAndQuitCallback, &status, run_loop.QuitClosure())); |
| 1465 run_loop.Run(); | 1469 run_loop.Run(); |
| 1466 | 1470 |
| 1467 EXPECT_EQ(SERVICE_WORKER_OK, status); | 1471 EXPECT_EQ(SERVICE_WORKER_OK, status); |
| 1468 EXPECT_TRUE(storage()->IsDisabled()); | 1472 EXPECT_TRUE(storage()->IsDisabled()); |
| 1469 EXPECT_FALSE(base::DirectoryExists(storage()->GetDiskCachePath())); | 1473 EXPECT_FALSE(base::DirectoryExists(storage()->GetDiskCachePath())); |
| 1470 EXPECT_FALSE(base::DirectoryExists(storage()->GetDatabasePath())); | 1474 EXPECT_FALSE(base::DirectoryExists(storage()->GetDatabasePath())); |
| 1471 } | 1475 } |
| 1472 | 1476 |
| 1473 TEST_F(ServiceWorkerResourceStorageDiskTest, | 1477 TEST_P(ServiceWorkerResourceStorageDiskTest, |
| 1474 DeleteAndStartOver_OpenedFileExists) { | 1478 DeleteAndStartOver_OpenedFileExists) { |
| 1475 EXPECT_FALSE(storage()->IsDisabled()); | 1479 EXPECT_FALSE(storage()->IsDisabled()); |
| 1476 ASSERT_TRUE(base::DirectoryExists(storage()->GetDiskCachePath())); | 1480 ASSERT_TRUE(base::DirectoryExists(storage()->GetDiskCachePath())); |
| 1477 ASSERT_TRUE(base::DirectoryExists(storage()->GetDatabasePath())); | 1481 ASSERT_TRUE(base::DirectoryExists(storage()->GetDatabasePath())); |
| 1478 | 1482 |
| 1479 // Create an unrelated opened file in the database directory to make sure such | 1483 // Create an unrelated opened file in the database directory to make sure such |
| 1480 // a file does not prevent DeleteAndStartOver on non-Windows platforms. | 1484 // a file does not prevent DeleteAndStartOver on non-Windows platforms. |
| 1481 base::FilePath file_path; | 1485 base::FilePath file_path; |
| 1482 base::ScopedFILE file(base::CreateAndOpenTemporaryFileInDir( | 1486 base::ScopedFILE file(base::CreateAndOpenTemporaryFileInDir( |
| 1483 storage()->GetDatabasePath(), &file_path)); | 1487 storage()->GetDatabasePath(), &file_path)); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1497 EXPECT_TRUE(base::DirectoryExists(storage()->GetDiskCachePath())); | 1501 EXPECT_TRUE(base::DirectoryExists(storage()->GetDiskCachePath())); |
| 1498 EXPECT_TRUE(base::DirectoryExists(storage()->GetDatabasePath())); | 1502 EXPECT_TRUE(base::DirectoryExists(storage()->GetDatabasePath())); |
| 1499 #else | 1503 #else |
| 1500 EXPECT_EQ(SERVICE_WORKER_OK, status); | 1504 EXPECT_EQ(SERVICE_WORKER_OK, status); |
| 1501 EXPECT_TRUE(storage()->IsDisabled()); | 1505 EXPECT_TRUE(storage()->IsDisabled()); |
| 1502 EXPECT_FALSE(base::DirectoryExists(storage()->GetDiskCachePath())); | 1506 EXPECT_FALSE(base::DirectoryExists(storage()->GetDiskCachePath())); |
| 1503 EXPECT_FALSE(base::DirectoryExists(storage()->GetDatabasePath())); | 1507 EXPECT_FALSE(base::DirectoryExists(storage()->GetDatabasePath())); |
| 1504 #endif | 1508 #endif |
| 1505 } | 1509 } |
| 1506 | 1510 |
| 1507 TEST_F(ServiceWorkerResourceStorageTest, UpdateRegistration) { | 1511 TEST_P(ServiceWorkerResourceStorageTest, UpdateRegistration) { |
| 1508 // Promote the worker to active worker and add a controllee. | 1512 // Promote the worker to active worker and add a controllee. |
| 1509 registration_->SetActiveVersion(registration_->waiting_version()); | 1513 registration_->SetActiveVersion(registration_->waiting_version()); |
| 1510 storage()->UpdateToActiveState( | 1514 storage()->UpdateToActiveState( |
| 1511 registration_.get(), base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); | 1515 registration_.get(), base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
| 1512 std::unique_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost( | 1516 std::unique_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost( |
| 1513 33 /* dummy render process id */, MSG_ROUTING_NONE, | 1517 33 /* dummy render process id */, MSG_ROUTING_NONE, |
| 1514 1 /* dummy provider_id */, SERVICE_WORKER_PROVIDER_FOR_WINDOW, | 1518 1 /* dummy provider_id */, SERVICE_WORKER_PROVIDER_FOR_WINDOW, |
| 1515 ServiceWorkerProviderHost::FrameSecurityLevel::SECURE, | 1519 ServiceWorkerProviderHost::FrameSecurityLevel::SECURE, |
| 1516 context()->AsWeakPtr(), NULL)); | 1520 context()->AsWeakPtr(), NULL)); |
| 1517 registration_->active_version()->AddControllee(host.get()); | 1521 registration_->active_version()->AddControllee(host.get()); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1562 base::RunLoop().RunUntilIdle(); | 1566 base::RunLoop().RunUntilIdle(); |
| 1563 verify_ids.clear(); | 1567 verify_ids.clear(); |
| 1564 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1568 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1565 storage()->database_->GetPurgeableResourceIds(&verify_ids)); | 1569 storage()->database_->GetPurgeableResourceIds(&verify_ids)); |
| 1566 EXPECT_TRUE(verify_ids.empty()); | 1570 EXPECT_TRUE(verify_ids.empty()); |
| 1567 | 1571 |
| 1568 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id1_, false)); | 1572 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id1_, false)); |
| 1569 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id2_, false)); | 1573 EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id2_, false)); |
| 1570 } | 1574 } |
| 1571 | 1575 |
| 1572 TEST_F(ServiceWorkerStorageTest, FindRegistration_LongestScopeMatch) { | 1576 TEST_P(ServiceWorkerStorageTestP, FindRegistration_LongestScopeMatch) { |
| 1573 const GURL kDocumentUrl("http://www.example.com/scope/foo"); | 1577 const GURL kDocumentUrl("http://www.example.com/scope/foo"); |
| 1574 scoped_refptr<ServiceWorkerRegistration> found_registration; | 1578 scoped_refptr<ServiceWorkerRegistration> found_registration; |
| 1575 | 1579 |
| 1576 // Registration for "/scope/". | 1580 // Registration for "/scope/". |
| 1577 const GURL kScope1("http://www.example.com/scope/"); | 1581 const GURL kScope1("http://www.example.com/scope/"); |
| 1578 const GURL kScript1("http://www.example.com/script1.js"); | 1582 const GURL kScript1("http://www.example.com/script1.js"); |
| 1579 const int64_t kRegistrationId1 = 1; | 1583 const int64_t kRegistrationId1 = 1; |
| 1580 const int64_t kVersionId1 = 1; | 1584 const int64_t kVersionId1 = 1; |
| 1581 scoped_refptr<ServiceWorkerRegistration> live_registration1 = | 1585 scoped_refptr<ServiceWorkerRegistration> live_registration1 = |
| 1582 new ServiceWorkerRegistration(kScope1, kRegistrationId1, | 1586 new ServiceWorkerRegistration(kScope1, kRegistrationId1, |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1656 live_registration2.get(), NULL, SERVICE_WORKER_OK); | 1660 live_registration2.get(), NULL, SERVICE_WORKER_OK); |
| 1657 storage()->NotifyDoneInstallingRegistration( | 1661 storage()->NotifyDoneInstallingRegistration( |
| 1658 live_registration3.get(), NULL, SERVICE_WORKER_OK); | 1662 live_registration3.get(), NULL, SERVICE_WORKER_OK); |
| 1659 | 1663 |
| 1660 // Find a registration among installed ones. | 1664 // Find a registration among installed ones. |
| 1661 EXPECT_EQ(SERVICE_WORKER_OK, | 1665 EXPECT_EQ(SERVICE_WORKER_OK, |
| 1662 FindRegistrationForDocument(kDocumentUrl, &found_registration)); | 1666 FindRegistrationForDocument(kDocumentUrl, &found_registration)); |
| 1663 EXPECT_EQ(live_registration2, found_registration); | 1667 EXPECT_EQ(live_registration2, found_registration); |
| 1664 } | 1668 } |
| 1665 | 1669 |
| 1666 class ServiceWorkerStorageDiskTest : public ServiceWorkerStorageTest { | 1670 class ServiceWorkerStorageDiskTest : public ServiceWorkerStorageTestP { |
| 1667 public: | 1671 public: |
| 1668 void SetUp() override { | 1672 void SetUp() override { |
| 1669 ASSERT_TRUE(InitUserDataDirectory()); | 1673 ASSERT_TRUE(InitUserDataDirectory()); |
| 1670 ServiceWorkerStorageTest::SetUp(); | 1674 ServiceWorkerStorageTestP::SetUp(); |
| 1671 } | 1675 } |
| 1672 }; | 1676 }; |
| 1673 | 1677 |
| 1674 TEST_F(ServiceWorkerStorageDiskTest, OriginHasForeignFetchRegistrations) { | 1678 TEST_P(ServiceWorkerStorageDiskTest, OriginHasForeignFetchRegistrations) { |
| 1675 LazyInitialize(); | 1679 LazyInitialize(); |
| 1676 | 1680 |
| 1677 // Registration 1 for http://www.example.com | 1681 // Registration 1 for http://www.example.com |
| 1678 const GURL kScope1("http://www.example.com/scope/"); | 1682 const GURL kScope1("http://www.example.com/scope/"); |
| 1679 const GURL kScript1("http://www.example.com/script1.js"); | 1683 const GURL kScript1("http://www.example.com/script1.js"); |
| 1680 const int64_t kRegistrationId1 = 1; | 1684 const int64_t kRegistrationId1 = 1; |
| 1681 const int64_t kVersionId1 = 1; | 1685 const int64_t kVersionId1 = 1; |
| 1682 scoped_refptr<ServiceWorkerRegistration> live_registration1 = | 1686 scoped_refptr<ServiceWorkerRegistration> live_registration1 = |
| 1683 new ServiceWorkerRegistration(kScope1, kRegistrationId1, | 1687 new ServiceWorkerRegistration(kScope1, kRegistrationId1, |
| 1684 context()->AsWeakPtr()); | 1688 context()->AsWeakPtr()); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1775 | 1779 |
| 1776 // Remove other registration at first origin. | 1780 // Remove other registration at first origin. |
| 1777 EXPECT_EQ(SERVICE_WORKER_OK, | 1781 EXPECT_EQ(SERVICE_WORKER_OK, |
| 1778 DeleteRegistration(kRegistrationId2, kScope2.GetOrigin())); | 1782 DeleteRegistration(kRegistrationId2, kScope2.GetOrigin())); |
| 1779 | 1783 |
| 1780 // No foreign fetch registrations remain. | 1784 // No foreign fetch registrations remain. |
| 1781 EXPECT_FALSE(storage()->OriginHasForeignFetchRegistrations(kOrigin1)); | 1785 EXPECT_FALSE(storage()->OriginHasForeignFetchRegistrations(kOrigin1)); |
| 1782 EXPECT_FALSE(storage()->OriginHasForeignFetchRegistrations(kOrigin2)); | 1786 EXPECT_FALSE(storage()->OriginHasForeignFetchRegistrations(kOrigin2)); |
| 1783 } | 1787 } |
| 1784 | 1788 |
| 1785 class ServiceWorkerStorageOriginTrialsTest : public ServiceWorkerStorageTest { | 1789 class ServiceWorkerStorageOriginTrialsTest : public ServiceWorkerStorageTestP { |
| 1786 public: | 1790 public: |
| 1787 ServiceWorkerStorageOriginTrialsTest() {} | 1791 ServiceWorkerStorageOriginTrialsTest() {} |
| 1788 ~ServiceWorkerStorageOriginTrialsTest() override {} | 1792 ~ServiceWorkerStorageOriginTrialsTest() override {} |
| 1789 | 1793 |
| 1790 protected: | 1794 protected: |
| 1791 void WriteRegistration(const RegistrationData& registration, | 1795 void WriteRegistration(const RegistrationData& registration, |
| 1792 const std::vector<ResourceRecord>& resources) { | 1796 const std::vector<ResourceRecord>& resources) { |
| 1793 ServiceWorkerDatabase::RegistrationData deleted_version; | 1797 ServiceWorkerDatabase::RegistrationData deleted_version; |
| 1794 std::vector<int64_t> newly_purgeable_resources; | 1798 std::vector<int64_t> newly_purgeable_resources; |
| 1795 | 1799 |
| 1796 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1800 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 1797 storage()->database_->WriteRegistration( | 1801 storage()->database_->WriteRegistration( |
| 1798 registration, resources, &deleted_version, | 1802 registration, resources, &deleted_version, |
| 1799 &newly_purgeable_resources)); | 1803 &newly_purgeable_resources)); |
| 1800 } | 1804 } |
| 1801 }; | 1805 }; |
| 1802 | 1806 |
| 1803 TEST_F(ServiceWorkerStorageOriginTrialsTest, AbsentEntryAndEmptyEntry) { | 1807 TEST_P(ServiceWorkerStorageOriginTrialsTest, AbsentEntryAndEmptyEntry) { |
| 1804 const GURL origin1("http://www1.example.com"); | 1808 const GURL origin1("http://www1.example.com"); |
| 1805 const GURL scope1("http://www1.example.com/foo/"); | 1809 const GURL scope1("http://www1.example.com/foo/"); |
| 1806 RegistrationData data1; | 1810 RegistrationData data1; |
| 1807 data1.registration_id = 100; | 1811 data1.registration_id = 100; |
| 1808 data1.scope = scope1; | 1812 data1.scope = scope1; |
| 1809 data1.script = GURL(origin1.spec() + "/script.js"); | 1813 data1.script = GURL(origin1.spec() + "/script.js"); |
| 1810 data1.version_id = 1000; | 1814 data1.version_id = 1000; |
| 1811 data1.is_active = true; | 1815 data1.is_active = true; |
| 1812 data1.resources_total_size_bytes = 100; | 1816 data1.resources_total_size_bytes = 100; |
| 1813 // Don't set origin_trial_tokens to simulate old database entry. | 1817 // Don't set origin_trial_tokens to simulate old database entry. |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1843 EXPECT_EQ(SERVICE_WORKER_OK, | 1847 EXPECT_EQ(SERVICE_WORKER_OK, |
| 1844 FindRegistrationForDocument(scope2, &found_registration)); | 1848 FindRegistrationForDocument(scope2, &found_registration)); |
| 1845 ASSERT_TRUE(found_registration->active_version()); | 1849 ASSERT_TRUE(found_registration->active_version()); |
| 1846 // Empty origin_trial_tokens must exist. | 1850 // Empty origin_trial_tokens must exist. |
| 1847 ASSERT_TRUE(found_registration->active_version()->origin_trial_tokens()); | 1851 ASSERT_TRUE(found_registration->active_version()->origin_trial_tokens()); |
| 1848 EXPECT_TRUE( | 1852 EXPECT_TRUE( |
| 1849 found_registration->active_version()->origin_trial_tokens()->empty()); | 1853 found_registration->active_version()->origin_trial_tokens()->empty()); |
| 1850 } | 1854 } |
| 1851 | 1855 |
| 1852 class ServiceWorkerStorageOriginTrialsDiskTest | 1856 class ServiceWorkerStorageOriginTrialsDiskTest |
| 1853 : public ServiceWorkerStorageTest { | 1857 : public ServiceWorkerStorageTestP { |
| 1854 public: | 1858 public: |
| 1855 ServiceWorkerStorageOriginTrialsDiskTest() { | 1859 ServiceWorkerStorageOriginTrialsDiskTest() { |
| 1856 SetContentClient(&test_content_client_); | 1860 SetContentClient(&test_content_client_); |
| 1857 } | 1861 } |
| 1858 ~ServiceWorkerStorageOriginTrialsDiskTest() override { | 1862 ~ServiceWorkerStorageOriginTrialsDiskTest() override { |
| 1859 SetContentClient(nullptr); | 1863 SetContentClient(nullptr); |
| 1860 } | 1864 } |
| 1861 void SetUp() override { | 1865 void SetUp() override { |
| 1862 ASSERT_TRUE(InitUserDataDirectory()); | 1866 ASSERT_TRUE(InitUserDataDirectory()); |
| 1863 ServiceWorkerStorageTest::SetUp(); | 1867 ServiceWorkerStorageTestP::SetUp(); |
| 1864 } | 1868 } |
| 1865 | 1869 |
| 1866 private: | 1870 private: |
| 1867 class TestOriginTrialPolicy : public OriginTrialPolicy { | 1871 class TestOriginTrialPolicy : public OriginTrialPolicy { |
| 1868 public: | 1872 public: |
| 1869 base::StringPiece GetPublicKey() const override { | 1873 base::StringPiece GetPublicKey() const override { |
| 1870 return base::StringPiece(reinterpret_cast<const char*>(kTestPublicKey), | 1874 return base::StringPiece(reinterpret_cast<const char*>(kTestPublicKey), |
| 1871 arraysize(kTestPublicKey)); | 1875 arraysize(kTestPublicKey)); |
| 1872 } | 1876 } |
| 1873 bool IsFeatureDisabled(base::StringPiece feature) const override { | 1877 bool IsFeatureDisabled(base::StringPiece feature) const override { |
| 1874 return false; | 1878 return false; |
| 1875 } | 1879 } |
| 1876 }; | 1880 }; |
| 1877 class TestContentClient : public ContentClient { | 1881 class TestContentClient : public ContentClient { |
| 1878 public: | 1882 public: |
| 1879 // ContentRendererClient methods | 1883 // ContentRendererClient methods |
| 1880 OriginTrialPolicy* GetOriginTrialPolicy() override { | 1884 OriginTrialPolicy* GetOriginTrialPolicy() override { |
| 1881 return &origin_trial_policy_; | 1885 return &origin_trial_policy_; |
| 1882 } | 1886 } |
| 1883 | 1887 |
| 1884 private: | 1888 private: |
| 1885 TestOriginTrialPolicy origin_trial_policy_; | 1889 TestOriginTrialPolicy origin_trial_policy_; |
| 1886 }; | 1890 }; |
| 1887 TestContentClient test_content_client_; | 1891 TestContentClient test_content_client_; |
| 1888 }; | 1892 }; |
| 1889 | 1893 |
| 1890 TEST_F(ServiceWorkerStorageOriginTrialsDiskTest, FromMainScript) { | 1894 TEST_P(ServiceWorkerStorageOriginTrialsDiskTest, FromMainScript) { |
| 1891 LazyInitialize(); | 1895 LazyInitialize(); |
| 1892 const GURL kScope("https://valid.example.com/scope"); | 1896 const GURL kScope("https://valid.example.com/scope"); |
| 1893 const GURL kScript("https://valid.example.com/script.js"); | 1897 const GURL kScript("https://valid.example.com/script.js"); |
| 1894 const int64_t kRegistrationId = 1; | 1898 const int64_t kRegistrationId = 1; |
| 1895 const int64_t kVersionId = 1; | 1899 const int64_t kVersionId = 1; |
| 1896 scoped_refptr<ServiceWorkerRegistration> registration = | 1900 scoped_refptr<ServiceWorkerRegistration> registration = |
| 1897 new ServiceWorkerRegistration(kScope, kRegistrationId, | 1901 new ServiceWorkerRegistration(kScope, kRegistrationId, |
| 1898 context()->AsWeakPtr()); | 1902 context()->AsWeakPtr()); |
| 1899 scoped_refptr<ServiceWorkerVersion> version = new ServiceWorkerVersion( | 1903 scoped_refptr<ServiceWorkerVersion> version = new ServiceWorkerVersion( |
| 1900 registration.get(), kScript, kVersionId, context()->AsWeakPtr()); | 1904 registration.get(), kScript, kVersionId, context()->AsWeakPtr()); |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1975 const TrialTokenValidator::FeatureToTokensMap& found_tokens = | 1979 const TrialTokenValidator::FeatureToTokensMap& found_tokens = |
| 1976 *found_registration->active_version()->origin_trial_tokens(); | 1980 *found_registration->active_version()->origin_trial_tokens(); |
| 1977 ASSERT_EQ(2UL, found_tokens.size()); | 1981 ASSERT_EQ(2UL, found_tokens.size()); |
| 1978 ASSERT_EQ(1UL, found_tokens.at("Feature1").size()); | 1982 ASSERT_EQ(1UL, found_tokens.at("Feature1").size()); |
| 1979 EXPECT_EQ(kFeature1Token, found_tokens.at("Feature1")[0]); | 1983 EXPECT_EQ(kFeature1Token, found_tokens.at("Feature1")[0]); |
| 1980 ASSERT_EQ(2UL, found_tokens.at("Feature2").size()); | 1984 ASSERT_EQ(2UL, found_tokens.at("Feature2").size()); |
| 1981 EXPECT_EQ(kFeature2Token1, found_tokens.at("Feature2")[0]); | 1985 EXPECT_EQ(kFeature2Token1, found_tokens.at("Feature2")[0]); |
| 1982 EXPECT_EQ(kFeature2Token2, found_tokens.at("Feature2")[1]); | 1986 EXPECT_EQ(kFeature2Token2, found_tokens.at("Feature2")[1]); |
| 1983 } | 1987 } |
| 1984 | 1988 |
| 1989 INSTANTIATE_TEST_CASE_P(ServiceWorkerResourceStorageDiskTest, |
| 1990 ServiceWorkerResourceStorageDiskTest, |
| 1991 testing::Bool()); |
| 1992 INSTANTIATE_TEST_CASE_P(ServiceWorkerResourceStorageTest, |
| 1993 ServiceWorkerResourceStorageTest, |
| 1994 testing::Bool()); |
| 1995 INSTANTIATE_TEST_CASE_P(ServiceWorkerStorageDiskTest, |
| 1996 ServiceWorkerStorageDiskTest, |
| 1997 testing::Bool()); |
| 1998 INSTANTIATE_TEST_CASE_P(ServiceWorkerStorageOriginTrialsDiskTest, |
| 1999 ServiceWorkerStorageOriginTrialsDiskTest, |
| 2000 testing::Bool()); |
| 2001 INSTANTIATE_TEST_CASE_P(ServiceWorkerStorageOriginTrialsTest, |
| 2002 ServiceWorkerStorageOriginTrialsTest, |
| 2003 testing::Bool()); |
| 2004 INSTANTIATE_TEST_CASE_P(ServiceWorkerStorageTestP, |
| 2005 ServiceWorkerStorageTestP, |
| 2006 testing::Bool()); |
| 2007 |
| 1985 } // namespace content | 2008 } // namespace content |
| OLD | NEW |