Chromium Code Reviews| 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_dispatcher_host.h" | 5 #include "content/browser/service_worker/service_worker_dispatcher_host.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| 11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 12 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
| 13 #include "base/memory/ptr_util.h" | 13 #include "base/memory/ptr_util.h" |
| 14 #include "base/run_loop.h" | 14 #include "base/run_loop.h" |
| 15 #include "base/test/simple_test_tick_clock.h" | 15 #include "base/test/simple_test_tick_clock.h" |
| 16 #include "base/time/time.h" | 16 #include "base/time/time.h" |
| 17 #include "content/browser/browser_thread_impl.h" | 17 #include "content/browser/browser_thread_impl.h" |
| 18 #include "content/browser/service_worker/embedded_worker_instance.h" | 18 #include "content/browser/service_worker/embedded_worker_instance.h" |
| 19 #include "content/browser/service_worker/embedded_worker_registry.h" | 19 #include "content/browser/service_worker/embedded_worker_registry.h" |
| 20 #include "content/browser/service_worker/embedded_worker_status.h" | 20 #include "content/browser/service_worker/embedded_worker_status.h" |
| 21 #include "content/browser/service_worker/embedded_worker_test_helper.h" | 21 #include "content/browser/service_worker/embedded_worker_test_helper.h" |
| 22 #include "content/browser/service_worker/service_worker_context_core.h" | 22 #include "content/browser/service_worker/service_worker_context_core.h" |
| 23 #include "content/browser/service_worker/service_worker_context_wrapper.h" | 23 #include "content/browser/service_worker/service_worker_context_wrapper.h" |
| 24 #include "content/browser/service_worker/service_worker_handle.h" | 24 #include "content/browser/service_worker/service_worker_handle.h" |
| 25 #include "content/browser/service_worker/service_worker_navigation_handle_core.h " | |
| 25 #include "content/browser/service_worker/service_worker_test_utils.h" | 26 #include "content/browser/service_worker/service_worker_test_utils.h" |
| 26 #include "content/common/service_worker/embedded_worker_messages.h" | 27 #include "content/common/service_worker/embedded_worker_messages.h" |
| 27 #include "content/common/service_worker/service_worker_messages.h" | 28 #include "content/common/service_worker/service_worker_messages.h" |
| 28 #include "content/common/service_worker/service_worker_types.h" | 29 #include "content/common/service_worker/service_worker_types.h" |
| 29 #include "content/common/service_worker/service_worker_utils.h" | 30 #include "content/common/service_worker/service_worker_utils.h" |
| 31 #include "content/public/common/browser_side_navigation_policy.h" | |
| 30 #include "content/public/common/content_switches.h" | 32 #include "content/public/common/content_switches.h" |
| 31 #include "content/public/test/mock_resource_context.h" | 33 #include "content/public/test/mock_resource_context.h" |
| 32 #include "content/public/test/test_browser_thread_bundle.h" | 34 #include "content/public/test/test_browser_thread_bundle.h" |
| 33 #include "content/test/test_content_browser_client.h" | 35 #include "content/test/test_content_browser_client.h" |
| 34 #include "testing/gtest/include/gtest/gtest.h" | 36 #include "testing/gtest/include/gtest/gtest.h" |
| 35 | 37 |
| 36 namespace content { | 38 namespace content { |
| 37 | 39 |
| 38 namespace { | 40 namespace { |
| 39 | 41 |
| 40 static void SaveStatusCallback(bool* called, | 42 static void SaveStatusCallback(bool* called, |
| 41 ServiceWorkerStatusCode* out, | 43 ServiceWorkerStatusCode* out, |
| 42 ServiceWorkerStatusCode status) { | 44 ServiceWorkerStatusCode status) { |
| 43 *called = true; | 45 *called = true; |
| 44 *out = status; | 46 *out = status; |
| 45 } | 47 } |
| 46 | 48 |
| 47 void SetUpDummyMessagePort(std::vector<MessagePort>* ports) { | 49 void SetUpDummyMessagePort(std::vector<MessagePort>* ports) { |
| 48 // Let the other end of the pipe close. | 50 // Let the other end of the pipe close. |
| 49 mojo::MessagePipe pipe; | 51 mojo::MessagePipe pipe; |
| 50 ports->push_back(MessagePort(std::move(pipe.handle0))); | 52 ports->push_back(MessagePort(std::move(pipe.handle0))); |
| 51 } | 53 } |
| 52 | 54 |
| 55 struct RemoteProviderInfo { | |
| 56 mojom::ServiceWorkerProviderHostAssociatedPtr host_ptr; | |
| 57 mojom::ServiceWorkerProviderAssociatedRequest client_request; | |
| 58 }; | |
| 59 | |
| 60 RemoteProviderInfo SetupProviderHostInfoPtrs( | |
| 61 ServiceWorkerProviderHostInfo* host_info) { | |
| 62 RemoteProviderInfo remote_info; | |
| 63 mojom::ServiceWorkerProviderAssociatedPtr browser_side_client_ptr; | |
| 64 remote_info.client_request = | |
| 65 mojo::MakeIsolatedRequest(&browser_side_client_ptr); | |
| 66 host_info->host_request = mojo::MakeIsolatedRequest(&remote_info.host_ptr); | |
| 67 host_info->client_ptr_info = browser_side_client_ptr.PassInterface(); | |
| 68 EXPECT_TRUE(host_info->host_request.is_pending()); | |
| 69 EXPECT_TRUE(host_info->client_ptr_info.is_valid()); | |
| 70 EXPECT_TRUE(remote_info.host_ptr.is_bound()); | |
| 71 EXPECT_TRUE(remote_info.client_request.is_pending()); | |
| 72 return remote_info; | |
| 73 } | |
| 74 | |
| 75 std::unique_ptr<ServiceWorkerNavigationHandleCore> CreateNavigationHandleCore( | |
| 76 ServiceWorkerContextWrapper* context_wrapper) { | |
| 77 std::unique_ptr<ServiceWorkerNavigationHandleCore> navigation_handle_core; | |
| 78 BrowserThread::PostTaskAndReplyWithResult( | |
| 79 BrowserThread::UI, FROM_HERE, | |
| 80 base::Bind( | |
| 81 [](ServiceWorkerContextWrapper* wrapper) { | |
| 82 return base::MakeUnique<ServiceWorkerNavigationHandleCore>(nullptr, | |
| 83 wrapper); | |
| 84 }, | |
| 85 context_wrapper), | |
| 86 base::Bind( | |
| 87 [](std::unique_ptr<ServiceWorkerNavigationHandleCore>* dest, | |
| 88 std::unique_ptr<ServiceWorkerNavigationHandleCore> src) { | |
| 89 *dest = std::move(src); | |
| 90 }, | |
| 91 &navigation_handle_core)); | |
| 92 base::RunLoop().RunUntilIdle(); | |
| 93 return navigation_handle_core; | |
| 94 } | |
| 95 | |
| 53 } // namespace | 96 } // namespace |
| 54 | 97 |
| 55 static const int kRenderFrameId = 1; | 98 static const int kRenderFrameId = 1; |
| 56 | 99 |
| 57 class TestingServiceWorkerDispatcherHost : public ServiceWorkerDispatcherHost { | 100 class TestingServiceWorkerDispatcherHost : public ServiceWorkerDispatcherHost { |
| 58 public: | 101 public: |
| 59 TestingServiceWorkerDispatcherHost( | 102 TestingServiceWorkerDispatcherHost( |
| 60 int process_id, | 103 int process_id, |
| 61 ServiceWorkerContextWrapper* context_wrapper, | 104 ServiceWorkerContextWrapper* context_wrapper, |
| 62 ResourceContext* resource_context, | 105 ResourceContext* resource_context, |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 161 int embedded_worker_id) { | 204 int embedded_worker_id) { |
| 162 dispatcher_host_->OnSetHostedVersionId(provider_id, version_id, | 205 dispatcher_host_->OnSetHostedVersionId(provider_id, version_id, |
| 163 embedded_worker_id); | 206 embedded_worker_id); |
| 164 } | 207 } |
| 165 | 208 |
| 166 void SendProviderCreated(ServiceWorkerProviderType type, | 209 void SendProviderCreated(ServiceWorkerProviderType type, |
| 167 const GURL& pattern) { | 210 const GURL& pattern) { |
| 168 const int64_t kProviderId = 99; | 211 const int64_t kProviderId = 99; |
| 169 ServiceWorkerProviderHostInfo info(kProviderId, MSG_ROUTING_NONE, type, | 212 ServiceWorkerProviderHostInfo info(kProviderId, MSG_ROUTING_NONE, type, |
| 170 true /* is_parent_frame_secure */); | 213 true /* is_parent_frame_secure */); |
| 214 mojom::ServiceWorkerProviderAssociatedPtr client_ptr; | |
| 215 remote_endpoint_.client_request = mojo::MakeIsolatedRequest(&client_ptr); | |
| 216 info.client_ptr_info = client_ptr.PassInterface(); | |
| 217 info.host_request = mojo::MakeIsolatedRequest(&remote_endpoint_.host_ptr); | |
| 218 | |
| 171 dispatcher_host_->OnProviderCreated(std::move(info)); | 219 dispatcher_host_->OnProviderCreated(std::move(info)); |
| 172 helper_->SimulateAddProcessToPattern(pattern, | 220 helper_->SimulateAddProcessToPattern(pattern, |
| 173 helper_->mock_render_process_id()); | 221 helper_->mock_render_process_id()); |
| 174 provider_host_ = context()->GetProviderHost( | 222 provider_host_ = context()->GetProviderHost( |
| 175 helper_->mock_render_process_id(), kProviderId); | 223 helper_->mock_render_process_id(), kProviderId); |
| 176 } | 224 } |
| 177 | 225 |
| 178 void SendRegister(int64_t provider_id, GURL pattern, GURL worker_url) { | 226 void SendRegister(int64_t provider_id, GURL pattern, GURL worker_url) { |
| 179 dispatcher_host_->OnMessageReceived( | 227 dispatcher_host_->OnMessageReceived( |
| 180 ServiceWorkerHostMsg_RegisterServiceWorker( | 228 ServiceWorkerHostMsg_RegisterServiceWorker( |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 246 const ServiceWorkerDispatcherHost::StatusCallback& callback) { | 294 const ServiceWorkerDispatcherHost::StatusCallback& callback) { |
| 247 dispatcher_host_->DispatchExtendableMessageEvent( | 295 dispatcher_host_->DispatchExtendableMessageEvent( |
| 248 std::move(worker), message, source_origin, sent_message_ports, | 296 std::move(worker), message, source_origin, sent_message_ports, |
| 249 sender_provider_host, callback); | 297 sender_provider_host, callback); |
| 250 } | 298 } |
| 251 | 299 |
| 252 std::unique_ptr<ServiceWorkerProviderHost> CreateServiceWorkerProviderHost( | 300 std::unique_ptr<ServiceWorkerProviderHost> CreateServiceWorkerProviderHost( |
| 253 int provider_id) { | 301 int provider_id) { |
| 254 return CreateProviderHostWithDispatcherHost( | 302 return CreateProviderHostWithDispatcherHost( |
| 255 helper_->mock_render_process_id(), provider_id, context()->AsWeakPtr(), | 303 helper_->mock_render_process_id(), provider_id, context()->AsWeakPtr(), |
| 256 kRenderFrameId, dispatcher_host_.get()); | 304 kRenderFrameId, dispatcher_host_.get(), &remote_endpoint_); |
| 257 } | 305 } |
| 258 | 306 |
| 259 TestBrowserThreadBundle browser_thread_bundle_; | 307 TestBrowserThreadBundle browser_thread_bundle_; |
| 260 content::MockResourceContext resource_context_; | 308 content::MockResourceContext resource_context_; |
| 261 std::unique_ptr<EmbeddedWorkerTestHelper> helper_; | 309 std::unique_ptr<EmbeddedWorkerTestHelper> helper_; |
| 262 scoped_refptr<TestingServiceWorkerDispatcherHost> dispatcher_host_; | 310 scoped_refptr<TestingServiceWorkerDispatcherHost> dispatcher_host_; |
| 263 scoped_refptr<ServiceWorkerRegistration> registration_; | 311 scoped_refptr<ServiceWorkerRegistration> registration_; |
| 264 scoped_refptr<ServiceWorkerVersion> version_; | 312 scoped_refptr<ServiceWorkerVersion> version_; |
| 265 ServiceWorkerProviderHost* provider_host_; | 313 ServiceWorkerProviderHost* provider_host_; |
| 314 ServiceWorkerRemoteProviderEndpoint remote_endpoint_; | |
| 266 }; | 315 }; |
| 267 | 316 |
| 268 class ServiceWorkerTestContentBrowserClient : public TestContentBrowserClient { | 317 class ServiceWorkerTestContentBrowserClient : public TestContentBrowserClient { |
| 269 public: | 318 public: |
| 270 ServiceWorkerTestContentBrowserClient() {} | 319 ServiceWorkerTestContentBrowserClient() {} |
| 271 bool AllowServiceWorker( | 320 bool AllowServiceWorker( |
| 272 const GURL& scope, | 321 const GURL& scope, |
| 273 const GURL& first_party, | 322 const GURL& first_party, |
| 274 content::ResourceContext* context, | 323 content::ResourceContext* context, |
| 275 const base::Callback<WebContents*(void)>& wc_getter) override { | 324 const base::Callback<WebContents*(void)>& wc_getter) override { |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 502 // Let the shutdown reach the simulated IO thread. | 551 // Let the shutdown reach the simulated IO thread. |
| 503 base::RunLoop().RunUntilIdle(); | 552 base::RunLoop().RunUntilIdle(); |
| 504 | 553 |
| 505 Register(-1, | 554 Register(-1, |
| 506 GURL(), | 555 GURL(), |
| 507 GURL(), | 556 GURL(), |
| 508 ServiceWorkerMsg_ServiceWorkerRegistrationError::ID); | 557 ServiceWorkerMsg_ServiceWorkerRegistrationError::ID); |
| 509 } | 558 } |
| 510 | 559 |
| 511 TEST_F(ServiceWorkerDispatcherHostTest, ProviderCreatedAndDestroyed) { | 560 TEST_F(ServiceWorkerDispatcherHostTest, ProviderCreatedAndDestroyed) { |
| 512 const int kProviderId = 1001; | 561 const int kProviderId = (IsBrowserSideNavigationEnabled() ? -2 : 1001); |
|
falken
2017/05/22 08:28:12
Can PlzNavigate be -1001 also to make it look symm
shimazu
2017/05/23 06:29:33
Actually it should be -2 because kProviderId is no
falken
2017/05/23 08:31:49
Can you add a comment like:
// For PlzNavigate, k
| |
| 513 int process_id = helper_->mock_render_process_id(); | 562 int process_id = helper_->mock_render_process_id(); |
| 514 | 563 |
| 515 dispatcher_host_->OnProviderCreated(ServiceWorkerProviderHostInfo( | 564 // Setup ServiceWorkerProviderHostInfo |
|
falken
2017/05/22 08:28:12
nit: period at end of sentence
shimazu
2017/05/23 06:29:33
Done.
| |
| 516 kProviderId, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW, | 565 ServiceWorkerProviderHostInfo host_info_1(kProviderId, 1 /* route_id */, |
| 517 true /* is_parent_frame_secure */)); | 566 SERVICE_WORKER_PROVIDER_FOR_WINDOW, |
| 567 true /* is_parent_frame_secure */); | |
| 568 ServiceWorkerProviderHostInfo host_info_2(kProviderId, 1 /* route_id */, | |
| 569 SERVICE_WORKER_PROVIDER_FOR_WINDOW, | |
| 570 true /* is_parent_frame_secure */); | |
| 571 ServiceWorkerProviderHostInfo host_info_3(kProviderId, 1 /* route_id */, | |
| 572 SERVICE_WORKER_PROVIDER_FOR_WINDOW, | |
| 573 true /* is_parent_frame_secure */); | |
| 574 RemoteProviderInfo remote_info_1 = SetupProviderHostInfoPtrs(&host_info_1); | |
| 575 RemoteProviderInfo remote_info_2 = SetupProviderHostInfoPtrs(&host_info_2); | |
| 576 RemoteProviderInfo remote_info_3 = SetupProviderHostInfoPtrs(&host_info_3); | |
| 577 | |
| 578 // PlzNavigate | |
| 579 std::unique_ptr<ServiceWorkerNavigationHandleCore> navigation_handle_core; | |
| 580 if (IsBrowserSideNavigationEnabled()) { | |
| 581 navigation_handle_core = | |
| 582 CreateNavigationHandleCore(helper_->context_wrapper()); | |
| 583 ASSERT_TRUE(navigation_handle_core); | |
| 584 // ProviderHost should be created before OnProviderCreated. | |
| 585 navigation_handle_core->DidPreCreateProviderHost( | |
| 586 ServiceWorkerProviderHost::PreCreateNavigationHost( | |
| 587 helper_->context()->AsWeakPtr(), true /* are_ancestors_secure */, | |
| 588 base::Callback<WebContents*(void)>())); | |
| 589 } | |
| 590 | |
| 591 dispatcher_host_->OnProviderCreated(std::move(host_info_1)); | |
| 518 EXPECT_TRUE(context()->GetProviderHost(process_id, kProviderId)); | 592 EXPECT_TRUE(context()->GetProviderHost(process_id, kProviderId)); |
| 519 | 593 |
| 520 // Two with the same ID should be seen as a bad message. | 594 // Two with the same ID should be seen as a bad message. |
| 521 dispatcher_host_->OnProviderCreated(ServiceWorkerProviderHostInfo( | 595 dispatcher_host_->OnProviderCreated(std::move(host_info_2)); |
| 522 kProviderId, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW, | |
| 523 true /* is_parent_frame_secure */)); | |
| 524 EXPECT_EQ(1, dispatcher_host_->bad_messages_received_count_); | 596 EXPECT_EQ(1, dispatcher_host_->bad_messages_received_count_); |
| 525 | 597 |
| 526 dispatcher_host_->OnProviderDestroyed(kProviderId); | 598 // Releasing the interface pointer destroys the counterpart. |
| 599 remote_info_1.host_ptr.reset(); | |
| 600 base::RunLoop().RunUntilIdle(); | |
| 527 EXPECT_FALSE(context()->GetProviderHost(process_id, kProviderId)); | 601 EXPECT_FALSE(context()->GetProviderHost(process_id, kProviderId)); |
| 528 | 602 |
| 529 // Destroying an ID that does not exist warrants a bad message. | 603 // PlzNavigate |
| 530 dispatcher_host_->OnProviderDestroyed(kProviderId); | 604 // Prepare another navigation handle to create another provider host. |
| 531 EXPECT_EQ(2, dispatcher_host_->bad_messages_received_count_); | 605 if (IsBrowserSideNavigationEnabled()) { |
| 606 navigation_handle_core = | |
| 607 CreateNavigationHandleCore(helper_->context_wrapper()); | |
| 608 ASSERT_TRUE(navigation_handle_core); | |
| 609 // ProviderHost should be created before OnProviderCreated. | |
| 610 navigation_handle_core->DidPreCreateProviderHost( | |
| 611 ServiceWorkerProviderHost::PreCreateNavigationHost( | |
| 612 helper_->context()->AsWeakPtr(), true /* are_ancestors_secure */, | |
| 613 base::Callback<WebContents*(void)>())); | |
| 614 } | |
| 532 | 615 |
| 533 // Deletion of the dispatcher_host should cause providers for that | 616 // Deletion of the dispatcher_host should cause providers for that |
| 534 // process to get deleted as well. | 617 // process to get deleted as well. |
| 535 dispatcher_host_->OnProviderCreated(ServiceWorkerProviderHostInfo( | 618 dispatcher_host_->OnProviderCreated(std::move(host_info_3)); |
| 536 kProviderId, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW, | |
| 537 true /* is_parent_frame_secure */)); | |
| 538 EXPECT_TRUE(context()->GetProviderHost(process_id, kProviderId)); | 619 EXPECT_TRUE(context()->GetProviderHost(process_id, kProviderId)); |
| 539 EXPECT_TRUE(dispatcher_host_->HasOneRef()); | 620 EXPECT_TRUE(dispatcher_host_->HasOneRef()); |
| 540 dispatcher_host_ = nullptr; | 621 dispatcher_host_ = nullptr; |
| 541 EXPECT_FALSE(context()->GetProviderHost(process_id, kProviderId)); | 622 EXPECT_FALSE(context()->GetProviderHost(process_id, kProviderId)); |
| 542 } | 623 } |
| 543 | 624 |
| 544 TEST_F(ServiceWorkerDispatcherHostTest, GetRegistration_SameOrigin) { | 625 TEST_F(ServiceWorkerDispatcherHostTest, GetRegistration_SameOrigin) { |
| 545 const int64_t kProviderId = 99; // Dummy value | 626 const int64_t kProviderId = 99; // Dummy value |
| 546 std::unique_ptr<ServiceWorkerProviderHost> host( | 627 std::unique_ptr<ServiceWorkerProviderHost> host( |
| 547 CreateServiceWorkerProviderHost(kProviderId)); | 628 CreateServiceWorkerProviderHost(kProviderId)); |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 662 // We should be able to hook up a new dispatcher host although the old object | 743 // We should be able to hook up a new dispatcher host although the old object |
| 663 // is not yet destroyed. This is what the browser does when reusing a crashed | 744 // is not yet destroyed. This is what the browser does when reusing a crashed |
| 664 // render process. | 745 // render process. |
| 665 scoped_refptr<TestingServiceWorkerDispatcherHost> new_dispatcher_host( | 746 scoped_refptr<TestingServiceWorkerDispatcherHost> new_dispatcher_host( |
| 666 new TestingServiceWorkerDispatcherHost( | 747 new TestingServiceWorkerDispatcherHost( |
| 667 process_id, context_wrapper(), &resource_context_, helper_.get())); | 748 process_id, context_wrapper(), &resource_context_, helper_.get())); |
| 668 | 749 |
| 669 // To show the new dispatcher can operate, simulate provider creation. Since | 750 // To show the new dispatcher can operate, simulate provider creation. Since |
| 670 // the old dispatcher cleaned up the old provider host, the new one won't | 751 // the old dispatcher cleaned up the old provider host, the new one won't |
| 671 // complain. | 752 // complain. |
| 672 new_dispatcher_host->OnProviderCreated(ServiceWorkerProviderHostInfo( | 753 ServiceWorkerProviderHostInfo host_info(provider_id, MSG_ROUTING_NONE, |
| 673 provider_id, MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_WINDOW, | 754 SERVICE_WORKER_PROVIDER_FOR_WINDOW, |
| 674 true /* is_parent_frame_secure */)); | 755 true /* is_parent_frame_secure */); |
| 756 ServiceWorkerRemoteProviderEndpoint remote_endpoint; | |
| 757 mojom::ServiceWorkerProviderAssociatedPtr client_ptr; | |
| 758 remote_endpoint.client_request = mojo::MakeIsolatedRequest(&client_ptr); | |
| 759 host_info.client_ptr_info = client_ptr.PassInterface(); | |
| 760 host_info.host_request = mojo::MakeIsolatedRequest(&remote_endpoint.host_ptr); | |
| 761 new_dispatcher_host->OnProviderCreated(std::move(host_info)); | |
| 675 EXPECT_EQ(0, new_dispatcher_host->bad_messages_received_count_); | 762 EXPECT_EQ(0, new_dispatcher_host->bad_messages_received_count_); |
| 676 } | 763 } |
| 677 | 764 |
| 678 TEST_F(ServiceWorkerDispatcherHostTest, DispatchExtendableMessageEvent) { | 765 TEST_F(ServiceWorkerDispatcherHostTest, DispatchExtendableMessageEvent) { |
| 679 GURL pattern = GURL("http://www.example.com/"); | 766 GURL pattern = GURL("http://www.example.com/"); |
| 680 GURL script_url = GURL("http://www.example.com/service_worker.js"); | 767 GURL script_url = GURL("http://www.example.com/service_worker.js"); |
| 681 | 768 |
| 682 SendProviderCreated(SERVICE_WORKER_PROVIDER_FOR_CONTROLLER, pattern); | 769 SendProviderCreated(SERVICE_WORKER_PROVIDER_FOR_CONTROLLER, pattern); |
| 683 SetUpRegistration(pattern, script_url); | 770 SetUpRegistration(pattern, script_url); |
| 684 | 771 |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 833 const int kFetchEventId = 91; // Dummy value | 920 const int kFetchEventId = 91; // Dummy value |
| 834 dispatcher_host_->OnMessageReceived(ServiceWorkerHostMsg_FetchEventResponse( | 921 dispatcher_host_->OnMessageReceived(ServiceWorkerHostMsg_FetchEventResponse( |
| 835 version_->embedded_worker()->embedded_worker_id(), kFetchEventId, | 922 version_->embedded_worker()->embedded_worker_id(), kFetchEventId, |
| 836 ServiceWorkerResponse(), base::Time::Now())); | 923 ServiceWorkerResponse(), base::Time::Now())); |
| 837 | 924 |
| 838 base::RunLoop().RunUntilIdle(); | 925 base::RunLoop().RunUntilIdle(); |
| 839 EXPECT_EQ(0, dispatcher_host_->bad_messages_received_count_); | 926 EXPECT_EQ(0, dispatcher_host_->bad_messages_received_count_); |
| 840 } | 927 } |
| 841 | 928 |
| 842 } // namespace content | 929 } // namespace content |
| OLD | NEW |