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 <stdint.h> | 5 #include <stdint.h> |
6 #include <tuple> | 6 #include <tuple> |
7 | 7 |
8 #include "base/files/scoped_temp_dir.h" | 8 #include "base/files/scoped_temp_dir.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 scoped_refptr<ServiceWorkerRegistration> new_registration_by_pattern = | 363 scoped_refptr<ServiceWorkerRegistration> new_registration_by_pattern = |
364 FindRegistrationForPattern(pattern); | 364 FindRegistrationForPattern(pattern); |
365 | 365 |
366 ASSERT_EQ(new_registration, old_registration); | 366 ASSERT_EQ(new_registration, old_registration); |
367 } | 367 } |
368 | 368 |
369 class FailToStartWorkerTestHelper : public EmbeddedWorkerTestHelper { | 369 class FailToStartWorkerTestHelper : public EmbeddedWorkerTestHelper { |
370 public: | 370 public: |
371 FailToStartWorkerTestHelper() : EmbeddedWorkerTestHelper(base::FilePath()) {} | 371 FailToStartWorkerTestHelper() : EmbeddedWorkerTestHelper(base::FilePath()) {} |
372 | 372 |
373 void OnStartWorker(int embedded_worker_id, | 373 void OnStartWorker( |
374 int64_t service_worker_version_id, | 374 int embedded_worker_id, |
375 const GURL& scope, | 375 int64_t service_worker_version_id, |
376 const GURL& script_url, | 376 const GURL& scope, |
377 bool pause_after_download) override { | 377 const GURL& script_url, |
| 378 bool pause_after_download, |
| 379 mojom::ServiceWorkerEventDispatcherRequest request) override { |
378 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 380 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
379 registry()->OnWorkerStopped(worker->process_id(), embedded_worker_id); | 381 registry()->OnWorkerStopped(worker->process_id(), embedded_worker_id); |
380 } | 382 } |
381 }; | 383 }; |
382 | 384 |
383 TEST_F(ServiceWorkerJobTest, Register_FailToStartWorker) { | 385 TEST_F(ServiceWorkerJobTest, Register_FailToStartWorker) { |
384 helper_.reset(new FailToStartWorkerTestHelper); | 386 helper_.reset(new FailToStartWorkerTestHelper); |
385 | 387 |
386 scoped_refptr<ServiceWorkerRegistration> registration = | 388 scoped_refptr<ServiceWorkerRegistration> registration = |
387 RunRegisterJob(GURL("http://www.example.com/"), | 389 RunRegisterJob(GURL("http://www.example.com/"), |
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
822 EXPECT_TRUE(called); | 824 EXPECT_TRUE(called); |
823 EXPECT_TRUE(registration.get()); | 825 EXPECT_TRUE(registration.get()); |
824 EXPECT_TRUE(registration->active_version()); | 826 EXPECT_TRUE(registration->active_version()); |
825 EXPECT_FALSE(registration->installing_version()); | 827 EXPECT_FALSE(registration->installing_version()); |
826 EXPECT_FALSE(registration->waiting_version()); | 828 EXPECT_FALSE(registration->waiting_version()); |
827 registration_ = registration; | 829 registration_ = registration; |
828 return registration; | 830 return registration; |
829 } | 831 } |
830 | 832 |
831 // EmbeddedWorkerTestHelper overrides | 833 // EmbeddedWorkerTestHelper overrides |
832 void OnStartWorker(int embedded_worker_id, | 834 void OnStartWorker( |
833 int64_t version_id, | 835 int embedded_worker_id, |
834 const GURL& scope, | 836 int64_t version_id, |
835 const GURL& script, | 837 const GURL& scope, |
836 bool pause_after_download) override { | 838 const GURL& script, |
| 839 bool pause_after_download, |
| 840 mojom::ServiceWorkerEventDispatcherRequest request) override { |
837 const std::string kMockScriptBody = "mock_script"; | 841 const std::string kMockScriptBody = "mock_script"; |
838 const uint64_t kMockScriptSize = 19284; | 842 const uint64_t kMockScriptSize = 19284; |
839 ServiceWorkerVersion* version = context()->GetLiveVersion(version_id); | 843 ServiceWorkerVersion* version = context()->GetLiveVersion(version_id); |
840 ServiceWorkerRegistration* registration = | 844 ServiceWorkerRegistration* registration = |
841 context()->GetLiveRegistration(version->registration_id()); | 845 context()->GetLiveRegistration(version->registration_id()); |
842 bool is_update = registration->active_version() && | 846 bool is_update = registration->active_version() && |
843 version != registration->active_version(); | 847 version != registration->active_version(); |
844 | 848 |
845 ASSERT_TRUE(version); | 849 ASSERT_TRUE(version); |
846 version->AddListener(this); | 850 version->AddListener(this); |
(...skipping 29 matching lines...) Expand all Loading... |
876 } | 880 } |
877 | 881 |
878 // Spoof caching the script for the new version. | 882 // Spoof caching the script for the new version. |
879 WriteStringResponse(storage(), resource_id, "mock_different_script"); | 883 WriteStringResponse(storage(), resource_id, "mock_different_script"); |
880 version->script_cache_map()->NotifyFinishedCaching( | 884 version->script_cache_map()->NotifyFinishedCaching( |
881 script, kMockScriptSize, net::OK, std::string()); | 885 script, kMockScriptSize, net::OK, std::string()); |
882 version->SetMainScriptHttpResponseInfo( | 886 version->SetMainScriptHttpResponseInfo( |
883 EmbeddedWorkerTestHelper::CreateHttpResponseInfo()); | 887 EmbeddedWorkerTestHelper::CreateHttpResponseInfo()); |
884 } | 888 } |
885 | 889 |
886 EmbeddedWorkerTestHelper::OnStartWorker( | 890 EmbeddedWorkerTestHelper::OnStartWorker(embedded_worker_id, version_id, |
887 embedded_worker_id, version_id, scope, script, pause_after_download); | 891 scope, script, pause_after_download, |
| 892 std::move(request)); |
888 } | 893 } |
889 | 894 |
890 void OnResumeAfterDownload(int embedded_worker_id) override { | 895 void OnResumeAfterDownload(int embedded_worker_id) override { |
891 if (!force_start_worker_failure_) { | 896 if (!force_start_worker_failure_) { |
892 EmbeddedWorkerTestHelper::OnResumeAfterDownload(embedded_worker_id); | 897 EmbeddedWorkerTestHelper::OnResumeAfterDownload(embedded_worker_id); |
893 } else { | 898 } else { |
894 SimulateWorkerThreadStarted(GetNextThreadId(), embedded_worker_id); | 899 SimulateWorkerThreadStarted(GetNextThreadId(), embedded_worker_id); |
895 SimulateWorkerScriptEvaluated(embedded_worker_id, false); | 900 SimulateWorkerScriptEvaluated(embedded_worker_id, false); |
896 } | 901 } |
897 } | 902 } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
932 bool force_start_worker_failure_ = false; | 937 bool force_start_worker_failure_ = false; |
933 }; | 938 }; |
934 | 939 |
935 // Helper class for update tests that evicts the active version when the update | 940 // Helper class for update tests that evicts the active version when the update |
936 // worker is about to be started. | 941 // worker is about to be started. |
937 class EvictIncumbentVersionHelper : public UpdateJobTestHelper { | 942 class EvictIncumbentVersionHelper : public UpdateJobTestHelper { |
938 public: | 943 public: |
939 EvictIncumbentVersionHelper() {} | 944 EvictIncumbentVersionHelper() {} |
940 ~EvictIncumbentVersionHelper() override {} | 945 ~EvictIncumbentVersionHelper() override {} |
941 | 946 |
942 void OnStartWorker(int embedded_worker_id, | 947 void OnStartWorker( |
943 int64_t version_id, | 948 int embedded_worker_id, |
944 const GURL& scope, | 949 int64_t version_id, |
945 const GURL& script, | 950 const GURL& scope, |
946 bool pause_after_download) override { | 951 const GURL& script, |
| 952 bool pause_after_download, |
| 953 mojom::ServiceWorkerEventDispatcherRequest request) override { |
947 ServiceWorkerVersion* version = context()->GetLiveVersion(version_id); | 954 ServiceWorkerVersion* version = context()->GetLiveVersion(version_id); |
948 ServiceWorkerRegistration* registration = | 955 ServiceWorkerRegistration* registration = |
949 context()->GetLiveRegistration(version->registration_id()); | 956 context()->GetLiveRegistration(version->registration_id()); |
950 bool is_update = registration->active_version() && | 957 bool is_update = registration->active_version() && |
951 version != registration->active_version(); | 958 version != registration->active_version(); |
952 if (is_update) { | 959 if (is_update) { |
953 // Evict the incumbent worker. | 960 // Evict the incumbent worker. |
954 ASSERT_FALSE(registration->waiting_version()); | 961 ASSERT_FALSE(registration->waiting_version()); |
955 registration->DeleteVersion( | 962 registration->DeleteVersion( |
956 make_scoped_refptr(registration->active_version())); | 963 make_scoped_refptr(registration->active_version())); |
957 } | 964 } |
958 UpdateJobTestHelper::OnStartWorker(embedded_worker_id, version_id, scope, | 965 UpdateJobTestHelper::OnStartWorker(embedded_worker_id, version_id, scope, |
959 script, pause_after_download); | 966 script, pause_after_download, |
| 967 std::move(request)); |
960 } | 968 } |
961 | 969 |
962 void OnRegistrationFailed(ServiceWorkerRegistration* registration) override { | 970 void OnRegistrationFailed(ServiceWorkerRegistration* registration) override { |
963 registration_failed_ = true; | 971 registration_failed_ = true; |
964 } | 972 } |
965 | 973 |
966 bool registration_failed_ = false; | 974 bool registration_failed_ = false; |
967 }; | 975 }; |
968 | 976 |
969 } // namespace | 977 } // namespace |
(...skipping 748 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1718 // should not be promoted to ACTIVATED because failure occur | 1726 // should not be promoted to ACTIVATED because failure occur |
1719 // during shutdown. | 1727 // during shutdown. |
1720 runner->RunUntilIdle(); | 1728 runner->RunUntilIdle(); |
1721 base::RunLoop().RunUntilIdle(); | 1729 base::RunLoop().RunUntilIdle(); |
1722 EXPECT_EQ(new_version.get(), registration->active_version()); | 1730 EXPECT_EQ(new_version.get(), registration->active_version()); |
1723 EXPECT_EQ(ServiceWorkerVersion::ACTIVATING, new_version->status()); | 1731 EXPECT_EQ(ServiceWorkerVersion::ACTIVATING, new_version->status()); |
1724 registration->RemoveListener(update_helper); | 1732 registration->RemoveListener(update_helper); |
1725 } | 1733 } |
1726 | 1734 |
1727 } // namespace content | 1735 } // namespace content |
OLD | NEW |