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

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 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 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
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, 426 bool EmbeddedWorkerTestHelper::OnMessageToWorker(int thread_id,
418 int embedded_worker_id, 427 int embedded_worker_id,
419 const IPC::Message& message) { 428 const IPC::Message& message) {
420 bool handled = true; 429 bool handled = true;
leonhsl(Using Gerrit) 2017/04/23 03:33:10 After install event mojofication this function wil
shimazu 2017/04/24 05:00:13 It's great work! Let's remove no-op functions (inn
xiaofengzhang 2017/04/24 05:44:08 Hi leon@, shimazu-san@, OnMessageToWorker is still
shimazu 2017/04/24 06:22:18 I feel separating cleanup work is not preferable b
xiaofengzhang 2017/04/25 06:01:28 Done. Thanks a lot for you detailed explanation!
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. 430 // Record all messages directed to inner script context.
427 inner_sink_.OnMessageReceived(message); 431 inner_sink_.OnMessageReceived(message);
428 return handled; 432 return handled;
429 } 433 }
430 434
431 void EmbeddedWorkerTestHelper::OnActivateEvent( 435 void EmbeddedWorkerTestHelper::OnActivateEvent(
432 const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback& 436 const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback&
433 callback) { 437 callback) {
434 dispatched_events()->push_back(Event::Activate); 438 dispatched_events()->push_back(Event::Activate);
435 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); 439 callback.Run(SERVICE_WORKER_OK, base::Time::Now());
(...skipping 30 matching lines...) Expand all
466 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); 470 callback.Run(SERVICE_WORKER_OK, base::Time::Now());
467 } 471 }
468 472
469 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent( 473 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent(
470 mojom::ExtendableMessageEventPtr event, 474 mojom::ExtendableMessageEventPtr event,
471 const mojom::ServiceWorkerEventDispatcher:: 475 const mojom::ServiceWorkerEventDispatcher::
472 DispatchExtendableMessageEventCallback& callback) { 476 DispatchExtendableMessageEventCallback& callback) {
473 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); 477 callback.Run(SERVICE_WORKER_OK, base::Time::Now());
474 } 478 }
475 479
476 void EmbeddedWorkerTestHelper::OnInstallEvent(int embedded_worker_id, 480 void EmbeddedWorkerTestHelper::OnInstallEvent(
477 int request_id) { 481 const mojom::ServiceWorkerEventDispatcher::DispatchInstallEventCallback&
478 // The installing worker may have been doomed and terminated. 482 callback) {
479 if (!registry()->GetWorker(embedded_worker_id)) 483 dispatched_events()->push_back(Event::Install);
480 return; 484 callback.Run(SERVICE_WORKER_OK, true /* has_fetch_handler */,
481 SimulateSend(new ServiceWorkerHostMsg_InstallEventFinished( 485 base::Time::Now());
482 embedded_worker_id, request_id,
483 blink::kWebServiceWorkerEventResultCompleted, true, base::Time::Now()));
484 } 486 }
485 487
486 void EmbeddedWorkerTestHelper::OnFetchEvent( 488 void EmbeddedWorkerTestHelper::OnFetchEvent(
487 int /* embedded_worker_id */, 489 int /* embedded_worker_id */,
488 int /* fetch_event_id */, 490 int /* fetch_event_id */,
489 const ServiceWorkerFetchRequest& /* request */, 491 const ServiceWorkerFetchRequest& /* request */,
490 mojom::FetchEventPreloadHandlePtr /* preload_handle */, 492 mojom::FetchEventPreloadHandlePtr /* preload_handle */,
491 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback, 493 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback,
492 const FetchCallback& finish_callback) { 494 const FetchCallback& finish_callback) {
493 response_callback->OnResponse( 495 response_callback->OnResponse(
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 730
729 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub( 731 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub(
730 mojom::ExtendableMessageEventPtr event, 732 mojom::ExtendableMessageEventPtr event,
731 const mojom::ServiceWorkerEventDispatcher:: 733 const mojom::ServiceWorkerEventDispatcher::
732 DispatchExtendableMessageEventCallback& callback) { 734 DispatchExtendableMessageEventCallback& callback) {
733 base::ThreadTaskRunnerHandle::Get()->PostTask( 735 base::ThreadTaskRunnerHandle::Get()->PostTask(
734 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent, 736 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent,
735 AsWeakPtr(), base::Passed(&event), callback)); 737 AsWeakPtr(), base::Passed(&event), callback));
736 } 738 }
737 739
738 void EmbeddedWorkerTestHelper::OnInstallEventStub(int request_id) { 740 void EmbeddedWorkerTestHelper::OnInstallEventStub(
741 const mojom::ServiceWorkerEventDispatcher::DispatchInstallEventCallback&
742 callback) {
739 base::ThreadTaskRunnerHandle::Get()->PostTask( 743 base::ThreadTaskRunnerHandle::Get()->PostTask(
740 FROM_HERE, 744 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent,
741 base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent, AsWeakPtr(), 745 AsWeakPtr(), callback));
742 current_embedded_worker_id_, request_id));
743 } 746 }
744 747
745 void EmbeddedWorkerTestHelper::OnFetchEventStub( 748 void EmbeddedWorkerTestHelper::OnFetchEventStub(
746 int thread_id, 749 int thread_id,
747 int fetch_event_id, 750 int fetch_event_id,
748 const ServiceWorkerFetchRequest& request, 751 const ServiceWorkerFetchRequest& request,
749 mojom::FetchEventPreloadHandlePtr preload_handle, 752 mojom::FetchEventPreloadHandlePtr preload_handle,
750 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback, 753 mojom::ServiceWorkerFetchResponseCallbackPtr response_callback,
751 const FetchCallback& finish_callback) { 754 const FetchCallback& finish_callback) {
752 base::ThreadTaskRunnerHandle::Get()->PostTask( 755 base::ThreadTaskRunnerHandle::Get()->PostTask(
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 base::Passed(std::move(app_request)), 804 base::Passed(std::move(app_request)),
802 base::Passed(std::move(response_callback)), callback)); 805 base::Passed(std::move(response_callback)), callback));
803 } 806 }
804 807
805 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() { 808 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() {
806 DCHECK(context()); 809 DCHECK(context());
807 return context()->embedded_worker_registry(); 810 return context()->embedded_worker_registry();
808 } 811 }
809 812
810 } // namespace content 813 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698