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

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 shimazu's comment #33 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 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 417
409 void EmbeddedWorkerTestHelper::OnStopWorker(int embedded_worker_id) { 418 void EmbeddedWorkerTestHelper::OnStopWorker(int embedded_worker_id) {
410 // By default just notify the sender that the worker is stopped. 419 // By default just notify the sender that the worker is stopped.
411 SimulateWorkerStopped(embedded_worker_id); 420 SimulateWorkerStopped(embedded_worker_id);
412 } 421 }
413 422
414 bool EmbeddedWorkerTestHelper::OnMessageToWorker(int thread_id, 423 bool EmbeddedWorkerTestHelper::OnMessageToWorker(int thread_id,
415 int embedded_worker_id, 424 int embedded_worker_id,
416 const IPC::Message& message) { 425 const IPC::Message& message) {
417 bool handled = true; 426 bool handled = true;
418 current_embedded_worker_id_ = embedded_worker_id;
419 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message)
420 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEventStub)
421 IPC_MESSAGE_UNHANDLED(handled = false)
422 IPC_END_MESSAGE_MAP()
423 // Record all messages directed to inner script context. 427 // Record all messages directed to inner script context.
424 inner_sink_.OnMessageReceived(message); 428 inner_sink_.OnMessageReceived(message);
425 return handled; 429 return handled;
426 } 430 }
427 431
428 void EmbeddedWorkerTestHelper::OnActivateEvent( 432 void EmbeddedWorkerTestHelper::OnActivateEvent(
429 const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback& 433 const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback&
430 callback) { 434 callback) {
431 dispatched_events()->push_back(Event::Activate); 435 dispatched_events()->push_back(Event::Activate);
432 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); 436 callback.Run(SERVICE_WORKER_OK, base::Time::Now());
(...skipping 30 matching lines...) Expand all
463 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); 467 callback.Run(SERVICE_WORKER_OK, base::Time::Now());
464 } 468 }
465 469
466 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent( 470 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent(
467 mojom::ExtendableMessageEventPtr event, 471 mojom::ExtendableMessageEventPtr event,
468 const mojom::ServiceWorkerEventDispatcher:: 472 const mojom::ServiceWorkerEventDispatcher::
469 DispatchExtendableMessageEventCallback& callback) { 473 DispatchExtendableMessageEventCallback& callback) {
470 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); 474 callback.Run(SERVICE_WORKER_OK, base::Time::Now());
471 } 475 }
472 476
473 void EmbeddedWorkerTestHelper::OnInstallEvent(int embedded_worker_id, 477 void EmbeddedWorkerTestHelper::OnInstallEvent(
474 int request_id) { 478 const mojom::ServiceWorkerEventDispatcher::DispatchInstallEventCallback&
475 // The installing worker may have been doomed and terminated. 479 callback) {
476 if (!registry()->GetWorker(embedded_worker_id)) 480 dispatched_events()->push_back(Event::Install);
477 return; 481 callback.Run(SERVICE_WORKER_OK, true /* has_fetch_handler */,
478 SimulateSend(new ServiceWorkerHostMsg_InstallEventFinished( 482 base::Time::Now());
479 embedded_worker_id, request_id,
480 blink::kWebServiceWorkerEventResultCompleted, true, base::Time::Now()));
481 } 483 }
482 484
483 void EmbeddedWorkerTestHelper::OnFetchEvent( 485 void EmbeddedWorkerTestHelper::OnFetchEvent(
484 int embedded_worker_id, 486 int embedded_worker_id,
485 int fetch_event_id, 487 int fetch_event_id,
486 const ServiceWorkerFetchRequest& request, 488 const ServiceWorkerFetchRequest& request,
487 mojom::FetchEventPreloadHandlePtr preload_handle, 489 mojom::FetchEventPreloadHandlePtr preload_handle,
488 const FetchCallback& callback) { 490 const FetchCallback& callback) {
489 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( 491 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse(
490 embedded_worker_id, fetch_event_id, 492 embedded_worker_id, fetch_event_id,
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 728
727 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub( 729 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub(
728 mojom::ExtendableMessageEventPtr event, 730 mojom::ExtendableMessageEventPtr event,
729 const mojom::ServiceWorkerEventDispatcher:: 731 const mojom::ServiceWorkerEventDispatcher::
730 DispatchExtendableMessageEventCallback& callback) { 732 DispatchExtendableMessageEventCallback& callback) {
731 base::ThreadTaskRunnerHandle::Get()->PostTask( 733 base::ThreadTaskRunnerHandle::Get()->PostTask(
732 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent, 734 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent,
733 AsWeakPtr(), base::Passed(&event), callback)); 735 AsWeakPtr(), base::Passed(&event), callback));
734 } 736 }
735 737
736 void EmbeddedWorkerTestHelper::OnInstallEventStub(int request_id) { 738 void EmbeddedWorkerTestHelper::OnInstallEventStub(
739 const mojom::ServiceWorkerEventDispatcher::DispatchInstallEventCallback&
740 callback) {
737 base::ThreadTaskRunnerHandle::Get()->PostTask( 741 base::ThreadTaskRunnerHandle::Get()->PostTask(
738 FROM_HERE, 742 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent,
739 base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent, AsWeakPtr(), 743 AsWeakPtr(), callback));
740 current_embedded_worker_id_, request_id));
741 } 744 }
742 745
743 void EmbeddedWorkerTestHelper::OnFetchEventStub( 746 void EmbeddedWorkerTestHelper::OnFetchEventStub(
744 int thread_id, 747 int thread_id,
745 int fetch_event_id, 748 int fetch_event_id,
746 const ServiceWorkerFetchRequest& request, 749 const ServiceWorkerFetchRequest& request,
747 mojom::FetchEventPreloadHandlePtr preload_handle, 750 mojom::FetchEventPreloadHandlePtr preload_handle,
748 const FetchCallback& callback) { 751 const FetchCallback& callback) {
749 base::ThreadTaskRunnerHandle::Get()->PostTask( 752 base::ThreadTaskRunnerHandle::Get()->PostTask(
750 FROM_HERE, 753 FROM_HERE,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
797 base::Passed(std::move(app_request)), 800 base::Passed(std::move(app_request)),
798 base::Passed(std::move(response_callback)), callback)); 801 base::Passed(std::move(response_callback)), callback));
799 } 802 }
800 803
801 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() { 804 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() {
802 DCHECK(context()); 805 DCHECK(context());
803 return context()->embedded_worker_registry(); 806 return context()->embedded_worker_registry();
804 } 807 }
805 808
806 } // namespace content 809 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698