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

Side by Side Diff: chrome/browser/page_load_metrics/observers/no_state_prefetch_page_load_metrics_observer.h

Issue 2782503004: Prerender: clarify how FCP works in non-prerendered cases (Closed)
Patch Set: clarified the comment a little Created 3 years, 8 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
« no previous file with comments | « no previous file | chrome/browser/page_load_metrics/observers/prerender_page_load_metrics_observer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #ifndef CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_NO_STATE_PREFETCH_PAGE_LOAD_M ETRICS_OBSERVER_H_ 5 #ifndef CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_NO_STATE_PREFETCH_PAGE_LOAD_M ETRICS_OBSERVER_H_
6 #define CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_NO_STATE_PREFETCH_PAGE_LOAD_M ETRICS_OBSERVER_H_ 6 #define CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_NO_STATE_PREFETCH_PAGE_LOAD_M ETRICS_OBSERVER_H_
7 7
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "chrome/browser/page_load_metrics/page_load_metrics_observer.h" 9 #include "chrome/browser/page_load_metrics/page_load_metrics_observer.h"
10 #include "url/gurl.h" 10 #include "url/gurl.h"
11 11
12 namespace content { 12 namespace content {
13 class WebContents; 13 class WebContents;
14 } 14 }
15 15
16 namespace prerender { 16 namespace prerender {
17 class PrerenderManager; 17 class PrerenderManager;
18 } 18 }
19 19
20 // Observer recording metrics related to NoStatePrefetch. 20 // Observer responsible for recording First Contentful Paint metrics related to
21 // NoStatePrefetch.
22 //
23 // This observer should be attached to all WebContents instances that are _not_
24 // being prerendered. For prerendered page loads, analagous metrics are recorded
25 // via |PrerenderPageLoadMetricsObserver|. This allows to compare FCP metrics
26 // between three mechanisms: Prerender, NoStatePrefetch, Noop.
27 //
28 // To record the histograms the knowledge of this class is combined with
29 // information from |PrerenderManager|:
30 // * the kind of prefetch, i.e.: prerender::Origin
31 // * whether the load was eligible for prefetch/prerender (also how long ago)
21 class NoStatePrefetchPageLoadMetricsObserver 32 class NoStatePrefetchPageLoadMetricsObserver
22 : public page_load_metrics::PageLoadMetricsObserver { 33 : public page_load_metrics::PageLoadMetricsObserver {
23 public: 34 public:
24 // Returns a NoStatePrefetchPageLoadMetricsObserver, or nullptr if it is not 35 // Returns a NoStatePrefetchPageLoadMetricsObserver, or nullptr if it is not
25 // needed. 36 // needed. Note: can return nullptr at startup, which is believed to be
37 // happening rarely.
26 static std::unique_ptr<NoStatePrefetchPageLoadMetricsObserver> CreateIfNeeded( 38 static std::unique_ptr<NoStatePrefetchPageLoadMetricsObserver> CreateIfNeeded(
27 content::WebContents* web_contents); 39 content::WebContents* web_contents);
28 40
29 explicit NoStatePrefetchPageLoadMetricsObserver( 41 explicit NoStatePrefetchPageLoadMetricsObserver(
30 prerender::PrerenderManager* manager); 42 prerender::PrerenderManager* manager);
31 ~NoStatePrefetchPageLoadMetricsObserver() override; 43 ~NoStatePrefetchPageLoadMetricsObserver() override;
32 44
33 private: 45 private:
34 // page_load_metrics::PageLoadMetricsObserver: 46 // page_load_metrics::PageLoadMetricsObserver:
35 ObservePolicy OnCommit(content::NavigationHandle* navigation_handle) override; 47 ObservePolicy OnCommit(content::NavigationHandle* navigation_handle) override;
36 void OnFirstContentfulPaint( 48 void OnFirstContentfulPaint(
37 const page_load_metrics::PageLoadTiming& timing, 49 const page_load_metrics::PageLoadTiming& timing,
38 const page_load_metrics::PageLoadExtraInfo& extra_info) override; 50 const page_load_metrics::PageLoadExtraInfo& extra_info) override;
39 ObservePolicy OnHidden( 51 ObservePolicy OnHidden(
40 const page_load_metrics::PageLoadTiming& timing, 52 const page_load_metrics::PageLoadTiming& timing,
41 const page_load_metrics::PageLoadExtraInfo& extra_info) override; 53 const page_load_metrics::PageLoadExtraInfo& extra_info) override;
42 54
43 bool is_no_store_; // True if the main resource has a "no-store" HTTP header. 55 bool is_no_store_; // True if the main resource has a "no-store" HTTP header.
44 bool was_hidden_; // The page went to background while rendering. 56 bool was_hidden_; // The page went to background while rendering.
45 prerender::PrerenderManager* const prerender_manager_; 57 prerender::PrerenderManager* const prerender_manager_;
46 58
47 DISALLOW_COPY_AND_ASSIGN(NoStatePrefetchPageLoadMetricsObserver); 59 DISALLOW_COPY_AND_ASSIGN(NoStatePrefetchPageLoadMetricsObserver);
48 }; 60 };
49 61
50 #endif // CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_NO_STATE_PREFETCH_PAGE_LOA D_METRICS_OBSERVER_H_ 62 #endif // CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_NO_STATE_PREFETCH_PAGE_LOA D_METRICS_OBSERVER_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/page_load_metrics/observers/prerender_page_load_metrics_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698