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

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: fix crash 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 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 const bool report_security_info = false; 279 const bool report_security_info = false;
280 WebURLLoaderImpl::PopulateURLResponse(url_, response_head, response_.get(), 280 WebURLLoaderImpl::PopulateURLResponse(url_, response_head, response_.get(),
281 report_security_info); 281 report_security_info);
282 MaybeReportResponseToClient(); 282 MaybeReportResponseToClient();
283 } 283 }
284 284
285 void OnReceiveRedirect(const net::RedirectInfo& redirect_info, 285 void OnReceiveRedirect(const net::RedirectInfo& redirect_info,
286 const ResourceResponseHead& response_head) override { 286 const ResourceResponseHead& response_head) override {
287 // This will delete |this|. 287 // This will delete |this|.
288 ReportErrorToClient( 288 ReportErrorToClient(
289 "Service Worker navigation preload doesn't suport redirect."); 289 "Service Worker navigation preload doesn't support redirects.");
290 } 290 }
291 291
292 void OnDataDownloaded(int64_t data_length, 292 void OnDataDownloaded(int64_t data_length,
293 int64_t encoded_data_length) override { 293 int64_t encoded_data_length) override {
294 NOTREACHED(); 294 NOTREACHED();
295 } 295 }
296 296
297 void OnReceiveCachedMetadata(const std::vector<uint8_t>& data) override {} 297 void OnReceiveCachedMetadata(const std::vector<uint8_t>& data) override {}
298 298
299 void OnTransferSizeUpdated(int32_t transfer_size_diff) override { 299 void OnTransferSizeUpdated(int32_t transfer_size_diff) override {
300 NOTREACHED(); 300 // TODO(horo): Send this transfer size update notification to DevTools.
301 } 301 }
302 302
303 void OnStartLoadingResponseBody( 303 void OnStartLoadingResponseBody(
304 mojo::ScopedDataPipeConsumerHandle body) override { 304 mojo::ScopedDataPipeConsumerHandle body) override {
305 DCHECK(!body_.is_valid()); 305 DCHECK(!body_.is_valid());
306 body_ = std::move(body); 306 body_ = std::move(body);
307 MaybeReportResponseToClient(); 307 MaybeReportResponseToClient();
308 } 308 }
309 309
310 void OnComplete(const ResourceRequestCompletionStatus& status) override { 310 void OnComplete(const ResourceRequestCompletionStatus& status) override {
311 if (status.error_code != net::OK) { 311 if (status.error_code != net::OK) {
312 // This will delete |this|. 312 // This will delete |this|.
313 ReportErrorToClient("Service Worker navigation preload network error."); 313 ReportErrorToClient("Service Worker navigation preload network error.");
314 return; 314 return;
315 } 315 }
316 316
317 ServiceWorkerContextClient* client = 317 ServiceWorkerContextClient* client =
318 ServiceWorkerContextClient::ThreadSpecificInstance(); 318 ServiceWorkerContextClient::ThreadSpecificInstance();
319 if (!client) 319 if (!client)
320 return; 320 return;
321 // This will delete |this|. 321 // This will delete |this|.
322 client->OnNavigationPreloadComplete(fetch_event_id_); 322 client->OnNavigationPreloadComplete(fetch_event_id_,
323 status.encoded_data_length);
323 } 324 }
324 325
325 private: 326 private:
326 void MaybeReportResponseToClient() { 327 void MaybeReportResponseToClient() {
327 if (!response_ || !body_.is_valid()) 328 if (!response_ || !body_.is_valid())
328 return; 329 return;
329 ServiceWorkerContextClient* client = 330 ServiceWorkerContextClient* client =
330 ServiceWorkerContextClient::ThreadSpecificInstance(); 331 ServiceWorkerContextClient::ThreadSpecificInstance();
331 if (!client) 332 if (!client)
332 return; 333 return;
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after
945 TRACE_EVENT0("ServiceWorker", 946 TRACE_EVENT0("ServiceWorker",
946 "ServiceWorkerContextClient::OnInstallEvent"); 947 "ServiceWorkerContextClient::OnInstallEvent");
947 proxy_->dispatchInstallEvent(request_id); 948 proxy_->dispatchInstallEvent(request_id);
948 } 949 }
949 950
950 void ServiceWorkerContextClient::DispatchFetchEvent( 951 void ServiceWorkerContextClient::DispatchFetchEvent(
951 int fetch_event_id, 952 int fetch_event_id,
952 const ServiceWorkerFetchRequest& request, 953 const ServiceWorkerFetchRequest& request,
953 mojom::FetchEventPreloadHandlePtr preload_handle, 954 mojom::FetchEventPreloadHandlePtr preload_handle,
954 const DispatchFetchEventCallback& callback) { 955 const DispatchFetchEventCallback& callback) {
955 std::unique_ptr<NavigationPreloadRequest> preload_request = 956 std::unique_ptr<NavigationPreloadRequest> preload_request;
956 preload_handle 957 if (preload_handle) {
957 ? base::MakeUnique<NavigationPreloadRequest>( 958 proxy_->onNavigationPreloadSent(fetch_event_id, request.url);
958 fetch_event_id, request.url, std::move(preload_handle)) 959 preload_request = base::MakeUnique<NavigationPreloadRequest>(
959 : nullptr; 960 fetch_event_id, request.url, std::move(preload_handle));
961 }
960 const bool navigation_preload_sent = !!preload_request; 962 const bool navigation_preload_sent = !!preload_request;
961 blink::WebServiceWorkerRequest webRequest; 963 blink::WebServiceWorkerRequest webRequest;
962 TRACE_EVENT0("ServiceWorker", 964 TRACE_EVENT0("ServiceWorker",
963 "ServiceWorkerContextClient::DispatchFetchEvent"); 965 "ServiceWorkerContextClient::DispatchFetchEvent");
964 context_->fetch_event_callbacks.AddWithID( 966 context_->fetch_event_callbacks.AddWithID(
965 base::MakeUnique<FetchCallback>(callback), fetch_event_id); 967 base::MakeUnique<FetchCallback>(callback), fetch_event_id);
966 if (preload_request) { 968 if (preload_request) {
967 context_->preload_requests.AddWithID(std::move(preload_request), 969 context_->preload_requests.AddWithID(std::move(preload_request),
968 fetch_event_id); 970 fetch_event_id);
969 } 971 }
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
1238 } 1240 }
1239 1241
1240 void ServiceWorkerContextClient::OnNavigationPreloadError( 1242 void ServiceWorkerContextClient::OnNavigationPreloadError(
1241 int fetch_event_id, 1243 int fetch_event_id,
1242 std::unique_ptr<blink::WebServiceWorkerError> error) { 1244 std::unique_ptr<blink::WebServiceWorkerError> error) {
1243 proxy_->onNavigationPreloadError(fetch_event_id, std::move(error)); 1245 proxy_->onNavigationPreloadError(fetch_event_id, std::move(error));
1244 context_->preload_requests.Remove(fetch_event_id); 1246 context_->preload_requests.Remove(fetch_event_id);
1245 } 1247 }
1246 1248
1247 void ServiceWorkerContextClient::OnNavigationPreloadComplete( 1249 void ServiceWorkerContextClient::OnNavigationPreloadComplete(
1248 int fetch_event_id) { 1250 int fetch_event_id,
1251 int64_t encoded_data_length) {
1252 proxy_->onNavigationPreloadCompleted(fetch_event_id, encoded_data_length);
1249 context_->preload_requests.Remove(fetch_event_id); 1253 context_->preload_requests.Remove(fetch_event_id);
1250 } 1254 }
1251 1255
1252 base::WeakPtr<ServiceWorkerContextClient> 1256 base::WeakPtr<ServiceWorkerContextClient>
1253 ServiceWorkerContextClient::GetWeakPtr() { 1257 ServiceWorkerContextClient::GetWeakPtr() {
1254 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); 1258 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread());
1255 DCHECK(context_); 1259 DCHECK(context_);
1256 return context_->weak_factory.GetWeakPtr(); 1260 return context_->weak_factory.GetWeakPtr();
1257 } 1261 }
1258 1262
1259 } // namespace content 1263 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698