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

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

Issue 2958753003: Revert "Create ServiceWorkerProviderHost before starting worker" (Closed)
Patch Set: Created 3 years, 5 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
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 <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"
11 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
12 #include "base/optional.h" 12 #include "base/optional.h"
13 #include "base/run_loop.h" 13 #include "base/run_loop.h"
14 #include "base/test/test_simple_task_runner.h" 14 #include "base/test/test_simple_task_runner.h"
15 #include "base/time/time.h" 15 #include "base/time/time.h"
16 #include "content/browser/browser_thread_impl.h" 16 #include "content/browser/browser_thread_impl.h"
17 #include "content/browser/service_worker/embedded_worker_registry.h" 17 #include "content/browser/service_worker/embedded_worker_registry.h"
18 #include "content/browser/service_worker/embedded_worker_status.h" 18 #include "content/browser/service_worker/embedded_worker_status.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_context_wrapper.h" 21 #include "content/browser/service_worker/service_worker_context_wrapper.h"
22 #include "content/browser/service_worker/service_worker_disk_cache.h" 22 #include "content/browser/service_worker/service_worker_disk_cache.h"
23 #include "content/browser/service_worker/service_worker_dispatcher_host.h"
24 #include "content/browser/service_worker/service_worker_handle.h"
25 #include "content/browser/service_worker/service_worker_job_coordinator.h" 23 #include "content/browser/service_worker/service_worker_job_coordinator.h"
26 #include "content/browser/service_worker/service_worker_registration.h" 24 #include "content/browser/service_worker/service_worker_registration.h"
27 #include "content/browser/service_worker/service_worker_registration_handle.h"
28 #include "content/browser/service_worker/service_worker_registration_status.h" 25 #include "content/browser/service_worker/service_worker_registration_status.h"
29 #include "content/browser/service_worker/service_worker_test_utils.h" 26 #include "content/browser/service_worker/service_worker_test_utils.h"
30 #include "content/common/service_worker/embedded_worker_messages.h" 27 #include "content/common/service_worker/embedded_worker_messages.h"
31 #include "content/common/service_worker/service_worker_messages.h" 28 #include "content/common/service_worker/service_worker_messages.h"
32 #include "content/common/service_worker/service_worker_utils.h" 29 #include "content/common/service_worker/service_worker_utils.h"
33 #include "content/public/test/test_browser_context.h"
34 #include "content/public/test/test_browser_thread_bundle.h" 30 #include "content/public/test/test_browser_thread_bundle.h"
35 #include "ipc/ipc_test_sink.h" 31 #include "ipc/ipc_test_sink.h"
36 #include "net/base/io_buffer.h" 32 #include "net/base/io_buffer.h"
37 #include "net/base/net_errors.h" 33 #include "net/base/net_errors.h"
38 #include "net/base/test_completion_callback.h" 34 #include "net/base/test_completion_callback.h"
39 #include "net/http/http_response_headers.h" 35 #include "net/http/http_response_headers.h"
40 #include "testing/gtest/include/gtest/gtest.h" 36 #include "testing/gtest/include/gtest/gtest.h"
41 37
42 using net::IOBuffer; 38 using net::IOBuffer;
43 using net::TestCompletionCallback; 39 using net::TestCompletionCallback;
44 using net::WrappedIOBuffer; 40 using net::WrappedIOBuffer;
45 41
46 // Unit tests for testing all job registration tasks. 42 // Unit tests for testing all job registration tasks.
47 namespace content { 43 namespace content {
48 44
49 namespace { 45 namespace {
50 46
51 // A dispatcher host that holds on to all registered ServiceWorkerHandles and
52 // ServiceWorkerRegistrationHandles.
53 class KeepHandlesDispatcherHost : public ServiceWorkerDispatcherHost {
54 public:
55 KeepHandlesDispatcherHost(int render_process_id,
56 ResourceContext* resource_context)
57 : ServiceWorkerDispatcherHost(render_process_id, resource_context) {}
58 void RegisterServiceWorkerHandle(
59 std::unique_ptr<ServiceWorkerHandle> handle) override {
60 handles_.push_back(std::move(handle));
61 }
62 void RegisterServiceWorkerRegistrationHandle(
63 std::unique_ptr<ServiceWorkerRegistrationHandle> handle) override {
64 registration_handles_.push_back(std::move(handle));
65 }
66
67 void RemoveHandles() {
68 handles_.clear();
69 registration_handles_.clear();
70 }
71
72 const std::vector<std::unique_ptr<ServiceWorkerHandle>>& handles() {
73 return handles_;
74 }
75
76 const std::vector<std::unique_ptr<ServiceWorkerRegistrationHandle>>&
77 registration_handles() {
78 return registration_handles_;
79 }
80
81 private:
82 ~KeepHandlesDispatcherHost() override {}
83
84 std::vector<std::unique_ptr<ServiceWorkerHandle>> handles_;
85 std::vector<std::unique_ptr<ServiceWorkerRegistrationHandle>>
86 registration_handles_;
87 DISALLOW_COPY_AND_ASSIGN(KeepHandlesDispatcherHost);
88 };
89
90 void SaveRegistrationCallback( 47 void SaveRegistrationCallback(
91 ServiceWorkerStatusCode expected_status, 48 ServiceWorkerStatusCode expected_status,
92 bool* called, 49 bool* called,
93 scoped_refptr<ServiceWorkerRegistration>* registration_out, 50 scoped_refptr<ServiceWorkerRegistration>* registration_out,
94 ServiceWorkerStatusCode status, 51 ServiceWorkerStatusCode status,
95 const std::string& status_message, 52 const std::string& status_message,
96 ServiceWorkerRegistration* registration) { 53 ServiceWorkerRegistration* registration) {
97 EXPECT_EQ(expected_status, status); 54 EXPECT_EQ(expected_status, status);
98 *called = true; 55 *called = true;
99 *registration_out = registration; 56 *registration_out = registration;
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 EXPECT_EQ(valid_scope_1, version_->foreign_fetch_scopes_[0]); 350 EXPECT_EQ(valid_scope_1, version_->foreign_fetch_scopes_[0]);
394 EXPECT_EQ(valid_scope_2, version_->foreign_fetch_scopes_[1]); 351 EXPECT_EQ(valid_scope_2, version_->foreign_fetch_scopes_[1]);
395 EXPECT_EQ(1u, version_->foreign_fetch_origins_.size()); 352 EXPECT_EQ(1u, version_->foreign_fetch_origins_.size());
396 EXPECT_EQ(valid_origin, version_->foreign_fetch_origins_[0]); 353 EXPECT_EQ(valid_origin, version_->foreign_fetch_origins_[0]);
397 } 354 }
398 355
399 // Make sure registrations are cleaned up when they are unregistered. 356 // Make sure registrations are cleaned up when they are unregistered.
400 TEST_F(ServiceWorkerJobTest, Unregister) { 357 TEST_F(ServiceWorkerJobTest, Unregister) {
401 GURL pattern("http://www.example.com/"); 358 GURL pattern("http://www.example.com/");
402 359
403 // During registration, handles will be created for hosting the worker's
404 // context. KeepHandlesDispatcherHost will store the handles.
405 scoped_refptr<KeepHandlesDispatcherHost> dispatcher_host =
406 base::MakeRefCounted<KeepHandlesDispatcherHost>(
407 helper_->mock_render_process_id(),
408 helper_->browser_context()->GetResourceContext());
409 helper_->RegisterDispatcherHost(helper_->mock_render_process_id(),
410 dispatcher_host);
411 dispatcher_host->Init(helper_->context_wrapper());
412
413 scoped_refptr<ServiceWorkerRegistration> registration = 360 scoped_refptr<ServiceWorkerRegistration> registration =
414 RunRegisterJob(pattern, GURL("http://www.example.com/service_worker.js")); 361 RunRegisterJob(pattern, GURL("http://www.example.com/service_worker.js"));
415 362
416 EXPECT_EQ(1UL, dispatcher_host->registration_handles().size());
417 EXPECT_EQ(3UL, dispatcher_host->handles().size());
418
419 RunUnregisterJob(pattern); 363 RunUnregisterJob(pattern);
420 364
421 // Remove the handles. The only reference to the registration object should be
422 // |registration|.
423 dispatcher_host->RemoveHandles();
424 EXPECT_EQ(0UL, dispatcher_host->registration_handles().size());
425 EXPECT_EQ(0UL, dispatcher_host->handles().size());
426 ASSERT_TRUE(registration->HasOneRef()); 365 ASSERT_TRUE(registration->HasOneRef());
427 366
428 registration = FindRegistrationForPattern(pattern, 367 registration = FindRegistrationForPattern(pattern,
429 SERVICE_WORKER_ERROR_NOT_FOUND); 368 SERVICE_WORKER_ERROR_NOT_FOUND);
430 369
431 ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(nullptr), registration); 370 ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(NULL), registration);
432 } 371 }
433 372
434 TEST_F(ServiceWorkerJobTest, Unregister_NothingRegistered) { 373 TEST_F(ServiceWorkerJobTest, Unregister_NothingRegistered) {
435 GURL pattern("http://www.example.com/"); 374 GURL pattern("http://www.example.com/");
436 375
437 RunUnregisterJob(pattern, SERVICE_WORKER_ERROR_NOT_FOUND); 376 RunUnregisterJob(pattern, SERVICE_WORKER_ERROR_NOT_FOUND);
438 } 377 }
439 378
440 // Make sure registering a new script creates a new version and shares an 379 // Make sure registering a new script creates a new version and shares an
441 // existing registration. 380 // existing registration.
(...skipping 17 matching lines...) Expand all
459 398
460 scoped_refptr<ServiceWorkerRegistration> new_registration_by_pattern = 399 scoped_refptr<ServiceWorkerRegistration> new_registration_by_pattern =
461 FindRegistrationForPattern(pattern); 400 FindRegistrationForPattern(pattern);
462 401
463 ASSERT_EQ(new_registration, new_registration_by_pattern); 402 ASSERT_EQ(new_registration, new_registration_by_pattern);
464 } 403 }
465 404
466 // Make sure that when registering a duplicate pattern+script_url 405 // Make sure that when registering a duplicate pattern+script_url
467 // combination, that the same registration is used. 406 // combination, that the same registration is used.
468 TEST_F(ServiceWorkerJobTest, RegisterDuplicateScript) { 407 TEST_F(ServiceWorkerJobTest, RegisterDuplicateScript) {
469 // During registration, handles will be created for hosting the worker's
470 // context. KeepHandlesDispatcherHost will store the handles.
471 scoped_refptr<KeepHandlesDispatcherHost> dispatcher_host =
472 new KeepHandlesDispatcherHost(
473 helper_->mock_render_process_id(),
474 helper_->browser_context()->GetResourceContext());
475 helper_->RegisterDispatcherHost(helper_->mock_render_process_id(),
476 dispatcher_host);
477 dispatcher_host->Init(helper_->context_wrapper());
478
479 GURL pattern("http://www.example.com/"); 408 GURL pattern("http://www.example.com/");
480 GURL script_url("http://www.example.com/service_worker.js"); 409 GURL script_url("http://www.example.com/service_worker.js");
481 410
482 scoped_refptr<ServiceWorkerRegistration> old_registration = 411 scoped_refptr<ServiceWorkerRegistration> old_registration =
483 RunRegisterJob(pattern, script_url); 412 RunRegisterJob(pattern, script_url);
484 413
485 // Ensure that the registration's handle doesn't have the reference.
486 EXPECT_EQ(1UL, dispatcher_host->registration_handles().size());
487 dispatcher_host->RemoveHandles();
488 EXPECT_EQ(0UL, dispatcher_host->registration_handles().size());
489 ASSERT_TRUE(old_registration->HasOneRef());
490
491 scoped_refptr<ServiceWorkerRegistration> old_registration_by_pattern = 414 scoped_refptr<ServiceWorkerRegistration> old_registration_by_pattern =
492 FindRegistrationForPattern(pattern); 415 FindRegistrationForPattern(pattern);
493 416
494 ASSERT_TRUE(old_registration_by_pattern.get()); 417 ASSERT_TRUE(old_registration_by_pattern.get());
495 418
496 scoped_refptr<ServiceWorkerRegistration> new_registration = 419 scoped_refptr<ServiceWorkerRegistration> new_registration =
497 RunRegisterJob(pattern, script_url); 420 RunRegisterJob(pattern, script_url);
498 421
499 ASSERT_EQ(old_registration, new_registration); 422 ASSERT_EQ(old_registration, new_registration);
500 423
501 ASSERT_FALSE(old_registration->HasOneRef()); 424 ASSERT_FALSE(old_registration->HasOneRef());
502 425
503 scoped_refptr<ServiceWorkerRegistration> new_registration_by_pattern = 426 scoped_refptr<ServiceWorkerRegistration> new_registration_by_pattern =
504 FindRegistrationForPattern(pattern); 427 FindRegistrationForPattern(pattern);
505 428
506 ASSERT_EQ(new_registration, old_registration); 429 ASSERT_EQ(new_registration, old_registration);
507 } 430 }
508 431
509 class FailToStartWorkerTestHelper : public EmbeddedWorkerTestHelper { 432 class FailToStartWorkerTestHelper : public EmbeddedWorkerTestHelper {
510 public: 433 public:
511 FailToStartWorkerTestHelper() : EmbeddedWorkerTestHelper(base::FilePath()) {} 434 FailToStartWorkerTestHelper() : EmbeddedWorkerTestHelper(base::FilePath()) {}
512 435
513 void OnStartWorker( 436 void OnStartWorker(int embedded_worker_id,
514 int embedded_worker_id, 437 int64_t service_worker_version_id,
515 int64_t service_worker_version_id, 438 const GURL& scope,
516 const GURL& scope, 439 const GURL& script_url,
517 const GURL& script_url, 440 bool pause_after_download,
518 bool pause_after_download, 441 mojom::ServiceWorkerEventDispatcherRequest request,
519 mojom::ServiceWorkerEventDispatcherRequest request, 442 mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo
520 mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo instance_host, 443 instance_host) override {
521 mojom::ServiceWorkerProviderInfoForStartWorkerPtr provider_info)
522 override {
523 mojom::EmbeddedWorkerInstanceHostAssociatedPtr instance_host_ptr; 444 mojom::EmbeddedWorkerInstanceHostAssociatedPtr instance_host_ptr;
524 instance_host_ptr.Bind(std::move(instance_host)); 445 instance_host_ptr.Bind(std::move(instance_host));
525 instance_host_ptr->OnStopped(); 446 instance_host_ptr->OnStopped();
526 base::RunLoop().RunUntilIdle(); 447 base::RunLoop().RunUntilIdle();
527 } 448 }
528 }; 449 };
529 450
530 TEST_F(ServiceWorkerJobTest, Register_FailToStartWorker) { 451 TEST_F(ServiceWorkerJobTest, Register_FailToStartWorker) {
531 helper_.reset(new FailToStartWorkerTestHelper); 452 helper_.reset(new FailToStartWorkerTestHelper);
532 453
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after
969 EXPECT_TRUE(called); 890 EXPECT_TRUE(called);
970 EXPECT_TRUE(registration.get()); 891 EXPECT_TRUE(registration.get());
971 EXPECT_TRUE(registration->active_version()); 892 EXPECT_TRUE(registration->active_version());
972 EXPECT_FALSE(registration->installing_version()); 893 EXPECT_FALSE(registration->installing_version());
973 EXPECT_FALSE(registration->waiting_version()); 894 EXPECT_FALSE(registration->waiting_version());
974 registration_ = registration; 895 registration_ = registration;
975 return registration; 896 return registration;
976 } 897 }
977 898
978 // EmbeddedWorkerTestHelper overrides 899 // EmbeddedWorkerTestHelper overrides
979 void OnStartWorker( 900 void OnStartWorker(int embedded_worker_id,
980 int embedded_worker_id, 901 int64_t version_id,
981 int64_t version_id, 902 const GURL& scope,
982 const GURL& scope, 903 const GURL& script,
983 const GURL& script, 904 bool pause_after_download,
984 bool pause_after_download, 905 mojom::ServiceWorkerEventDispatcherRequest request,
985 mojom::ServiceWorkerEventDispatcherRequest request, 906 mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo
986 mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo instance_host, 907 instance_host) override {
987 mojom::ServiceWorkerProviderInfoForStartWorkerPtr provider_info)
988 override {
989 const std::string kMockScriptBody = "mock_script"; 908 const std::string kMockScriptBody = "mock_script";
990 const uint64_t kMockScriptSize = 19284; 909 const uint64_t kMockScriptSize = 19284;
991 ServiceWorkerVersion* version = context()->GetLiveVersion(version_id); 910 ServiceWorkerVersion* version = context()->GetLiveVersion(version_id);
992 ServiceWorkerRegistration* registration = 911 ServiceWorkerRegistration* registration =
993 context()->GetLiveRegistration(version->registration_id()); 912 context()->GetLiveRegistration(version->registration_id());
994 bool is_update = registration->active_version() && 913 bool is_update = registration->active_version() &&
995 version != registration->active_version(); 914 version != registration->active_version();
996 915
997 ASSERT_TRUE(version); 916 ASSERT_TRUE(version);
998 version->AddListener(this); 917 version->AddListener(this);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1033 // Spoof caching the script for the new version. 952 // Spoof caching the script for the new version.
1034 WriteStringResponse(storage(), resource_id, "mock_different_script"); 953 WriteStringResponse(storage(), resource_id, "mock_different_script");
1035 version->script_cache_map()->NotifyFinishedCaching( 954 version->script_cache_map()->NotifyFinishedCaching(
1036 script, kMockScriptSize, net::OK, std::string()); 955 script, kMockScriptSize, net::OK, std::string());
1037 version->SetMainScriptHttpResponseInfo( 956 version->SetMainScriptHttpResponseInfo(
1038 EmbeddedWorkerTestHelper::CreateHttpResponseInfo()); 957 EmbeddedWorkerTestHelper::CreateHttpResponseInfo());
1039 } 958 }
1040 959
1041 EmbeddedWorkerTestHelper::OnStartWorker( 960 EmbeddedWorkerTestHelper::OnStartWorker(
1042 embedded_worker_id, version_id, scope, script, pause_after_download, 961 embedded_worker_id, version_id, scope, script, pause_after_download,
1043 std::move(request), std::move(instance_host), std::move(provider_info)); 962 std::move(request), std::move(instance_host));
1044 } 963 }
1045 964
1046 void OnResumeAfterDownload(int embedded_worker_id) override { 965 void OnResumeAfterDownload(int embedded_worker_id) override {
1047 if (!force_start_worker_failure_) { 966 if (!force_start_worker_failure_) {
1048 EmbeddedWorkerTestHelper::OnResumeAfterDownload(embedded_worker_id); 967 EmbeddedWorkerTestHelper::OnResumeAfterDownload(embedded_worker_id);
1049 } else { 968 } else {
1050 SimulateWorkerThreadStarted(GetNextThreadId(), embedded_worker_id); 969 SimulateWorkerThreadStarted(GetNextThreadId(), embedded_worker_id,
970 GetNextProviderId());
1051 SimulateWorkerScriptEvaluated(embedded_worker_id, false); 971 SimulateWorkerScriptEvaluated(embedded_worker_id, false);
1052 } 972 }
1053 } 973 }
1054 974
1055 // ServiceWorkerRegistration::Listener overrides 975 // ServiceWorkerRegistration::Listener overrides
1056 void OnVersionAttributesChanged( 976 void OnVersionAttributesChanged(
1057 ServiceWorkerRegistration* registration, 977 ServiceWorkerRegistration* registration,
1058 ChangedVersionAttributesMask changed_mask, 978 ChangedVersionAttributesMask changed_mask,
1059 const ServiceWorkerRegistrationInfo& info) override { 979 const ServiceWorkerRegistrationInfo& info) override {
1060 AttributeChangeLogEntry entry; 980 AttributeChangeLogEntry entry;
(...skipping 27 matching lines...) Expand all
1088 bool force_start_worker_failure_ = false; 1008 bool force_start_worker_failure_ = false;
1089 }; 1009 };
1090 1010
1091 // Helper class for update tests that evicts the active version when the update 1011 // Helper class for update tests that evicts the active version when the update
1092 // worker is about to be started. 1012 // worker is about to be started.
1093 class EvictIncumbentVersionHelper : public UpdateJobTestHelper { 1013 class EvictIncumbentVersionHelper : public UpdateJobTestHelper {
1094 public: 1014 public:
1095 EvictIncumbentVersionHelper() {} 1015 EvictIncumbentVersionHelper() {}
1096 ~EvictIncumbentVersionHelper() override {} 1016 ~EvictIncumbentVersionHelper() override {}
1097 1017
1098 void OnStartWorker( 1018 void OnStartWorker(int embedded_worker_id,
1099 int embedded_worker_id, 1019 int64_t version_id,
1100 int64_t version_id, 1020 const GURL& scope,
1101 const GURL& scope, 1021 const GURL& script,
1102 const GURL& script, 1022 bool pause_after_download,
1103 bool pause_after_download, 1023 mojom::ServiceWorkerEventDispatcherRequest request,
1104 mojom::ServiceWorkerEventDispatcherRequest request, 1024 mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo
1105 mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo instance_host, 1025 instance_host) override {
1106 mojom::ServiceWorkerProviderInfoForStartWorkerPtr provider_info)
1107 override {
1108 ServiceWorkerVersion* version = context()->GetLiveVersion(version_id); 1026 ServiceWorkerVersion* version = context()->GetLiveVersion(version_id);
1109 ServiceWorkerRegistration* registration = 1027 ServiceWorkerRegistration* registration =
1110 context()->GetLiveRegistration(version->registration_id()); 1028 context()->GetLiveRegistration(version->registration_id());
1111 bool is_update = registration->active_version() && 1029 bool is_update = registration->active_version() &&
1112 version != registration->active_version(); 1030 version != registration->active_version();
1113 if (is_update) { 1031 if (is_update) {
1114 // Evict the incumbent worker. 1032 // Evict the incumbent worker.
1115 ASSERT_FALSE(registration->waiting_version()); 1033 ASSERT_FALSE(registration->waiting_version());
1116 registration->DeleteVersion( 1034 registration->DeleteVersion(
1117 make_scoped_refptr(registration->active_version())); 1035 make_scoped_refptr(registration->active_version()));
1118 } 1036 }
1119 UpdateJobTestHelper::OnStartWorker( 1037 UpdateJobTestHelper::OnStartWorker(
1120 embedded_worker_id, version_id, scope, script, pause_after_download, 1038 embedded_worker_id, version_id, scope, script, pause_after_download,
1121 std::move(request), std::move(instance_host), std::move(provider_info)); 1039 std::move(request), std::move(instance_host));
1122 } 1040 }
1123 1041
1124 void OnRegistrationFailed(ServiceWorkerRegistration* registration) override { 1042 void OnRegistrationFailed(ServiceWorkerRegistration* registration) override {
1125 registration_failed_ = true; 1043 registration_failed_ = true;
1126 } 1044 }
1127 1045
1128 bool registration_failed_ = false; 1046 bool registration_failed_ = false;
1129 }; 1047 };
1130 1048
1131 } // namespace 1049 } // namespace
(...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after
1784 public: 1702 public:
1785 explicit CheckPauseAfterDownloadEmbeddedWorkerInstanceClient( 1703 explicit CheckPauseAfterDownloadEmbeddedWorkerInstanceClient(
1786 base::WeakPtr<EmbeddedWorkerTestHelper> helper) 1704 base::WeakPtr<EmbeddedWorkerTestHelper> helper)
1787 : EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient(helper) {} 1705 : EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient(helper) {}
1788 int num_of_startworker() const { return num_of_startworker_; } 1706 int num_of_startworker() const { return num_of_startworker_; }
1789 void set_next_pause_after_download(bool expectation) { 1707 void set_next_pause_after_download(bool expectation) {
1790 next_pause_after_download_ = expectation; 1708 next_pause_after_download_ = expectation;
1791 } 1709 }
1792 1710
1793 protected: 1711 protected:
1794 void StartWorker( 1712 void StartWorker(const EmbeddedWorkerStartParams& params,
1795 const EmbeddedWorkerStartParams& params, 1713 mojom::ServiceWorkerEventDispatcherRequest request,
1796 mojom::ServiceWorkerEventDispatcherRequest request, 1714 mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo
1797 mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo instance_host, 1715 instance_host) override {
1798 mojom::ServiceWorkerProviderInfoForStartWorkerPtr provider_info)
1799 override {
1800 ASSERT_TRUE(next_pause_after_download_.has_value()); 1716 ASSERT_TRUE(next_pause_after_download_.has_value());
1801 EXPECT_EQ(next_pause_after_download_.value(), params.pause_after_download); 1717 EXPECT_EQ(next_pause_after_download_.value(), params.pause_after_download);
1802 num_of_startworker_++; 1718 num_of_startworker_++;
1803 EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StartWorker( 1719 EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StartWorker(
1804 params, std::move(request), std::move(instance_host), 1720 params, std::move(request), std::move(instance_host));
1805 std::move(provider_info));
1806 } 1721 }
1807 1722
1808 private: 1723 private:
1809 base::Optional<bool> next_pause_after_download_; 1724 base::Optional<bool> next_pause_after_download_;
1810 int num_of_startworker_ = 0; 1725 int num_of_startworker_ = 0;
1811 DISALLOW_COPY_AND_ASSIGN(CheckPauseAfterDownloadEmbeddedWorkerInstanceClient); 1726 DISALLOW_COPY_AND_ASSIGN(CheckPauseAfterDownloadEmbeddedWorkerInstanceClient);
1812 }; 1727 };
1813 1728
1814 TEST_F(ServiceWorkerJobTest, Update_PauseAfterDownload) { 1729 TEST_F(ServiceWorkerJobTest, Update_PauseAfterDownload) {
1815 UpdateJobTestHelper* update_helper = new UpdateJobTestHelper; 1730 UpdateJobTestHelper* update_helper = new UpdateJobTestHelper;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1888 // should not be promoted to ACTIVATED because failure occur 1803 // should not be promoted to ACTIVATED because failure occur
1889 // during shutdown. 1804 // during shutdown.
1890 runner->RunPendingTasks(); 1805 runner->RunPendingTasks();
1891 base::RunLoop().RunUntilIdle(); 1806 base::RunLoop().RunUntilIdle();
1892 EXPECT_EQ(new_version.get(), registration->active_version()); 1807 EXPECT_EQ(new_version.get(), registration->active_version());
1893 EXPECT_EQ(ServiceWorkerVersion::ACTIVATING, new_version->status()); 1808 EXPECT_EQ(ServiceWorkerVersion::ACTIVATING, new_version->status());
1894 registration->RemoveListener(update_helper); 1809 registration->RemoveListener(update_helper);
1895 } 1810 }
1896 1811
1897 } // namespace content 1812 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698