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

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

Issue 2746783002: [ServiceWorker] Mojofy InstallEvent of Service Worker (Closed)
Patch Set: Address shimazu's comment #66 and leon's #69 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/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 const DispatchInstallEventCallback& callback) override {
165 if (!helper_)
166 return;
167 helper_->OnInstallEventStub(callback);
168 }
169
161 void DispatchActivateEvent( 170 void DispatchActivateEvent(
162 const DispatchActivateEventCallback& callback) override { 171 const DispatchActivateEventCallback& callback) override {
163 if (!helper_) 172 if (!helper_)
164 return; 173 return;
165 helper_->OnActivateEventStub(callback); 174 helper_->OnActivateEventStub(callback);
166 } 175 }
167 176
168 void DispatchBackgroundFetchAbortEvent( 177 void DispatchBackgroundFetchAbortEvent(
169 const std::string& tag, 178 const std::string& tag,
170 const DispatchBackgroundFetchAbortEventCallback& callback) override { 179 const DispatchBackgroundFetchAbortEventCallback& callback) override {
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 GetNextProviderId()); 416 GetNextProviderId());
408 SimulateWorkerScriptEvaluated(embedded_worker_id, true /* success */); 417 SimulateWorkerScriptEvaluated(embedded_worker_id, true /* success */);
409 SimulateWorkerStarted(embedded_worker_id); 418 SimulateWorkerStarted(embedded_worker_id);
410 } 419 }
411 420
412 void EmbeddedWorkerTestHelper::OnStopWorker(int embedded_worker_id) { 421 void EmbeddedWorkerTestHelper::OnStopWorker(int embedded_worker_id) {
413 // By default just notify the sender that the worker is stopped. 422 // By default just notify the sender that the worker is stopped.
414 SimulateWorkerStopped(embedded_worker_id); 423 SimulateWorkerStopped(embedded_worker_id);
415 } 424 }
416 425
417 bool EmbeddedWorkerTestHelper::OnMessageToWorker(int thread_id,
418 int embedded_worker_id,
419 const IPC::Message& message) {
420 bool handled = true;
421 current_embedded_worker_id_ = embedded_worker_id;
422 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message)
423 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEventStub)
424 IPC_MESSAGE_UNHANDLED(handled = false)
425 IPC_END_MESSAGE_MAP()
426 // Record all messages directed to inner script context.
427 inner_sink_.OnMessageReceived(message);
428 return handled;
429 }
430
431 void EmbeddedWorkerTestHelper::OnActivateEvent( 426 void EmbeddedWorkerTestHelper::OnActivateEvent(
432 const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback& 427 const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback&
433 callback) { 428 callback) {
434 dispatched_events()->push_back(Event::Activate); 429 dispatched_events()->push_back(Event::Activate);
435 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); 430 callback.Run(SERVICE_WORKER_OK, base::Time::Now());
436 } 431 }
437 432
438 void EmbeddedWorkerTestHelper::OnBackgroundFetchAbortEvent( 433 void EmbeddedWorkerTestHelper::OnBackgroundFetchAbortEvent(
439 const std::string& tag, 434 const std::string& tag,
440 const mojom::ServiceWorkerEventDispatcher:: 435 const mojom::ServiceWorkerEventDispatcher::
(...skipping 25 matching lines...) Expand all
466 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); 461 callback.Run(SERVICE_WORKER_OK, base::Time::Now());
467 } 462 }
468 463
469 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent( 464 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent(
470 mojom::ExtendableMessageEventPtr event, 465 mojom::ExtendableMessageEventPtr event,
471 const mojom::ServiceWorkerEventDispatcher:: 466 const mojom::ServiceWorkerEventDispatcher::
472 DispatchExtendableMessageEventCallback& callback) { 467 DispatchExtendableMessageEventCallback& callback) {
473 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); 468 callback.Run(SERVICE_WORKER_OK, base::Time::Now());
474 } 469 }
475 470
476 void EmbeddedWorkerTestHelper::OnInstallEvent(int embedded_worker_id, 471 void EmbeddedWorkerTestHelper::OnInstallEvent(
477 int request_id) { 472 const mojom::ServiceWorkerEventDispatcher::DispatchInstallEventCallback&
478 // The installing worker may have been doomed and terminated. 473 callback) {
479 if (!registry()->GetWorker(embedded_worker_id)) 474 dispatched_events()->push_back(Event::Install);
480 return; 475 callback.Run(SERVICE_WORKER_OK, true /* has_fetch_handler */,
481 SimulateSend(new ServiceWorkerHostMsg_InstallEventFinished( 476 base::Time::Now());
482 embedded_worker_id, request_id,
483 blink::kWebServiceWorkerEventResultCompleted, true, base::Time::Now()));
484 } 477 }
485 478
486 void EmbeddedWorkerTestHelper::OnFetchEvent( 479 void EmbeddedWorkerTestHelper::OnFetchEvent(
487 int /* embedded_worker_id */, 480 int /* embedded_worker_id */,
488 int /* fetch_event_id */, 481 int /* fetch_event_id */,
489 const ServiceWorkerFetchRequest& /* request */, 482 const ServiceWorkerFetchRequest& /* request */,
490 mojom::FetchEventPreloadHandlePtr /* preload_handle */, 483 mojom::FetchEventPreloadHandlePtr /* preload_handle */,
491 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback, 484 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback,
492 const FetchCallback& finish_callback) { 485 const FetchCallback& finish_callback) {
493 response_callback->OnResponse( 486 response_callback->OnResponse(
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnResumeAfterDownload, 648 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnResumeAfterDownload,
656 AsWeakPtr(), embedded_worker_id)); 649 AsWeakPtr(), embedded_worker_id));
657 } 650 }
658 651
659 void EmbeddedWorkerTestHelper::OnStopWorkerStub(int embedded_worker_id) { 652 void EmbeddedWorkerTestHelper::OnStopWorkerStub(int embedded_worker_id) {
660 base::ThreadTaskRunnerHandle::Get()->PostTask( 653 base::ThreadTaskRunnerHandle::Get()->PostTask(
661 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnStopWorker, 654 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnStopWorker,
662 AsWeakPtr(), embedded_worker_id)); 655 AsWeakPtr(), embedded_worker_id));
663 } 656 }
664 657
665 void EmbeddedWorkerTestHelper::OnMessageToWorkerStub( 658 void EmbeddedWorkerTestHelper::OnMessageToWorkerStub(
leonhsl(Using Gerrit) 2017/04/25 06:53:27 Now this function is useless, too.
xiaofengzhang 2017/04/25 07:18:15 I am wondering if it's better to keep this functio
666 int thread_id, 659 int thread_id,
667 int embedded_worker_id, 660 int embedded_worker_id,
668 const IPC::Message& message) { 661 const IPC::Message& message) {
669 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); 662 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id);
670 ASSERT_TRUE(worker); 663 ASSERT_TRUE(worker);
671 EXPECT_EQ(worker->thread_id(), thread_id); 664 EXPECT_EQ(worker->thread_id(), thread_id);
672 base::ThreadTaskRunnerHandle::Get()->PostTask(
673 FROM_HERE,
674 base::Bind(
675 base::IgnoreResult(&EmbeddedWorkerTestHelper::OnMessageToWorker),
676 AsWeakPtr(), thread_id, embedded_worker_id, message));
677 } 665 }
678 666
679 void EmbeddedWorkerTestHelper::OnActivateEventStub( 667 void EmbeddedWorkerTestHelper::OnActivateEventStub(
680 const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback& 668 const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback&
681 callback) { 669 callback) {
682 base::ThreadTaskRunnerHandle::Get()->PostTask( 670 base::ThreadTaskRunnerHandle::Get()->PostTask(
683 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnActivateEvent, 671 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnActivateEvent,
684 AsWeakPtr(), callback)); 672 AsWeakPtr(), callback));
685 } 673 }
686 674
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 716
729 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub( 717 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub(
730 mojom::ExtendableMessageEventPtr event, 718 mojom::ExtendableMessageEventPtr event,
731 const mojom::ServiceWorkerEventDispatcher:: 719 const mojom::ServiceWorkerEventDispatcher::
732 DispatchExtendableMessageEventCallback& callback) { 720 DispatchExtendableMessageEventCallback& callback) {
733 base::ThreadTaskRunnerHandle::Get()->PostTask( 721 base::ThreadTaskRunnerHandle::Get()->PostTask(
734 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent, 722 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent,
735 AsWeakPtr(), base::Passed(&event), callback)); 723 AsWeakPtr(), base::Passed(&event), callback));
736 } 724 }
737 725
738 void EmbeddedWorkerTestHelper::OnInstallEventStub(int request_id) { 726 void EmbeddedWorkerTestHelper::OnInstallEventStub(
727 const mojom::ServiceWorkerEventDispatcher::DispatchInstallEventCallback&
728 callback) {
739 base::ThreadTaskRunnerHandle::Get()->PostTask( 729 base::ThreadTaskRunnerHandle::Get()->PostTask(
740 FROM_HERE, 730 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent,
741 base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent, AsWeakPtr(), 731 AsWeakPtr(), callback));
742 current_embedded_worker_id_, request_id));
743 } 732 }
744 733
745 void EmbeddedWorkerTestHelper::OnFetchEventStub( 734 void EmbeddedWorkerTestHelper::OnFetchEventStub(
746 int thread_id, 735 int thread_id,
747 int fetch_event_id, 736 int fetch_event_id,
748 const ServiceWorkerFetchRequest& request, 737 const ServiceWorkerFetchRequest& request,
749 mojom::FetchEventPreloadHandlePtr preload_handle, 738 mojom::FetchEventPreloadHandlePtr preload_handle,
750 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback, 739 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback,
751 const FetchCallback& finish_callback) { 740 const FetchCallback& finish_callback) {
752 base::ThreadTaskRunnerHandle::Get()->PostTask( 741 base::ThreadTaskRunnerHandle::Get()->PostTask(
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 base::Passed(std::move(app_request)), 790 base::Passed(std::move(app_request)),
802 base::Passed(std::move(response_callback)), callback)); 791 base::Passed(std::move(response_callback)), callback));
803 } 792 }
804 793
805 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() { 794 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() {
806 DCHECK(context()); 795 DCHECK(context());
807 return context()->embedded_worker_registry(); 796 return context()->embedded_worker_registry();
808 } 797 }
809 798
810 } // namespace content 799 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698