OLD | NEW |
---|---|
(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 } | |
OLD | NEW |