| OLD | NEW |
| 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_PAGE_LOAD_TRACKER_H_ | 5 #ifndef CHROME_BROWSER_PAGE_LOAD_METRICS_PAGE_LOAD_TRACKER_H_ |
| 6 #define CHROME_BROWSER_PAGE_LOAD_METRICS_PAGE_LOAD_TRACKER_H_ | 6 #define CHROME_BROWSER_PAGE_LOAD_METRICS_PAGE_LOAD_TRACKER_H_ |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 // renderer process and the system clock has inter process time tick skew. | 100 // renderer process and the system clock has inter process time tick skew. |
| 101 ERR_INTER_PROCESS_TIME_TICK_SKEW, | 101 ERR_INTER_PROCESS_TIME_TICK_SKEW, |
| 102 | 102 |
| 103 // At the time a PageLoadTracker was destroyed, we had received neither a | 103 // At the time a PageLoadTracker was destroyed, we had received neither a |
| 104 // commit nor a failed provisional load. | 104 // commit nor a failed provisional load. |
| 105 ERR_NO_COMMIT_OR_FAILED_PROVISIONAL_LOAD, | 105 ERR_NO_COMMIT_OR_FAILED_PROVISIONAL_LOAD, |
| 106 | 106 |
| 107 // No page load end time was recorded for this page load. | 107 // No page load end time was recorded for this page load. |
| 108 ERR_NO_PAGE_LOAD_END_TIME, | 108 ERR_NO_PAGE_LOAD_END_TIME, |
| 109 | 109 |
| 110 // Received a timing update from a subframe. |
| 111 ERR_TIMING_IPC_FROM_SUBFRAME, |
| 112 |
| 110 // Add values before this final count. | 113 // Add values before this final count. |
| 111 ERR_LAST_ENTRY, | 114 ERR_LAST_ENTRY, |
| 112 }; | 115 }; |
| 113 | 116 |
| 114 // NOTE: these functions are shared by page_load_tracker.cc and | 117 // NOTE: these functions are shared by page_load_tracker.cc and |
| 115 // metrics_web_contents_observer.cc. They are declared here to allow both files | 118 // metrics_web_contents_observer.cc. They are declared here to allow both files |
| 116 // to access them. | 119 // to access them. |
| 117 void RecordInternalError(InternalErrorLoadEvent event); | 120 void RecordInternalError(InternalErrorLoadEvent event); |
| 118 PageEndReason EndReasonForPageTransition(ui::PageTransition transition); | 121 PageEndReason EndReasonForPageTransition(ui::PageTransition transition); |
| 119 void LogAbortChainSameURLHistogram(int aborted_chain_size_same_url); | 122 void LogAbortChainSameURLHistogram(int aborted_chain_size_same_url); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 // killed at any time after this method is invoked without further | 156 // killed at any time after this method is invoked without further |
| 154 // notification. | 157 // notification. |
| 155 void FlushMetricsOnAppEnterBackground(); | 158 void FlushMetricsOnAppEnterBackground(); |
| 156 | 159 |
| 157 void NotifyClientRedirectTo(const PageLoadTracker& destination); | 160 void NotifyClientRedirectTo(const PageLoadTracker& destination); |
| 158 | 161 |
| 159 // Returns true if the timing was successfully updated. | 162 // Returns true if the timing was successfully updated. |
| 160 bool UpdateTiming(const PageLoadTiming& timing, | 163 bool UpdateTiming(const PageLoadTiming& timing, |
| 161 const PageLoadMetadata& metadata); | 164 const PageLoadMetadata& metadata); |
| 162 | 165 |
| 166 void UpdateChildMetadata(const PageLoadMetadata& child_metadata); |
| 167 |
| 163 void OnLoadedResource(const ExtraRequestInfo& extra_request_info); | 168 void OnLoadedResource(const ExtraRequestInfo& extra_request_info); |
| 164 | 169 |
| 165 // Signals that we should stop tracking metrics for the associated page load. | 170 // Signals that we should stop tracking metrics for the associated page load. |
| 166 // We may stop tracking a page load if it doesn't meet the criteria for | 171 // We may stop tracking a page load if it doesn't meet the criteria for |
| 167 // tracking metrics in DidFinishNavigation. | 172 // tracking metrics in DidFinishNavigation. |
| 168 void StopTracking(); | 173 void StopTracking(); |
| 169 | 174 |
| 170 int aborted_chain_size() const { return aborted_chain_size_; } | 175 int aborted_chain_size() const { return aborted_chain_size_; } |
| 171 int aborted_chain_size_same_url() const { | 176 int aborted_chain_size_same_url() const { |
| 172 return aborted_chain_size_same_url_; | 177 return aborted_chain_size_same_url_; |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 PageLoadTiming timing_; | 301 PageLoadTiming timing_; |
| 297 PageLoadMetadata metadata_; | 302 PageLoadMetadata metadata_; |
| 298 | 303 |
| 299 ui::PageTransition page_transition_; | 304 ui::PageTransition page_transition_; |
| 300 | 305 |
| 301 base::Optional<content::GlobalRequestID> navigation_request_id_; | 306 base::Optional<content::GlobalRequestID> navigation_request_id_; |
| 302 | 307 |
| 303 // Whether this page load was user initiated. | 308 // Whether this page load was user initiated. |
| 304 UserInitiatedInfo user_initiated_info_; | 309 UserInitiatedInfo user_initiated_info_; |
| 305 | 310 |
| 311 // WebLoadingBehaviorFlags for all child frames in this page. |
| 312 int child_loading_behavior_flags_; |
| 313 |
| 306 // This is a subtle member. If a provisional load A gets aborted by | 314 // This is a subtle member. If a provisional load A gets aborted by |
| 307 // provisional load B, which gets aborted by C that eventually commits, then | 315 // provisional load B, which gets aborted by C that eventually commits, then |
| 308 // there exists an abort chain of length 2, starting at A's navigation_start. | 316 // there exists an abort chain of length 2, starting at A's navigation_start. |
| 309 // This is useful because it allows histograming abort chain lengths based on | 317 // This is useful because it allows histograming abort chain lengths based on |
| 310 // what the last load's transition type is. i.e. holding down F-5 to spam | 318 // what the last load's transition type is. i.e. holding down F-5 to spam |
| 311 // reload will produce a long chain with the RELOAD transition. | 319 // reload will produce a long chain with the RELOAD transition. |
| 312 const int aborted_chain_size_; | 320 const int aborted_chain_size_; |
| 313 | 321 |
| 314 // This member counts consecutive provisional aborts that share a url. It will | 322 // This member counts consecutive provisional aborts that share a url. It will |
| 315 // always be less than or equal to |aborted_chain_size_|. | 323 // always be less than or equal to |aborted_chain_size_|. |
| 316 const int aborted_chain_size_same_url_; | 324 const int aborted_chain_size_same_url_; |
| 317 | 325 |
| 318 // Interface to chrome features. Must outlive the class. | 326 // Interface to chrome features. Must outlive the class. |
| 319 PageLoadMetricsEmbedderInterface* const embedder_interface_; | 327 PageLoadMetricsEmbedderInterface* const embedder_interface_; |
| 320 | 328 |
| 321 std::vector<std::unique_ptr<PageLoadMetricsObserver>> observers_; | 329 std::vector<std::unique_ptr<PageLoadMetricsObserver>> observers_; |
| 322 | 330 |
| 323 DISALLOW_COPY_AND_ASSIGN(PageLoadTracker); | 331 DISALLOW_COPY_AND_ASSIGN(PageLoadTracker); |
| 324 }; | 332 }; |
| 325 | 333 |
| 326 } // namespace page_load_metrics | 334 } // namespace page_load_metrics |
| 327 | 335 |
| 328 #endif // CHROME_BROWSER_PAGE_LOAD_METRICS_PAGE_LOAD_TRACKER_H_ | 336 #endif // CHROME_BROWSER_PAGE_LOAD_METRICS_PAGE_LOAD_TRACKER_H_ |
| OLD | NEW |