OLD | NEW |
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/command_line.h" |
11 #include "base/time/time.h" | 12 #include "base/time/time.h" |
12 #include "base/trace_event/trace_event.h" | 13 #include "base/trace_event/trace_event.h" |
13 #include "content/browser/service_worker/embedded_worker_status.h" | 14 #include "content/browser/service_worker/embedded_worker_status.h" |
14 #include "content/browser/service_worker/service_worker_version.h" | 15 #include "content/browser/service_worker/service_worker_version.h" |
15 #include "content/common/service_worker/fetch_event_dispatcher.mojom.h" | 16 #include "content/common/service_worker/fetch_event_dispatcher.mojom.h" |
16 #include "content/common/service_worker/service_worker_messages.h" | 17 #include "content/common/service_worker/service_worker_messages.h" |
17 #include "content/common/service_worker/service_worker_status_code.h" | 18 #include "content/common/service_worker/service_worker_status_code.h" |
18 #include "content/common/service_worker/service_worker_utils.h" | 19 #include "content/common/service_worker/service_worker_utils.h" |
19 #include "net/log/net_log.h" | 20 #include "net/log/net_log.h" |
20 #include "net/log/net_log_capture_mode.h" | 21 #include "net/log/net_log_capture_mode.h" |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 fetch_event_id, | 222 fetch_event_id, |
222 base::Bind(&ServiceWorkerFetchDispatcher::ResponseCallback::Run, | 223 base::Bind(&ServiceWorkerFetchDispatcher::ResponseCallback::Run, |
223 base::Owned(response_callback))); | 224 base::Owned(response_callback))); |
224 | 225 |
225 base::WeakPtr<mojom::FetchEventDispatcher> dispatcher = | 226 base::WeakPtr<mojom::FetchEventDispatcher> dispatcher = |
226 version_->GetMojoServiceForRequest<mojom::FetchEventDispatcher>( | 227 version_->GetMojoServiceForRequest<mojom::FetchEventDispatcher>( |
227 event_finish_id); | 228 event_finish_id); |
228 // |dispatcher| is owned by |version_|. So it is safe to pass the unretained | 229 // |dispatcher| is owned by |version_|. So it is safe to pass the unretained |
229 // raw pointer of |version_| to OnFetchEventFinished callback. | 230 // raw pointer of |version_| to OnFetchEventFinished callback. |
230 dispatcher->DispatchFetchEvent( | 231 dispatcher->DispatchFetchEvent( |
231 fetch_event_id, *request_, | 232 fetch_event_id, *request_, std::move(preload_handle_), |
232 base::Bind(&OnFetchEventFinished, base::Unretained(version_.get()), | 233 base::Bind(&OnFetchEventFinished, base::Unretained(version_.get()), |
233 event_finish_id)); | 234 event_finish_id)); |
234 } | 235 } |
235 | 236 |
236 void ServiceWorkerFetchDispatcher::DidFailToDispatch( | 237 void ServiceWorkerFetchDispatcher::DidFailToDispatch( |
237 ServiceWorkerStatusCode status) { | 238 ServiceWorkerStatusCode status) { |
238 EndNetLogEventWithServiceWorkerStatus( | 239 EndNetLogEventWithServiceWorkerStatus( |
239 net_log_, net::NetLogEventType::SERVICE_WORKER_FETCH_EVENT, status); | 240 net_log_, net::NetLogEventType::SERVICE_WORKER_FETCH_EVENT, status); |
240 DidFail(status); | 241 DidFail(status); |
241 } | 242 } |
(...skipping 21 matching lines...) Expand all Loading... |
263 did_complete_ = true; | 264 did_complete_ = true; |
264 net_log_.EndEvent( | 265 net_log_.EndEvent( |
265 net::NetLogEventType::SERVICE_WORKER_DISPATCH_FETCH_EVENT, | 266 net::NetLogEventType::SERVICE_WORKER_DISPATCH_FETCH_EVENT, |
266 base::Bind(&NetLogFetchEventCallback, status, fetch_result)); | 267 base::Bind(&NetLogFetchEventCallback, status, fetch_result)); |
267 | 268 |
268 FetchCallback fetch_callback = fetch_callback_; | 269 FetchCallback fetch_callback = fetch_callback_; |
269 scoped_refptr<ServiceWorkerVersion> version = version_; | 270 scoped_refptr<ServiceWorkerVersion> version = version_; |
270 fetch_callback.Run(status, fetch_result, response, version); | 271 fetch_callback.Run(status, fetch_result, response, version); |
271 } | 272 } |
272 | 273 |
| 274 void ServiceWorkerFetchDispatcher::MaybeStartNavigationPreload( |
| 275 net::URLRequest* original_request) { |
| 276 if (resource_type_ != RESOURCE_TYPE_MAIN_FRAME && |
| 277 resource_type_ != RESOURCE_TYPE_SUB_FRAME) { |
| 278 return; |
| 279 } |
| 280 if (!version_->navigation_preload_enabled()) |
| 281 return; |
| 282 // TODO(horo): Implement this to start the preload request for the navigation |
| 283 // request and set |preload_handle_|. |
| 284 NOTIMPLEMENTED(); |
| 285 } |
| 286 |
273 ServiceWorkerMetrics::EventType ServiceWorkerFetchDispatcher::GetEventType() | 287 ServiceWorkerMetrics::EventType ServiceWorkerFetchDispatcher::GetEventType() |
274 const { | 288 const { |
275 if (request_->fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) | 289 if (request_->fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) |
276 return ServiceWorkerMetrics::EventType::FOREIGN_FETCH; | 290 return ServiceWorkerMetrics::EventType::FOREIGN_FETCH; |
277 return ResourceTypeToEventType(resource_type_); | 291 return ResourceTypeToEventType(resource_type_); |
278 } | 292 } |
279 | 293 |
280 } // namespace content | 294 } // namespace content |
OLD | NEW |