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

Side by Side Diff: chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc

Issue 2380773002: Prevent tracking metrics for cases such as 204s and downloads. (Closed)
Patch Set: use existing test file Created 4 years, 2 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 (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 #include "base/macros.h" 5 #include "base/macros.h"
6 #include "base/test/histogram_tester.h" 6 #include "base/test/histogram_tester.h"
7 #include "base/time/time.h" 7 #include "base/time/time.h"
8 #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" 8 #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h"
9 #include "chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_ob server.h" 9 #include "chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_ob server.h"
10 #include "chrome/browser/page_load_metrics/observers/core_page_load_metrics_obse rver.h" 10 #include "chrome/browser/page_load_metrics/observers/core_page_load_metrics_obse rver.h"
(...skipping 20 matching lines...) Expand all
31 class PageLoadMetricsBrowserTest : public InProcessBrowserTest { 31 class PageLoadMetricsBrowserTest : public InProcessBrowserTest {
32 public: 32 public:
33 PageLoadMetricsBrowserTest() {} 33 PageLoadMetricsBrowserTest() {}
34 ~PageLoadMetricsBrowserTest() override {} 34 ~PageLoadMetricsBrowserTest() override {}
35 35
36 protected: 36 protected:
37 void NavigateToUntrackedUrl() { 37 void NavigateToUntrackedUrl() {
38 ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); 38 ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
39 } 39 }
40 40
41 bool NoPageLoadMetricsRecorded() {
42 return histogram_tester_.GetTotalCountsForPrefix("PageLoad.").empty();
43 }
44
41 base::HistogramTester histogram_tester_; 45 base::HistogramTester histogram_tester_;
42 46
43 DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsBrowserTest); 47 DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsBrowserTest);
44 }; 48 };
45 49
46 void FailAllNetworkTransactions(net::URLRequestContextGetter* getter) { 50 void FailAllNetworkTransactions(net::URLRequestContextGetter* getter) {
47 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 51 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
48 net::HttpCache* cache( 52 net::HttpCache* cache(
49 getter->GetURLRequestContext()->http_transaction_factory()->GetCache()); 53 getter->GetURLRequestContext()->http_transaction_factory()->GetCache());
50 DCHECK(cache); 54 DCHECK(cache);
51 std::unique_ptr<net::FailingHttpTransactionFactory> factory( 55 std::unique_ptr<net::FailingHttpTransactionFactory> factory(
52 new net::FailingHttpTransactionFactory(cache->GetSession(), 56 new net::FailingHttpTransactionFactory(cache->GetSession(),
53 net::ERR_FAILED)); 57 net::ERR_FAILED));
54 // Throw away old version; since this is a browser test, there is no 58 // Throw away old version; since this is a browser test, there is no
55 // need to restore the old state. 59 // need to restore the old state.
56 cache->SetHttpNetworkTransactionFactoryForTesting(std::move(factory)); 60 cache->SetHttpNetworkTransactionFactoryForTesting(std::move(factory));
57 } 61 }
58 62
59 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoNavigation) { 63 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoNavigation) {
60 ASSERT_TRUE(embedded_test_server()->Start()); 64 ASSERT_TRUE(embedded_test_server()->Start());
61 65 EXPECT_TRUE(NoPageLoadMetricsRecorded());
62 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0);
63 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 0);
64 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 0);
65 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 0);
66 } 66 }
67 67
68 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NewPage) { 68 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NewPage) {
69 ASSERT_TRUE(embedded_test_server()->Start()); 69 ASSERT_TRUE(embedded_test_server()->Start());
70 70
71 ui_test_utils::NavigateToURL(browser(), 71 ui_test_utils::NavigateToURL(browser(),
72 embedded_test_server()->GetURL("/title1.html")); 72 embedded_test_server()->GetURL("/title1.html"));
73 NavigateToUntrackedUrl(); 73 NavigateToUntrackedUrl();
74 74
75 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); 75 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1);
76 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); 76 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1);
77 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); 77 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1);
78 histogram_tester_.ExpectTotalCount(internal::kHistogramParseDuration, 1); 78 histogram_tester_.ExpectTotalCount(internal::kHistogramParseDuration, 1);
79 histogram_tester_.ExpectTotalCount( 79 histogram_tester_.ExpectTotalCount(
80 internal::kHistogramParseBlockedOnScriptLoad, 1); 80 internal::kHistogramParseBlockedOnScriptLoad, 1);
81 histogram_tester_.ExpectTotalCount( 81 histogram_tester_.ExpectTotalCount(
82 internal::kHistogramParseBlockedOnScriptExecution, 1); 82 internal::kHistogramParseBlockedOnScriptExecution, 1);
83
84 // Verify that NoPageLoadMetricsRecorded returns false when PageLoad metrics
85 // have been recorded.
86 EXPECT_FALSE(NoPageLoadMetricsRecorded());
83 } 87 }
84 88
85 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, SamePageNavigation) { 89 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, SamePageNavigation) {
86 ASSERT_TRUE(embedded_test_server()->Start()); 90 ASSERT_TRUE(embedded_test_server()->Start());
87 91
88 ui_test_utils::NavigateToURL(browser(), 92 ui_test_utils::NavigateToURL(browser(),
89 embedded_test_server()->GetURL("/title1.html")); 93 embedded_test_server()->GetURL("/title1.html"));
90 ui_test_utils::NavigateToURL( 94 ui_test_utils::NavigateToURL(
91 browser(), embedded_test_server()->GetURL("/title1.html#hash")); 95 browser(), embedded_test_server()->GetURL("/title1.html#hash"));
92 NavigateToUntrackedUrl(); 96 NavigateToUntrackedUrl();
(...skipping 18 matching lines...) Expand all
111 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 2); 115 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 2);
112 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 2); 116 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 2);
113 } 117 }
114 118
115 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NonHtmlMainResource) { 119 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NonHtmlMainResource) {
116 ASSERT_TRUE(embedded_test_server()->Start()); 120 ASSERT_TRUE(embedded_test_server()->Start());
117 121
118 ui_test_utils::NavigateToURL(browser(), 122 ui_test_utils::NavigateToURL(browser(),
119 embedded_test_server()->GetURL("/circle.svg")); 123 embedded_test_server()->GetURL("/circle.svg"));
120 NavigateToUntrackedUrl(); 124 NavigateToUntrackedUrl();
121 125 EXPECT_TRUE(NoPageLoadMetricsRecorded());
122 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0);
123 histogram_tester_.ExpectTotalCount(page_load_metrics::internal::kErrorEvents,
124 0);
125 } 126 }
126 127
127 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NonHttpOrHttpsUrl) { 128 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NonHttpOrHttpsUrl) {
128 ASSERT_TRUE(embedded_test_server()->Start()); 129 ASSERT_TRUE(embedded_test_server()->Start());
129 130
130 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIVersionURL)); 131 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIVersionURL));
131 NavigateToUntrackedUrl(); 132 NavigateToUntrackedUrl();
132 133 EXPECT_TRUE(NoPageLoadMetricsRecorded());
133 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0);
134 histogram_tester_.ExpectTotalCount(page_load_metrics::internal::kErrorEvents,
135 0);
136 } 134 }
137 135
138 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, HttpErrorPage) { 136 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, HttpErrorPage) {
139 ASSERT_TRUE(embedded_test_server()->Start()); 137 ASSERT_TRUE(embedded_test_server()->Start());
140 138
141 ui_test_utils::NavigateToURL( 139 ui_test_utils::NavigateToURL(
142 browser(), embedded_test_server()->GetURL("/page_load_metrics/404.html")); 140 browser(), embedded_test_server()->GetURL("/page_load_metrics/404.html"));
143 NavigateToUntrackedUrl(); 141 NavigateToUntrackedUrl();
144 142 EXPECT_TRUE(NoPageLoadMetricsRecorded());
145 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0);
146 histogram_tester_.ExpectTotalCount(page_load_metrics::internal::kErrorEvents,
147 0);
148 } 143 }
149 144
150 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, ChromeErrorPage) { 145 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, ChromeErrorPage) {
151 ASSERT_TRUE(embedded_test_server()->Start()); 146 ASSERT_TRUE(embedded_test_server()->Start());
152 147
153 // Configure the network stack to fail all attempted loads with a network 148 // Configure the network stack to fail all attempted loads with a network
154 // error, which will cause Chrome to display an error page. 149 // error, which will cause Chrome to display an error page.
155 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter = 150 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter =
156 browser()->profile()->GetRequestContext(); 151 browser()->profile()->GetRequestContext();
157 content::BrowserThread::PostTask( 152 content::BrowserThread::PostTask(
158 content::BrowserThread::IO, FROM_HERE, 153 content::BrowserThread::IO, FROM_HERE,
159 base::Bind(&FailAllNetworkTransactions, 154 base::Bind(&FailAllNetworkTransactions,
160 base::RetainedRef(url_request_context_getter))); 155 base::RetainedRef(url_request_context_getter)));
161 156
162 ui_test_utils::NavigateToURL(browser(), 157 ui_test_utils::NavigateToURL(browser(),
163 embedded_test_server()->GetURL("/title1.html")); 158 embedded_test_server()->GetURL("/title1.html"));
164 NavigateToUntrackedUrl(); 159 NavigateToUntrackedUrl();
160 EXPECT_TRUE(NoPageLoadMetricsRecorded());
161 }
165 162
166 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); 163 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, Ignore204Pages) {
167 histogram_tester_.ExpectTotalCount(page_load_metrics::internal::kErrorEvents, 164 ASSERT_TRUE(embedded_test_server()->Start());
168 0); 165
166 ui_test_utils::NavigateToURL(browser(),
167 embedded_test_server()->GetURL("/page204.html"));
168 NavigateToUntrackedUrl();
169 EXPECT_TRUE(NoPageLoadMetricsRecorded());
170 }
171
172 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, IgnoreDownloads) {
173 ASSERT_TRUE(embedded_test_server()->Start());
174
175 ui_test_utils::NavigateToURL(
176 browser(), embedded_test_server()->GetURL("/download-test3.gif"));
177 NavigateToUntrackedUrl();
178 EXPECT_TRUE(NoPageLoadMetricsRecorded());
169 } 179 }
170 180
171 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PreloadDocumentWrite) { 181 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PreloadDocumentWrite) {
172 ASSERT_TRUE(embedded_test_server()->Start()); 182 ASSERT_TRUE(embedded_test_server()->Start());
173 183
174 ui_test_utils::NavigateToURL( 184 ui_test_utils::NavigateToURL(
175 browser(), embedded_test_server()->GetURL( 185 browser(), embedded_test_server()->GetURL(
176 "/page_load_metrics/document_write_external_script.html")); 186 "/page_load_metrics/document_write_external_script.html"));
177 NavigateToUntrackedUrl(); 187 NavigateToUntrackedUrl();
178 188
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 514
505 histogram_tester_.ExpectTotalCount( 515 histogram_tester_.ExpectTotalCount(
506 prerender::PrerenderHistograms::GetFirstContentfulPaintHistogramName( 516 prerender::PrerenderHistograms::GetFirstContentfulPaintHistogramName(
507 prerender::ORIGIN_NONE, false, true, base::TimeDelta()), 517 prerender::ORIGIN_NONE, false, true, base::TimeDelta()),
508 1); 518 1);
509 histogram_tester_.ExpectTotalCount( 519 histogram_tester_.ExpectTotalCount(
510 prerender::PrerenderHistograms::GetFirstContentfulPaintHistogramName( 520 prerender::PrerenderHistograms::GetFirstContentfulPaintHistogramName(
511 prerender::ORIGIN_NONE, false, false, base::TimeDelta()), 521 prerender::ORIGIN_NONE, false, false, base::TimeDelta()),
512 0); 522 0);
513 } 523 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698