OLD | NEW |
---|---|
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 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 | 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 "chrome/browser/page_load_metrics/observers/resource_prefetch_predictor _page_load_metrics_observer.h" | 5 #include "chrome/browser/page_load_metrics/observers/resource_prefetch_predictor _page_load_metrics_observer.h" |
6 | 6 |
7 #include "base/memory/ptr_util.h" | 7 #include "base/memory/ptr_util.h" |
8 #include "chrome/browser/page_load_metrics/page_load_metrics_util.h" | 8 #include "chrome/browser/page_load_metrics/page_load_metrics_util.h" |
9 #include "chrome/browser/predictors/resource_prefetch_predictor.h" | 9 #include "chrome/browser/predictors/resource_prefetch_predictor.h" |
10 #include "chrome/browser/predictors/resource_prefetch_predictor_factory.h" | 10 #include "chrome/browser/predictors/resource_prefetch_predictor_factory.h" |
(...skipping 12 matching lines...) Expand all Loading... | |
23 | 23 |
24 // static | 24 // static |
25 std::unique_ptr<ResourcePrefetchPredictorPageLoadMetricsObserver> | 25 std::unique_ptr<ResourcePrefetchPredictorPageLoadMetricsObserver> |
26 ResourcePrefetchPredictorPageLoadMetricsObserver::CreateIfNeeded( | 26 ResourcePrefetchPredictorPageLoadMetricsObserver::CreateIfNeeded( |
27 content::WebContents* web_contents) { | 27 content::WebContents* web_contents) { |
28 predictors::ResourcePrefetchPredictor* predictor = | 28 predictors::ResourcePrefetchPredictor* predictor = |
29 predictors::ResourcePrefetchPredictorFactory::GetForProfile( | 29 predictors::ResourcePrefetchPredictorFactory::GetForProfile( |
30 web_contents->GetBrowserContext()); | 30 web_contents->GetBrowserContext()); |
31 if (!predictor) | 31 if (!predictor) |
32 return nullptr; | 32 return nullptr; |
33 predictors::NavigationID navigation_id(web_contents); | |
alexilin
2017/03/17 14:46:46
I'm afraid it won't work correctly.
The observer i
trevordixon
2017/03/27 12:30:08
Done.
| |
33 return base::MakeUnique<ResourcePrefetchPredictorPageLoadMetricsObserver>( | 34 return base::MakeUnique<ResourcePrefetchPredictorPageLoadMetricsObserver>( |
34 predictor); | 35 predictor, navigation_id); |
35 } | 36 } |
36 | 37 |
37 ResourcePrefetchPredictorPageLoadMetricsObserver:: | 38 ResourcePrefetchPredictorPageLoadMetricsObserver:: |
38 ResourcePrefetchPredictorPageLoadMetricsObserver( | 39 ResourcePrefetchPredictorPageLoadMetricsObserver( |
39 predictors::ResourcePrefetchPredictor* predictor) | 40 predictors::ResourcePrefetchPredictor* predictor, |
40 : predictor_(predictor) { | 41 predictors::NavigationID navigation_id) |
42 : predictor_(predictor), navigation_id_(navigation_id) { | |
41 DCHECK(predictor_); | 43 DCHECK(predictor_); |
42 } | 44 } |
43 | 45 |
44 ResourcePrefetchPredictorPageLoadMetricsObserver:: | 46 ResourcePrefetchPredictorPageLoadMetricsObserver:: |
45 ~ResourcePrefetchPredictorPageLoadMetricsObserver() {} | 47 ~ResourcePrefetchPredictorPageLoadMetricsObserver() {} |
46 | 48 |
47 page_load_metrics::PageLoadMetricsObserver::ObservePolicy | 49 page_load_metrics::PageLoadMetricsObserver::ObservePolicy |
48 ResourcePrefetchPredictorPageLoadMetricsObserver::OnStart( | 50 ResourcePrefetchPredictorPageLoadMetricsObserver::OnStart( |
49 content::NavigationHandle* navigation_handle, | 51 content::NavigationHandle* navigation_handle, |
50 const GURL& currently_commited_url, | 52 const GURL& currently_commited_url, |
51 bool started_in_foreground) { | 53 bool started_in_foreground) { |
52 return (started_in_foreground && | 54 return (started_in_foreground && |
53 predictor_->IsUrlPrefetchable(navigation_handle->GetURL())) | 55 predictor_->IsUrlPrefetchable(navigation_handle->GetURL())) |
54 ? CONTINUE_OBSERVING | 56 ? CONTINUE_OBSERVING |
55 : STOP_OBSERVING; | 57 : STOP_OBSERVING; |
56 } | 58 } |
57 | 59 |
58 page_load_metrics::PageLoadMetricsObserver::ObservePolicy | 60 page_load_metrics::PageLoadMetricsObserver::ObservePolicy |
59 ResourcePrefetchPredictorPageLoadMetricsObserver::OnHidden( | 61 ResourcePrefetchPredictorPageLoadMetricsObserver::OnHidden( |
60 const page_load_metrics::PageLoadTiming& timing, | 62 const page_load_metrics::PageLoadTiming& timing, |
61 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 63 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
62 return STOP_OBSERVING; | 64 return STOP_OBSERVING; |
63 } | 65 } |
64 | 66 |
65 void ResourcePrefetchPredictorPageLoadMetricsObserver::OnFirstContentfulPaint( | 67 void ResourcePrefetchPredictorPageLoadMetricsObserver::OnFirstContentfulPaint( |
66 const page_load_metrics::PageLoadTiming& timing, | 68 const page_load_metrics::PageLoadTiming& timing, |
67 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 69 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
70 predictor_->RecordFirstContentfulPaint(navigation_id_); | |
68 PAGE_LOAD_HISTOGRAM( | 71 PAGE_LOAD_HISTOGRAM( |
69 internal::kHistogramResourcePrefetchPredictorFirstContentfulPaint, | 72 internal::kHistogramResourcePrefetchPredictorFirstContentfulPaint, |
70 timing.first_contentful_paint.value()); | 73 timing.first_contentful_paint.value()); |
71 } | 74 } |
72 | 75 |
73 void ResourcePrefetchPredictorPageLoadMetricsObserver::OnFirstMeaningfulPaint( | 76 void ResourcePrefetchPredictorPageLoadMetricsObserver::OnFirstMeaningfulPaint( |
74 const page_load_metrics::PageLoadTiming& timing, | 77 const page_load_metrics::PageLoadTiming& timing, |
75 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 78 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
76 PAGE_LOAD_HISTOGRAM( | 79 PAGE_LOAD_HISTOGRAM( |
77 internal::kHistogramResourcePrefetchPredictorFirstMeaningfulPaint, | 80 internal::kHistogramResourcePrefetchPredictorFirstMeaningfulPaint, |
78 timing.first_meaningful_paint.value()); | 81 timing.first_meaningful_paint.value()); |
79 } | 82 } |
OLD | NEW |