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

Unified Diff: content/browser/service_worker/service_worker_url_request_job.cc

Issue 2039743003: Introduce ServiceWorker.ActivatedWorkerPreparationForMainFrame.Time UMA. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: move GetWorkerPreparationSuffix Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/service_worker/service_worker_url_request_job.cc
diff --git a/content/browser/service_worker/service_worker_url_request_job.cc b/content/browser/service_worker/service_worker_url_request_job.cc
index e06e5935e242c6eada3978d177e1aeeb823458eb..c94da4eec5fe442ec1b9a0281e8d04e99ecabee3 100644
--- a/content/browser/service_worker/service_worker_url_request_job.cc
+++ b/content/browser/service_worker/service_worker_url_request_job.cc
@@ -22,6 +22,7 @@
#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
#include "content/browser/resource_context_impl.h"
+#include "content/browser/service_worker/embedded_worker_instance.h"
#include "content/browser/service_worker/service_worker_fetch_dispatcher.h"
#include "content/browser/service_worker/service_worker_provider_host.h"
#include "content/browser/service_worker/service_worker_response_info.h"
@@ -632,9 +633,19 @@ void ServiceWorkerURLRequestJob::CreateRequestBodyBlob(std::string* blob_uuid,
*blob_size = total_size;
}
-void ServiceWorkerURLRequestJob::DidPrepareFetchEvent() {
+void ServiceWorkerURLRequestJob::DidPrepareFetchEvent(
+ const scoped_refptr<ServiceWorkerVersion>& version) {
worker_ready_time_ = base::TimeTicks::Now();
load_timing_info_.send_start = worker_ready_time_;
+
+ if (resource_type_ == RESOURCE_TYPE_MAIN_FRAME && worker_already_activated_ &&
+ !(version->skip_recording_startup_time() &&
+ initial_worker_status_ != EmbeddedWorkerStatus::RUNNING) &&
+ !ServiceWorkerMetrics::ShouldExcludeURLFromHistogram(request()->url())) {
+ ServiceWorkerMetrics::RecordActivatedWorkerPreparationTimeForMainFrame(
+ worker_ready_time_ - request()->creation_time(), initial_worker_status_,
falken 2016/06/07 03:46:12 When is request()->creation_time() set? I'm wonde
horo 2016/06/07 05:58:12 This is set when net::URLRequest is created in Res
+ version->embedded_worker()->start_situation());
+ }
}
void ServiceWorkerURLRequestJob::DidDispatchFetchEvent(
@@ -962,11 +973,15 @@ void ServiceWorkerURLRequestJob::RequestBodyBlobsCompleted(bool success) {
return;
}
+ worker_already_activated_ =
+ active_worker->status() == ServiceWorkerVersion::ACTIVATED;
+ initial_worker_status_ = active_worker->running_status();
+
DCHECK(!fetch_dispatcher_);
fetch_dispatcher_.reset(new ServiceWorkerFetchDispatcher(
CreateFetchRequest(), active_worker, resource_type_,
base::Bind(&ServiceWorkerURLRequestJob::DidPrepareFetchEvent,
- weak_factory_.GetWeakPtr()),
+ weak_factory_.GetWeakPtr(), active_worker),
base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent,
weak_factory_.GetWeakPtr())));
worker_start_time_ = base::TimeTicks::Now();

Powered by Google App Engine
This is Rietveld 408576698