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

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

Issue 2652603002: service worker: Add UMA for navigation preload response timing. (Closed)
Patch Set: patch for landing? Created 3 years, 10 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_url_request_job.h" 5 #include "content/browser/service_worker/service_worker_url_request_job.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map> 10 #include <map>
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 if (resource_type_ != RESOURCE_TYPE_MAIN_FRAME) 548 if (resource_type_ != RESOURCE_TYPE_MAIN_FRAME)
549 return; 549 return;
550 if (!worker_already_activated_) 550 if (!worker_already_activated_)
551 return; 551 return;
552 if (version->skip_recording_startup_time() && 552 if (version->skip_recording_startup_time() &&
553 initial_worker_status_ != EmbeddedWorkerStatus::RUNNING) { 553 initial_worker_status_ != EmbeddedWorkerStatus::RUNNING) {
554 return; 554 return;
555 } 555 }
556 if (version->should_exclude_from_uma()) 556 if (version->should_exclude_from_uma())
557 return; 557 return;
558 worker_start_situation_ = version->embedded_worker()->start_situation();
558 ServiceWorkerMetrics::RecordActivatedWorkerPreparationForMainFrame( 559 ServiceWorkerMetrics::RecordActivatedWorkerPreparationForMainFrame(
559 worker_ready_time_ - request()->creation_time(), initial_worker_status_, 560 worker_ready_time_ - request()->creation_time(), initial_worker_status_,
560 version->embedded_worker()->start_situation(), did_navigation_preload_); 561 worker_start_situation_, did_navigation_preload_);
562 MaybeReportNavigationPreloadMetrics();
561 } 563 }
562 564
563 void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( 565 void ServiceWorkerURLRequestJob::DidDispatchFetchEvent(
564 ServiceWorkerStatusCode status, 566 ServiceWorkerStatusCode status,
565 ServiceWorkerFetchEventResult fetch_result, 567 ServiceWorkerFetchEventResult fetch_result,
566 const ServiceWorkerResponse& response, 568 const ServiceWorkerResponse& response,
567 const scoped_refptr<ServiceWorkerVersion>& version) { 569 const scoped_refptr<ServiceWorkerVersion>& version) {
568 // Do not clear |fetch_dispatcher_| if it has dispatched a navigation preload 570 // Do not clear |fetch_dispatcher_| if it has dispatched a navigation preload
569 // request to keep the mojom::URLLoader related objects in it, because the 571 // request to keep the mojom::URLLoader related objects in it, because the
570 // preload response might still need to be streamed even after calling 572 // preload response might still need to be streamed even after calling
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 880
879 DCHECK(!fetch_dispatcher_); 881 DCHECK(!fetch_dispatcher_);
880 fetch_dispatcher_.reset(new ServiceWorkerFetchDispatcher( 882 fetch_dispatcher_.reset(new ServiceWorkerFetchDispatcher(
881 CreateFetchRequest(), active_worker, resource_type_, timeout_, 883 CreateFetchRequest(), active_worker, resource_type_, timeout_,
882 request()->net_log(), 884 request()->net_log(),
883 base::Bind(&ServiceWorkerURLRequestJob::DidPrepareFetchEvent, 885 base::Bind(&ServiceWorkerURLRequestJob::DidPrepareFetchEvent,
884 weak_factory_.GetWeakPtr(), active_worker), 886 weak_factory_.GetWeakPtr(), active_worker),
885 base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent, 887 base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent,
886 weak_factory_.GetWeakPtr()))); 888 weak_factory_.GetWeakPtr())));
887 worker_start_time_ = base::TimeTicks::Now(); 889 worker_start_time_ = base::TimeTicks::Now();
888 did_navigation_preload_ = 890 did_navigation_preload_ = fetch_dispatcher_->MaybeStartNavigationPreload(
889 fetch_dispatcher_->MaybeStartNavigationPreload(request()); 891 request(),
892 base::BindOnce(&ServiceWorkerURLRequestJob::OnNavigationPreloadResponse,
893 weak_factory_.GetWeakPtr()));
890 fetch_dispatcher_->Run(); 894 fetch_dispatcher_->Run();
891 } 895 }
892 896
897 void ServiceWorkerURLRequestJob::OnNavigationPreloadResponse() {
898 DCHECK(navigation_preload_response_time_.is_null());
899 navigation_preload_response_time_ = base::TimeTicks::Now();
900 MaybeReportNavigationPreloadMetrics();
901 }
902
903 void ServiceWorkerURLRequestJob::MaybeReportNavigationPreloadMetrics() {
904 if (worker_start_time_.is_null() || worker_ready_time_.is_null() ||
905 navigation_preload_response_time_.is_null()) {
906 return;
907 }
908 DCHECK(!reported_navigation_preload_metrics_);
909 reported_navigation_preload_metrics_ = true;
910
911 ServiceWorkerMetrics::RecordNavigationPreloadResponse(
912 worker_ready_time_ - worker_start_time_,
913 navigation_preload_response_time_ - worker_start_time_,
914 initial_worker_status_, worker_start_situation_);
915 }
916
893 } // namespace content 917 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_url_request_job.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698