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

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

Issue 2331053003: Add common page filtering logic for page load metrics. (Closed)
Patch Set: refine interface Created 4 years, 3 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 "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" 7 #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h"
8 #include "chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_ob server.h" 8 #include "chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_ob server.h"
9 #include "chrome/browser/page_load_metrics/observers/core_page_load_metrics_obse rver.h" 9 #include "chrome/browser/page_load_metrics/observers/core_page_load_metrics_obse rver.h"
10 #include "chrome/browser/page_load_metrics/observers/document_write_page_load_me trics_observer.h" 10 #include "chrome/browser/page_load_metrics/observers/document_write_page_load_me trics_observer.h"
11 #include "chrome/browser/ui/browser.h" 11 #include "chrome/browser/ui/browser.h"
12 #include "chrome/browser/ui/browser_navigator_params.h" 12 #include "chrome/browser/ui/browser_navigator_params.h"
13 #include "chrome/browser/ui/tabs/tab_strip_model.h" 13 #include "chrome/browser/ui/tabs/tab_strip_model.h"
14 #include "chrome/common/url_constants.h" 14 #include "chrome/common/url_constants.h"
15 #include "chrome/test/base/in_process_browser_test.h" 15 #include "chrome/test/base/in_process_browser_test.h"
16 #include "chrome/test/base/ui_test_utils.h" 16 #include "chrome/test/base/ui_test_utils.h"
17 #include "content/public/test/browser_test_utils.h" 17 #include "content/public/test/browser_test_utils.h"
18 #include "net/test/embedded_test_server/embedded_test_server.h" 18 #include "net/test/embedded_test_server/embedded_test_server.h"
19 19
20 class MetricsWebContentsObserverBrowserTest : public InProcessBrowserTest { 20 class PageLoadMetricsBrowserTest : public InProcessBrowserTest {
21 public: 21 public:
22 MetricsWebContentsObserverBrowserTest() {} 22 PageLoadMetricsBrowserTest() {}
23 ~MetricsWebContentsObserverBrowserTest() override {} 23 ~PageLoadMetricsBrowserTest() override {}
24 24
25 protected: 25 protected:
26 void NavigateToUntrackedUrl() { 26 void NavigateToUntrackedUrl() {
27 ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); 27 ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
28 } 28 }
29 29
30 base::HistogramTester histogram_tester_; 30 base::HistogramTester histogram_tester_;
31 31
32 DISALLOW_COPY_AND_ASSIGN(MetricsWebContentsObserverBrowserTest); 32 DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsBrowserTest);
33 }; 33 };
34 34
35 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NoNavigation) { 35 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoNavigation) {
36 ASSERT_TRUE(embedded_test_server()->Start()); 36 ASSERT_TRUE(embedded_test_server()->Start());
37 37
38 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); 38 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0);
39 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 0); 39 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 0);
40 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 0); 40 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 0);
41 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 0); 41 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 0);
42 } 42 }
43 43
44 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NewPage) { 44 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NewPage) {
45 ASSERT_TRUE(embedded_test_server()->Start()); 45 ASSERT_TRUE(embedded_test_server()->Start());
46 46
47 ui_test_utils::NavigateToURL(browser(), 47 ui_test_utils::NavigateToURL(browser(),
48 embedded_test_server()->GetURL("/title1.html")); 48 embedded_test_server()->GetURL("/title1.html"));
49 NavigateToUntrackedUrl(); 49 NavigateToUntrackedUrl();
50 50
51 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); 51 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1);
52 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); 52 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1);
53 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); 53 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1);
54 histogram_tester_.ExpectTotalCount(internal::kHistogramParseDuration, 1); 54 histogram_tester_.ExpectTotalCount(internal::kHistogramParseDuration, 1);
55 histogram_tester_.ExpectTotalCount( 55 histogram_tester_.ExpectTotalCount(
56 internal::kHistogramParseBlockedOnScriptLoad, 1); 56 internal::kHistogramParseBlockedOnScriptLoad, 1);
57 histogram_tester_.ExpectTotalCount( 57 histogram_tester_.ExpectTotalCount(
58 internal::kHistogramParseBlockedOnScriptExecution, 1); 58 internal::kHistogramParseBlockedOnScriptExecution, 1);
59 } 59 }
60 60
61 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 61 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, SamePageNavigation) {
62 SamePageNavigation) {
63 ASSERT_TRUE(embedded_test_server()->Start()); 62 ASSERT_TRUE(embedded_test_server()->Start());
64 63
65 ui_test_utils::NavigateToURL(browser(), 64 ui_test_utils::NavigateToURL(browser(),
66 embedded_test_server()->GetURL("/title1.html")); 65 embedded_test_server()->GetURL("/title1.html"));
67 ui_test_utils::NavigateToURL( 66 ui_test_utils::NavigateToURL(
68 browser(), embedded_test_server()->GetURL("/title1.html#hash")); 67 browser(), embedded_test_server()->GetURL("/title1.html#hash"));
69 NavigateToUntrackedUrl(); 68 NavigateToUntrackedUrl();
70 69
71 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); 70 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1);
72 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); 71 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1);
73 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); 72 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1);
74 } 73 }
75 74
76 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 75 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, SameUrlNavigation) {
77 SameUrlNavigation) {
78 ASSERT_TRUE(embedded_test_server()->Start()); 76 ASSERT_TRUE(embedded_test_server()->Start());
79 77
80 ui_test_utils::NavigateToURL(browser(), 78 ui_test_utils::NavigateToURL(browser(),
81 embedded_test_server()->GetURL("/title1.html")); 79 embedded_test_server()->GetURL("/title1.html"));
82 ui_test_utils::NavigateToURL(browser(), 80 ui_test_utils::NavigateToURL(browser(),
83 embedded_test_server()->GetURL("/title1.html")); 81 embedded_test_server()->GetURL("/title1.html"));
84 NavigateToUntrackedUrl(); 82 NavigateToUntrackedUrl();
85 83
86 // We expect one histogram sample for each navigation to title1.html. 84 // We expect one histogram sample for each navigation to title1.html.
87 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 2); 85 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 2);
88 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 2); 86 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 2);
89 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 2); 87 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 2);
90 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 2); 88 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 2);
91 } 89 }
92 90
93 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 91 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NonHtmlMainResource) {
94 NonHtmlMainResource) {
95 ASSERT_TRUE(embedded_test_server()->Start()); 92 ASSERT_TRUE(embedded_test_server()->Start());
96 93
97 ui_test_utils::NavigateToURL(browser(), 94 ui_test_utils::NavigateToURL(browser(),
98 embedded_test_server()->GetURL("/circle.svg")); 95 embedded_test_server()->GetURL("/circle.svg"));
99 NavigateToUntrackedUrl(); 96 NavigateToUntrackedUrl();
100 97
101 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); 98 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0);
99 histogram_tester_.ExpectTotalCount(page_load_metrics::internal::kErrorEvents,
100 0);
102 } 101 }
103 102
104 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 103 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NonHttpOrHttpsUrl) {
105 NonHttpOrHttpsUrl) {
106 ASSERT_TRUE(embedded_test_server()->Start()); 104 ASSERT_TRUE(embedded_test_server()->Start());
107 105
108 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIVersionURL)); 106 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIVersionURL));
109 NavigateToUntrackedUrl(); 107 NavigateToUntrackedUrl();
110 108
111 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); 109 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0);
110 histogram_tester_.ExpectTotalCount(page_load_metrics::internal::kErrorEvents,
111 0);
112 } 112 }
113 113
114 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 114 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, IgnoreErrorPages) {
115 PreloadDocumentWrite) {
116 ASSERT_TRUE(embedded_test_server()->Start()); 115 ASSERT_TRUE(embedded_test_server()->Start());
117 116
118 ui_test_utils::NavigateToURL( 117 ui_test_utils::NavigateToURL(
118 browser(), embedded_test_server()->GetURL("/errorpage/empty404.html"));
119 NavigateToUntrackedUrl();
120
121 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0);
122 histogram_tester_.ExpectTotalCount(page_load_metrics::internal::kErrorEvents,
123 0);
124 }
125
126 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PreloadDocumentWrite) {
127 ASSERT_TRUE(embedded_test_server()->Start());
128
129 ui_test_utils::NavigateToURL(
119 browser(), embedded_test_server()->GetURL( 130 browser(), embedded_test_server()->GetURL(
120 "/page_load_metrics/document_write_external_script.html")); 131 "/page_load_metrics/document_write_external_script.html"));
121 NavigateToUntrackedUrl(); 132 NavigateToUntrackedUrl();
122 133
123 histogram_tester_.ExpectTotalCount( 134 histogram_tester_.ExpectTotalCount(
124 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1); 135 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1);
125 } 136 }
126 137
127 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 138 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoPreloadDocumentWrite) {
128 NoPreloadDocumentWrite) {
129 ASSERT_TRUE(embedded_test_server()->Start()); 139 ASSERT_TRUE(embedded_test_server()->Start());
130 140
131 ui_test_utils::NavigateToURL( 141 ui_test_utils::NavigateToURL(
132 browser(), embedded_test_server()->GetURL( 142 browser(), embedded_test_server()->GetURL(
133 "/page_load_metrics/document_write_no_script.html")); 143 "/page_load_metrics/document_write_no_script.html"));
134 NavigateToUntrackedUrl(); 144 NavigateToUntrackedUrl();
135 145
136 histogram_tester_.ExpectTotalCount( 146 histogram_tester_.ExpectTotalCount(
137 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); 147 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0);
138 } 148 }
139 149
140 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NoDocumentWrite) { 150 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoDocumentWrite) {
141 ASSERT_TRUE(embedded_test_server()->Start()); 151 ASSERT_TRUE(embedded_test_server()->Start());
142 152
143 ui_test_utils::NavigateToURL(browser(), 153 ui_test_utils::NavigateToURL(browser(),
144 embedded_test_server()->GetURL("/title1.html")); 154 embedded_test_server()->GetURL("/title1.html"));
145 NavigateToUntrackedUrl(); 155 NavigateToUntrackedUrl();
146 histogram_tester_.ExpectTotalCount( 156 histogram_tester_.ExpectTotalCount(
147 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); 157 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0);
148 histogram_tester_.ExpectTotalCount( 158 histogram_tester_.ExpectTotalCount(
149 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); 159 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0);
150 } 160 }
151 161
152 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 162 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteBlock) {
153 DocumentWriteBlock) {
154 ASSERT_TRUE(embedded_test_server()->Start()); 163 ASSERT_TRUE(embedded_test_server()->Start());
155 164
156 ui_test_utils::NavigateToURL( 165 ui_test_utils::NavigateToURL(
157 browser(), embedded_test_server()->GetURL( 166 browser(), embedded_test_server()->GetURL(
158 "/page_load_metrics/document_write_script_block.html")); 167 "/page_load_metrics/document_write_script_block.html"));
159 NavigateToUntrackedUrl(); 168 NavigateToUntrackedUrl();
160 169
161 histogram_tester_.ExpectTotalCount( 170 histogram_tester_.ExpectTotalCount(
162 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); 171 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1);
163 } 172 }
164 173
165 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 174 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteReload) {
166 DocumentWriteReload) {
167 ASSERT_TRUE(embedded_test_server()->Start()); 175 ASSERT_TRUE(embedded_test_server()->Start());
168 176
169 ui_test_utils::NavigateToURL( 177 ui_test_utils::NavigateToURL(
170 browser(), embedded_test_server()->GetURL( 178 browser(), embedded_test_server()->GetURL(
171 "/page_load_metrics/document_write_script_block.html")); 179 "/page_load_metrics/document_write_script_block.html"));
172 180
173 // Reload should not log the histogram as the script is not blocked. 181 // Reload should not log the histogram as the script is not blocked.
174 ui_test_utils::NavigateToURL( 182 ui_test_utils::NavigateToURL(
175 browser(), embedded_test_server()->GetURL( 183 browser(), embedded_test_server()->GetURL(
176 "/page_load_metrics/document_write_script_block.html")); 184 "/page_load_metrics/document_write_script_block.html"));
177 185
178 ui_test_utils::NavigateToURL( 186 ui_test_utils::NavigateToURL(
179 browser(), embedded_test_server()->GetURL( 187 browser(), embedded_test_server()->GetURL(
180 "/page_load_metrics/document_write_script_block.html")); 188 "/page_load_metrics/document_write_script_block.html"));
181 189
182 histogram_tester_.ExpectTotalCount( 190 histogram_tester_.ExpectTotalCount(
183 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); 191 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1);
184 192
185 NavigateToUntrackedUrl(); 193 NavigateToUntrackedUrl();
186 194
187 histogram_tester_.ExpectTotalCount( 195 histogram_tester_.ExpectTotalCount(
188 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); 196 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1);
189 197
190 histogram_tester_.ExpectTotalCount( 198 histogram_tester_.ExpectTotalCount(
191 internal::kHistogramDocWriteBlockReloadCount, 2); 199 internal::kHistogramDocWriteBlockReloadCount, 2);
192 } 200 }
193 201
194 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 202 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteAsync) {
195 DocumentWriteAsync) {
196 ASSERT_TRUE(embedded_test_server()->Start()); 203 ASSERT_TRUE(embedded_test_server()->Start());
197 204
198 ui_test_utils::NavigateToURL( 205 ui_test_utils::NavigateToURL(
199 browser(), embedded_test_server()->GetURL( 206 browser(), embedded_test_server()->GetURL(
200 "/page_load_metrics/document_write_script_async.html")); 207 "/page_load_metrics/document_write_script_async.html"));
201 NavigateToUntrackedUrl(); 208 NavigateToUntrackedUrl();
202 209
203 histogram_tester_.ExpectTotalCount( 210 histogram_tester_.ExpectTotalCount(
204 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); 211 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0);
205 } 212 }
206 213
207 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 214 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteSameDomain) {
208 DocumentWriteSameDomain) {
209 ASSERT_TRUE(embedded_test_server()->Start()); 215 ASSERT_TRUE(embedded_test_server()->Start());
210 216
211 ui_test_utils::NavigateToURL( 217 ui_test_utils::NavigateToURL(
212 browser(), embedded_test_server()->GetURL( 218 browser(), embedded_test_server()->GetURL(
213 "/page_load_metrics/document_write_external_script.html")); 219 "/page_load_metrics/document_write_external_script.html"));
214 NavigateToUntrackedUrl(); 220 NavigateToUntrackedUrl();
215 221
216 histogram_tester_.ExpectTotalCount( 222 histogram_tester_.ExpectTotalCount(
217 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); 223 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0);
218 } 224 }
219 225
220 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 226 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoDocumentWriteScript) {
221 NoDocumentWriteScript) {
222 ASSERT_TRUE(embedded_test_server()->Start()); 227 ASSERT_TRUE(embedded_test_server()->Start());
223 228
224 ui_test_utils::NavigateToURL( 229 ui_test_utils::NavigateToURL(
225 browser(), embedded_test_server()->GetURL( 230 browser(), embedded_test_server()->GetURL(
226 "/page_load_metrics/document_write_no_script.html")); 231 "/page_load_metrics/document_write_no_script.html"));
227 NavigateToUntrackedUrl(); 232 NavigateToUntrackedUrl();
228 233
229 histogram_tester_.ExpectTotalCount( 234 histogram_tester_.ExpectTotalCount(
230 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); 235 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0);
231 } 236 }
232 237
233 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, BadXhtml) { 238 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, BadXhtml) {
234 ASSERT_TRUE(embedded_test_server()->Start()); 239 ASSERT_TRUE(embedded_test_server()->Start());
235 240
236 // When an XHTML page contains invalid XML, it causes a paint of the error 241 // When an XHTML page contains invalid XML, it causes a paint of the error
237 // message without a layout. Page load metrics currently treats this as an 242 // message without a layout. Page load metrics currently treats this as an
238 // error. Eventually, we'll fix this by special casing the handling of 243 // error. Eventually, we'll fix this by special casing the handling of
239 // documents with non-well-formed XML on the blink side. See crbug.com/627607 244 // documents with non-well-formed XML on the blink side. See crbug.com/627607
240 // for more. 245 // for more.
241 ui_test_utils::NavigateToURL( 246 ui_test_utils::NavigateToURL(
242 browser(), 247 browser(),
243 embedded_test_server()->GetURL("/page_load_metrics/badxml.xhtml")); 248 embedded_test_server()->GetURL("/page_load_metrics/badxml.xhtml"));
244 NavigateToUntrackedUrl(); 249 NavigateToUntrackedUrl();
245 250
246 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 0); 251 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 0);
247 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 0); 252 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 0);
248 histogram_tester_.ExpectBucketCount(page_load_metrics::internal::kErrorEvents, 253 histogram_tester_.ExpectBucketCount(page_load_metrics::internal::kErrorEvents,
249 page_load_metrics::ERR_BAD_TIMING_IPC, 1); 254 page_load_metrics::ERR_BAD_TIMING_IPC, 1);
250 } 255 }
251 256
252 // Test code that aborts provisional navigations. 257 // Test code that aborts provisional navigations.
253 // TODO(csharrison): Move these to unit tests once the navigation API in content 258 // TODO(csharrison): Move these to unit tests once the navigation API in content
254 // properly calls NavigationHandle/NavigationThrottle methods. 259 // properly calls NavigationHandle/NavigationThrottle methods.
255 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 260 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortNewNavigation) {
256 AbortNewNavigation) {
257 ASSERT_TRUE(embedded_test_server()->Start()); 261 ASSERT_TRUE(embedded_test_server()->Start());
258 262
259 GURL url(embedded_test_server()->GetURL("/title1.html")); 263 GURL url(embedded_test_server()->GetURL("/title1.html"));
260 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); 264 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
261 content::TestNavigationManager manager( 265 content::TestNavigationManager manager(
262 browser()->tab_strip_model()->GetActiveWebContents(), url); 266 browser()->tab_strip_model()->GetActiveWebContents(), url);
263 267
264 chrome::Navigate(&params); 268 chrome::Navigate(&params);
265 EXPECT_TRUE(manager.WaitForWillStartRequest()); 269 EXPECT_TRUE(manager.WaitForWillStartRequest());
266 270
267 GURL url2(embedded_test_server()->GetURL("/title2.html")); 271 GURL url2(embedded_test_server()->GetURL("/title2.html"));
268 chrome::NavigateParams params2(browser(), url2, 272 chrome::NavigateParams params2(browser(), url2,
269 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR); 273 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR);
270 content::TestNavigationManager manager2( 274 content::TestNavigationManager manager2(
271 browser()->tab_strip_model()->GetActiveWebContents(), url2); 275 browser()->tab_strip_model()->GetActiveWebContents(), url2);
272 chrome::Navigate(&params2); 276 chrome::Navigate(&params2);
273 277
274 manager2.WaitForNavigationFinished(); 278 manager2.WaitForNavigationFinished();
275 histogram_tester_.ExpectTotalCount( 279 histogram_tester_.ExpectTotalCount(
276 internal::kHistogramAbortNewNavigationBeforeCommit, 1); 280 internal::kHistogramAbortNewNavigationBeforeCommit, 1);
277 } 281 }
278 282
279 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, AbortReload) { 283 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortReload) {
280 ASSERT_TRUE(embedded_test_server()->Start()); 284 ASSERT_TRUE(embedded_test_server()->Start());
281 285
282 GURL url(embedded_test_server()->GetURL("/title1.html")); 286 GURL url(embedded_test_server()->GetURL("/title1.html"));
283 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); 287 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
284 content::TestNavigationManager manager( 288 content::TestNavigationManager manager(
285 browser()->tab_strip_model()->GetActiveWebContents(), url); 289 browser()->tab_strip_model()->GetActiveWebContents(), url);
286 290
287 chrome::Navigate(&params); 291 chrome::Navigate(&params);
288 EXPECT_TRUE(manager.WaitForWillStartRequest()); 292 EXPECT_TRUE(manager.WaitForWillStartRequest());
289 293
290 chrome::NavigateParams params2(browser(), url, ui::PAGE_TRANSITION_RELOAD); 294 chrome::NavigateParams params2(browser(), url, ui::PAGE_TRANSITION_RELOAD);
291 content::TestNavigationManager manager2( 295 content::TestNavigationManager manager2(
292 browser()->tab_strip_model()->GetActiveWebContents(), url); 296 browser()->tab_strip_model()->GetActiveWebContents(), url);
293 chrome::Navigate(&params2); 297 chrome::Navigate(&params2);
294 298
295 manager2.WaitForNavigationFinished(); 299 manager2.WaitForNavigationFinished();
296 histogram_tester_.ExpectTotalCount( 300 histogram_tester_.ExpectTotalCount(
297 internal::kHistogramAbortReloadBeforeCommit, 1); 301 internal::kHistogramAbortReloadBeforeCommit, 1);
298 } 302 }
299 303
300 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, AbortClose) { 304 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortClose) {
301 ASSERT_TRUE(embedded_test_server()->Start()); 305 ASSERT_TRUE(embedded_test_server()->Start());
302 306
303 GURL url(embedded_test_server()->GetURL("/title1.html")); 307 GURL url(embedded_test_server()->GetURL("/title1.html"));
304 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); 308 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
305 content::TestNavigationManager manager( 309 content::TestNavigationManager manager(
306 browser()->tab_strip_model()->GetActiveWebContents(), url); 310 browser()->tab_strip_model()->GetActiveWebContents(), url);
307 311
308 chrome::Navigate(&params); 312 chrome::Navigate(&params);
309 EXPECT_TRUE(manager.WaitForWillStartRequest()); 313 EXPECT_TRUE(manager.WaitForWillStartRequest());
310 314
311 browser()->tab_strip_model()->GetActiveWebContents()->Close(); 315 browser()->tab_strip_model()->GetActiveWebContents()->Close();
312 316
313 manager.WaitForNavigationFinished(); 317 manager.WaitForNavigationFinished();
314 318
315 histogram_tester_.ExpectTotalCount(internal::kHistogramAbortCloseBeforeCommit, 319 histogram_tester_.ExpectTotalCount(internal::kHistogramAbortCloseBeforeCommit,
316 1); 320 1);
317 } 321 }
318 322
319 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, AbortMultiple) { 323 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortMultiple) {
320 ASSERT_TRUE(embedded_test_server()->Start()); 324 ASSERT_TRUE(embedded_test_server()->Start());
321 325
322 GURL url(embedded_test_server()->GetURL("/title1.html")); 326 GURL url(embedded_test_server()->GetURL("/title1.html"));
323 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); 327 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
324 content::TestNavigationManager manager( 328 content::TestNavigationManager manager(
325 browser()->tab_strip_model()->GetActiveWebContents(), url); 329 browser()->tab_strip_model()->GetActiveWebContents(), url);
326 330
327 chrome::Navigate(&params); 331 chrome::Navigate(&params);
328 EXPECT_TRUE(manager.WaitForWillStartRequest()); 332 EXPECT_TRUE(manager.WaitForWillStartRequest());
329 333
(...skipping 14 matching lines...) Expand all
344 348
345 EXPECT_TRUE(manager3.WaitForWillStartRequest()); 349 EXPECT_TRUE(manager3.WaitForWillStartRequest());
346 manager2.WaitForNavigationFinished(); 350 manager2.WaitForNavigationFinished();
347 351
348 manager3.WaitForNavigationFinished(); 352 manager3.WaitForNavigationFinished();
349 353
350 histogram_tester_.ExpectTotalCount( 354 histogram_tester_.ExpectTotalCount(
351 internal::kHistogramAbortNewNavigationBeforeCommit, 2); 355 internal::kHistogramAbortNewNavigationBeforeCommit, 2);
352 } 356 }
353 357
354 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 358 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortClientRedirect) {
355 AbortClientRedirect) {
356 ASSERT_TRUE(embedded_test_server()->Start()); 359 ASSERT_TRUE(embedded_test_server()->Start());
357 360
358 GURL first_url(embedded_test_server()->GetURL("/title1.html")); 361 GURL first_url(embedded_test_server()->GetURL("/title1.html"));
359 ui_test_utils::NavigateToURL(browser(), first_url); 362 ui_test_utils::NavigateToURL(browser(), first_url);
360 363
361 GURL second_url(embedded_test_server()->GetURL("/title2.html")); 364 GURL second_url(embedded_test_server()->GetURL("/title2.html"));
362 chrome::NavigateParams params(browser(), second_url, 365 chrome::NavigateParams params(browser(), second_url,
363 ui::PAGE_TRANSITION_LINK); 366 ui::PAGE_TRANSITION_LINK);
364 content::TestNavigationManager manager( 367 content::TestNavigationManager manager(
365 browser()->tab_strip_model()->GetActiveWebContents(), second_url); 368 browser()->tab_strip_model()->GetActiveWebContents(), second_url);
366 chrome::Navigate(&params); 369 chrome::Navigate(&params);
367 EXPECT_TRUE(manager.WaitForWillStartRequest()); 370 EXPECT_TRUE(manager.WaitForWillStartRequest());
368 371
369 { 372 {
370 content::TestNavigationManager reload_manager( 373 content::TestNavigationManager reload_manager(
371 browser()->tab_strip_model()->GetActiveWebContents(), first_url); 374 browser()->tab_strip_model()->GetActiveWebContents(), first_url);
372 EXPECT_TRUE(content::ExecuteScript( 375 EXPECT_TRUE(content::ExecuteScript(
373 browser()->tab_strip_model()->GetActiveWebContents(), 376 browser()->tab_strip_model()->GetActiveWebContents(),
374 "window.location.reload();")); 377 "window.location.reload();"));
375 } 378 }
376 379
377 manager.WaitForNavigationFinished(); 380 manager.WaitForNavigationFinished();
378 381
379 histogram_tester_.ExpectTotalCount( 382 histogram_tester_.ExpectTotalCount(
380 internal::kHistogramAbortClientRedirectBeforeCommit, 1); 383 internal::kHistogramAbortClientRedirectBeforeCommit, 1);
381 } 384 }
382 385
383 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 386 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest,
384 FirstMeaningfulPaintRecorded) { 387 FirstMeaningfulPaintRecorded) {
385 ASSERT_TRUE(embedded_test_server()->Start()); 388 ASSERT_TRUE(embedded_test_server()->Start());
386 389
387 ui_test_utils::NavigateToURL(browser(), 390 ui_test_utils::NavigateToURL(browser(),
388 embedded_test_server()->GetURL("/title1.html")); 391 embedded_test_server()->GetURL("/title1.html"));
389 392
390 // Wait until the renderer finishes observing layouts. 393 // Wait until the renderer finishes observing layouts.
391 const int kNetworkIdleTime = 2000; 394 const int kNetworkIdleTime = 2000;
392 const int kMargin = 500; 395 const int kMargin = 500;
393 const std::string javascript = base::StringPrintf( 396 const std::string javascript = base::StringPrintf(
394 "setTimeout(() => window.domAutomationController.send(true), %d)", 397 "setTimeout(() => window.domAutomationController.send(true), %d)",
395 kNetworkIdleTime + kMargin); 398 kNetworkIdleTime + kMargin);
396 bool result; 399 bool result;
397 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( 400 EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
398 browser()->tab_strip_model()->GetActiveWebContents(), 401 browser()->tab_strip_model()->GetActiveWebContents(),
399 javascript, &result)); 402 javascript, &result));
400 EXPECT_TRUE(result); 403 EXPECT_TRUE(result);
401 404
402 NavigateToUntrackedUrl(); 405 NavigateToUntrackedUrl();
403 histogram_tester_.ExpectUniqueSample( 406 histogram_tester_.ExpectUniqueSample(
404 internal::kHistogramFirstMeaningfulPaintStatus, 407 internal::kHistogramFirstMeaningfulPaintStatus,
405 internal::FIRST_MEANINGFUL_PAINT_RECORDED, 1); 408 internal::FIRST_MEANINGFUL_PAINT_RECORDED, 1);
406 histogram_tester_.ExpectTotalCount( 409 histogram_tester_.ExpectTotalCount(
407 internal::kHistogramFirstMeaningfulPaint, 1); 410 internal::kHistogramFirstMeaningfulPaint, 1);
408 histogram_tester_.ExpectTotalCount( 411 histogram_tester_.ExpectTotalCount(
409 internal::kHistogramParseStartToFirstMeaningfulPaint, 1); 412 internal::kHistogramParseStartToFirstMeaningfulPaint, 1);
410 } 413 }
411 414
412 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, 415 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest,
413 FirstMeaningfulPaintNotRecorded) { 416 FirstMeaningfulPaintNotRecorded) {
414 ASSERT_TRUE(embedded_test_server()->Start()); 417 ASSERT_TRUE(embedded_test_server()->Start());
415 418
416 ui_test_utils::NavigateToURL(browser(), 419 ui_test_utils::NavigateToURL(browser(),
417 embedded_test_server()->GetURL("/title1.html")); 420 embedded_test_server()->GetURL("/title1.html"));
418 421
419 // Navigate away before a FMP is reported. 422 // Navigate away before a FMP is reported.
420 NavigateToUntrackedUrl(); 423 NavigateToUntrackedUrl();
421 424
422 histogram_tester_.ExpectUniqueSample( 425 histogram_tester_.ExpectUniqueSample(
423 internal::kHistogramFirstMeaningfulPaintStatus, 426 internal::kHistogramFirstMeaningfulPaintStatus,
424 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_NETWORK_STABLE, 1); 427 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_NETWORK_STABLE, 1);
425 histogram_tester_.ExpectTotalCount( 428 histogram_tester_.ExpectTotalCount(
426 internal::kHistogramFirstMeaningfulPaint, 0); 429 internal::kHistogramFirstMeaningfulPaint, 0);
427 histogram_tester_.ExpectTotalCount( 430 histogram_tester_.ExpectTotalCount(
428 internal::kHistogramParseStartToFirstMeaningfulPaint, 0); 431 internal::kHistogramParseStartToFirstMeaningfulPaint, 0);
429 } 432 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698