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

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

Issue 2352173004: Mojoify FetchEvent of Service Worker. (Closed)
Patch Set: fix public_deps Created 4 years, 3 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/service_worker_fetch_dispatcher.h" 5 #include "content/browser/service_worker/service_worker_fetch_dispatcher.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/time/time.h" 11 #include "base/time/time.h"
12 #include "base/trace_event/trace_event.h" 12 #include "base/trace_event/trace_event.h"
13 #include "content/browser/service_worker/embedded_worker_status.h" 13 #include "content/browser/service_worker/embedded_worker_status.h"
14 #include "content/browser/service_worker/service_worker_version.h" 14 #include "content/browser/service_worker/service_worker_version.h"
15 #include "content/common/service_worker/fetch_event_dispatcher.mojom.h"
15 #include "content/common/service_worker/service_worker_messages.h" 16 #include "content/common/service_worker/service_worker_messages.h"
16 #include "content/common/service_worker/service_worker_utils.h" 17 #include "content/common/service_worker/service_worker_utils.h"
17 #include "net/log/net_log_event_type.h" 18 #include "net/log/net_log_event_type.h"
18 19
19 namespace content { 20 namespace content {
20 21
21 namespace { 22 namespace {
22 23
23 using EventType = ServiceWorkerMetrics::EventType; 24 using EventType = ServiceWorkerMetrics::EventType;
24 EventType ResourceTypeToEventType(ResourceType resource_type) { 25 EventType ResourceTypeToEventType(ResourceType resource_type) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 base::Bind(&NetLogServiceWorkerStatusCallback, status)); 65 base::Bind(&NetLogServiceWorkerStatusCallback, status));
65 } 66 }
66 67
67 ServiceWorkerMetrics::EventType FetchTypeToWaitUntilEventType( 68 ServiceWorkerMetrics::EventType FetchTypeToWaitUntilEventType(
68 ServiceWorkerFetchType type) { 69 ServiceWorkerFetchType type) {
69 if (type == ServiceWorkerFetchType::FOREIGN_FETCH) 70 if (type == ServiceWorkerFetchType::FOREIGN_FETCH)
70 return ServiceWorkerMetrics::EventType::FOREIGN_FETCH_WAITUNTIL; 71 return ServiceWorkerMetrics::EventType::FOREIGN_FETCH_WAITUNTIL;
71 return ServiceWorkerMetrics::EventType::FETCH_WAITUNTIL; 72 return ServiceWorkerMetrics::EventType::FETCH_WAITUNTIL;
72 } 73 }
73 74
75 void OnFetchEventFinished(scoped_refptr<ServiceWorkerVersion> active_version,
shimazu 2016/09/23 03:26:11 If I understand correctly, I'm worried that this s
horo 2016/09/23 05:57:56 Done.
76 int event_finish_id,
77 blink::mojom::ServiceWorkerEventStatus status,
78 base::Time dispatch_event_time) {
79 active_version->FinishRequest(
80 event_finish_id,
81 status == blink::mojom::ServiceWorkerEventStatus::COMPLETED,
82 dispatch_event_time);
83 }
84
74 } // namespace 85 } // namespace
75 86
76 // Helper to receive the fetch event response even if 87 // Helper to receive the fetch event response even if
77 // ServiceWorkerFetchDispatcher has been destroyed. 88 // ServiceWorkerFetchDispatcher has been destroyed.
78 class ServiceWorkerFetchDispatcher::ResponseCallback { 89 class ServiceWorkerFetchDispatcher::ResponseCallback {
79 public: 90 public:
80 ResponseCallback(base::WeakPtr<ServiceWorkerFetchDispatcher> fetch_dispatcher, 91 ResponseCallback(base::WeakPtr<ServiceWorkerFetchDispatcher> fetch_dispatcher,
81 ServiceWorkerVersion* version) 92 ServiceWorkerVersion* version)
82 : fetch_dispatcher_(fetch_dispatcher), version_(version) {} 93 : fetch_dispatcher_(fetch_dispatcher), version_(version) {}
83 94
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 int event_finish_id = version_->StartRequest( 212 int event_finish_id = version_->StartRequest(
202 FetchTypeToWaitUntilEventType(request_->fetch_type), 213 FetchTypeToWaitUntilEventType(request_->fetch_type),
203 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); 214 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback));
204 215
205 ResponseCallback* response_callback = 216 ResponseCallback* response_callback =
206 new ResponseCallback(weak_factory_.GetWeakPtr(), version_.get()); 217 new ResponseCallback(weak_factory_.GetWeakPtr(), version_.get());
207 version_->RegisterRequestCallback<ServiceWorkerHostMsg_FetchEventResponse>( 218 version_->RegisterRequestCallback<ServiceWorkerHostMsg_FetchEventResponse>(
208 response_id, 219 response_id,
209 base::Bind(&ServiceWorkerFetchDispatcher::ResponseCallback::Run, 220 base::Bind(&ServiceWorkerFetchDispatcher::ResponseCallback::Run,
210 base::Owned(response_callback))); 221 base::Owned(response_callback)));
211 version_->RegisterSimpleRequest<ServiceWorkerHostMsg_FetchEventFinished>( 222
212 event_finish_id); 223 base::WeakPtr<mojom::FetchEventDispatcher> dispatcher =
213 version_->DispatchEvent({response_id, event_finish_id}, 224 version_->GetMojoServiceForRequest<mojom::FetchEventDispatcher>(
214 ServiceWorkerMsg_FetchEvent( 225 event_finish_id);
215 response_id, event_finish_id, *request_.get())); 226 dispatcher->DispatchFetchEvent(
227 response_id, *request_.get(),
228 base::Bind(&OnFetchEventFinished, version_, event_finish_id));
216 } 229 }
217 230
218 void ServiceWorkerFetchDispatcher::DidFailToDispatch( 231 void ServiceWorkerFetchDispatcher::DidFailToDispatch(
219 ServiceWorkerStatusCode status) { 232 ServiceWorkerStatusCode status) {
220 EndNetLogEventWithServiceWorkerStatus( 233 EndNetLogEventWithServiceWorkerStatus(
221 net_log_, net::NetLogEventType::SERVICE_WORKER_FETCH_EVENT, status); 234 net_log_, net::NetLogEventType::SERVICE_WORKER_FETCH_EVENT, status);
222 DidFail(status); 235 DidFail(status);
223 } 236 }
224 237
225 void ServiceWorkerFetchDispatcher::DidFail(ServiceWorkerStatusCode status) { 238 void ServiceWorkerFetchDispatcher::DidFail(ServiceWorkerStatusCode status) {
(...skipping 27 matching lines...) Expand all
253 } 266 }
254 267
255 ServiceWorkerMetrics::EventType ServiceWorkerFetchDispatcher::GetEventType() 268 ServiceWorkerMetrics::EventType ServiceWorkerFetchDispatcher::GetEventType()
256 const { 269 const {
257 if (request_->fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) 270 if (request_->fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH)
258 return ServiceWorkerMetrics::EventType::FOREIGN_FETCH; 271 return ServiceWorkerMetrics::EventType::FOREIGN_FETCH;
259 return ResourceTypeToEventType(resource_type_); 272 return ResourceTypeToEventType(resource_type_);
260 } 273 }
261 274
262 } // namespace content 275 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698