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

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

Issue 2746783002: [ServiceWorker] Mojofy InstallEvent of Service Worker (Closed)
Patch Set: Fix the test failure 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,
shimazu 2017/04/27 02:36:44 Can we have a test for SWInstannEventMethods?
xiaofengzhang 2017/04/27 05:15:32 Sure, I will try do it.
xiaofengzhang 2017/04/28 08:20:17 Done.
164 DispatchInstallEventCallback callback) override {
165 if (!helper_)
166 return;
167 helper_->OnInstallEventStub(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::ServiceWorkerEventDispatcher::DispatchInstallEventCallback
480 // The installing worker may have been doomed and terminated. 475 callback) {
481 if (!registry()->GetWorker(embedded_worker_id)) 476 dispatched_events()->push_back(Event::Install);
482 return; 477 std::move(callback).Run(SERVICE_WORKER_OK, true /* has_fetch_handler */,
483 SimulateSend(new ServiceWorkerHostMsg_InstallEventFinished( 478 base::Time::Now());
484 embedded_worker_id, request_id,
485 blink::kWebServiceWorkerEventResultCompleted, true, base::Time::Now()));
486 } 479 }
487 480
488 void EmbeddedWorkerTestHelper::OnFetchEvent( 481 void EmbeddedWorkerTestHelper::OnFetchEvent(
489 int /* embedded_worker_id */, 482 int /* embedded_worker_id */,
490 int /* fetch_event_id */, 483 int /* fetch_event_id */,
491 const ServiceWorkerFetchRequest& /* request */, 484 const ServiceWorkerFetchRequest& /* request */,
492 mojom::FetchEventPreloadHandlePtr /* preload_handle */, 485 mojom::FetchEventPreloadHandlePtr /* preload_handle */,
493 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback, 486 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback,
494 FetchCallback finish_callback) { 487 FetchCallback finish_callback) {
495 response_callback->OnResponse( 488 response_callback->OnResponse(
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 AsWeakPtr(), embedded_worker_id)); 656 AsWeakPtr(), embedded_worker_id));
664 } 657 }
665 658
666 void EmbeddedWorkerTestHelper::OnMessageToWorkerStub( 659 void EmbeddedWorkerTestHelper::OnMessageToWorkerStub(
667 int thread_id, 660 int thread_id,
668 int embedded_worker_id, 661 int embedded_worker_id,
669 const IPC::Message& message) { 662 const IPC::Message& message) {
670 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); 663 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id);
671 ASSERT_TRUE(worker); 664 ASSERT_TRUE(worker);
672 EXPECT_EQ(worker->thread_id(), thread_id); 665 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 } 666 }
679 667
680 void EmbeddedWorkerTestHelper::OnActivateEventStub( 668 void EmbeddedWorkerTestHelper::OnActivateEventStub(
681 mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback 669 mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback
682 callback) { 670 callback) {
683 base::ThreadTaskRunnerHandle::Get()->PostTask( 671 base::ThreadTaskRunnerHandle::Get()->PostTask(
684 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnActivateEvent, 672 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnActivateEvent,
685 AsWeakPtr(), base::Passed(&callback))); 673 AsWeakPtr(), base::Passed(&callback)));
686 } 674 }
687 675
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
731 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub( 719 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub(
732 mojom::ExtendableMessageEventPtr event, 720 mojom::ExtendableMessageEventPtr event,
733 mojom::ServiceWorkerEventDispatcher::DispatchExtendableMessageEventCallback 721 mojom::ServiceWorkerEventDispatcher::DispatchExtendableMessageEventCallback
734 callback) { 722 callback) {
735 base::ThreadTaskRunnerHandle::Get()->PostTask( 723 base::ThreadTaskRunnerHandle::Get()->PostTask(
736 FROM_HERE, 724 FROM_HERE,
737 base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent, 725 base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent,
738 AsWeakPtr(), base::Passed(&event), base::Passed(&callback))); 726 AsWeakPtr(), base::Passed(&event), base::Passed(&callback)));
739 } 727 }
740 728
741 void EmbeddedWorkerTestHelper::OnInstallEventStub(int request_id) { 729 void EmbeddedWorkerTestHelper::OnInstallEventStub(
730 mojom::ServiceWorkerEventDispatcher::DispatchInstallEventCallback
731 callback) {
742 base::ThreadTaskRunnerHandle::Get()->PostTask( 732 base::ThreadTaskRunnerHandle::Get()->PostTask(
743 FROM_HERE, 733 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent,
744 base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent, AsWeakPtr(), 734 AsWeakPtr(), base::Passed(&callback)));
745 current_embedded_worker_id_, request_id));
746 } 735 }
747 736
748 void EmbeddedWorkerTestHelper::OnFetchEventStub( 737 void EmbeddedWorkerTestHelper::OnFetchEventStub(
749 int thread_id, 738 int thread_id,
750 int fetch_event_id, 739 int fetch_event_id,
751 const ServiceWorkerFetchRequest& request, 740 const ServiceWorkerFetchRequest& request,
752 mojom::FetchEventPreloadHandlePtr preload_handle, 741 mojom::FetchEventPreloadHandlePtr preload_handle,
753 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback, 742 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback,
754 FetchCallback finish_callback) { 743 FetchCallback finish_callback) {
755 base::ThreadTaskRunnerHandle::Get()->PostTask( 744 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), 793 base::Passed(&app_request), base::Passed(&response_callback),
805 base::Passed(&callback))); 794 base::Passed(&callback)));
806 } 795 }
807 796
808 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() { 797 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() {
809 DCHECK(context()); 798 DCHECK(context());
810 return context()->embedded_worker_registry(); 799 return context()->embedded_worker_registry();
811 } 800 }
812 801
813 } // namespace content 802 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698