Index: chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.cc |
diff --git a/chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.cc |
index 07caa634d23e68cb717fbf8936e55971cc00a08e..7aa51cf789cd9f75139a594a537fc13523e97a46 100644 |
--- a/chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.cc |
+++ b/chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.cc |
@@ -4,8 +4,10 @@ |
#include "chrome/browser/page_load_metrics/observers/service_worker_page_load_metrics_observer.h" |
+#include "chrome/browser/browser_process.h" |
#include "chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h" |
#include "chrome/browser/page_load_metrics/page_load_metrics_util.h" |
+#include "components/ukm/public/ukm_recorder.h" |
#include "net/http/http_response_headers.h" |
#include "third_party/WebKit/public/platform/WebLoadingBehaviorFlag.h" |
@@ -106,6 +108,8 @@ const char kHistogramNoServiceWorkerLoadSearch[] = |
"PageLoad.Clients.NoServiceWorker.DocumentTiming." |
"NavigationToLoadEventFired.search"; |
+const char kUkmServiceWorkerName[] = "ServiceWorker"; |
+ |
} // namespace internal |
namespace { |
@@ -331,3 +335,15 @@ void ServiceWorkerPageLoadMetricsObserver::OnParseStart( |
timing.parse_timing->parse_start.value()); |
} |
} |
+ |
+void ServiceWorkerPageLoadMetricsObserver::OnLoadingBehaviorObserved( |
+ const page_load_metrics::PageLoadExtraInfo& info) { |
+ if (!IsServiceWorkerControlled(info) || logged_ukm_event_) |
+ return; |
+ ukm::UkmRecorder* ukm_recorder = g_browser_process->ukm_recorder(); |
+ if (ukm_recorder) { |
+ ukm_recorder->GetEntryBuilder(info.source_id, |
+ internal::kUkmServiceWorkerName); |
+ logged_ukm_event_ = true; |
+ } |
+} |