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

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

Issue 2417793002: Introduce FetchEventPreloadHandle to pass the preload response to FetchEvent. (Closed)
Patch Set: incorporated dchecng's comment Created 4 years, 2 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/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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698