| Index: chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
|
| diff --git a/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc b/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
|
| index d9ab6205802752b5512db1c32ec82852f443d652..aebd89da31669bbde82e354012b8ca43f039710d 100644
|
| --- a/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
|
| +++ b/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
|
| @@ -4,11 +4,16 @@
|
|
|
| #include "base/macros.h"
|
| #include "base/test/histogram_tester.h"
|
| +#include "chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.h"
|
| #include "chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.h"
|
| #include "chrome/browser/page_load_metrics/observers/document_write_page_load_metrics_observer.h"
|
| +#include "chrome/browser/ui/browser.h"
|
| +#include "chrome/browser/ui/browser_navigator_params.h"
|
| +#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "chrome/test/base/in_process_browser_test.h"
|
| #include "chrome/test/base/ui_test_utils.h"
|
| +#include "content/public/test/browser_test_utils.h"
|
| #include "net/test/embedded_test_server/embedded_test_server.h"
|
|
|
| class MetricsWebContentsObserverBrowserTest : public InProcessBrowserTest {
|
| @@ -233,3 +238,105 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest,
|
| histogram_tester_.ExpectTotalCount(
|
| internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0);
|
| }
|
| +
|
| +// Test code that aborts provisional navigations.
|
| +// TODO(csharrison): Move these to unit tests once the navigation API in content
|
| +// properly calls NavigationHandle/NavigationThrottle methods.
|
| +IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest,
|
| + AbortNewNavigation) {
|
| + ASSERT_TRUE(embedded_test_server()->Start());
|
| +
|
| + GURL url(embedded_test_server()->GetURL("/title1.html"));
|
| + chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
|
| + content::TestNavigationManager manager(
|
| + browser()->tab_strip_model()->GetActiveWebContents(), url);
|
| +
|
| + chrome::Navigate(¶ms);
|
| + manager.WaitForWillStartRequest();
|
| +
|
| + GURL url2(embedded_test_server()->GetURL("/title2.html"));
|
| + chrome::NavigateParams params2(browser(), url2,
|
| + ui::PAGE_TRANSITION_FROM_ADDRESS_BAR);
|
| + content::TestNavigationManager manager2(
|
| + browser()->tab_strip_model()->GetActiveWebContents(), url2);
|
| + chrome::Navigate(¶ms2);
|
| +
|
| + manager2.WaitForNavigationFinished();
|
| + histogram_tester_.ExpectTotalCount(
|
| + internal::kHistogramAbortNewNavigationBeforeCommit, 1);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, AbortReload) {
|
| + ASSERT_TRUE(embedded_test_server()->Start());
|
| +
|
| + GURL url(embedded_test_server()->GetURL("/title1.html"));
|
| + chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
|
| + content::TestNavigationManager manager(
|
| + browser()->tab_strip_model()->GetActiveWebContents(), url);
|
| +
|
| + chrome::Navigate(¶ms);
|
| + manager.WaitForWillStartRequest();
|
| +
|
| + chrome::NavigateParams params2(browser(), url, ui::PAGE_TRANSITION_RELOAD);
|
| + content::TestNavigationManager manager2(
|
| + browser()->tab_strip_model()->GetActiveWebContents(), url);
|
| + chrome::Navigate(¶ms2);
|
| +
|
| + manager2.WaitForNavigationFinished();
|
| + histogram_tester_.ExpectTotalCount(
|
| + internal::kHistogramAbortReloadBeforeCommit, 1);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, AbortClose) {
|
| + ASSERT_TRUE(embedded_test_server()->Start());
|
| +
|
| + GURL url(embedded_test_server()->GetURL("/title1.html"));
|
| + chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
|
| + content::TestNavigationManager manager(
|
| + browser()->tab_strip_model()->GetActiveWebContents(), url);
|
| +
|
| + chrome::Navigate(¶ms);
|
| + manager.WaitForWillStartRequest();
|
| +
|
| + browser()->tab_strip_model()->GetActiveWebContents()->Close();
|
| +
|
| + manager.WaitForNavigationFinished();
|
| +
|
| + histogram_tester_.ExpectTotalCount(internal::kHistogramAbortCloseBeforeCommit,
|
| + 1);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, AbortMultiple) {
|
| + ASSERT_TRUE(embedded_test_server()->Start());
|
| +
|
| + GURL url(embedded_test_server()->GetURL("/title1.html"));
|
| + chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
|
| + content::TestNavigationManager manager(
|
| + browser()->tab_strip_model()->GetActiveWebContents(), url);
|
| +
|
| + chrome::Navigate(¶ms);
|
| + manager.WaitForWillStartRequest();
|
| +
|
| + GURL url2(embedded_test_server()->GetURL("/title2.html"));
|
| + chrome::NavigateParams params2(browser(), url2, ui::PAGE_TRANSITION_TYPED);
|
| + content::TestNavigationManager manager2(
|
| + browser()->tab_strip_model()->GetActiveWebContents(), url2);
|
| + chrome::Navigate(¶ms2);
|
| +
|
| + manager2.WaitForWillStartRequest();
|
| + manager.WaitForNavigationFinished();
|
| +
|
| + GURL url3(embedded_test_server()->GetURL("/title3.html"));
|
| + chrome::NavigateParams params3(browser(), url3, ui::PAGE_TRANSITION_TYPED);
|
| + content::TestNavigationManager manager3(
|
| + browser()->tab_strip_model()->GetActiveWebContents(), url3);
|
| + chrome::Navigate(¶ms3);
|
| +
|
| + manager3.WaitForWillStartRequest();
|
| + manager2.WaitForNavigationFinished();
|
| +
|
| + manager3.WaitForNavigationFinished();
|
| +
|
| + histogram_tester_.ExpectTotalCount(
|
| + internal::kHistogramAbortNewNavigationBeforeCommit, 2);
|
| +}
|
|
|