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 f766b71b7986b4fafaaa3df9660b378f5d7e2943..26b9ec70113f051ad6e48c7af49f5e1237c3fbc3 100644 |
--- a/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc |
+++ b/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc |
@@ -8,19 +8,26 @@ |
#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/profiles/profile.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/browser/browser_thread.h" |
#include "content/public/test/browser_test_utils.h" |
+#include "net/http/failing_http_transaction_factory.h" |
+#include "net/http/http_cache.h" |
#include "net/test/embedded_test_server/embedded_test_server.h" |
+#include "net/test/url_request/url_request_failed_job.h" |
+#include "net/url_request/url_request_context.h" |
+#include "net/url_request/url_request_context_getter.h" |
-class MetricsWebContentsObserverBrowserTest : public InProcessBrowserTest { |
+class PageLoadMetricsBrowserTest : public InProcessBrowserTest { |
public: |
- MetricsWebContentsObserverBrowserTest() {} |
- ~MetricsWebContentsObserverBrowserTest() override {} |
+ PageLoadMetricsBrowserTest() {} |
+ ~PageLoadMetricsBrowserTest() override {} |
protected: |
void NavigateToUntrackedUrl() { |
@@ -29,10 +36,23 @@ class MetricsWebContentsObserverBrowserTest : public InProcessBrowserTest { |
base::HistogramTester histogram_tester_; |
- DISALLOW_COPY_AND_ASSIGN(MetricsWebContentsObserverBrowserTest); |
+ DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsBrowserTest); |
}; |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NoNavigation) { |
+void FailAllNetworkTransactions(net::URLRequestContextGetter* getter) { |
+ DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
+ net::HttpCache* cache( |
+ getter->GetURLRequestContext()->http_transaction_factory()->GetCache()); |
+ DCHECK(cache); |
+ std::unique_ptr<net::FailingHttpTransactionFactory> factory( |
+ new net::FailingHttpTransactionFactory(cache->GetSession(), |
+ net::ERR_FAILED)); |
+ // Throw away old version; since this is a browser test, there is no |
+ // need to restore the old state. |
+ cache->SetHttpNetworkTransactionFactoryForTesting(std::move(factory)); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoNavigation) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); |
@@ -41,7 +61,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NoNavigation) { |
histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 0); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NewPage) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NewPage) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
ui_test_utils::NavigateToURL(browser(), |
@@ -58,8 +78,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NewPage) { |
internal::kHistogramParseBlockedOnScriptExecution, 1); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
- SamePageNavigation) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, SamePageNavigation) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
ui_test_utils::NavigateToURL(browser(), |
@@ -73,8 +92,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
- SameUrlNavigation) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, SameUrlNavigation) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
ui_test_utils::NavigateToURL(browser(), |
@@ -90,8 +108,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 2); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
- NonHtmlMainResource) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NonHtmlMainResource) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
ui_test_utils::NavigateToURL(browser(), |
@@ -99,20 +116,53 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
NavigateToUntrackedUrl(); |
histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); |
+ histogram_tester_.ExpectTotalCount(page_load_metrics::internal::kErrorEvents, |
+ 0); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
- NonHttpOrHttpsUrl) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NonHttpOrHttpsUrl) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIVersionURL)); |
NavigateToUntrackedUrl(); |
histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); |
+ histogram_tester_.ExpectTotalCount(page_load_metrics::internal::kErrorEvents, |
+ 0); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, HttpErrorPage) { |
+ ASSERT_TRUE(embedded_test_server()->Start()); |
+ |
+ ui_test_utils::NavigateToURL( |
+ browser(), embedded_test_server()->GetURL("/page_load_metrics/404.html")); |
+ NavigateToUntrackedUrl(); |
+ |
+ histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); |
+ histogram_tester_.ExpectTotalCount(page_load_metrics::internal::kErrorEvents, |
+ 0); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, ChromeErrorPage) { |
+ ASSERT_TRUE(embedded_test_server()->Start()); |
+ |
+ scoped_refptr<net::URLRequestContextGetter> url_request_context_getter = |
+ browser()->profile()->GetRequestContext(); |
+ content::BrowserThread::PostTask( |
+ content::BrowserThread::IO, FROM_HERE, |
+ base::Bind(&FailAllNetworkTransactions, |
+ base::RetainedRef(url_request_context_getter))); |
+ |
+ ui_test_utils::NavigateToURL( |
+ browser(), embedded_test_server()->GetURL("/title1.html")); |
+ NavigateToUntrackedUrl(); |
+ |
+ histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); |
+ histogram_tester_.ExpectTotalCount(page_load_metrics::internal::kErrorEvents, |
+ 0); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
- PreloadDocumentWrite) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PreloadDocumentWrite) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
ui_test_utils::NavigateToURL( |
@@ -124,8 +174,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
- NoPreloadDocumentWrite) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoPreloadDocumentWrite) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
ui_test_utils::NavigateToURL( |
@@ -137,7 +186,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NoDocumentWrite) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoDocumentWrite) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
ui_test_utils::NavigateToURL(browser(), |
@@ -149,8 +198,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NoDocumentWrite) { |
internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
- DocumentWriteBlock) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteBlock) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
ui_test_utils::NavigateToURL( |
@@ -162,8 +210,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
- DocumentWriteReload) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteReload) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
ui_test_utils::NavigateToURL( |
@@ -191,8 +238,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
internal::kHistogramDocWriteBlockReloadCount, 2); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
- DocumentWriteAsync) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteAsync) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
ui_test_utils::NavigateToURL( |
@@ -204,8 +250,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
- DocumentWriteSameDomain) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteSameDomain) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
ui_test_utils::NavigateToURL( |
@@ -217,8 +262,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
- NoDocumentWriteScript) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoDocumentWriteScript) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
ui_test_utils::NavigateToURL( |
@@ -230,7 +274,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, BadXhtml) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, BadXhtml) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
// When an XHTML page contains invalid XML, it causes a paint of the error |
@@ -252,8 +296,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, BadXhtml) { |
// 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) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortNewNavigation) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
GURL url(embedded_test_server()->GetURL("/title1.html")); |
@@ -276,7 +319,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
internal::kHistogramAbortNewNavigationBeforeCommit, 1); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, AbortReload) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortReload) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
GURL url(embedded_test_server()->GetURL("/title1.html")); |
@@ -297,7 +340,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, AbortReload) { |
internal::kHistogramAbortReloadBeforeCommit, 1); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, AbortClose) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortClose) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
GURL url(embedded_test_server()->GetURL("/title1.html")); |
@@ -316,7 +359,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, AbortClose) { |
1); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, AbortMultiple) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortMultiple) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
GURL url(embedded_test_server()->GetURL("/title1.html")); |
@@ -351,8 +394,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, AbortMultiple) { |
internal::kHistogramAbortNewNavigationBeforeCommit, 2); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
- AbortClientRedirect) { |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortClientRedirect) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
GURL first_url(embedded_test_server()->GetURL("/title1.html")); |
@@ -380,7 +422,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
internal::kHistogramAbortClientRedirectBeforeCommit, 1); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, |
FirstMeaningfulPaintRecorded) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
@@ -409,7 +451,7 @@ IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
internal::kHistogramParseStartToFirstMeaningfulPaint, 1); |
} |
-IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
+IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, |
FirstMeaningfulPaintNotRecorded) { |
ASSERT_TRUE(embedded_test_server()->Start()); |