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

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

Issue 2874663005: [Page Load Metrics] Add mojom file to page load metrics. (Closed)
Patch Set: rebase Created 3 years, 7 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 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_PAGE_LOAD_METRICS_OBSERVER_H_ 5 #ifndef CHROME_BROWSER_PAGE_LOAD_METRICS_PAGE_LOAD_METRICS_OBSERVER_H_
6 #define CHROME_BROWSER_PAGE_LOAD_METRICS_PAGE_LOAD_METRICS_OBSERVER_H_ 6 #define CHROME_BROWSER_PAGE_LOAD_METRICS_PAGE_LOAD_METRICS_OBSERVER_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 10
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 const base::Optional<base::TimeDelta>& first_background_time, 115 const base::Optional<base::TimeDelta>& first_background_time,
116 const base::Optional<base::TimeDelta>& first_foreground_time, 116 const base::Optional<base::TimeDelta>& first_foreground_time,
117 bool started_in_foreground, 117 bool started_in_foreground,
118 UserInitiatedInfo user_initiated_info, 118 UserInitiatedInfo user_initiated_info,
119 const GURL& url, 119 const GURL& url,
120 const GURL& start_url, 120 const GURL& start_url,
121 bool did_commit, 121 bool did_commit,
122 PageEndReason page_end_reason, 122 PageEndReason page_end_reason,
123 UserInitiatedInfo page_end_user_initiated_info, 123 UserInitiatedInfo page_end_user_initiated_info,
124 const base::Optional<base::TimeDelta>& page_end_time, 124 const base::Optional<base::TimeDelta>& page_end_time,
125 const PageLoadMetadata& main_frame_metadata, 125 const mojom::PageLoadMetadata& main_frame_metadata,
126 const PageLoadMetadata& child_frame_metadata); 126 const mojom::PageLoadMetadata& child_frame_metadata);
127 127
128 // Simplified version of the constructor, intended for use in tests. 128 // Simplified version of the constructor, intended for use in tests.
129 static PageLoadExtraInfo CreateForTesting(const GURL& url, 129 static PageLoadExtraInfo CreateForTesting(const GURL& url,
130 bool started_in_foreground); 130 bool started_in_foreground);
131 131
132 PageLoadExtraInfo(const PageLoadExtraInfo& other); 132 PageLoadExtraInfo(const PageLoadExtraInfo& other);
133 133
134 ~PageLoadExtraInfo(); 134 ~PageLoadExtraInfo();
135 135
136 // The time the navigation was initiated. 136 // The time the navigation was initiated.
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 // * the page load is stopped 185 // * the page load is stopped
186 // * the tab hosting the page is closed 186 // * the tab hosting the page is closed
187 // * the render process hosting the page goes away 187 // * the render process hosting the page goes away
188 // * a new navigation which later commits is initiated in the same tab 188 // * a new navigation which later commits is initiated in the same tab
189 // This field will not be set if the page is still active and hasn't yet 189 // This field will not be set if the page is still active and hasn't yet
190 // finished. 190 // finished.
191 const base::Optional<base::TimeDelta> page_end_time; 191 const base::Optional<base::TimeDelta> page_end_time;
192 192
193 // Extra information supplied to the page load metrics system from the 193 // Extra information supplied to the page load metrics system from the
194 // renderer for the main frame. 194 // renderer for the main frame.
195 const PageLoadMetadata main_frame_metadata; 195 const mojom::PageLoadMetadata main_frame_metadata;
196 196
197 // PageLoadMetadata for child frames of the current page load. 197 // PageLoadMetadata for child frames of the current page load.
198 const PageLoadMetadata child_frame_metadata; 198 const mojom::PageLoadMetadata child_frame_metadata;
199 }; 199 };
200 200
201 // Container for various information about a completed request within a page 201 // Container for various information about a completed request within a page
202 // load. 202 // load.
203 struct ExtraRequestCompleteInfo { 203 struct ExtraRequestCompleteInfo {
204 ExtraRequestCompleteInfo( 204 ExtraRequestCompleteInfo(
205 const GURL& url, 205 const GURL& url,
206 int frame_tree_node_id, 206 int frame_tree_node_id,
207 bool was_cached, 207 bool was_cached,
208 int64_t raw_body_bytes, 208 int64_t raw_body_bytes,
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 // was a same document navigation, or has been replaced. It is up to the 301 // was a same document navigation, or has been replaced. It is up to the
302 // observer to query |navigation_handle| to determine which happened. Note 302 // observer to query |navigation_handle| to determine which happened. Note
303 // that |navigation_handle| will be destroyed soon after this call. Don't 303 // that |navigation_handle| will be destroyed soon after this call. Don't
304 // hold a reference to it. 304 // hold a reference to it.
305 virtual ObservePolicy OnDidFinishSubFrameNavigation( 305 virtual ObservePolicy OnDidFinishSubFrameNavigation(
306 content::NavigationHandle* navigation_handle); 306 content::NavigationHandle* navigation_handle);
307 307
308 // OnHidden is triggered when a page leaves the foreground. It does not fire 308 // OnHidden is triggered when a page leaves the foreground. It does not fire
309 // when a foreground page is permanently closed; for that, listen to 309 // when a foreground page is permanently closed; for that, listen to
310 // OnComplete instead. 310 // OnComplete instead.
311 virtual ObservePolicy OnHidden(const PageLoadTiming& timing, 311 virtual ObservePolicy OnHidden(const mojom::PageLoadTiming& timing,
312 const PageLoadExtraInfo& extra_info); 312 const PageLoadExtraInfo& extra_info);
313 313
314 // OnShown is triggered when a page is brought to the foreground. It does not 314 // OnShown is triggered when a page is brought to the foreground. It does not
315 // fire when the page first loads; for that, listen for OnStart instead. 315 // fire when the page first loads; for that, listen for OnStart instead.
316 virtual ObservePolicy OnShown(); 316 virtual ObservePolicy OnShown();
317 317
318 // Called before OnCommit. The observer should return whether it wishes to 318 // Called before OnCommit. The observer should return whether it wishes to
319 // observe navigations whose main resource has MIME type |mine_type|. The 319 // observe navigations whose main resource has MIME type |mine_type|. The
320 // default is to observe HTML and XHTML only. Note that PageLoadTrackers only 320 // default is to observe HTML and XHTML only. Note that PageLoadTrackers only
321 // track XHTML, HTML, and MHTML (related/multipart). 321 // track XHTML, HTML, and MHTML (related/multipart).
322 virtual ObservePolicy ShouldObserveMimeType( 322 virtual ObservePolicy ShouldObserveMimeType(
323 const std::string& mime_type) const; 323 const std::string& mime_type) const;
324 324
325 // The callbacks below are only invoked after a navigation commits, for 325 // The callbacks below are only invoked after a navigation commits, for
326 // tracked page loads. Page loads that don't meet the criteria for being 326 // tracked page loads. Page loads that don't meet the criteria for being
327 // tracked at the time a navigation commits will not receive any of the 327 // tracked at the time a navigation commits will not receive any of the
328 // callbacks below. 328 // callbacks below.
329 329
330 // OnTimingUpdate is triggered when an updated PageLoadTiming is 330 // OnTimingUpdate is triggered when an updated PageLoadTiming is
331 // available. This method may be called multiple times over the course of the 331 // available. This method may be called multiple times over the course of the
332 // page load. This method is currently only intended for use in testing. Most 332 // page load. This method is currently only intended for use in testing. Most
333 // implementers should implement one of the On* callbacks, such as 333 // implementers should implement one of the On* callbacks, such as
334 // OnFirstContentfulPaint or OnDomContentLoadedEventStart. Please email 334 // OnFirstContentfulPaint or OnDomContentLoadedEventStart. Please email
335 // loading-dev@chromium.org if you intend to override this method. 335 // loading-dev@chromium.org if you intend to override this method.
336 virtual void OnTimingUpdate(const PageLoadTiming& timing, 336 virtual void OnTimingUpdate(const mojom::PageLoadTiming& timing,
337 const PageLoadExtraInfo& extra_info) {} 337 const PageLoadExtraInfo& extra_info) {}
338 // OnUserInput is triggered when a new user input is passed in to 338 // OnUserInput is triggered when a new user input is passed in to
339 // web_contents. Contains a TimeDelta from navigation start. 339 // web_contents. Contains a TimeDelta from navigation start.
340 virtual void OnUserInput(const blink::WebInputEvent& event) {} 340 virtual void OnUserInput(const blink::WebInputEvent& event) {}
341 341
342 // The following methods are invoked at most once, when the timing for the 342 // The following methods are invoked at most once, when the timing for the
343 // associated event first becomes available. 343 // associated event first becomes available.
344 virtual void OnDomContentLoadedEventStart( 344 virtual void OnDomContentLoadedEventStart(
345 const PageLoadTiming& timing, 345 const mojom::PageLoadTiming& timing,
346 const PageLoadExtraInfo& extra_info) {} 346 const PageLoadExtraInfo& extra_info) {}
347 virtual void OnLoadEventStart(const PageLoadTiming& timing, 347 virtual void OnLoadEventStart(const mojom::PageLoadTiming& timing,
348 const PageLoadExtraInfo& extra_info) {} 348 const PageLoadExtraInfo& extra_info) {}
349 virtual void OnFirstLayout(const PageLoadTiming& timing, 349 virtual void OnFirstLayout(const mojom::PageLoadTiming& timing,
350 const PageLoadExtraInfo& extra_info) {} 350 const PageLoadExtraInfo& extra_info) {}
351 virtual void OnFirstPaint(const PageLoadTiming& timing, 351 virtual void OnFirstPaint(const mojom::PageLoadTiming& timing,
352 const PageLoadExtraInfo& extra_info) {} 352 const PageLoadExtraInfo& extra_info) {}
353 virtual void OnFirstTextPaint(const PageLoadTiming& timing, 353 virtual void OnFirstTextPaint(const mojom::PageLoadTiming& timing,
354 const PageLoadExtraInfo& extra_info) {} 354 const PageLoadExtraInfo& extra_info) {}
355 virtual void OnFirstImagePaint(const PageLoadTiming& timing, 355 virtual void OnFirstImagePaint(const mojom::PageLoadTiming& timing,
356 const PageLoadExtraInfo& extra_info) {} 356 const PageLoadExtraInfo& extra_info) {}
357 virtual void OnFirstContentfulPaint(const PageLoadTiming& timing, 357 virtual void OnFirstContentfulPaint(const mojom::PageLoadTiming& timing,
358 const PageLoadExtraInfo& extra_info) {} 358 const PageLoadExtraInfo& extra_info) {}
359 virtual void OnFirstMeaningfulPaint(const PageLoadTiming& timing, 359 virtual void OnFirstMeaningfulPaint(const mojom::PageLoadTiming& timing,
360 const PageLoadExtraInfo& extra_info) {} 360 const PageLoadExtraInfo& extra_info) {}
361 virtual void OnParseStart(const PageLoadTiming& timing, 361 virtual void OnParseStart(const mojom::PageLoadTiming& timing,
362 const PageLoadExtraInfo& extra_info) {} 362 const PageLoadExtraInfo& extra_info) {}
363 virtual void OnParseStop(const PageLoadTiming& timing, 363 virtual void OnParseStop(const mojom::PageLoadTiming& timing,
364 const PageLoadExtraInfo& extra_info) {} 364 const PageLoadExtraInfo& extra_info) {}
365 365
366 // Invoked when there is a change in either the main_frame_metadata or the 366 // Invoked when there is a change in either the main_frame_metadata or the
367 // child_frame_metadata's loading behavior_flags. 367 // child_frame_metadata's loading behavior_flags.
368 virtual void OnLoadingBehaviorObserved( 368 virtual void OnLoadingBehaviorObserved(
369 const page_load_metrics::PageLoadExtraInfo& extra_info) {} 369 const page_load_metrics::PageLoadExtraInfo& extra_info) {}
370 370
371 // Invoked when a media element starts playing. 371 // Invoked when a media element starts playing.
372 virtual void MediaStartedPlaying( 372 virtual void MediaStartedPlaying(
373 const content::WebContentsObserver::MediaPlayerInfo& video_type, 373 const content::WebContentsObserver::MediaPlayerInfo& video_type,
(...skipping 12 matching lines...) Expand all
386 // the application may be killed at any time after this method is invoked 386 // the application may be killed at any time after this method is invoked
387 // without further notification. Note that this may be called both for 387 // without further notification. Note that this may be called both for
388 // provisional loads as well as committed loads. Implementations that only 388 // provisional loads as well as committed loads. Implementations that only
389 // want to track committed loads should check whether extra_info.committed_url 389 // want to track committed loads should check whether extra_info.committed_url
390 // is empty to determine if the load had committed. If the implementation 390 // is empty to determine if the load had committed. If the implementation
391 // returns CONTINUE_OBSERVING, this method may be called multiple times per 391 // returns CONTINUE_OBSERVING, this method may be called multiple times per
392 // observer, once for each time that the application enters the backround. 392 // observer, once for each time that the application enters the backround.
393 // 393 //
394 // The default implementation does nothing, and returns CONTINUE_OBSERVING. 394 // The default implementation does nothing, and returns CONTINUE_OBSERVING.
395 virtual ObservePolicy FlushMetricsOnAppEnterBackground( 395 virtual ObservePolicy FlushMetricsOnAppEnterBackground(
396 const PageLoadTiming& timing, 396 const mojom::PageLoadTiming& timing,
397 const PageLoadExtraInfo& extra_info); 397 const PageLoadExtraInfo& extra_info);
398 398
399 // One of OnComplete or OnFailedProvisionalLoad is invoked for tracked page 399 // One of OnComplete or OnFailedProvisionalLoad is invoked for tracked page
400 // loads, immediately before the observer is deleted. These callbacks will not 400 // loads, immediately before the observer is deleted. These callbacks will not
401 // be invoked for page loads that did not meet the criteria for being tracked 401 // be invoked for page loads that did not meet the criteria for being tracked
402 // at the time the navigation completed. The PageLoadTiming struct contains 402 // at the time the navigation completed. The PageLoadTiming struct contains
403 // timing data and the PageLoadExtraInfo struct contains other useful data 403 // timing data and the PageLoadExtraInfo struct contains other useful data
404 // collected over the course of the page load. Most observers should not need 404 // collected over the course of the page load. Most observers should not need
405 // to implement these callbacks, and should implement the On* timing callbacks 405 // to implement these callbacks, and should implement the On* timing callbacks
406 // instead. 406 // instead.
407 407
408 // OnComplete is invoked for tracked page loads that committed, immediately 408 // OnComplete is invoked for tracked page loads that committed, immediately
409 // before the observer is deleted. Observers that implement OnComplete may 409 // before the observer is deleted. Observers that implement OnComplete may
410 // also want to implement FlushMetricsOnAppEnterBackground, to avoid loss of 410 // also want to implement FlushMetricsOnAppEnterBackground, to avoid loss of
411 // data if the application is killed while in the background (this happens 411 // data if the application is killed while in the background (this happens
412 // frequently on Android). 412 // frequently on Android).
413 virtual void OnComplete(const PageLoadTiming& timing, 413 virtual void OnComplete(const mojom::PageLoadTiming& timing,
414 const PageLoadExtraInfo& extra_info) {} 414 const PageLoadExtraInfo& extra_info) {}
415 415
416 // OnFailedProvisionalLoad is invoked for tracked page loads that did not 416 // OnFailedProvisionalLoad is invoked for tracked page loads that did not
417 // commit, immediately before the observer is deleted. 417 // commit, immediately before the observer is deleted.
418 virtual void OnFailedProvisionalLoad( 418 virtual void OnFailedProvisionalLoad(
419 const FailedProvisionalLoadInfo& failed_provisional_load_info, 419 const FailedProvisionalLoadInfo& failed_provisional_load_info,
420 const PageLoadExtraInfo& extra_info) {} 420 const PageLoadExtraInfo& extra_info) {}
421 421
422 // Called whenever a request load begins. 422 // Called whenever a request load begins.
423 virtual void OnStartedResource( 423 virtual void OnStartedResource(
424 const ExtraRequestStartInfo& extra_request_start_info) {} 424 const ExtraRequestStartInfo& extra_request_start_info) {}
425 425
426 // Called whenever a request is loaded for this page load. This comes 426 // Called whenever a request is loaded for this page load. This comes
427 // unfiltered from the ResourceDispatcherHost and may include blob requests 427 // unfiltered from the ResourceDispatcherHost and may include blob requests
428 // and data uris. 428 // and data uris.
429 virtual void OnLoadedResource( 429 virtual void OnLoadedResource(
430 const ExtraRequestCompleteInfo& extra_request_complete_info) {} 430 const ExtraRequestCompleteInfo& extra_request_complete_info) {}
431 }; 431 };
432 432
433 } // namespace page_load_metrics 433 } // namespace page_load_metrics
434 434
435 #endif // CHROME_BROWSER_PAGE_LOAD_METRICS_PAGE_LOAD_METRICS_OBSERVER_H_ 435 #endif // CHROME_BROWSER_PAGE_LOAD_METRICS_PAGE_LOAD_METRICS_OBSERVER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698