OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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_METRICS_WEB_CONTENTS_OBSERVER_H_ | 5 #ifndef CHROME_BROWSER_PAGE_LOAD_METRICS_METRICS_WEB_CONTENTS_OBSERVER_H_ |
6 #define CHROME_BROWSER_PAGE_LOAD_METRICS_METRICS_WEB_CONTENTS_OBSERVER_H_ | 6 #define CHROME_BROWSER_PAGE_LOAD_METRICS_METRICS_WEB_CONTENTS_OBSERVER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <memory> | 9 #include <memory> |
10 #include <vector> | 10 #include <vector> |
(...skipping 23 matching lines...) Expand all Loading... |
34 class PageLoadTracker; | 34 class PageLoadTracker; |
35 | 35 |
36 namespace internal { | 36 namespace internal { |
37 | 37 |
38 extern const char kErrorEvents[]; | 38 extern const char kErrorEvents[]; |
39 extern const char kAbortChainSizeReload[]; | 39 extern const char kAbortChainSizeReload[]; |
40 extern const char kAbortChainSizeForwardBack[]; | 40 extern const char kAbortChainSizeForwardBack[]; |
41 extern const char kAbortChainSizeNewNavigation[]; | 41 extern const char kAbortChainSizeNewNavigation[]; |
42 extern const char kAbortChainSizeNoCommit[]; | 42 extern const char kAbortChainSizeNoCommit[]; |
43 extern const char kAbortChainSizeSameURL[]; | 43 extern const char kAbortChainSizeSameURL[]; |
| 44 extern const char kPageLoadCompletedAfterAppBackground[]; |
44 | 45 |
45 } // namespace internal | 46 } // namespace internal |
46 | 47 |
47 // These errors are internal to the page_load_metrics subsystem and do not | 48 // These errors are internal to the page_load_metrics subsystem and do not |
48 // reflect actual errors that occur during a page load. | 49 // reflect actual errors that occur during a page load. |
49 // | 50 // |
50 // If you add elements to this enum, make sure you update the enum | 51 // If you add elements to this enum, make sure you update the enum |
51 // value in histograms.xml. Only add elements to the end to prevent | 52 // value in histograms.xml. Only add elements to the end to prevent |
52 // inconsistencies between versions. | 53 // inconsistencies between versions. |
53 enum InternalErrorLoadEvent { | 54 enum InternalErrorLoadEvent { |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 int aborted_chain_size_same_url); | 137 int aborted_chain_size_same_url); |
137 ~PageLoadTracker(); | 138 ~PageLoadTracker(); |
138 void Redirect(content::NavigationHandle* navigation_handle); | 139 void Redirect(content::NavigationHandle* navigation_handle); |
139 void Commit(content::NavigationHandle* navigation_handle); | 140 void Commit(content::NavigationHandle* navigation_handle); |
140 void FailedProvisionalLoad(content::NavigationHandle* navigation_handle); | 141 void FailedProvisionalLoad(content::NavigationHandle* navigation_handle); |
141 void WebContentsHidden(); | 142 void WebContentsHidden(); |
142 void WebContentsShown(); | 143 void WebContentsShown(); |
143 | 144 |
144 void OnInputEvent(const blink::WebInputEvent& event); | 145 void OnInputEvent(const blink::WebInputEvent& event); |
145 | 146 |
| 147 // Flush any buffered metrics, as part of the metrics subsystem persisting |
| 148 // metrics as the application goes into the background. The application may be |
| 149 // killed at any time after this method is invoked without further |
| 150 // notification. |
| 151 void FlushMetricsOnAppEnterBackground(); |
| 152 |
146 void NotifyClientRedirectTo(const PageLoadTracker& destination); | 153 void NotifyClientRedirectTo(const PageLoadTracker& destination); |
147 | 154 |
148 // Returns true if the timing was successfully updated. | 155 // Returns true if the timing was successfully updated. |
149 bool UpdateTiming(const PageLoadTiming& timing, | 156 bool UpdateTiming(const PageLoadTiming& timing, |
150 const PageLoadMetadata& metadata); | 157 const PageLoadMetadata& metadata); |
151 | 158 |
152 // Signals that we should stop tracking metrics for the associated page load. | 159 // Signals that we should stop tracking metrics for the associated page load. |
153 // We may stop tracking a page load if it doesn't meet the criteria for | 160 // We may stop tracking a page load if it doesn't meet the criteria for |
154 // tracking metrics in DidFinishNavigation. | 161 // tracking metrics in DidFinishNavigation. |
155 void StopTracking(); | 162 void StopTracking(); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 // If |final_navigation| is null, then this is an "unparented" abort chain, | 220 // If |final_navigation| is null, then this is an "unparented" abort chain, |
214 // and represents a sequence of provisional aborts that never ends with a | 221 // and represents a sequence of provisional aborts that never ends with a |
215 // committed load. | 222 // committed load. |
216 void LogAbortChainHistograms(content::NavigationHandle* final_navigation); | 223 void LogAbortChainHistograms(content::NavigationHandle* final_navigation); |
217 | 224 |
218 // Whether we stopped tracking this navigation after it was initiated. We may | 225 // Whether we stopped tracking this navigation after it was initiated. We may |
219 // stop tracking a navigation if it doesn't meet the criteria for tracking | 226 // stop tracking a navigation if it doesn't meet the criteria for tracking |
220 // metrics in DidFinishNavigation. | 227 // metrics in DidFinishNavigation. |
221 bool did_stop_tracking_; | 228 bool did_stop_tracking_; |
222 | 229 |
| 230 // Whether the application went into the background when this PageLoadTracker |
| 231 // was active. This is a temporary boolean for UMA tracking. |
| 232 bool app_entered_background_; |
| 233 |
223 // The navigation start in TimeTicks, not the wall time reported by Blink. | 234 // The navigation start in TimeTicks, not the wall time reported by Blink. |
224 const base::TimeTicks navigation_start_; | 235 const base::TimeTicks navigation_start_; |
225 | 236 |
226 // Time this page load was committed. If this page load hasn't committed, | 237 // Time this page load was committed. If this page load hasn't committed, |
227 // |commit_time_| will be zero. | 238 // |commit_time_| will be zero. |
228 base::TimeTicks commit_time_; | 239 base::TimeTicks commit_time_; |
229 | 240 |
230 // The URL of this page load. This is the provisional url before commit | 241 // The URL of this page load. This is the provisional url before commit |
231 // (before redirects), and the committed url after commit. | 242 // (before redirects), and the committed url after commit. |
232 GURL url_; | 243 GURL url_; |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 void DidRedirectNavigation( | 306 void DidRedirectNavigation( |
296 content::NavigationHandle* navigation_handle) override; | 307 content::NavigationHandle* navigation_handle) override; |
297 void NavigationStopped() override; | 308 void NavigationStopped() override; |
298 void OnInputEvent(const blink::WebInputEvent& event) override; | 309 void OnInputEvent(const blink::WebInputEvent& event) override; |
299 void WasShown() override; | 310 void WasShown() override; |
300 void WasHidden() override; | 311 void WasHidden() override; |
301 void RenderProcessGone(base::TerminationStatus status) override; | 312 void RenderProcessGone(base::TerminationStatus status) override; |
302 void RenderViewHostChanged(content::RenderViewHost* old_host, | 313 void RenderViewHostChanged(content::RenderViewHost* old_host, |
303 content::RenderViewHost* new_host) override; | 314 content::RenderViewHost* new_host) override; |
304 | 315 |
| 316 // Flush any buffered metrics, as part of the metrics subsystem persisting |
| 317 // metrics as the application goes into the background. The application may be |
| 318 // killed at any time after this method is invoked without further |
| 319 // notification. |
| 320 void FlushMetricsOnAppEnterBackground(); |
| 321 |
305 // This getter function is required for testing. | 322 // This getter function is required for testing. |
306 const PageLoadExtraInfo GetPageLoadExtraInfoForCommittedLoad(); | 323 const PageLoadExtraInfo GetPageLoadExtraInfoForCommittedLoad(); |
307 | 324 |
308 private: | 325 private: |
309 friend class content::WebContentsUserData<MetricsWebContentsObserver>; | 326 friend class content::WebContentsUserData<MetricsWebContentsObserver>; |
310 | 327 |
311 void HandleFailedNavigationForTrackedLoad( | 328 void HandleFailedNavigationForTrackedLoad( |
312 content::NavigationHandle* navigation_handle, | 329 content::NavigationHandle* navigation_handle, |
313 std::unique_ptr<PageLoadTracker> tracker); | 330 std::unique_ptr<PageLoadTracker> tracker); |
314 | 331 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 | 383 |
367 // Has the MWCO observed at least one navigation? | 384 // Has the MWCO observed at least one navigation? |
368 bool has_navigated_; | 385 bool has_navigated_; |
369 | 386 |
370 DISALLOW_COPY_AND_ASSIGN(MetricsWebContentsObserver); | 387 DISALLOW_COPY_AND_ASSIGN(MetricsWebContentsObserver); |
371 }; | 388 }; |
372 | 389 |
373 } // namespace page_load_metrics | 390 } // namespace page_load_metrics |
374 | 391 |
375 #endif // CHROME_BROWSER_PAGE_LOAD_METRICS_METRICS_WEB_CONTENTS_OBSERVER_H_ | 392 #endif // CHROME_BROWSER_PAGE_LOAD_METRICS_METRICS_WEB_CONTENTS_OBSERVER_H_ |
OLD | NEW |