Navigation throttles can give us more reliable user gesture and transition type bits, which will allow us to capture richer abort metrics.
Note: the NavigationThrottle should feed data back into the MetricsWebContentsObserver, so the abort tracking logic doesn't spread between multiple classes.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/dd06babf17af821c4fce1d6509946188c43fd208 commit dd06babf17af821c4fce1d6509946188c43fd208 Author: csharrison <csharrison@chromium.org> Date: Fri Jul 22 14:15:02 2016 Call WillStartRequestForTesting in TestRenderFrameHost This CL calls WillStartRequest on the current NavigationHandle when a navigation is starting. This mimics the SimulateRedirect call, and enables NavigationThrottles which override WillStartRequest to be unit testable using the content unit test framework. Note: like SimulateRedirect, there is no current support for the throttles actually cancelling / deferring the navigation. BUG= 627501 Review-Url: https://codereview.chromium.org/2157153003 Cr-Commit-Position: refs/heads/master@{#407150} [modify] https://crrev.com/dd06babf17af821c4fce1d6509946188c43fd208/chrome/browser/chrome_content_browser_client.cc [modify] https://crrev.com/dd06babf17af821c4fce1d6509946188c43fd208/chrome/browser/chromeos/login/signin/merge_session_throttling_utils.cc [modify] https://crrev.com/dd06babf17af821c4fce1d6509946188c43fd208/chrome/browser/chromeos/login/signin/merge_session_throttling_utils.h [modify] https://crrev.com/dd06babf17af821c4fce1d6509946188c43fd208/content/test/test_render_frame_host.cc [modify] https://crrev.com/dd06babf17af821c4fce1d6509946188c43fd208/content/test/test_render_frame_host.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4bd8a19469434b79ff524323f44eca517e799321 commit 4bd8a19469434b79ff524323f44eca517e799321 Author: csharrison <csharrison@chromium.org> Date: Tue Aug 02 18:03:15 2016 [page_load_metrics] Add a NavigationThrottle for richer abort metrics This patch adds a NavigationThrottle, which forwards calls to WillStartRequest to the MetricsWebContentsObserver. At this point in the navigation, the NavigationHandle has additional data (like user gesture and transition type) that is extremely useful to track abort types. With this patch, we thread the page transition type at WillStartRequest time into the PageLoadTracker, where we use it to attribute abort cause to previously aborted provisional loads. This immediately yields a dramatic improvement to the abort metrics, as suddenly the BeforeCommit variants of all UnknownNavigation abort metrics will have a reliable transition type that aborted them. A followup patch will thread the user gesture bit to generate a more accurate picture of "user initiated" aborts. TBR=jam@chromium.org BUG= 627501 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_site_isolation Review-Url: https://codereview.chromium.org/2132603002 Cr-Commit-Position: refs/heads/master@{#409237} [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/chrome_content_browser_client.cc [add] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/metrics_navigation_throttle.cc [add] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/metrics_navigation_throttle.h [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/metrics_web_contents_observer.h [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.h [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer_unittest.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer_unittest.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/browser/page_load_metrics/page_load_metrics_observer.h [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/chrome/chrome_browser.gypi [delete] https://crrev.com/89355878d1d8c4b3ece05d3a48070f87de4e5384/components/page_load_metrics.gypi [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/content/browser/frame_host/navigation_controller_impl_browsertest.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/content/browser/frame_host/navigation_handle_impl.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/content/browser/frame_host/navigation_handle_impl_browsertest.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/content/browser/web_contents/web_contents_impl_browsertest.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/content/public/test/browser_test_utils.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/content/public/test/browser_test_utils.h [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/content/test/content_browser_test_utils_internal.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/content/test/content_browser_test_utils_internal.h [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/content/test/test_web_contents.cc [modify] https://crrev.com/4bd8a19469434b79ff524323f44eca517e799321/tools/metrics/histograms/histograms.xml
Comment 1 by csharrison@chromium.org
, Jul 12 2016