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

Side by Side Diff: content/renderer/service_worker/service_worker_context_client.cc

Issue 2620463002: Show service worker navigation preload requests in DevTools Network tab (Closed)
Patch Set: incorporated falken's comment Created 3 years, 11 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/renderer/service_worker/service_worker_context_client.h" 5 #include "content/renderer/service_worker/service_worker_context_client.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 : public mojom::URLLoaderClient { 259 : public mojom::URLLoaderClient {
260 public: 260 public:
261 NavigationPreloadRequest(int fetch_event_id, 261 NavigationPreloadRequest(int fetch_event_id,
262 const GURL& url, 262 const GURL& url,
263 mojom::FetchEventPreloadHandlePtr preload_handle) 263 mojom::FetchEventPreloadHandlePtr preload_handle)
264 : fetch_event_id_(fetch_event_id), 264 : fetch_event_id_(fetch_event_id),
265 url_(url), 265 url_(url),
266 url_loader_(std::move(preload_handle->url_loader)), 266 url_loader_(std::move(preload_handle->url_loader)),
267 binding_(this, std::move(preload_handle->url_loader_client_request)) {} 267 binding_(this, std::move(preload_handle->url_loader_client_request)) {}
268 268
269 ~NavigationPreloadRequest() override { 269 ~NavigationPreloadRequest() override {}
270 }
271 270
272 void OnReceiveResponse( 271 void OnReceiveResponse(
273 const ResourceResponseHead& response_head, 272 const ResourceResponseHead& response_head,
274 mojom::DownloadedTempFilePtr downloaded_file) override { 273 mojom::DownloadedTempFilePtr downloaded_file) override {
275 DCHECK(!response_); 274 DCHECK(!response_);
276 DCHECK(!downloaded_file); 275 DCHECK(!downloaded_file);
277 response_ = base::MakeUnique<blink::WebURLResponse>(); 276 response_ = base::MakeUnique<blink::WebURLResponse>();
278 // TODO(horo): Set report_security_info to true when DevTools is attached. 277 // TODO(horo): Set report_security_info to true when DevTools is attached.
279 const bool report_security_info = false; 278 const bool report_security_info = false;
280 WebURLLoaderImpl::PopulateURLResponse(url_, response_head, response_.get(), 279 WebURLLoaderImpl::PopulateURLResponse(url_, response_head, response_.get(),
281 report_security_info); 280 report_security_info);
282 MaybeReportResponseToClient(); 281 MaybeReportResponseToClient();
283 } 282 }
284 283
285 void OnReceiveRedirect(const net::RedirectInfo& redirect_info, 284 void OnReceiveRedirect(const net::RedirectInfo& redirect_info,
286 const ResourceResponseHead& response_head) override { 285 const ResourceResponseHead& response_head) override {
287 // This will delete itself. 286 // This will delete itself.
288 ReportErrorToClient( 287 ReportErrorToClient(
289 "Service Worker navigation preload doesn't suport redirect."); 288 "Service Worker navigation preload doesn't support redirects.");
290 } 289 }
291 290
292 void OnDataDownloaded(int64_t data_length, 291 void OnDataDownloaded(int64_t data_length,
293 int64_t encoded_data_length) override { 292 int64_t encoded_data_length) override {
294 NOTREACHED(); 293 NOTREACHED();
295 } 294 }
296 295
297 void OnTransferSizeUpdated(int32_t transfer_size_diff) override { 296 void OnTransferSizeUpdated(int32_t transfer_size_diff) override {
298 NOTREACHED(); 297 // TODO(horo): Send this transfer size update notification to DevTools.
299 } 298 }
300 299
301 void OnStartLoadingResponseBody( 300 void OnStartLoadingResponseBody(
302 mojo::ScopedDataPipeConsumerHandle body) override { 301 mojo::ScopedDataPipeConsumerHandle body) override {
303 DCHECK(!body_.is_valid()); 302 DCHECK(!body_.is_valid());
304 body_ = std::move(body); 303 body_ = std::move(body);
305 MaybeReportResponseToClient(); 304 MaybeReportResponseToClient();
306 } 305 }
307 306
308 void OnComplete(const ResourceRequestCompletionStatus& status) override { 307 void OnComplete(const ResourceRequestCompletionStatus& status) override {
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after
955 TRACE_EVENT0("ServiceWorker", 954 TRACE_EVENT0("ServiceWorker",
956 "ServiceWorkerContextClient::OnInstallEvent"); 955 "ServiceWorkerContextClient::OnInstallEvent");
957 proxy_->dispatchInstallEvent(request_id); 956 proxy_->dispatchInstallEvent(request_id);
958 } 957 }
959 958
960 void ServiceWorkerContextClient::DispatchFetchEvent( 959 void ServiceWorkerContextClient::DispatchFetchEvent(
961 int fetch_event_id, 960 int fetch_event_id,
962 const ServiceWorkerFetchRequest& request, 961 const ServiceWorkerFetchRequest& request,
963 mojom::FetchEventPreloadHandlePtr preload_handle, 962 mojom::FetchEventPreloadHandlePtr preload_handle,
964 const DispatchFetchEventCallback& callback) { 963 const DispatchFetchEventCallback& callback) {
965 std::unique_ptr<NavigationPreloadRequest> preload_request = 964 std::unique_ptr<NavigationPreloadRequest> preload_request;
966 preload_handle 965 if (preload_handle) {
967 ? base::MakeUnique<NavigationPreloadRequest>( 966 proxy_->onNavigationPreloadSent(
968 fetch_event_id, request.url, std::move(preload_handle)) 967 fetch_event_id, request.url,
969 : nullptr; 968 preload_handle->sent_timestamp.ToInternalValue() /
969 static_cast<double>(base::Time::kMicrosecondsPerSecond),
970 preload_handle->sent_wall_time.ToDoubleT());
falken 2017/01/18 14:50:07 nit: I'd pass these as standard base/Time.h object
horo 2017/01/19 09:57:09 Done. I added public/web/modules/serviceworker/DE
971 preload_request = base::MakeUnique<NavigationPreloadRequest>(
972 fetch_event_id, request.url, std::move(preload_handle));
973 }
970 const bool navigation_preload_sent = !!preload_request; 974 const bool navigation_preload_sent = !!preload_request;
971 blink::WebServiceWorkerRequest webRequest; 975 blink::WebServiceWorkerRequest webRequest;
972 TRACE_EVENT0("ServiceWorker", 976 TRACE_EVENT0("ServiceWorker",
973 "ServiceWorkerContextClient::DispatchFetchEvent"); 977 "ServiceWorkerContextClient::DispatchFetchEvent");
974 context_->fetch_event_callbacks.AddWithID( 978 context_->fetch_event_callbacks.AddWithID(
975 base::MakeUnique<FetchCallback>(callback), fetch_event_id); 979 base::MakeUnique<FetchCallback>(callback), fetch_event_id);
976 if (preload_request) { 980 if (preload_request) {
977 context_->preload_requests.AddWithID(std::move(preload_request), 981 context_->preload_requests.AddWithID(std::move(preload_request),
978 fetch_event_id); 982 fetch_event_id);
979 } 983 }
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
1249 1253
1250 void ServiceWorkerContextClient::OnNavigationPreloadError( 1254 void ServiceWorkerContextClient::OnNavigationPreloadError(
1251 int fetch_event_id, 1255 int fetch_event_id,
1252 std::unique_ptr<blink::WebServiceWorkerError> error) { 1256 std::unique_ptr<blink::WebServiceWorkerError> error) {
1253 proxy_->onNavigationPreloadError(fetch_event_id, std::move(error)); 1257 proxy_->onNavigationPreloadError(fetch_event_id, std::move(error));
1254 context_->preload_requests.Remove(fetch_event_id); 1258 context_->preload_requests.Remove(fetch_event_id);
1255 } 1259 }
1256 1260
1257 void ServiceWorkerContextClient::OnNavigationPreloadComplete( 1261 void ServiceWorkerContextClient::OnNavigationPreloadComplete(
1258 int fetch_event_id) { 1262 int fetch_event_id) {
1263 proxy_->onNavigationPreloadCompleted(fetch_event_id);
1259 context_->preload_requests.Remove(fetch_event_id); 1264 context_->preload_requests.Remove(fetch_event_id);
1260 } 1265 }
1261 1266
1262 void ServiceWorkerContextClient::BindEventDispatcher( 1267 void ServiceWorkerContextClient::BindEventDispatcher(
1263 mojom::ServiceWorkerEventDispatcherRequest request) { 1268 mojom::ServiceWorkerEventDispatcherRequest request) {
1264 DCHECK(context_); 1269 DCHECK(context_);
1265 DCHECK(!context_->event_dispatcher_binding.is_bound()); 1270 DCHECK(!context_->event_dispatcher_binding.is_bound());
1266 context_->event_dispatcher_binding.Bind(std::move(request)); 1271 context_->event_dispatcher_binding.Bind(std::move(request));
1267 } 1272 }
1268 1273
1269 base::WeakPtr<ServiceWorkerContextClient> 1274 base::WeakPtr<ServiceWorkerContextClient>
1270 ServiceWorkerContextClient::GetWeakPtr() { 1275 ServiceWorkerContextClient::GetWeakPtr() {
1271 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); 1276 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread());
1272 DCHECK(context_); 1277 DCHECK(context_);
1273 return context_->weak_factory.GetWeakPtr(); 1278 return context_->weak_factory.GetWeakPtr();
1274 } 1279 }
1275 1280
1276 } // namespace content 1281 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698