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

Side by Side Diff: components/startup_metric_utils/browser/startup_metric_utils.h

Issue 2773973002: Add Startup.BrowserView.FirstPaint / .CompositingEnded histograms. (Closed)
Patch Set: Don't wait for histograms that are not reported during browser_tests. 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 | « chrome/test/BUILD.gn ('k') | components/startup_metric_utils/browser/startup_metric_utils.cc » ('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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 COMPONENTS_STARTUP_METRIC_UTILS_BROWSER_STARTUP_METRIC_UTILS_H_ 5 #ifndef COMPONENTS_STARTUP_METRIC_UTILS_BROWSER_STARTUP_METRIC_UTILS_H_
6 #define COMPONENTS_STARTUP_METRIC_UTILS_BROWSER_STARTUP_METRIC_UTILS_H_ 6 #define COMPONENTS_STARTUP_METRIC_UTILS_BROWSER_STARTUP_METRIC_UTILS_H_
7 7
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 9
10 class PrefRegistrySimple; 10 class PrefRegistrySimple;
(...skipping 12 matching lines...) Expand all
23 enum class WebContentsWorkload { 23 enum class WebContentsWorkload {
24 // Only loading a single tab. 24 // Only loading a single tab.
25 SINGLE_TAB, 25 SINGLE_TAB,
26 // Loading multiple tabs (of which the profiled WebContents is foreground). 26 // Loading multiple tabs (of which the profiled WebContents is foreground).
27 MULTI_TABS, 27 MULTI_TABS,
28 }; 28 };
29 29
30 // Registers startup related prefs in |registry|. 30 // Registers startup related prefs in |registry|.
31 void RegisterPrefs(PrefRegistrySimple* registry); 31 void RegisterPrefs(PrefRegistrySimple* registry);
32 32
33 // Returns true if any UI other than the browser window has been displayed 33 // Returns true when browser UI was not launched normally: some other UI was
34 // so far. Useful to test if UI has been displayed before the first browser 34 // shown first or browser was launched in background mode.
35 // window was shown, which would invalidate any surrounding timing metrics. 35 bool WasMainWindowStartupInterrupted();
36 bool WasNonBrowserUIDisplayed();
37 36
38 // Call this when displaying UI that might potentially delay startup events. 37 // Call this when displaying UI that might potentially delay startup events.
39 // 38 //
40 // Note on usage: This function is idempotent and its overhead is low enough 39 // Note on usage: This function is idempotent and its overhead is low enough
41 // in comparison with UI display that it's OK to call it on every 40 // in comparison with UI display that it's OK to call it on every
42 // UI invocation regardless of whether the browser window has already 41 // UI invocation regardless of whether the browser window has already
43 // been displayed or not. 42 // been displayed or not.
44 void SetNonBrowserUIDisplayed(); 43 void SetNonBrowserUIDisplayed();
45 44
45 // Call this when background mode gets enabled, as it might delay startup
46 // events.
47 void SetBackgroundModeEnabled();
48
46 // Call this with the creation time of the startup (initial/main) process. 49 // Call this with the creation time of the startup (initial/main) process.
47 void RecordStartupProcessCreationTime(const base::Time& time); 50 void RecordStartupProcessCreationTime(base::Time time);
48 51
49 // Call this with a time recorded as early as possible in the startup process. 52 // Call this with a time recorded as early as possible in the startup process.
50 // On Android, the entry point time is the time at which the Java code starts. 53 // On Android, the entry point time is the time at which the Java code starts.
51 // In Mojo, the entry point time is the time at which the shell starts. 54 // In Mojo, the entry point time is the time at which the shell starts.
52 void RecordMainEntryPointTime(const base::Time& time); 55 void RecordMainEntryPointTime(base::Time time);
53 56
54 // Call this with the time when the executable is loaded and main() is entered. 57 // Call this with the time when the executable is loaded and main() is entered.
55 // Can be different from |RecordMainEntryPointTime| when the startup process is 58 // Can be different from |RecordMainEntryPointTime| when the startup process is
56 // contained in a separate dll, such as with chrome.exe / chrome.dll on Windows. 59 // contained in a separate dll, such as with chrome.exe / chrome.dll on Windows.
57 void RecordExeMainEntryPointTicks(const base::TimeTicks& time); 60 void RecordExeMainEntryPointTicks(base::TimeTicks time);
58 61
59 // Call this with the time recorded just before the message loop is started. 62 // Call this with the time recorded just before the message loop is started.
60 // |is_first_run| - is the current launch part of a first run. |pref_service| is 63 // |is_first_run| - is the current launch part of a first run. |pref_service| is
61 // used to store state for stats that span multiple startups. 64 // used to store state for stats that span multiple startups.
62 void RecordBrowserMainMessageLoopStart(const base::TimeTicks& ticks, 65 void RecordBrowserMainMessageLoopStart(base::TimeTicks ticks,
63 bool is_first_run, 66 bool is_first_run,
64 PrefService* pref_service); 67 PrefService* pref_service);
65 68
66 // Call this with the time when the first browser window became visible. 69 // Call this with the time when the first browser window became visible.
67 void RecordBrowserWindowDisplay(const base::TimeTicks& ticks); 70 void RecordBrowserWindowDisplay(base::TimeTicks ticks);
68 71
69 // Call this with the time delta that the browser spent opening its tabs. 72 // Call this with the time delta that the browser spent opening its tabs.
70 void RecordBrowserOpenTabsDelta(const base::TimeDelta& delta); 73 void RecordBrowserOpenTabsDelta(base::TimeDelta delta);
71 74
72 // Call this with a renderer main entry time. The value provided for the first 75 // Call this with a renderer main entry time. The value provided for the first
73 // call to this function is used to compute 76 // call to this function is used to compute
74 // Startup.LoadTime.BrowserMainToRendererMain. Further calls to this 77 // Startup.LoadTime.BrowserMainToRendererMain. Further calls to this
75 // function are ignored. 78 // function are ignored.
76 void RecordRendererMainEntryTime(const base::TimeTicks& ticks); 79 void RecordRendererMainEntryTime(base::TimeTicks ticks);
77 80
78 // Call this with the time when the first web contents loaded its main frame, 81 // Call this with the time when the first web contents loaded its main frame,
79 // only if the first web contents was unimpended in its attempt to do so. 82 // only if the first web contents was unimpended in its attempt to do so.
80 void RecordFirstWebContentsMainFrameLoad(const base::TimeTicks& ticks); 83 void RecordFirstWebContentsMainFrameLoad(base::TimeTicks ticks);
81 84
82 // Call this with the time when the first web contents had a non-empty paint, 85 // Call this with the time when the first web contents had a non-empty paint,
83 // only if the first web contents was unimpended in its attempt to do so. 86 // only if the first web contents was unimpended in its attempt to do so.
84 void RecordFirstWebContentsNonEmptyPaint(const base::TimeTicks& ticks); 87 void RecordFirstWebContentsNonEmptyPaint(base::TimeTicks ticks);
85 88
86 // Call this with the time when the first web contents began navigating its main 89 // Call this with the time when the first web contents began navigating its main
87 // frame. Adds a suffix to its metrics according to |workload|. 90 // frame. Adds a suffix to its metrics according to |workload|.
88 void RecordFirstWebContentsMainNavigationStart(const base::TimeTicks& ticks, 91 void RecordFirstWebContentsMainNavigationStart(base::TimeTicks ticks,
89 WebContentsWorkload workload); 92 WebContentsWorkload workload);
90 93
91 // Call this with the time when the first web contents successfully committed 94 // Call this with the time when the first web contents successfully committed
92 // its navigation for the main frame. 95 // its navigation for the main frame.
93 void RecordFirstWebContentsMainNavigationFinished(const base::TimeTicks& ticks); 96 void RecordFirstWebContentsMainNavigationFinished(base::TimeTicks ticks);
97
98 // Call this with the time when the Browser window painted its children for the
99 // first time.
100 void RecordBrowserWindowFirstPaint(base::TimeTicks ticks);
101
102 // Call this with the time when the Browser window painted its children for the
103 // first time and we got a CompositingEnded after that.
104 void RecordBrowserWindowFirstPaintCompositingEnded(base::TimeTicks ticks);
94 105
95 // Returns the TimeTicks corresponding to main entry as recorded by 106 // Returns the TimeTicks corresponding to main entry as recorded by
96 // RecordMainEntryPointTime. Returns a null TimeTicks if a value has not been 107 // RecordMainEntryPointTime. Returns a null TimeTicks if a value has not been
97 // recorded yet. This method is expected to be called from the UI thread. 108 // recorded yet. This method is expected to be called from the UI thread.
98 base::TimeTicks MainEntryPointTicks(); 109 base::TimeTicks MainEntryPointTicks();
99 110
100 } // namespace startup_metric_utils 111 } // namespace startup_metric_utils
101 112
102 #endif // COMPONENTS_STARTUP_METRIC_UTILS_BROWSER_STARTUP_METRIC_UTILS_H_ 113 #endif // COMPONENTS_STARTUP_METRIC_UTILS_BROWSER_STARTUP_METRIC_UTILS_H_
OLDNEW
« no previous file with comments | « chrome/test/BUILD.gn ('k') | components/startup_metric_utils/browser/startup_metric_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698