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

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

Issue 2746783002: [ServiceWorker] Mojofy InstallEvent of Service Worker (Closed)
Patch Set: Just delete a useless line Created 3 years, 7 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/message_loop/message_loop.h" 16 #include "base/message_loop/message_loop.h"
17 #include "base/run_loop.h" 17 #include "base/run_loop.h"
18 #include "base/threading/thread_task_runner_handle.h" 18 #include "base/threading/thread_task_runner_handle.h"
19 #include "base/time/time.h" 19 #include "base/time/time.h"
20 #include "content/browser/service_worker/embedded_worker_instance.h" 20 #include "content/browser/service_worker/embedded_worker_instance.h"
21 #include "content/browser/service_worker/embedded_worker_registry.h" 21 #include "content/browser/service_worker/embedded_worker_registry.h"
22 #include "content/browser/service_worker/embedded_worker_status.h" 22 #include "content/browser/service_worker/embedded_worker_status.h"
23 #include "content/browser/service_worker/service_worker_context_core.h" 23 #include "content/browser/service_worker/service_worker_context_core.h"
24 #include "content/browser/service_worker/service_worker_context_wrapper.h" 24 #include "content/browser/service_worker/service_worker_context_wrapper.h"
25 #include "content/browser/service_worker/service_worker_dispatcher_host.h" 25 #include "content/browser/service_worker/service_worker_dispatcher_host.h"
26 #include "content/browser/service_worker/service_worker_test_utils.h" 26 #include "content/browser/service_worker/service_worker_test_utils.h"
27 #include "content/common/background_fetch/background_fetch_types.h" 27 #include "content/common/background_fetch/background_fetch_types.h"
28 #include "content/common/service_worker/embedded_worker_messages.h" 28 #include "content/common/service_worker/embedded_worker_messages.h"
29 #include "content/common/service_worker/embedded_worker_start_params.h" 29 #include "content/common/service_worker/embedded_worker_start_params.h"
30 #include "content/common/service_worker/service_worker_event_dispatcher.mojom.h"
30 #include "content/common/service_worker/service_worker_messages.h" 31 #include "content/common/service_worker/service_worker_messages.h"
31 #include "content/common/service_worker/service_worker_utils.h" 32 #include "content/common/service_worker/service_worker_utils.h"
32 #include "content/public/common/push_event_payload.h" 33 #include "content/public/common/push_event_payload.h"
33 #include "content/public/test/mock_render_process_host.h" 34 #include "content/public/test/mock_render_process_host.h"
34 #include "content/public/test/test_browser_context.h" 35 #include "content/public/test/test_browser_context.h"
35 #include "mojo/public/cpp/bindings/interface_request.h" 36 #include "mojo/public/cpp/bindings/interface_request.h"
36 #include "mojo/public/cpp/bindings/strong_binding.h" 37 #include "mojo/public/cpp/bindings/strong_binding.h"
37 #include "services/service_manager/public/cpp/interface_provider.h" 38 #include "services/service_manager/public/cpp/interface_provider.h"
38 #include "services/service_manager/public/cpp/interface_registry.h" 39 #include "services/service_manager/public/cpp/interface_registry.h"
39 #include "services/service_manager/public/interfaces/interface_provider.mojom.h" 40 #include "services/service_manager/public/interfaces/interface_provider.mojom.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 std::move(request)); 152 std::move(request));
152 } 153 }
153 154
154 MockServiceWorkerEventDispatcher( 155 MockServiceWorkerEventDispatcher(
155 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, 156 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper,
156 int thread_id) 157 int thread_id)
157 : helper_(helper), thread_id_(thread_id) {} 158 : helper_(helper), thread_id_(thread_id) {}
158 159
159 ~MockServiceWorkerEventDispatcher() override {} 160 ~MockServiceWorkerEventDispatcher() override {}
160 161
162 void DispatchInstallEvent(
163 mojom::ServiceWorkerInstallEventMethodsAssociatedPtrInfo client,
164 DispatchInstallEventCallback callback) override {
165 if (!helper_)
166 return;
167 helper_->OnInstallEventStub(std::move(client), std::move(callback));
168 }
169
161 void DispatchActivateEvent(DispatchActivateEventCallback callback) override { 170 void DispatchActivateEvent(DispatchActivateEventCallback callback) override {
162 if (!helper_) 171 if (!helper_)
163 return; 172 return;
164 helper_->OnActivateEventStub(std::move(callback)); 173 helper_->OnActivateEventStub(std::move(callback));
165 } 174 }
166 175
167 void DispatchBackgroundFetchAbortEvent( 176 void DispatchBackgroundFetchAbortEvent(
168 const std::string& tag, 177 const std::string& tag,
169 DispatchBackgroundFetchAbortEventCallback callback) override { 178 DispatchBackgroundFetchAbortEventCallback callback) override {
170 if (!helper_) 179 if (!helper_)
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 GetNextProviderId()); 418 GetNextProviderId());
410 SimulateWorkerScriptEvaluated(embedded_worker_id, true /* success */); 419 SimulateWorkerScriptEvaluated(embedded_worker_id, true /* success */);
411 SimulateWorkerStarted(embedded_worker_id); 420 SimulateWorkerStarted(embedded_worker_id);
412 } 421 }
413 422
414 void EmbeddedWorkerTestHelper::OnStopWorker(int embedded_worker_id) { 423 void EmbeddedWorkerTestHelper::OnStopWorker(int embedded_worker_id) {
415 // By default just notify the sender that the worker is stopped. 424 // By default just notify the sender that the worker is stopped.
416 SimulateWorkerStopped(embedded_worker_id); 425 SimulateWorkerStopped(embedded_worker_id);
417 } 426 }
418 427
419 bool EmbeddedWorkerTestHelper::OnMessageToWorker(int thread_id,
420 int embedded_worker_id,
421 const IPC::Message& message) {
422 bool handled = true;
423 current_embedded_worker_id_ = embedded_worker_id;
424 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message)
425 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEventStub)
426 IPC_MESSAGE_UNHANDLED(handled = false)
427 IPC_END_MESSAGE_MAP()
428 // Record all messages directed to inner script context.
429 inner_sink_.OnMessageReceived(message);
430 return handled;
431 }
432
433 void EmbeddedWorkerTestHelper::OnActivateEvent( 428 void EmbeddedWorkerTestHelper::OnActivateEvent(
434 mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback 429 mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback
435 callback) { 430 callback) {
436 dispatched_events()->push_back(Event::Activate); 431 dispatched_events()->push_back(Event::Activate);
437 std::move(callback).Run(SERVICE_WORKER_OK, base::Time::Now()); 432 std::move(callback).Run(SERVICE_WORKER_OK, base::Time::Now());
438 } 433 }
439 434
440 void EmbeddedWorkerTestHelper::OnBackgroundFetchAbortEvent( 435 void EmbeddedWorkerTestHelper::OnBackgroundFetchAbortEvent(
441 const std::string& tag, 436 const std::string& tag,
442 mojom::ServiceWorkerEventDispatcher:: 437 mojom::ServiceWorkerEventDispatcher::
(...skipping 25 matching lines...) Expand all
468 std::move(callback).Run(SERVICE_WORKER_OK, base::Time::Now()); 463 std::move(callback).Run(SERVICE_WORKER_OK, base::Time::Now());
469 } 464 }
470 465
471 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent( 466 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent(
472 mojom::ExtendableMessageEventPtr event, 467 mojom::ExtendableMessageEventPtr event,
473 mojom::ServiceWorkerEventDispatcher::DispatchExtendableMessageEventCallback 468 mojom::ServiceWorkerEventDispatcher::DispatchExtendableMessageEventCallback
474 callback) { 469 callback) {
475 std::move(callback).Run(SERVICE_WORKER_OK, base::Time::Now()); 470 std::move(callback).Run(SERVICE_WORKER_OK, base::Time::Now());
476 } 471 }
477 472
478 void EmbeddedWorkerTestHelper::OnInstallEvent(int embedded_worker_id, 473 void EmbeddedWorkerTestHelper::OnInstallEvent(
479 int request_id) { 474 mojom::ServiceWorkerInstallEventMethodsAssociatedPtrInfo client,
480 // The installing worker may have been doomed and terminated. 475 mojom::ServiceWorkerEventDispatcher::DispatchInstallEventCallback
481 if (!registry()->GetWorker(embedded_worker_id)) 476 callback) {
482 return; 477 dispatched_events()->push_back(Event::Install);
483 SimulateSend(new ServiceWorkerHostMsg_InstallEventFinished( 478 std::move(callback).Run(SERVICE_WORKER_OK, true /* has_fetch_handler */,
484 embedded_worker_id, request_id, 479 base::Time::Now());
485 blink::kWebServiceWorkerEventResultCompleted, true, base::Time::Now()));
486 } 480 }
487 481
488 void EmbeddedWorkerTestHelper::OnFetchEvent( 482 void EmbeddedWorkerTestHelper::OnFetchEvent(
489 int /* embedded_worker_id */, 483 int /* embedded_worker_id */,
490 int /* fetch_event_id */, 484 int /* fetch_event_id */,
491 const ServiceWorkerFetchRequest& /* request */, 485 const ServiceWorkerFetchRequest& /* request */,
492 mojom::FetchEventPreloadHandlePtr /* preload_handle */, 486 mojom::FetchEventPreloadHandlePtr /* preload_handle */,
493 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback, 487 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback,
494 FetchCallback finish_callback) { 488 FetchCallback finish_callback) {
495 response_callback->OnResponse( 489 response_callback->OnResponse(
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 AsWeakPtr(), embedded_worker_id)); 657 AsWeakPtr(), embedded_worker_id));
664 } 658 }
665 659
666 void EmbeddedWorkerTestHelper::OnMessageToWorkerStub( 660 void EmbeddedWorkerTestHelper::OnMessageToWorkerStub(
667 int thread_id, 661 int thread_id,
668 int embedded_worker_id, 662 int embedded_worker_id,
669 const IPC::Message& message) { 663 const IPC::Message& message) {
670 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); 664 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id);
671 ASSERT_TRUE(worker); 665 ASSERT_TRUE(worker);
672 EXPECT_EQ(worker->thread_id(), thread_id); 666 EXPECT_EQ(worker->thread_id(), thread_id);
673 base::ThreadTaskRunnerHandle::Get()->PostTask(
674 FROM_HERE,
675 base::Bind(
676 base::IgnoreResult(&EmbeddedWorkerTestHelper::OnMessageToWorker),
677 AsWeakPtr(), thread_id, embedded_worker_id, message));
678 } 667 }
679 668
680 void EmbeddedWorkerTestHelper::OnActivateEventStub( 669 void EmbeddedWorkerTestHelper::OnActivateEventStub(
681 mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback 670 mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback
682 callback) { 671 callback) {
683 base::ThreadTaskRunnerHandle::Get()->PostTask( 672 base::ThreadTaskRunnerHandle::Get()->PostTask(
684 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnActivateEvent, 673 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnActivateEvent,
685 AsWeakPtr(), base::Passed(&callback))); 674 AsWeakPtr(), base::Passed(&callback)));
686 } 675 }
687 676
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
731 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub( 720 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub(
732 mojom::ExtendableMessageEventPtr event, 721 mojom::ExtendableMessageEventPtr event,
733 mojom::ServiceWorkerEventDispatcher::DispatchExtendableMessageEventCallback 722 mojom::ServiceWorkerEventDispatcher::DispatchExtendableMessageEventCallback
734 callback) { 723 callback) {
735 base::ThreadTaskRunnerHandle::Get()->PostTask( 724 base::ThreadTaskRunnerHandle::Get()->PostTask(
736 FROM_HERE, 725 FROM_HERE,
737 base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent, 726 base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent,
738 AsWeakPtr(), base::Passed(&event), base::Passed(&callback))); 727 AsWeakPtr(), base::Passed(&event), base::Passed(&callback)));
739 } 728 }
740 729
741 void EmbeddedWorkerTestHelper::OnInstallEventStub(int request_id) { 730 void EmbeddedWorkerTestHelper::OnInstallEventStub(
731 mojom::ServiceWorkerInstallEventMethodsAssociatedPtrInfo client,
732 mojom::ServiceWorkerEventDispatcher::DispatchInstallEventCallback
733 callback) {
742 base::ThreadTaskRunnerHandle::Get()->PostTask( 734 base::ThreadTaskRunnerHandle::Get()->PostTask(
743 FROM_HERE, 735 FROM_HERE,
744 base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent, AsWeakPtr(), 736 base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent, AsWeakPtr(),
745 current_embedded_worker_id_, request_id)); 737 base::Passed(&client), base::Passed(&callback)));
746 } 738 }
747 739
748 void EmbeddedWorkerTestHelper::OnFetchEventStub( 740 void EmbeddedWorkerTestHelper::OnFetchEventStub(
749 int thread_id, 741 int thread_id,
750 int fetch_event_id, 742 int fetch_event_id,
751 const ServiceWorkerFetchRequest& request, 743 const ServiceWorkerFetchRequest& request,
752 mojom::FetchEventPreloadHandlePtr preload_handle, 744 mojom::FetchEventPreloadHandlePtr preload_handle,
753 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback, 745 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback,
754 FetchCallback finish_callback) { 746 FetchCallback finish_callback) {
755 base::ThreadTaskRunnerHandle::Get()->PostTask( 747 base::ThreadTaskRunnerHandle::Get()->PostTask(
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 base::Passed(&app_request), base::Passed(&response_callback), 796 base::Passed(&app_request), base::Passed(&response_callback),
805 base::Passed(&callback))); 797 base::Passed(&callback)));
806 } 798 }
807 799
808 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() { 800 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() {
809 DCHECK(context()); 801 DCHECK(context());
810 return context()->embedded_worker_registry(); 802 return context()->embedded_worker_registry();
811 } 803 }
812 804
813 } // namespace content 805 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698