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

Side by Side Diff: chrome/browser/page_load_metrics/page_load_tracker.h

Issue 2737563007: Add support for tracking loading behavior of child frames. (Closed)
Patch Set: stop observing if started in background Created 3 years, 9 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
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_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
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
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 // Update metadata for child frames. Updates for child frames arrive
167 // separately from updates for the main frame, so aren't included in
168 // UpdateTiming.
169 void UpdateChildFrameMetadata(const PageLoadMetadata& child_metadata);
170
163 void OnLoadedResource(const ExtraRequestInfo& extra_request_info); 171 void OnLoadedResource(const ExtraRequestInfo& extra_request_info);
164 172
165 // Signals that we should stop tracking metrics for the associated page load. 173 // 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 174 // We may stop tracking a page load if it doesn't meet the criteria for
167 // tracking metrics in DidFinishNavigation. 175 // tracking metrics in DidFinishNavigation.
168 void StopTracking(); 176 void StopTracking();
169 177
170 int aborted_chain_size() const { return aborted_chain_size_; } 178 int aborted_chain_size() const { return aborted_chain_size_; }
171 int aborted_chain_size_same_url() const { 179 int aborted_chain_size_same_url() const {
172 return aborted_chain_size_same_url_; 180 return aborted_chain_size_same_url_;
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 base::TimeTicks page_end_time_; 295 base::TimeTicks page_end_time_;
288 296
289 // We record separate metrics for events that occur after a background, 297 // We record separate metrics for events that occur after a background,
290 // because metrics like layout/paint are delayed artificially 298 // because metrics like layout/paint are delayed artificially
291 // when they occur in the background. 299 // when they occur in the background.
292 base::TimeTicks background_time_; 300 base::TimeTicks background_time_;
293 base::TimeTicks foreground_time_; 301 base::TimeTicks foreground_time_;
294 bool started_in_foreground_; 302 bool started_in_foreground_;
295 303
296 PageLoadTiming timing_; 304 PageLoadTiming timing_;
297 PageLoadMetadata metadata_; 305 PageLoadMetadata main_frame_metadata_;
306 PageLoadMetadata child_frame_metadata_;
298 307
299 ui::PageTransition page_transition_; 308 ui::PageTransition page_transition_;
300 309
301 base::Optional<content::GlobalRequestID> navigation_request_id_; 310 base::Optional<content::GlobalRequestID> navigation_request_id_;
302 311
303 // Whether this page load was user initiated. 312 // Whether this page load was user initiated.
304 UserInitiatedInfo user_initiated_info_; 313 UserInitiatedInfo user_initiated_info_;
305 314
306 // This is a subtle member. If a provisional load A gets aborted by 315 // 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 316 // provisional load B, which gets aborted by C that eventually commits, then
(...skipping 11 matching lines...) Expand all
319 PageLoadMetricsEmbedderInterface* const embedder_interface_; 328 PageLoadMetricsEmbedderInterface* const embedder_interface_;
320 329
321 std::vector<std::unique_ptr<PageLoadMetricsObserver>> observers_; 330 std::vector<std::unique_ptr<PageLoadMetricsObserver>> observers_;
322 331
323 DISALLOW_COPY_AND_ASSIGN(PageLoadTracker); 332 DISALLOW_COPY_AND_ASSIGN(PageLoadTracker);
324 }; 333 };
325 334
326 } // namespace page_load_metrics 335 } // namespace page_load_metrics
327 336
328 #endif // CHROME_BROWSER_PAGE_LOAD_METRICS_PAGE_LOAD_TRACKER_H_ 337 #endif // CHROME_BROWSER_PAGE_LOAD_METRICS_PAGE_LOAD_TRACKER_H_
OLDNEW
« no previous file with comments | « chrome/browser/page_load_metrics/page_load_metrics_util.cc ('k') | chrome/browser/page_load_metrics/page_load_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698