| 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 "base/files/scoped_temp_dir.h" | 5 #include "base/files/scoped_temp_dir.h" |
| 6 #include "base/logging.h" | 6 #include "base/logging.h" |
| 7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
| 8 #include "content/browser/browser_thread_impl.h" | 8 #include "content/browser/browser_thread_impl.h" |
| 9 #include "content/browser/service_worker/embedded_worker_registry.h" | 9 #include "content/browser/service_worker/embedded_worker_registry.h" |
| 10 #include "content/browser/service_worker/embedded_worker_test_helper.h" | 10 #include "content/browser/service_worker/embedded_worker_test_helper.h" |
| (...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 397 ASSERT_TRUE(called); | 397 ASSERT_TRUE(called); |
| 398 | 398 |
| 399 ASSERT_EQ(new_registration, old_registration); | 399 ASSERT_EQ(new_registration, old_registration); |
| 400 } | 400 } |
| 401 | 401 |
| 402 class FailToStartWorkerTestHelper : public EmbeddedWorkerTestHelper { | 402 class FailToStartWorkerTestHelper : public EmbeddedWorkerTestHelper { |
| 403 public: | 403 public: |
| 404 explicit FailToStartWorkerTestHelper(int mock_render_process_id) | 404 explicit FailToStartWorkerTestHelper(int mock_render_process_id) |
| 405 : EmbeddedWorkerTestHelper(mock_render_process_id) {} | 405 : EmbeddedWorkerTestHelper(mock_render_process_id) {} |
| 406 | 406 |
| 407 virtual void OnStartWorker(int embedded_worker_id, | 407 void OnStartWorker(int embedded_worker_id, |
| 408 int64 service_worker_version_id, | 408 int64 service_worker_version_id, |
| 409 const GURL& scope, | 409 const GURL& scope, |
| 410 const GURL& script_url, | 410 const GURL& script_url, |
| 411 bool pause_after_download) override { | 411 bool pause_after_download) override { |
| 412 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 412 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 413 registry()->OnWorkerStopped(worker->process_id(), embedded_worker_id); | 413 registry()->OnWorkerStopped(worker->process_id(), embedded_worker_id); |
| 414 } | 414 } |
| 415 }; | 415 }; |
| 416 | 416 |
| 417 TEST_F(ServiceWorkerJobTest, Register_FailToStartWorker) { | 417 TEST_F(ServiceWorkerJobTest, Register_FailToStartWorker) { |
| 418 helper_.reset(new FailToStartWorkerTestHelper(render_process_id_)); | 418 helper_.reset(new FailToStartWorkerTestHelper(render_process_id_)); |
| 419 | 419 |
| 420 bool called = false; | 420 bool called = false; |
| 421 scoped_refptr<ServiceWorkerRegistration> registration; | 421 scoped_refptr<ServiceWorkerRegistration> registration; |
| (...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 890 }; | 890 }; |
| 891 | 891 |
| 892 struct StateChangeLogEntry { | 892 struct StateChangeLogEntry { |
| 893 int64 version_id; | 893 int64 version_id; |
| 894 ServiceWorkerVersion::Status status; | 894 ServiceWorkerVersion::Status status; |
| 895 }; | 895 }; |
| 896 | 896 |
| 897 UpdateJobTestHelper(int mock_render_process_id) | 897 UpdateJobTestHelper(int mock_render_process_id) |
| 898 : EmbeddedWorkerTestHelper(mock_render_process_id), | 898 : EmbeddedWorkerTestHelper(mock_render_process_id), |
| 899 update_found_(false) {} | 899 update_found_(false) {} |
| 900 virtual ~UpdateJobTestHelper() { | 900 ~UpdateJobTestHelper() override { |
| 901 if (registration_.get()) | 901 if (registration_.get()) |
| 902 registration_->RemoveListener(this); | 902 registration_->RemoveListener(this); |
| 903 } | 903 } |
| 904 | 904 |
| 905 ServiceWorkerStorage* storage() { return context()->storage(); } | 905 ServiceWorkerStorage* storage() { return context()->storage(); } |
| 906 ServiceWorkerJobCoordinator* job_coordinator() { | 906 ServiceWorkerJobCoordinator* job_coordinator() { |
| 907 return context()->job_coordinator(); | 907 return context()->job_coordinator(); |
| 908 } | 908 } |
| 909 | 909 |
| 910 scoped_refptr<ServiceWorkerRegistration> SetupInitialRegistration( | 910 scoped_refptr<ServiceWorkerRegistration> SetupInitialRegistration( |
| 911 const GURL& test_origin) { | 911 const GURL& test_origin) { |
| 912 scoped_refptr<ServiceWorkerRegistration> registration; | 912 scoped_refptr<ServiceWorkerRegistration> registration; |
| 913 bool called = false; | 913 bool called = false; |
| 914 job_coordinator()->Register( | 914 job_coordinator()->Register( |
| 915 test_origin.Resolve(kScope), | 915 test_origin.Resolve(kScope), |
| 916 test_origin.Resolve(kScript), | 916 test_origin.Resolve(kScript), |
| 917 NULL, | 917 NULL, |
| 918 SaveRegistration(SERVICE_WORKER_OK, &called, ®istration)); | 918 SaveRegistration(SERVICE_WORKER_OK, &called, ®istration)); |
| 919 base::RunLoop().RunUntilIdle(); | 919 base::RunLoop().RunUntilIdle(); |
| 920 EXPECT_TRUE(called); | 920 EXPECT_TRUE(called); |
| 921 EXPECT_TRUE(registration.get()); | 921 EXPECT_TRUE(registration.get()); |
| 922 EXPECT_TRUE(registration->active_version()); | 922 EXPECT_TRUE(registration->active_version()); |
| 923 EXPECT_FALSE(registration->installing_version()); | 923 EXPECT_FALSE(registration->installing_version()); |
| 924 EXPECT_FALSE(registration->waiting_version()); | 924 EXPECT_FALSE(registration->waiting_version()); |
| 925 registration_ = registration; | 925 registration_ = registration; |
| 926 return registration; | 926 return registration; |
| 927 } | 927 } |
| 928 | 928 |
| 929 // EmbeddedWorkerTestHelper overrides | 929 // EmbeddedWorkerTestHelper overrides |
| 930 virtual void OnStartWorker(int embedded_worker_id, | 930 void OnStartWorker(int embedded_worker_id, |
| 931 int64 version_id, | 931 int64 version_id, |
| 932 const GURL& scope, | 932 const GURL& scope, |
| 933 const GURL& script, | 933 const GURL& script, |
| 934 bool pause_after_download) override { | 934 bool pause_after_download) override { |
| 935 const std::string kMockScriptBody = "mock_script"; | 935 const std::string kMockScriptBody = "mock_script"; |
| 936 const uint64 kMockScriptSize = 19284; | 936 const uint64 kMockScriptSize = 19284; |
| 937 ServiceWorkerVersion* version = context()->GetLiveVersion(version_id); | 937 ServiceWorkerVersion* version = context()->GetLiveVersion(version_id); |
| 938 ASSERT_TRUE(version); | 938 ASSERT_TRUE(version); |
| 939 version->AddListener(this); | 939 version->AddListener(this); |
| 940 | 940 |
| 941 if (!pause_after_download) { | 941 if (!pause_after_download) { |
| 942 // Spoof caching the script for the initial version. | 942 // Spoof caching the script for the initial version. |
| 943 int64 resource_id = storage()->NewResourceId(); | 943 int64 resource_id = storage()->NewResourceId(); |
| 944 version->script_cache_map()->NotifyStartedCaching(script, resource_id); | 944 version->script_cache_map()->NotifyStartedCaching(script, resource_id); |
| 945 WriteStringResponse(storage(), resource_id, kMockScriptBody); | 945 WriteStringResponse(storage(), resource_id, kMockScriptBody); |
| 946 version->script_cache_map()->NotifyFinishedCaching( | 946 version->script_cache_map()->NotifyFinishedCaching( |
| 947 script, kMockScriptSize, net::URLRequestStatus()); | 947 script, kMockScriptSize, net::URLRequestStatus()); |
| 948 } else { | 948 } else { |
| 949 // Spoof caching the script for the new version. | 949 // Spoof caching the script for the new version. |
| 950 int64 resource_id = storage()->NewResourceId(); | 950 int64 resource_id = storage()->NewResourceId(); |
| 951 version->script_cache_map()->NotifyStartedCaching(script, resource_id); | 951 version->script_cache_map()->NotifyStartedCaching(script, resource_id); |
| 952 if (script.GetOrigin() == kNoChangeOrigin) | 952 if (script.GetOrigin() == kNoChangeOrigin) |
| 953 WriteStringResponse(storage(), resource_id, kMockScriptBody); | 953 WriteStringResponse(storage(), resource_id, kMockScriptBody); |
| 954 else | 954 else |
| 955 WriteStringResponse(storage(), resource_id, "mock_different_script"); | 955 WriteStringResponse(storage(), resource_id, "mock_different_script"); |
| 956 version->script_cache_map()->NotifyFinishedCaching( | 956 version->script_cache_map()->NotifyFinishedCaching( |
| 957 script, kMockScriptSize, net::URLRequestStatus()); | 957 script, kMockScriptSize, net::URLRequestStatus()); |
| 958 } | 958 } |
| 959 EmbeddedWorkerTestHelper::OnStartWorker( | 959 EmbeddedWorkerTestHelper::OnStartWorker( |
| 960 embedded_worker_id, version_id, scope, script, pause_after_download); | 960 embedded_worker_id, version_id, scope, script, pause_after_download); |
| 961 } | 961 } |
| 962 | 962 |
| 963 // ServiceWorkerRegistration::Listener overrides | 963 // ServiceWorkerRegistration::Listener overrides |
| 964 virtual void OnVersionAttributesChanged( | 964 void OnVersionAttributesChanged( |
| 965 ServiceWorkerRegistration* registration, | 965 ServiceWorkerRegistration* registration, |
| 966 ChangedVersionAttributesMask changed_mask, | 966 ChangedVersionAttributesMask changed_mask, |
| 967 const ServiceWorkerRegistrationInfo& info) override { | 967 const ServiceWorkerRegistrationInfo& info) override { |
| 968 AttributeChangeLogEntry entry; | 968 AttributeChangeLogEntry entry; |
| 969 entry.registration_id = registration->id(); | 969 entry.registration_id = registration->id(); |
| 970 entry.mask = changed_mask; | 970 entry.mask = changed_mask; |
| 971 entry.info = info; | 971 entry.info = info; |
| 972 attribute_change_log_.push_back(entry); | 972 attribute_change_log_.push_back(entry); |
| 973 } | 973 } |
| 974 | 974 |
| 975 virtual void OnRegistrationFailed( | 975 void OnRegistrationFailed(ServiceWorkerRegistration* registration) override { |
| 976 NOTREACHED(); |
| 977 } |
| 978 |
| 979 void OnRegistrationFinishedUninstalling( |
| 976 ServiceWorkerRegistration* registration) override { | 980 ServiceWorkerRegistration* registration) override { |
| 977 NOTREACHED(); | 981 NOTREACHED(); |
| 978 } | 982 } |
| 979 | 983 |
| 980 virtual void OnRegistrationFinishedUninstalling( | 984 void OnUpdateFound(ServiceWorkerRegistration* registration) override { |
| 981 ServiceWorkerRegistration* registration) override { | |
| 982 NOTREACHED(); | |
| 983 } | |
| 984 | |
| 985 virtual void OnUpdateFound( | |
| 986 ServiceWorkerRegistration* registration) override { | |
| 987 ASSERT_FALSE(update_found_); | 985 ASSERT_FALSE(update_found_); |
| 988 update_found_ = true; | 986 update_found_ = true; |
| 989 } | 987 } |
| 990 | 988 |
| 991 // ServiceWorkerVersion::Listener overrides | 989 // ServiceWorkerVersion::Listener overrides |
| 992 virtual void OnVersionStateChanged(ServiceWorkerVersion* version) override { | 990 void OnVersionStateChanged(ServiceWorkerVersion* version) override { |
| 993 StateChangeLogEntry entry; | 991 StateChangeLogEntry entry; |
| 994 entry.version_id = version->version_id(); | 992 entry.version_id = version->version_id(); |
| 995 entry.status = version->status(); | 993 entry.status = version->status(); |
| 996 state_change_log_.push_back(entry); | 994 state_change_log_.push_back(entry); |
| 997 } | 995 } |
| 998 | 996 |
| 999 scoped_refptr<ServiceWorkerRegistration> registration_; | 997 scoped_refptr<ServiceWorkerRegistration> registration_; |
| 1000 | 998 |
| 1001 std::vector<AttributeChangeLogEntry> attribute_change_log_; | 999 std::vector<AttributeChangeLogEntry> attribute_change_log_; |
| 1002 std::vector<StateChangeLogEntry> state_change_log_; | 1000 std::vector<StateChangeLogEntry> state_change_log_; |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1191 EXPECT_TRUE(called); | 1189 EXPECT_TRUE(called); |
| 1192 | 1190 |
| 1193 // Verify the registration was not modified by the Update. | 1191 // Verify the registration was not modified by the Update. |
| 1194 EXPECT_TRUE(registration->is_uninstalling()); | 1192 EXPECT_TRUE(registration->is_uninstalling()); |
| 1195 EXPECT_EQ(active_version, registration->active_version()); | 1193 EXPECT_EQ(active_version, registration->active_version()); |
| 1196 EXPECT_EQ(NULL, registration->waiting_version()); | 1194 EXPECT_EQ(NULL, registration->waiting_version()); |
| 1197 EXPECT_EQ(NULL, registration->installing_version()); | 1195 EXPECT_EQ(NULL, registration->installing_version()); |
| 1198 } | 1196 } |
| 1199 | 1197 |
| 1200 } // namespace content | 1198 } // namespace content |
| OLD | NEW |