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

Side by Side Diff: chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer.cc

Issue 2654843003: Added UkmPageLoadMetricsObserver which sends top-level metrics to UKM (Closed)
Patch Set: Test fix 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
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_obser ver.h"
6 #include "chrome/browser/browser_process.h"
7 #include "components/ukm/ukm_service.h"
8 #include "components/ukm/ukm_source.h"
9
10 // static
11 std::unique_ptr<page_load_metrics::PageLoadMetricsObserver>
12 UkmPageLoadMetricsObserver::CreateIfNeeded() {
13 if (!g_browser_process->ukm_service()) {
14 return nullptr;
15 }
16
17 return base::MakeUnique<UkmPageLoadMetricsObserver>();
18 }
19
20 UkmPageLoadMetricsObserver::UkmPageLoadMetricsObserver() {}
21
22 UkmPageLoadMetricsObserver::ObservePolicy UkmPageLoadMetricsObserver::OnStart(
23 content::NavigationHandle* navigation_handle,
24 const GURL& currently_committed_url,
25 bool started_in_foreground) {
26 return started_in_foreground ? CONTINUE_OBSERVING : STOP_OBSERVING;
27 }
28
29 UkmPageLoadMetricsObserver::ObservePolicy
30 UkmPageLoadMetricsObserver::FlushMetricsOnAppEnterBackground(
31 const page_load_metrics::PageLoadTiming& timing,
32 const page_load_metrics::PageLoadExtraInfo& info) {
33 SendMetricsToUkm(timing, info);
34 return STOP_OBSERVING;
35 }
36
37 UkmPageLoadMetricsObserver::ObservePolicy UkmPageLoadMetricsObserver::OnHidden(
38 const page_load_metrics::PageLoadTiming& timing,
39 const page_load_metrics::PageLoadExtraInfo& info) {
40 SendMetricsToUkm(timing, info);
41 return STOP_OBSERVING;
42 }
43
44 void UkmPageLoadMetricsObserver::OnComplete(
45 const page_load_metrics::PageLoadTiming& timing,
46 const page_load_metrics::PageLoadExtraInfo& info) {
47 SendMetricsToUkm(timing, info);
48 }
49
50 void UkmPageLoadMetricsObserver::SendMetricsToUkm(
51 const page_load_metrics::PageLoadTiming& timing,
52 const page_load_metrics::PageLoadExtraInfo& info) {
53 if (info.committed_url.is_empty() || !timing.first_contentful_paint)
54 return;
55
56 ukm::UkmService* ukm_service = g_browser_process->ukm_service();
57 DCHECK(ukm_service);
58
59 std::unique_ptr<ukm::UkmSource> source = base::MakeUnique<ukm::UkmSource>();
60 source->set_committed_url(info.committed_url);
61 source->set_first_contentful_paint(timing.first_contentful_paint.value());
Bryan McQuade 2017/01/31 22:31:54 just realized that timing.first_contentful_paint m
62
63 ukm_service->RecordSource(std::move(source));
64 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698