PageLoadMetrics renderer and browser implementation.
commit9fa62d54d03911d7a4120354d3e206ca69af4840
authorcsharrison <csharrison@chromium.org>
Mon, 21 Sep 2015 22:05:29 +0000 (21 15:05 -0700)
committerCommit bot <commit-bot@chromium.org>
Mon, 21 Sep 2015 22:06:11 +0000 (21 22:06 +0000)
tree850d0003b5efeb1b3e8fa149d0cfeeaeea94289c
parent2126ae15b18618c1bca68631bd5877e9a6b086c6
PageLoadMetrics renderer and browser implementation.

This change addresses issues with lost UMA data, by pushing UMA metrics
to the browser process over IPC.

In the render process, we implement a RenderFrameObserver that attaches
to top-level frames, and pushes interesting document timing metrics to
the browser process.

In the browser process, we implement a WebContentsObserver that
receives the document timing metrics and UMA logs them. We implement
WebContentsObserver because, in a future change, we'll start observing
page close events in order to log cases where a page load is aborted
before a layout occurs.

See https://docs.google.com/document/d/1HJsJ5W2H_3qRdqPAUgAEo10AF8gXPTXZLUET4X4_sII/edit for additional details.

BUG=382542

patch from issue 1282303002 at patchset 740001 (http://crrev.com/1282303002#ps740001)

Review URL: https://codereview.chromium.org/1312213010

Cr-Commit-Position: refs/heads/master@{#350038}
40 files changed:
chrome/browser/ui/BUILD.gn
chrome/browser/ui/DEPS
chrome/browser/ui/tab_helpers.cc
chrome/chrome_browser_ui.gypi
chrome/chrome_renderer.gypi
chrome/renderer/BUILD.gn
chrome/renderer/DEPS
chrome/renderer/chrome_content_renderer_client.cc
components/BUILD.gn
components/OWNERS
components/components.gyp
components/components_tests.gyp
components/page_load_metrics.gypi [new file with mode: 0644]
components/page_load_metrics/DEPS [new file with mode: 0644]
components/page_load_metrics/OWNERS [new file with mode: 0644]
components/page_load_metrics/README [new file with mode: 0644]
components/page_load_metrics/browser/BUILD.gn [new file with mode: 0644]
components/page_load_metrics/browser/DEPS [new file with mode: 0644]
components/page_load_metrics/browser/metrics_web_contents_observer.cc [new file with mode: 0644]
components/page_load_metrics/browser/metrics_web_contents_observer.h [new file with mode: 0644]
components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc [new file with mode: 0644]
components/page_load_metrics/common/BUILD.gn [new file with mode: 0644]
components/page_load_metrics/common/page_load_metrics_messages.cc [new file with mode: 0644]
components/page_load_metrics/common/page_load_metrics_messages.h [new file with mode: 0644]
components/page_load_metrics/common/page_load_timing.cc [new file with mode: 0644]
components/page_load_metrics/common/page_load_timing.h [new file with mode: 0644]
components/page_load_metrics/renderer/BUILD.gn [new file with mode: 0644]
components/page_load_metrics/renderer/DEPS [new file with mode: 0644]
components/page_load_metrics/renderer/metrics_render_frame_observer.cc [new file with mode: 0644]
components/page_load_metrics/renderer/metrics_render_frame_observer.h [new file with mode: 0644]
components/page_load_metrics/renderer/metrics_render_frame_observer_unittest.cc [new file with mode: 0644]
components/page_load_metrics/renderer/page_timing_metrics_sender.cc [new file with mode: 0644]
components/page_load_metrics/renderer/page_timing_metrics_sender.h [new file with mode: 0644]
components/page_load_metrics/renderer/page_timing_metrics_sender_unittest.cc [new file with mode: 0644]
content/browser/frame_host/navigation_handle_impl.cc
content/browser/frame_host/navigation_handle_impl.h
content/browser/frame_host/navigator_impl.cc
content/public/browser/navigation_handle.h
ipc/ipc_message_start.h
tools/metrics/histograms/histograms.xml