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

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

Issue 2746783002: [ServiceWorker] Mojofy InstallEvent of Service Worker (Closed)
Patch Set: Rebase and address falken, leon and mek's comments Created 3 years, 8 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 "content/browser/service_worker/embedded_worker_test_helper.h" 5 #include "content/browser/service_worker/embedded_worker_test_helper.h"
6 6
7 #include <map> 7 #include <map>
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/atomic_sequence_num.h" 13 #include "base/atomic_sequence_num.h"
14 #include "base/bind.h" 14 #include "base/bind.h"
15 #include "base/memory/ptr_util.h" 15 #include "base/memory/ptr_util.h"
16 #include "base/threading/thread_task_runner_handle.h" 16 #include "base/threading/thread_task_runner_handle.h"
17 #include "base/time/time.h" 17 #include "base/time/time.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/service_worker_context_core.h" 21 #include "content/browser/service_worker/service_worker_context_core.h"
22 #include "content/browser/service_worker/service_worker_context_wrapper.h" 22 #include "content/browser/service_worker/service_worker_context_wrapper.h"
23 #include "content/browser/service_worker/service_worker_dispatcher_host.h" 23 #include "content/browser/service_worker/service_worker_dispatcher_host.h"
24 #include "content/common/background_fetch/background_fetch_types.h" 24 #include "content/common/background_fetch/background_fetch_types.h"
25 #include "content/common/service_worker/embedded_worker_messages.h" 25 #include "content/common/service_worker/embedded_worker_messages.h"
26 #include "content/common/service_worker/embedded_worker_start_params.h" 26 #include "content/common/service_worker/embedded_worker_start_params.h"
27 #include "content/common/service_worker/service_worker_event_dispatcher.mojom.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_utils.h" 29 #include "content/common/service_worker/service_worker_utils.h"
29 #include "content/public/common/push_event_payload.h" 30 #include "content/public/common/push_event_payload.h"
30 #include "content/public/test/mock_render_process_host.h" 31 #include "content/public/test/mock_render_process_host.h"
31 #include "content/public/test/test_browser_context.h" 32 #include "content/public/test/test_browser_context.h"
32 #include "mojo/public/cpp/bindings/interface_request.h" 33 #include "mojo/public/cpp/bindings/interface_request.h"
33 #include "mojo/public/cpp/bindings/strong_binding.h" 34 #include "mojo/public/cpp/bindings/strong_binding.h"
34 #include "services/service_manager/public/cpp/interface_provider.h" 35 #include "services/service_manager/public/cpp/interface_provider.h"
35 #include "services/service_manager/public/cpp/interface_registry.h" 36 #include "services/service_manager/public/cpp/interface_registry.h"
36 #include "services/service_manager/public/interfaces/interface_provider.mojom.h" 37 #include "services/service_manager/public/interfaces/interface_provider.mojom.h"
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 std::move(request)); 145 std::move(request));
145 } 146 }
146 147
147 MockServiceWorkerEventDispatcher( 148 MockServiceWorkerEventDispatcher(
148 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, 149 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper,
149 int thread_id) 150 int thread_id)
150 : helper_(helper), thread_id_(thread_id) {} 151 : helper_(helper), thread_id_(thread_id) {}
151 152
152 ~MockServiceWorkerEventDispatcher() override {} 153 ~MockServiceWorkerEventDispatcher() override {}
153 154
155 void DispatchInstallEvent(
156 mojom::InstallEventMethodAssociatedPtrInfo client,
157 const DispatchInstallEventCallback& callback) override {
158 if (!helper_)
159 return;
160 helper_->OnInstallEventStub(callback);
161 }
162
154 void DispatchActivateEvent( 163 void DispatchActivateEvent(
155 const DispatchActivateEventCallback& callback) override { 164 const DispatchActivateEventCallback& callback) override {
156 if (!helper_) 165 if (!helper_)
157 return; 166 return;
158 helper_->OnActivateEventStub(callback); 167 helper_->OnActivateEventStub(callback);
159 } 168 }
160 169
161 void DispatchBackgroundFetchAbortEvent( 170 void DispatchBackgroundFetchAbortEvent(
162 const std::string& tag, 171 const std::string& tag,
163 const DispatchBackgroundFetchAbortEventCallback& callback) override { 172 const DispatchBackgroundFetchAbortEventCallback& callback) override {
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 void EmbeddedWorkerTestHelper::OnStopWorker( 404 void EmbeddedWorkerTestHelper::OnStopWorker(
396 const mojom::EmbeddedWorkerInstanceClient::StopWorkerCallback& callback) { 405 const mojom::EmbeddedWorkerInstanceClient::StopWorkerCallback& callback) {
397 // By default just notify the sender that the worker is stopped. 406 // By default just notify the sender that the worker is stopped.
398 callback.Run(); 407 callback.Run();
399 } 408 }
400 409
401 bool EmbeddedWorkerTestHelper::OnMessageToWorker(int thread_id, 410 bool EmbeddedWorkerTestHelper::OnMessageToWorker(int thread_id,
402 int embedded_worker_id, 411 int embedded_worker_id,
403 const IPC::Message& message) { 412 const IPC::Message& message) {
404 bool handled = true; 413 bool handled = true;
405 current_embedded_worker_id_ = embedded_worker_id;
406 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message)
407 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEventStub)
408 IPC_MESSAGE_UNHANDLED(handled = false)
409 IPC_END_MESSAGE_MAP()
410 // Record all messages directed to inner script context. 414 // Record all messages directed to inner script context.
411 inner_sink_.OnMessageReceived(message); 415 inner_sink_.OnMessageReceived(message);
412 return handled; 416 return handled;
413 } 417 }
414 418
415 void EmbeddedWorkerTestHelper::OnActivateEvent( 419 void EmbeddedWorkerTestHelper::OnActivateEvent(
416 const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback& 420 const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback&
417 callback) { 421 callback) {
418 dispatched_events()->push_back(Event::Activate); 422 dispatched_events()->push_back(Event::Activate);
419 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); 423 callback.Run(SERVICE_WORKER_OK, base::Time::Now());
(...skipping 30 matching lines...) Expand all
450 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); 454 callback.Run(SERVICE_WORKER_OK, base::Time::Now());
451 } 455 }
452 456
453 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent( 457 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent(
454 mojom::ExtendableMessageEventPtr event, 458 mojom::ExtendableMessageEventPtr event,
455 const mojom::ServiceWorkerEventDispatcher:: 459 const mojom::ServiceWorkerEventDispatcher::
456 DispatchExtendableMessageEventCallback& callback) { 460 DispatchExtendableMessageEventCallback& callback) {
457 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); 461 callback.Run(SERVICE_WORKER_OK, base::Time::Now());
458 } 462 }
459 463
460 void EmbeddedWorkerTestHelper::OnInstallEvent(int embedded_worker_id, 464 void EmbeddedWorkerTestHelper::OnInstallEvent(
461 int request_id) { 465 const mojom::ServiceWorkerEventDispatcher::DispatchInstallEventCallback&
462 // The installing worker may have been doomed and terminated. 466 callback) {
463 if (!registry()->GetWorker(embedded_worker_id)) 467 dispatched_events()->push_back(Event::Install);
464 return; 468 callback.Run(SERVICE_WORKER_OK, true /* has_fetch_handler */,
465 SimulateSend(new ServiceWorkerHostMsg_InstallEventFinished( 469 base::Time::Now());
466 embedded_worker_id, request_id,
467 blink::WebServiceWorkerEventResultCompleted, true, base::Time::Now()));
468 } 470 }
469 471
470 void EmbeddedWorkerTestHelper::OnFetchEvent( 472 void EmbeddedWorkerTestHelper::OnFetchEvent(
471 int embedded_worker_id, 473 int embedded_worker_id,
472 int fetch_event_id, 474 int fetch_event_id,
473 const ServiceWorkerFetchRequest& request, 475 const ServiceWorkerFetchRequest& request,
474 mojom::FetchEventPreloadHandlePtr preload_handle, 476 mojom::FetchEventPreloadHandlePtr preload_handle,
475 const FetchCallback& callback) { 477 const FetchCallback& callback) {
476 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( 478 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse(
477 embedded_worker_id, fetch_event_id, 479 embedded_worker_id, fetch_event_id,
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 694
693 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub( 695 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub(
694 mojom::ExtendableMessageEventPtr event, 696 mojom::ExtendableMessageEventPtr event,
695 const mojom::ServiceWorkerEventDispatcher:: 697 const mojom::ServiceWorkerEventDispatcher::
696 DispatchExtendableMessageEventCallback& callback) { 698 DispatchExtendableMessageEventCallback& callback) {
697 base::ThreadTaskRunnerHandle::Get()->PostTask( 699 base::ThreadTaskRunnerHandle::Get()->PostTask(
698 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent, 700 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent,
699 AsWeakPtr(), base::Passed(&event), callback)); 701 AsWeakPtr(), base::Passed(&event), callback));
700 } 702 }
701 703
702 void EmbeddedWorkerTestHelper::OnInstallEventStub(int request_id) { 704 void EmbeddedWorkerTestHelper::OnInstallEventStub(
705 const mojom::ServiceWorkerEventDispatcher::DispatchInstallEventCallback&
706 callback) {
703 base::ThreadTaskRunnerHandle::Get()->PostTask( 707 base::ThreadTaskRunnerHandle::Get()->PostTask(
704 FROM_HERE, 708 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent,
705 base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent, AsWeakPtr(), 709 AsWeakPtr(), callback));
706 current_embedded_worker_id_, request_id));
707 } 710 }
708 711
709 void EmbeddedWorkerTestHelper::OnFetchEventStub( 712 void EmbeddedWorkerTestHelper::OnFetchEventStub(
710 int thread_id, 713 int thread_id,
711 int fetch_event_id, 714 int fetch_event_id,
712 const ServiceWorkerFetchRequest& request, 715 const ServiceWorkerFetchRequest& request,
713 mojom::FetchEventPreloadHandlePtr preload_handle, 716 mojom::FetchEventPreloadHandlePtr preload_handle,
714 const FetchCallback& callback) { 717 const FetchCallback& callback) {
715 base::ThreadTaskRunnerHandle::Get()->PostTask( 718 base::ThreadTaskRunnerHandle::Get()->PostTask(
716 FROM_HERE, 719 FROM_HERE,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 service_manager::InterfaceProviderSpec()); 786 service_manager::InterfaceProviderSpec());
784 787
785 std::unique_ptr<service_manager::InterfaceProvider> remote_interfaces( 788 std::unique_ptr<service_manager::InterfaceProvider> remote_interfaces(
786 new service_manager::InterfaceProvider); 789 new service_manager::InterfaceProvider);
787 remote_interfaces->Bind(std::move(interfaces)); 790 remote_interfaces->Bind(std::move(interfaces));
788 rph->SetRemoteInterfaces(std::move(remote_interfaces)); 791 rph->SetRemoteInterfaces(std::move(remote_interfaces));
789 return registry; 792 return registry;
790 } 793 }
791 794
792 } // namespace content 795 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698