OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 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/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/feature_list.h" | 6 #include "base/feature_list.h" |
7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/test/histogram_tester.h" | 9 #include "base/test/histogram_tester.h" |
| 10 #include "base/test/scoped_feature_list.h" |
10 #include "base/threading/thread_restrictions.h" | 11 #include "base/threading/thread_restrictions.h" |
11 #include "base/time/time.h" | 12 #include "base/time/time.h" |
12 #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" | 13 #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" |
13 #include "chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_ob
server.h" | 14 #include "chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_ob
server.h" |
14 #include "chrome/browser/page_load_metrics/observers/core_page_load_metrics_obse
rver.h" | 15 #include "chrome/browser/page_load_metrics/observers/core_page_load_metrics_obse
rver.h" |
15 #include "chrome/browser/page_load_metrics/observers/document_write_page_load_me
trics_observer.h" | 16 #include "chrome/browser/page_load_metrics/observers/document_write_page_load_me
trics_observer.h" |
16 #include "chrome/browser/page_load_metrics/observers/no_state_prefetch_page_load
_metrics_observer.h" | 17 #include "chrome/browser/page_load_metrics/observers/no_state_prefetch_page_load
_metrics_observer.h" |
17 #include "chrome/browser/page_load_metrics/page_load_tracker.h" | 18 #include "chrome/browser/page_load_metrics/page_load_tracker.h" |
18 #include "chrome/browser/prerender/prerender_histograms.h" | 19 #include "chrome/browser/prerender/prerender_histograms.h" |
19 #include "chrome/browser/prerender/prerender_origin.h" | 20 #include "chrome/browser/prerender/prerender_origin.h" |
20 #include "chrome/browser/profiles/profile.h" | 21 #include "chrome/browser/profiles/profile.h" |
21 #include "chrome/browser/ui/browser.h" | 22 #include "chrome/browser/ui/browser.h" |
22 #include "chrome/browser/ui/browser_navigator_params.h" | 23 #include "chrome/browser/ui/browser_navigator_params.h" |
23 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 24 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
24 #include "chrome/common/page_load_metrics/page_load_metrics_messages.h" | 25 #include "chrome/common/chrome_features.h" |
25 #include "chrome/common/pref_names.h" | 26 #include "chrome/common/pref_names.h" |
26 #include "chrome/common/url_constants.h" | 27 #include "chrome/common/url_constants.h" |
27 #include "chrome/test/base/in_process_browser_test.h" | 28 #include "chrome/test/base/in_process_browser_test.h" |
28 #include "chrome/test/base/ui_test_utils.h" | 29 #include "chrome/test/base/ui_test_utils.h" |
29 #include "components/prefs/pref_service.h" | 30 #include "components/prefs/pref_service.h" |
30 #include "content/public/browser/browser_thread.h" | 31 #include "content/public/browser/browser_thread.h" |
31 #include "content/public/browser/render_process_host.h" | 32 #include "content/public/browser/render_process_host.h" |
32 #include "content/public/browser/render_view_host.h" | 33 #include "content/public/browser/render_view_host.h" |
33 #include "content/public/common/content_features.h" | 34 #include "content/public/common/content_features.h" |
34 #include "content/public/common/content_switches.h" | 35 #include "content/public/common/content_switches.h" |
35 #include "content/public/test/browser_test_utils.h" | 36 #include "content/public/test/browser_test_utils.h" |
36 #include "content/public/test/download_test_observer.h" | 37 #include "content/public/test/download_test_observer.h" |
37 #include "net/base/net_errors.h" | 38 #include "net/base/net_errors.h" |
38 #include "net/dns/mock_host_resolver.h" | 39 #include "net/dns/mock_host_resolver.h" |
39 #include "net/http/failing_http_transaction_factory.h" | 40 #include "net/http/failing_http_transaction_factory.h" |
40 #include "net/http/http_cache.h" | 41 #include "net/http/http_cache.h" |
41 #include "net/test/embedded_test_server/embedded_test_server.h" | 42 #include "net/test/embedded_test_server/embedded_test_server.h" |
42 #include "net/test/url_request/url_request_failed_job.h" | 43 #include "net/test/url_request/url_request_failed_job.h" |
43 #include "net/url_request/url_request_context.h" | 44 #include "net/url_request/url_request_context.h" |
44 #include "net/url_request/url_request_context_getter.h" | 45 #include "net/url_request/url_request_context_getter.h" |
45 | 46 |
46 namespace { | 47 namespace { |
| 48 using IPCType = |
| 49 page_load_metrics::MetricsWebContentsObserver::TestingObserver::IPCType; |
47 | 50 |
48 void FailAllNetworkTransactions(net::URLRequestContextGetter* getter) { | 51 void FailAllNetworkTransactions(net::URLRequestContextGetter* getter) { |
49 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 52 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
50 net::HttpCache* cache( | 53 net::HttpCache* cache( |
51 getter->GetURLRequestContext()->http_transaction_factory()->GetCache()); | 54 getter->GetURLRequestContext()->http_transaction_factory()->GetCache()); |
52 DCHECK(cache); | 55 DCHECK(cache); |
53 std::unique_ptr<net::FailingHttpTransactionFactory> factory = | 56 std::unique_ptr<net::FailingHttpTransactionFactory> factory = |
54 base::MakeUnique<net::FailingHttpTransactionFactory>(cache->GetSession(), | 57 base::MakeUnique<net::FailingHttpTransactionFactory>(cache->GetSession(), |
55 net::ERR_FAILED); | 58 net::ERR_FAILED); |
56 // Throw away old version; since this is a browser test, there is no | 59 // Throw away old version; since this is a browser test, there is no |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 std::unique_ptr<base::RunLoop> run_loop_; | 188 std::unique_ptr<base::RunLoop> run_loop_; |
186 | 189 |
187 TimingFieldBitSet child_frame_expected_fields_; | 190 TimingFieldBitSet child_frame_expected_fields_; |
188 TimingFieldBitSet main_frame_expected_fields_; | 191 TimingFieldBitSet main_frame_expected_fields_; |
189 | 192 |
190 TimingFieldBitSet observed_main_frame_fields_; | 193 TimingFieldBitSet observed_main_frame_fields_; |
191 }; | 194 }; |
192 | 195 |
193 using TimingField = PageLoadMetricsWaiter::TimingField; | 196 using TimingField = PageLoadMetricsWaiter::TimingField; |
194 | 197 |
| 198 class IPCTypeVerifier |
| 199 : public page_load_metrics::MetricsWebContentsObserver::TestingObserver { |
| 200 public: |
| 201 explicit IPCTypeVerifier(content::WebContents* web_contents) |
| 202 : TestingObserver(web_contents) {} |
| 203 |
| 204 ~IPCTypeVerifier() override { AssertValidUpdateState(); } |
| 205 |
| 206 void ExpectNoTimingUpdates() { expect_updates_ = false; } |
| 207 |
| 208 void DidReceiveTimingUpdate(IPCType type) override { |
| 209 ++num_updates_; |
| 210 const bool is_mojo_enabled = |
| 211 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication); |
| 212 switch (type) { |
| 213 case IPCType::LEGACY: |
| 214 ASSERT_FALSE(is_mojo_enabled); |
| 215 break; |
| 216 case IPCType::MOJO: |
| 217 ASSERT_TRUE(is_mojo_enabled); |
| 218 break; |
| 219 default: |
| 220 FAIL() << "Unknown IPCType"; |
| 221 break; |
| 222 } |
| 223 } |
| 224 |
| 225 private: |
| 226 void AssertValidUpdateState() { |
| 227 ASSERT_EQ(expect_updates_, num_updates_ > 0); |
| 228 } |
| 229 |
| 230 bool expect_updates_ = true; |
| 231 int num_updates_ = 0; |
| 232 }; |
| 233 |
195 } // namespace | 234 } // namespace |
196 | 235 |
197 class PageLoadMetricsBrowserTest : public InProcessBrowserTest { | 236 class PageLoadMetricsBrowserTest : public InProcessBrowserTest, |
| 237 public testing::WithParamInterface<IPCType> { |
198 public: | 238 public: |
199 PageLoadMetricsBrowserTest() {} | 239 PageLoadMetricsBrowserTest() {} |
200 ~PageLoadMetricsBrowserTest() override {} | 240 ~PageLoadMetricsBrowserTest() override {} |
201 | 241 |
202 protected: | 242 protected: |
| 243 void SetUpCommandLine(base::CommandLine* command_line) override { |
| 244 InProcessBrowserTest::SetUpCommandLine(command_line); |
| 245 |
| 246 // We need to set the feature state before the render process is created, |
| 247 // in order for it to inherit the feature state from the browser process. |
| 248 // SetUp() runs too early, and SetUpOnMainThread() runs too late. |
| 249 const IPCType ipc_type = GetParam(); |
| 250 switch (ipc_type) { |
| 251 case IPCType::LEGACY: |
| 252 scoped_feature_list_.InitAndDisableFeature( |
| 253 features::kPageLoadMetricsMojofication); |
| 254 break; |
| 255 case IPCType::MOJO: |
| 256 scoped_feature_list_.InitAndEnableFeature( |
| 257 features::kPageLoadMetricsMojofication); |
| 258 break; |
| 259 default: |
| 260 CHECK(false) << "Unknown IPCType."; |
| 261 break; |
| 262 } |
| 263 } |
| 264 |
| 265 void SetUpOnMainThread() override { |
| 266 InProcessBrowserTest::SetUpOnMainThread(); |
| 267 |
| 268 content::WebContents* web_contents = |
| 269 browser()->tab_strip_model()->GetActiveWebContents(); |
| 270 ipc_type_verifier_ = base::MakeUnique<IPCTypeVerifier>(web_contents); |
| 271 } |
| 272 |
203 // Force navigation to a new page, so the currently tracked page load runs its | 273 // Force navigation to a new page, so the currently tracked page load runs its |
204 // OnComplete callback. You should prefer to use PageLoadMetricsWaiter, and | 274 // OnComplete callback. You should prefer to use PageLoadMetricsWaiter, and |
205 // only use NavigateToUntrackedUrl for cases where the waiter isn't | 275 // only use NavigateToUntrackedUrl for cases where the waiter isn't |
206 // sufficient. | 276 // sufficient. |
207 void NavigateToUntrackedUrl() { | 277 void NavigateToUntrackedUrl() { |
208 ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); | 278 ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); |
209 } | 279 } |
210 | 280 |
211 bool NoPageLoadMetricsRecorded() { | 281 bool NoPageLoadMetricsRecorded() { |
212 // Determine whether any 'public' page load metrics are recorded. We exclude | 282 // Determine whether any 'public' page load metrics are recorded. We exclude |
213 // 'internal' metrics as these may be recorded for debugging purposes. | 283 // 'internal' metrics as these may be recorded for debugging purposes. |
214 size_t total_pageload_histograms = | 284 size_t total_pageload_histograms = |
215 histogram_tester_.GetTotalCountsForPrefix("PageLoad.").size(); | 285 histogram_tester_.GetTotalCountsForPrefix("PageLoad.").size(); |
216 size_t total_internal_histograms = | 286 size_t total_internal_histograms = |
217 histogram_tester_.GetTotalCountsForPrefix("PageLoad.Internal.").size(); | 287 histogram_tester_.GetTotalCountsForPrefix("PageLoad.Internal.").size(); |
218 DCHECK_GE(total_pageload_histograms, total_internal_histograms); | 288 DCHECK_GE(total_pageload_histograms, total_internal_histograms); |
219 return total_pageload_histograms - total_internal_histograms == 0; | 289 return total_pageload_histograms - total_internal_histograms == 0; |
220 } | 290 } |
221 | 291 |
222 std::unique_ptr<PageLoadMetricsWaiter> CreatePageLoadMetricsWaiter() { | 292 std::unique_ptr<PageLoadMetricsWaiter> CreatePageLoadMetricsWaiter() { |
223 content::WebContents* web_contents = | 293 content::WebContents* web_contents = |
224 browser()->tab_strip_model()->GetActiveWebContents(); | 294 browser()->tab_strip_model()->GetActiveWebContents(); |
225 return base::MakeUnique<PageLoadMetricsWaiter>(web_contents); | 295 return base::MakeUnique<PageLoadMetricsWaiter>(web_contents); |
226 } | 296 } |
227 | 297 |
| 298 void ExpectNoTimingUpdates() { ipc_type_verifier_->ExpectNoTimingUpdates(); } |
| 299 |
| 300 base::test::ScopedFeatureList scoped_feature_list_; |
228 base::HistogramTester histogram_tester_; | 301 base::HistogramTester histogram_tester_; |
| 302 std::unique_ptr<IPCTypeVerifier> ipc_type_verifier_; |
229 | 303 |
230 private: | 304 private: |
231 DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsBrowserTest); | 305 DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsBrowserTest); |
232 }; | 306 }; |
233 | 307 |
234 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoNavigation) { | 308 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoNavigation) { |
| 309 ExpectNoTimingUpdates(); |
235 ASSERT_TRUE(embedded_test_server()->Start()); | 310 ASSERT_TRUE(embedded_test_server()->Start()); |
236 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 311 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
237 } | 312 } |
238 | 313 |
239 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NewPage) { | 314 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NewPage) { |
240 ASSERT_TRUE(embedded_test_server()->Start()); | 315 ASSERT_TRUE(embedded_test_server()->Start()); |
241 | 316 |
242 auto waiter = CreatePageLoadMetricsWaiter(); | 317 auto waiter = CreatePageLoadMetricsWaiter(); |
243 waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); | 318 waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); |
244 ui_test_utils::NavigateToURL(browser(), | 319 ui_test_utils::NavigateToURL(browser(), |
245 embedded_test_server()->GetURL("/title1.html")); | 320 embedded_test_server()->GetURL("/title1.html")); |
246 waiter->Wait(); | 321 waiter->Wait(); |
247 | 322 |
248 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); | 323 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); |
249 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 324 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
(...skipping 10 matching lines...) Expand all Loading... |
260 NavigateToUntrackedUrl(); | 335 NavigateToUntrackedUrl(); |
261 histogram_tester_.ExpectTotalCount(internal::kHistogramTotalBytes, 1); | 336 histogram_tester_.ExpectTotalCount(internal::kHistogramTotalBytes, 1); |
262 histogram_tester_.ExpectTotalCount( | 337 histogram_tester_.ExpectTotalCount( |
263 internal::kHistogramPageTimingForegroundDuration, 1); | 338 internal::kHistogramPageTimingForegroundDuration, 1); |
264 | 339 |
265 // Verify that NoPageLoadMetricsRecorded returns false when PageLoad metrics | 340 // Verify that NoPageLoadMetricsRecorded returns false when PageLoad metrics |
266 // have been recorded. | 341 // have been recorded. |
267 EXPECT_FALSE(NoPageLoadMetricsRecorded()); | 342 EXPECT_FALSE(NoPageLoadMetricsRecorded()); |
268 } | 343 } |
269 | 344 |
270 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoPaintForEmptyDocument) { | 345 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoPaintForEmptyDocument) { |
271 ASSERT_TRUE(embedded_test_server()->Start()); | 346 ASSERT_TRUE(embedded_test_server()->Start()); |
272 | 347 |
273 auto waiter = CreatePageLoadMetricsWaiter(); | 348 auto waiter = CreatePageLoadMetricsWaiter(); |
274 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 349 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
275 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 350 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
276 ui_test_utils::NavigateToURL(browser(), | 351 ui_test_utils::NavigateToURL(browser(), |
277 embedded_test_server()->GetURL("/empty.html")); | 352 embedded_test_server()->GetURL("/empty.html")); |
278 waiter->Wait(); | 353 waiter->Wait(); |
279 EXPECT_FALSE(waiter->DidObserveInMainFrame(TimingField::FIRST_PAINT)); | 354 EXPECT_FALSE(waiter->DidObserveInMainFrame(TimingField::FIRST_PAINT)); |
280 | 355 |
281 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 356 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
282 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 357 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
283 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 0); | 358 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 0); |
284 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 359 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
285 0); | 360 0); |
286 } | 361 } |
287 | 362 |
288 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, | 363 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, |
289 NoPaintForEmptyDocumentInChildFrame) { | 364 NoPaintForEmptyDocumentInChildFrame) { |
290 ASSERT_TRUE(embedded_test_server()->Start()); | 365 ASSERT_TRUE(embedded_test_server()->Start()); |
291 | 366 |
292 GURL a_url( | 367 GURL a_url( |
293 embedded_test_server()->GetURL("/page_load_metrics/empty_iframe.html")); | 368 embedded_test_server()->GetURL("/page_load_metrics/empty_iframe.html")); |
294 | 369 |
295 auto waiter = CreatePageLoadMetricsWaiter(); | 370 auto waiter = CreatePageLoadMetricsWaiter(); |
296 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 371 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
297 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 372 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
298 waiter->AddSubFrameExpectation(TimingField::FIRST_LAYOUT); | 373 waiter->AddSubFrameExpectation(TimingField::FIRST_LAYOUT); |
299 waiter->AddSubFrameExpectation(TimingField::LOAD_EVENT); | 374 waiter->AddSubFrameExpectation(TimingField::LOAD_EVENT); |
300 ui_test_utils::NavigateToURL(browser(), a_url); | 375 ui_test_utils::NavigateToURL(browser(), a_url); |
301 waiter->Wait(); | 376 waiter->Wait(); |
302 EXPECT_FALSE(waiter->DidObserveInMainFrame(TimingField::FIRST_PAINT)); | 377 EXPECT_FALSE(waiter->DidObserveInMainFrame(TimingField::FIRST_PAINT)); |
303 | 378 |
304 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 379 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
305 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 380 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
306 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 0); | 381 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 0); |
307 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 382 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
308 0); | 383 0); |
309 } | 384 } |
310 | 385 |
311 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PaintInChildFrame) { | 386 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PaintInChildFrame) { |
312 ASSERT_TRUE(embedded_test_server()->Start()); | 387 ASSERT_TRUE(embedded_test_server()->Start()); |
313 | 388 |
314 GURL a_url(embedded_test_server()->GetURL("/page_load_metrics/iframe.html")); | 389 GURL a_url(embedded_test_server()->GetURL("/page_load_metrics/iframe.html")); |
315 auto waiter = CreatePageLoadMetricsWaiter(); | 390 auto waiter = CreatePageLoadMetricsWaiter(); |
316 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 391 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
317 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 392 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
318 waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); | 393 waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); |
319 waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 394 waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
320 ui_test_utils::NavigateToURL(browser(), a_url); | 395 ui_test_utils::NavigateToURL(browser(), a_url); |
321 waiter->Wait(); | 396 waiter->Wait(); |
322 | 397 |
323 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 398 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
324 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 399 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
325 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 1); | 400 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 1); |
326 } | 401 } |
327 | 402 |
328 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PaintInMultipleChildFrames) { | 403 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PaintInMultipleChildFrames) { |
329 ASSERT_TRUE(embedded_test_server()->Start()); | 404 ASSERT_TRUE(embedded_test_server()->Start()); |
330 | 405 |
331 GURL a_url(embedded_test_server()->GetURL("/page_load_metrics/iframes.html")); | 406 GURL a_url(embedded_test_server()->GetURL("/page_load_metrics/iframes.html")); |
332 | 407 |
333 auto waiter = CreatePageLoadMetricsWaiter(); | 408 auto waiter = CreatePageLoadMetricsWaiter(); |
334 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 409 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
335 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 410 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
336 waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); | 411 waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); |
337 waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 412 waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
338 ui_test_utils::NavigateToURL(browser(), a_url); | 413 ui_test_utils::NavigateToURL(browser(), a_url); |
339 waiter->Wait(); | 414 waiter->Wait(); |
340 | 415 |
341 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 416 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
342 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 417 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
343 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 1); | 418 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 1); |
344 } | 419 } |
345 | 420 |
346 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PaintInMainAndChildFrame) { | 421 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PaintInMainAndChildFrame) { |
347 ASSERT_TRUE(embedded_test_server()->Start()); | 422 ASSERT_TRUE(embedded_test_server()->Start()); |
348 | 423 |
349 GURL a_url(embedded_test_server()->GetURL( | 424 GURL a_url(embedded_test_server()->GetURL( |
350 "/page_load_metrics/main_frame_with_iframe.html")); | 425 "/page_load_metrics/main_frame_with_iframe.html")); |
351 | 426 |
352 auto waiter = CreatePageLoadMetricsWaiter(); | 427 auto waiter = CreatePageLoadMetricsWaiter(); |
353 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 428 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
354 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 429 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
355 waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); | 430 waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); |
356 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 431 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
357 waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); | 432 waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); |
358 waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 433 waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
359 ui_test_utils::NavigateToURL(browser(), a_url); | 434 ui_test_utils::NavigateToURL(browser(), a_url); |
360 waiter->Wait(); | 435 waiter->Wait(); |
361 | 436 |
362 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 437 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
363 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 438 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
364 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 1); | 439 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 1); |
365 } | 440 } |
366 | 441 |
367 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, SameDocumentNavigation) { | 442 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, SameDocumentNavigation) { |
368 ASSERT_TRUE(embedded_test_server()->Start()); | 443 ASSERT_TRUE(embedded_test_server()->Start()); |
369 | 444 |
370 auto waiter = CreatePageLoadMetricsWaiter(); | 445 auto waiter = CreatePageLoadMetricsWaiter(); |
371 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 446 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
372 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 447 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
373 ui_test_utils::NavigateToURL(browser(), | 448 ui_test_utils::NavigateToURL(browser(), |
374 embedded_test_server()->GetURL("/title1.html")); | 449 embedded_test_server()->GetURL("/title1.html")); |
375 waiter->Wait(); | 450 waiter->Wait(); |
376 | 451 |
377 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); | 452 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); |
378 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 453 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
379 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 454 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
380 | 455 |
381 // Perform a same-document navigation. No additional metrics should be logged. | 456 // Perform a same-document navigation. No additional metrics should be logged. |
382 ui_test_utils::NavigateToURL( | 457 ui_test_utils::NavigateToURL( |
383 browser(), embedded_test_server()->GetURL("/title1.html#hash")); | 458 browser(), embedded_test_server()->GetURL("/title1.html#hash")); |
384 NavigateToUntrackedUrl(); | 459 NavigateToUntrackedUrl(); |
385 | 460 |
386 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); | 461 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); |
387 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 462 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
388 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 463 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
389 } | 464 } |
390 | 465 |
391 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, SameUrlNavigation) { | 466 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, SameUrlNavigation) { |
392 ASSERT_TRUE(embedded_test_server()->Start()); | 467 ASSERT_TRUE(embedded_test_server()->Start()); |
393 | 468 |
394 auto waiter = CreatePageLoadMetricsWaiter(); | 469 auto waiter = CreatePageLoadMetricsWaiter(); |
395 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 470 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
396 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 471 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
397 ui_test_utils::NavigateToURL(browser(), | 472 ui_test_utils::NavigateToURL(browser(), |
398 embedded_test_server()->GetURL("/title1.html")); | 473 embedded_test_server()->GetURL("/title1.html")); |
399 waiter->Wait(); | 474 waiter->Wait(); |
400 | 475 |
401 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); | 476 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); |
402 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 477 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
403 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 478 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
404 | 479 |
405 waiter = CreatePageLoadMetricsWaiter(); | 480 waiter = CreatePageLoadMetricsWaiter(); |
406 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 481 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
407 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 482 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
408 ui_test_utils::NavigateToURL(browser(), | 483 ui_test_utils::NavigateToURL(browser(), |
409 embedded_test_server()->GetURL("/title1.html")); | 484 embedded_test_server()->GetURL("/title1.html")); |
410 waiter->Wait(); | 485 waiter->Wait(); |
411 | 486 |
412 // We expect one histogram sample for each navigation to title1.html. | 487 // We expect one histogram sample for each navigation to title1.html. |
413 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 2); | 488 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 2); |
414 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 2); | 489 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 2); |
415 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 2); | 490 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 2); |
416 } | 491 } |
417 | 492 |
418 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NonHtmlMainResource) { | 493 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NonHtmlMainResource) { |
419 ASSERT_TRUE(embedded_test_server()->Start()); | 494 ASSERT_TRUE(embedded_test_server()->Start()); |
420 | 495 |
421 ui_test_utils::NavigateToURL(browser(), | 496 ui_test_utils::NavigateToURL(browser(), |
422 embedded_test_server()->GetURL("/circle.svg")); | 497 embedded_test_server()->GetURL("/circle.svg")); |
423 NavigateToUntrackedUrl(); | 498 NavigateToUntrackedUrl(); |
| 499 ExpectNoTimingUpdates(); |
424 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 500 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
425 } | 501 } |
426 | 502 |
427 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NonHttpOrHttpsUrl) { | 503 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NonHttpOrHttpsUrl) { |
428 ASSERT_TRUE(embedded_test_server()->Start()); | 504 ASSERT_TRUE(embedded_test_server()->Start()); |
429 | 505 |
430 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIVersionURL)); | 506 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIVersionURL)); |
431 NavigateToUntrackedUrl(); | 507 NavigateToUntrackedUrl(); |
| 508 ExpectNoTimingUpdates(); |
432 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 509 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
433 } | 510 } |
434 | 511 |
435 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, HttpErrorPage) { | 512 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, HttpErrorPage) { |
436 ASSERT_TRUE(embedded_test_server()->Start()); | 513 ASSERT_TRUE(embedded_test_server()->Start()); |
437 | 514 |
438 ui_test_utils::NavigateToURL( | 515 ui_test_utils::NavigateToURL( |
439 browser(), embedded_test_server()->GetURL("/page_load_metrics/404.html")); | 516 browser(), embedded_test_server()->GetURL("/page_load_metrics/404.html")); |
440 NavigateToUntrackedUrl(); | 517 NavigateToUntrackedUrl(); |
| 518 ExpectNoTimingUpdates(); |
441 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 519 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
442 } | 520 } |
443 | 521 |
444 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, ChromeErrorPage) { | 522 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, ChromeErrorPage) { |
445 ASSERT_TRUE(embedded_test_server()->Start()); | 523 ASSERT_TRUE(embedded_test_server()->Start()); |
446 | 524 |
447 // Configure the network stack to fail all attempted loads with a network | 525 // Configure the network stack to fail all attempted loads with a network |
448 // error, which will cause Chrome to display an error page. | 526 // error, which will cause Chrome to display an error page. |
449 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter = | 527 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter = |
450 browser()->profile()->GetRequestContext(); | 528 browser()->profile()->GetRequestContext(); |
451 content::BrowserThread::PostTask( | 529 content::BrowserThread::PostTask( |
452 content::BrowserThread::IO, FROM_HERE, | 530 content::BrowserThread::IO, FROM_HERE, |
453 base::BindOnce(&FailAllNetworkTransactions, | 531 base::BindOnce(&FailAllNetworkTransactions, |
454 base::RetainedRef(url_request_context_getter))); | 532 base::RetainedRef(url_request_context_getter))); |
455 | 533 |
456 ui_test_utils::NavigateToURL(browser(), | 534 ui_test_utils::NavigateToURL(browser(), |
457 embedded_test_server()->GetURL("/title1.html")); | 535 embedded_test_server()->GetURL("/title1.html")); |
458 NavigateToUntrackedUrl(); | 536 NavigateToUntrackedUrl(); |
| 537 ExpectNoTimingUpdates(); |
459 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 538 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
460 } | 539 } |
461 | 540 |
462 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, Ignore204Pages) { | 541 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, Ignore204Pages) { |
463 ASSERT_TRUE(embedded_test_server()->Start()); | 542 ASSERT_TRUE(embedded_test_server()->Start()); |
464 | 543 |
465 ui_test_utils::NavigateToURL(browser(), | 544 ui_test_utils::NavigateToURL(browser(), |
466 embedded_test_server()->GetURL("/page204.html")); | 545 embedded_test_server()->GetURL("/page204.html")); |
467 NavigateToUntrackedUrl(); | 546 NavigateToUntrackedUrl(); |
| 547 ExpectNoTimingUpdates(); |
468 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 548 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
469 } | 549 } |
470 | 550 |
471 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, IgnoreDownloads) { | 551 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, IgnoreDownloads) { |
472 ASSERT_TRUE(embedded_test_server()->Start()); | 552 ASSERT_TRUE(embedded_test_server()->Start()); |
473 | 553 |
474 base::ThreadRestrictions::ScopedAllowIO allow_io; | 554 base::ThreadRestrictions::ScopedAllowIO allow_io; |
475 base::ScopedTempDir downloads_directory; | 555 base::ScopedTempDir downloads_directory; |
476 ASSERT_TRUE(downloads_directory.CreateUniqueTempDir()); | 556 ASSERT_TRUE(downloads_directory.CreateUniqueTempDir()); |
477 browser()->profile()->GetPrefs()->SetFilePath( | 557 browser()->profile()->GetPrefs()->SetFilePath( |
478 prefs::kDownloadDefaultDirectory, downloads_directory.GetPath()); | 558 prefs::kDownloadDefaultDirectory, downloads_directory.GetPath()); |
479 content::DownloadTestObserverTerminal downloads_observer( | 559 content::DownloadTestObserverTerminal downloads_observer( |
480 content::BrowserContext::GetDownloadManager(browser()->profile()), | 560 content::BrowserContext::GetDownloadManager(browser()->profile()), |
481 1, // == wait_count (only waiting for "download-test3.gif"). | 561 1, // == wait_count (only waiting for "download-test3.gif"). |
482 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL); | 562 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL); |
483 | 563 |
484 ui_test_utils::NavigateToURL( | 564 ui_test_utils::NavigateToURL( |
485 browser(), embedded_test_server()->GetURL("/download-test3.gif")); | 565 browser(), embedded_test_server()->GetURL("/download-test3.gif")); |
486 downloads_observer.WaitForFinished(); | 566 downloads_observer.WaitForFinished(); |
487 | 567 |
488 NavigateToUntrackedUrl(); | 568 NavigateToUntrackedUrl(); |
| 569 ExpectNoTimingUpdates(); |
489 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 570 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
490 } | 571 } |
491 | 572 |
492 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PreloadDocumentWrite) { | 573 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PreloadDocumentWrite) { |
493 ASSERT_TRUE(embedded_test_server()->Start()); | 574 ASSERT_TRUE(embedded_test_server()->Start()); |
494 | 575 |
495 auto waiter = CreatePageLoadMetricsWaiter(); | 576 auto waiter = CreatePageLoadMetricsWaiter(); |
496 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 577 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
497 | 578 |
498 ui_test_utils::NavigateToURL( | 579 ui_test_utils::NavigateToURL( |
499 browser(), embedded_test_server()->GetURL( | 580 browser(), embedded_test_server()->GetURL( |
500 "/page_load_metrics/document_write_external_script.html")); | 581 "/page_load_metrics/document_write_external_script.html")); |
501 waiter->Wait(); | 582 waiter->Wait(); |
502 | 583 |
503 histogram_tester_.ExpectTotalCount( | 584 histogram_tester_.ExpectTotalCount( |
504 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1); | 585 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1); |
505 } | 586 } |
506 | 587 |
507 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoPreloadDocumentWrite) { | 588 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoPreloadDocumentWrite) { |
508 ASSERT_TRUE(embedded_test_server()->Start()); | 589 ASSERT_TRUE(embedded_test_server()->Start()); |
509 | 590 |
510 auto waiter = CreatePageLoadMetricsWaiter(); | 591 auto waiter = CreatePageLoadMetricsWaiter(); |
511 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 592 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
512 ui_test_utils::NavigateToURL( | 593 ui_test_utils::NavigateToURL( |
513 browser(), embedded_test_server()->GetURL( | 594 browser(), embedded_test_server()->GetURL( |
514 "/page_load_metrics/document_write_no_script.html")); | 595 "/page_load_metrics/document_write_no_script.html")); |
515 waiter->Wait(); | 596 waiter->Wait(); |
516 | 597 |
517 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 598 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
518 1); | 599 1); |
519 histogram_tester_.ExpectTotalCount( | 600 histogram_tester_.ExpectTotalCount( |
520 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); | 601 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); |
521 } | 602 } |
522 | 603 |
523 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoDocumentWrite) { | 604 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoDocumentWrite) { |
524 ASSERT_TRUE(embedded_test_server()->Start()); | 605 ASSERT_TRUE(embedded_test_server()->Start()); |
525 | 606 |
526 auto waiter = CreatePageLoadMetricsWaiter(); | 607 auto waiter = CreatePageLoadMetricsWaiter(); |
527 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 608 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
528 | 609 |
529 ui_test_utils::NavigateToURL(browser(), | 610 ui_test_utils::NavigateToURL(browser(), |
530 embedded_test_server()->GetURL("/title1.html")); | 611 embedded_test_server()->GetURL("/title1.html")); |
531 waiter->Wait(); | 612 waiter->Wait(); |
532 | 613 |
533 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 614 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
534 1); | 615 1); |
535 histogram_tester_.ExpectTotalCount( | 616 histogram_tester_.ExpectTotalCount( |
536 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); | 617 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); |
537 histogram_tester_.ExpectTotalCount( | 618 histogram_tester_.ExpectTotalCount( |
538 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 619 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
539 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); | 620 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); |
540 } | 621 } |
541 | 622 |
542 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteBlock) { | 623 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, DocumentWriteBlock) { |
543 ASSERT_TRUE(embedded_test_server()->Start()); | 624 ASSERT_TRUE(embedded_test_server()->Start()); |
544 | 625 |
545 auto waiter = CreatePageLoadMetricsWaiter(); | 626 auto waiter = CreatePageLoadMetricsWaiter(); |
546 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 627 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
547 | 628 |
548 ui_test_utils::NavigateToURL( | 629 ui_test_utils::NavigateToURL( |
549 browser(), embedded_test_server()->GetURL( | 630 browser(), embedded_test_server()->GetURL( |
550 "/page_load_metrics/document_write_script_block.html")); | 631 "/page_load_metrics/document_write_script_block.html")); |
551 waiter->Wait(); | 632 waiter->Wait(); |
552 | 633 |
553 histogram_tester_.ExpectTotalCount( | 634 histogram_tester_.ExpectTotalCount( |
554 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); | 635 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); |
555 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 1); | 636 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 1); |
556 } | 637 } |
557 | 638 |
558 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteReload) { | 639 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, DocumentWriteReload) { |
559 ASSERT_TRUE(embedded_test_server()->Start()); | 640 ASSERT_TRUE(embedded_test_server()->Start()); |
560 | 641 |
561 auto waiter = CreatePageLoadMetricsWaiter(); | 642 auto waiter = CreatePageLoadMetricsWaiter(); |
562 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 643 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
563 ui_test_utils::NavigateToURL( | 644 ui_test_utils::NavigateToURL( |
564 browser(), embedded_test_server()->GetURL( | 645 browser(), embedded_test_server()->GetURL( |
565 "/page_load_metrics/document_write_script_block.html")); | 646 "/page_load_metrics/document_write_script_block.html")); |
566 waiter->Wait(); | 647 waiter->Wait(); |
567 | 648 |
568 histogram_tester_.ExpectTotalCount( | 649 histogram_tester_.ExpectTotalCount( |
(...skipping 23 matching lines...) Expand all Loading... |
592 reload_waiter->Wait(); | 673 reload_waiter->Wait(); |
593 | 674 |
594 histogram_tester_.ExpectTotalCount( | 675 histogram_tester_.ExpectTotalCount( |
595 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); | 676 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); |
596 | 677 |
597 histogram_tester_.ExpectTotalCount( | 678 histogram_tester_.ExpectTotalCount( |
598 internal::kHistogramDocWriteBlockReloadCount, 2); | 679 internal::kHistogramDocWriteBlockReloadCount, 2); |
599 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 1); | 680 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 1); |
600 } | 681 } |
601 | 682 |
602 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteAsync) { | 683 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, DocumentWriteAsync) { |
603 ASSERT_TRUE(embedded_test_server()->Start()); | 684 ASSERT_TRUE(embedded_test_server()->Start()); |
604 | 685 |
605 auto waiter = CreatePageLoadMetricsWaiter(); | 686 auto waiter = CreatePageLoadMetricsWaiter(); |
606 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 687 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
607 ui_test_utils::NavigateToURL( | 688 ui_test_utils::NavigateToURL( |
608 browser(), embedded_test_server()->GetURL( | 689 browser(), embedded_test_server()->GetURL( |
609 "/page_load_metrics/document_write_async_script.html")); | 690 "/page_load_metrics/document_write_async_script.html")); |
610 waiter->Wait(); | 691 waiter->Wait(); |
611 | 692 |
612 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 693 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
613 1); | 694 1); |
614 histogram_tester_.ExpectTotalCount( | 695 histogram_tester_.ExpectTotalCount( |
615 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 696 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
616 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); | 697 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); |
617 } | 698 } |
618 | 699 |
619 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteSameDomain) { | 700 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, DocumentWriteSameDomain) { |
620 ASSERT_TRUE(embedded_test_server()->Start()); | 701 ASSERT_TRUE(embedded_test_server()->Start()); |
621 | 702 |
622 auto waiter = CreatePageLoadMetricsWaiter(); | 703 auto waiter = CreatePageLoadMetricsWaiter(); |
623 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 704 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
624 ui_test_utils::NavigateToURL( | 705 ui_test_utils::NavigateToURL( |
625 browser(), embedded_test_server()->GetURL( | 706 browser(), embedded_test_server()->GetURL( |
626 "/page_load_metrics/document_write_external_script.html")); | 707 "/page_load_metrics/document_write_external_script.html")); |
627 waiter->Wait(); | 708 waiter->Wait(); |
628 | 709 |
629 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 710 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
630 1); | 711 1); |
631 histogram_tester_.ExpectTotalCount( | 712 histogram_tester_.ExpectTotalCount( |
632 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 713 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
633 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); | 714 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); |
634 } | 715 } |
635 | 716 |
636 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoDocumentWriteScript) { | 717 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoDocumentWriteScript) { |
637 ASSERT_TRUE(embedded_test_server()->Start()); | 718 ASSERT_TRUE(embedded_test_server()->Start()); |
638 | 719 |
639 auto waiter = CreatePageLoadMetricsWaiter(); | 720 auto waiter = CreatePageLoadMetricsWaiter(); |
640 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 721 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
641 ui_test_utils::NavigateToURL( | 722 ui_test_utils::NavigateToURL( |
642 browser(), embedded_test_server()->GetURL( | 723 browser(), embedded_test_server()->GetURL( |
643 "/page_load_metrics/document_write_no_script.html")); | 724 "/page_load_metrics/document_write_no_script.html")); |
644 waiter->Wait(); | 725 waiter->Wait(); |
645 | 726 |
646 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 727 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
647 1); | 728 1); |
648 histogram_tester_.ExpectTotalCount( | 729 histogram_tester_.ExpectTotalCount( |
649 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 730 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
650 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); | 731 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); |
651 } | 732 } |
652 | 733 |
653 // TODO(crbug.com/712935): Flaky on Linux dbg. | 734 // TODO(crbug.com/712935): Flaky on Linux dbg. |
654 #if defined(OS_LINUX) && !defined(NDEBUG) | 735 #if defined(OS_LINUX) && !defined(NDEBUG) |
655 #define MAYBE_BadXhtml DISABLED_BadXhtml | 736 #define MAYBE_BadXhtml DISABLED_BadXhtml |
656 #else | 737 #else |
657 #define MAYBE_BadXhtml BadXhtml | 738 #define MAYBE_BadXhtml BadXhtml |
658 #endif | 739 #endif |
659 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, MAYBE_BadXhtml) { | 740 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, MAYBE_BadXhtml) { |
660 ASSERT_TRUE(embedded_test_server()->Start()); | 741 ASSERT_TRUE(embedded_test_server()->Start()); |
661 | 742 |
662 auto waiter = CreatePageLoadMetricsWaiter(); | 743 auto waiter = CreatePageLoadMetricsWaiter(); |
663 waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); | 744 waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); |
664 | 745 |
665 // When an XHTML page contains invalid XML, it causes a paint of the error | 746 // When an XHTML page contains invalid XML, it causes a paint of the error |
666 // message without a layout. Page load metrics currently treats this as an | 747 // message without a layout. Page load metrics currently treats this as an |
667 // error. Eventually, we'll fix this by special casing the handling of | 748 // error. Eventually, we'll fix this by special casing the handling of |
668 // documents with non-well-formed XML on the blink side. See crbug.com/627607 | 749 // documents with non-well-formed XML on the blink side. See crbug.com/627607 |
669 // for more. | 750 // for more. |
(...skipping 14 matching lines...) Expand all Loading... |
684 histogram_tester_.ExpectTotalCount( | 765 histogram_tester_.ExpectTotalCount( |
685 page_load_metrics::internal::kPageLoadTimingStatus, 1); | 766 page_load_metrics::internal::kPageLoadTimingStatus, 1); |
686 histogram_tester_.ExpectBucketCount( | 767 histogram_tester_.ExpectBucketCount( |
687 page_load_metrics::internal::kPageLoadTimingStatus, | 768 page_load_metrics::internal::kPageLoadTimingStatus, |
688 page_load_metrics::internal::INVALID_ORDER_FIRST_LAYOUT_FIRST_PAINT, 1); | 769 page_load_metrics::internal::INVALID_ORDER_FIRST_LAYOUT_FIRST_PAINT, 1); |
689 } | 770 } |
690 | 771 |
691 // Test code that aborts provisional navigations. | 772 // Test code that aborts provisional navigations. |
692 // TODO(csharrison): Move these to unit tests once the navigation API in content | 773 // TODO(csharrison): Move these to unit tests once the navigation API in content |
693 // properly calls NavigationHandle/NavigationThrottle methods. | 774 // properly calls NavigationHandle/NavigationThrottle methods. |
694 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortNewNavigation) { | 775 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, AbortNewNavigation) { |
695 ASSERT_TRUE(embedded_test_server()->Start()); | 776 ASSERT_TRUE(embedded_test_server()->Start()); |
696 | 777 |
697 GURL url(embedded_test_server()->GetURL("/title1.html")); | 778 GURL url(embedded_test_server()->GetURL("/title1.html")); |
698 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); | 779 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); |
699 content::TestNavigationManager manager( | 780 content::TestNavigationManager manager( |
700 browser()->tab_strip_model()->GetActiveWebContents(), url); | 781 browser()->tab_strip_model()->GetActiveWebContents(), url); |
701 | 782 |
702 chrome::Navigate(¶ms); | 783 chrome::Navigate(¶ms); |
703 EXPECT_TRUE(manager.WaitForRequestStart()); | 784 EXPECT_TRUE(manager.WaitForRequestStart()); |
704 | 785 |
705 GURL url2(embedded_test_server()->GetURL("/title2.html")); | 786 GURL url2(embedded_test_server()->GetURL("/title2.html")); |
706 chrome::NavigateParams params2(browser(), url2, | 787 chrome::NavigateParams params2(browser(), url2, |
707 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR); | 788 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR); |
708 | 789 |
709 auto waiter = CreatePageLoadMetricsWaiter(); | 790 auto waiter = CreatePageLoadMetricsWaiter(); |
710 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 791 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
711 chrome::Navigate(¶ms2); | 792 chrome::Navigate(¶ms2); |
712 waiter->Wait(); | 793 waiter->Wait(); |
713 | 794 |
714 histogram_tester_.ExpectTotalCount( | 795 histogram_tester_.ExpectTotalCount( |
715 internal::kHistogramAbortNewNavigationBeforeCommit, 1); | 796 internal::kHistogramAbortNewNavigationBeforeCommit, 1); |
716 } | 797 } |
717 | 798 |
718 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortReload) { | 799 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, AbortReload) { |
719 ASSERT_TRUE(embedded_test_server()->Start()); | 800 ASSERT_TRUE(embedded_test_server()->Start()); |
720 | 801 |
721 GURL url(embedded_test_server()->GetURL("/title1.html")); | 802 GURL url(embedded_test_server()->GetURL("/title1.html")); |
722 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); | 803 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); |
723 content::TestNavigationManager manager( | 804 content::TestNavigationManager manager( |
724 browser()->tab_strip_model()->GetActiveWebContents(), url); | 805 browser()->tab_strip_model()->GetActiveWebContents(), url); |
725 | 806 |
726 chrome::Navigate(¶ms); | 807 chrome::Navigate(¶ms); |
727 EXPECT_TRUE(manager.WaitForRequestStart()); | 808 EXPECT_TRUE(manager.WaitForRequestStart()); |
728 | 809 |
729 chrome::NavigateParams params2(browser(), url, ui::PAGE_TRANSITION_RELOAD); | 810 chrome::NavigateParams params2(browser(), url, ui::PAGE_TRANSITION_RELOAD); |
730 | 811 |
731 auto waiter = CreatePageLoadMetricsWaiter(); | 812 auto waiter = CreatePageLoadMetricsWaiter(); |
732 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 813 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
733 chrome::Navigate(¶ms2); | 814 chrome::Navigate(¶ms2); |
734 waiter->Wait(); | 815 waiter->Wait(); |
735 | 816 |
736 histogram_tester_.ExpectTotalCount( | 817 histogram_tester_.ExpectTotalCount( |
737 internal::kHistogramAbortReloadBeforeCommit, 1); | 818 internal::kHistogramAbortReloadBeforeCommit, 1); |
738 } | 819 } |
739 | 820 |
740 // TODO(crbug.com/675061): Flaky on Win7 dbg. | 821 // TODO(crbug.com/675061): Flaky on Win7 dbg. |
741 #if defined(OS_WIN) | 822 #if defined(OS_WIN) |
742 #define MAYBE_AbortClose DISABLED_AbortClose | 823 #define MAYBE_AbortClose DISABLED_AbortClose |
743 #else | 824 #else |
744 #define MAYBE_AbortClose AbortClose | 825 #define MAYBE_AbortClose AbortClose |
745 #endif | 826 #endif |
746 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, MAYBE_AbortClose) { | 827 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, MAYBE_AbortClose) { |
747 ASSERT_TRUE(embedded_test_server()->Start()); | 828 ASSERT_TRUE(embedded_test_server()->Start()); |
748 | 829 |
749 GURL url(embedded_test_server()->GetURL("/title1.html")); | 830 GURL url(embedded_test_server()->GetURL("/title1.html")); |
750 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); | 831 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); |
751 content::TestNavigationManager manager( | 832 content::TestNavigationManager manager( |
752 browser()->tab_strip_model()->GetActiveWebContents(), url); | 833 browser()->tab_strip_model()->GetActiveWebContents(), url); |
753 | 834 |
754 chrome::Navigate(¶ms); | 835 chrome::Navigate(¶ms); |
755 EXPECT_TRUE(manager.WaitForRequestStart()); | 836 EXPECT_TRUE(manager.WaitForRequestStart()); |
756 | 837 |
757 browser()->tab_strip_model()->GetActiveWebContents()->Close(); | 838 browser()->tab_strip_model()->GetActiveWebContents()->Close(); |
758 | 839 |
759 manager.WaitForNavigationFinished(); | 840 manager.WaitForNavigationFinished(); |
760 | 841 |
761 histogram_tester_.ExpectTotalCount(internal::kHistogramAbortCloseBeforeCommit, | 842 histogram_tester_.ExpectTotalCount(internal::kHistogramAbortCloseBeforeCommit, |
762 1); | 843 1); |
| 844 ExpectNoTimingUpdates(); |
763 } | 845 } |
764 | 846 |
765 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortMultiple) { | 847 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, AbortMultiple) { |
766 ASSERT_TRUE(embedded_test_server()->Start()); | 848 ASSERT_TRUE(embedded_test_server()->Start()); |
767 | 849 |
768 GURL url(embedded_test_server()->GetURL("/title1.html")); | 850 GURL url(embedded_test_server()->GetURL("/title1.html")); |
769 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); | 851 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); |
770 content::TestNavigationManager manager( | 852 content::TestNavigationManager manager( |
771 browser()->tab_strip_model()->GetActiveWebContents(), url); | 853 browser()->tab_strip_model()->GetActiveWebContents(), url); |
772 | 854 |
773 chrome::Navigate(¶ms); | 855 chrome::Navigate(¶ms); |
774 EXPECT_TRUE(manager.WaitForRequestStart()); | 856 EXPECT_TRUE(manager.WaitForRequestStart()); |
775 | 857 |
(...skipping 13 matching lines...) Expand all Loading... |
789 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 871 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
790 chrome::Navigate(¶ms3); | 872 chrome::Navigate(¶ms3); |
791 waiter->Wait(); | 873 waiter->Wait(); |
792 | 874 |
793 manager2.WaitForNavigationFinished(); | 875 manager2.WaitForNavigationFinished(); |
794 | 876 |
795 histogram_tester_.ExpectTotalCount( | 877 histogram_tester_.ExpectTotalCount( |
796 internal::kHistogramAbortNewNavigationBeforeCommit, 2); | 878 internal::kHistogramAbortNewNavigationBeforeCommit, 2); |
797 } | 879 } |
798 | 880 |
799 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, | 881 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, |
800 NoAbortMetricsOnClientRedirect) { | 882 NoAbortMetricsOnClientRedirect) { |
801 ASSERT_TRUE(embedded_test_server()->Start()); | 883 ASSERT_TRUE(embedded_test_server()->Start()); |
802 | 884 |
803 GURL first_url(embedded_test_server()->GetURL("/title1.html")); | 885 GURL first_url(embedded_test_server()->GetURL("/title1.html")); |
804 ui_test_utils::NavigateToURL(browser(), first_url); | 886 ui_test_utils::NavigateToURL(browser(), first_url); |
805 | 887 |
806 GURL second_url(embedded_test_server()->GetURL("/title2.html")); | 888 GURL second_url(embedded_test_server()->GetURL("/title2.html")); |
807 chrome::NavigateParams params(browser(), second_url, | 889 chrome::NavigateParams params(browser(), second_url, |
808 ui::PAGE_TRANSITION_LINK); | 890 ui::PAGE_TRANSITION_LINK); |
809 content::TestNavigationManager manager( | 891 content::TestNavigationManager manager( |
(...skipping 12 matching lines...) Expand all Loading... |
822 waiter->Wait(); | 904 waiter->Wait(); |
823 } | 905 } |
824 | 906 |
825 manager.WaitForNavigationFinished(); | 907 manager.WaitForNavigationFinished(); |
826 | 908 |
827 EXPECT_TRUE(histogram_tester_ | 909 EXPECT_TRUE(histogram_tester_ |
828 .GetTotalCountsForPrefix("PageLoad.Experimental.AbortTiming.") | 910 .GetTotalCountsForPrefix("PageLoad.Experimental.AbortTiming.") |
829 .empty()); | 911 .empty()); |
830 } | 912 } |
831 | 913 |
832 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, | 914 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, |
833 FirstMeaningfulPaintRecorded) { | 915 FirstMeaningfulPaintRecorded) { |
834 ASSERT_TRUE(embedded_test_server()->Start()); | 916 ASSERT_TRUE(embedded_test_server()->Start()); |
835 | 917 |
836 auto waiter = CreatePageLoadMetricsWaiter(); | 918 auto waiter = CreatePageLoadMetricsWaiter(); |
837 waiter->AddMainFrameExpectation(TimingField::FIRST_MEANINGFUL_PAINT); | 919 waiter->AddMainFrameExpectation(TimingField::FIRST_MEANINGFUL_PAINT); |
838 ui_test_utils::NavigateToURL(browser(), | 920 ui_test_utils::NavigateToURL(browser(), |
839 embedded_test_server()->GetURL("/title1.html")); | 921 embedded_test_server()->GetURL("/title1.html")); |
840 waiter->Wait(); | 922 waiter->Wait(); |
841 | 923 |
842 histogram_tester_.ExpectUniqueSample( | 924 histogram_tester_.ExpectUniqueSample( |
843 internal::kHistogramFirstMeaningfulPaintStatus, | 925 internal::kHistogramFirstMeaningfulPaintStatus, |
844 internal::FIRST_MEANINGFUL_PAINT_RECORDED, 1); | 926 internal::FIRST_MEANINGFUL_PAINT_RECORDED, 1); |
845 histogram_tester_.ExpectTotalCount( | 927 histogram_tester_.ExpectTotalCount( |
846 internal::kHistogramFirstMeaningfulPaint, 1); | 928 internal::kHistogramFirstMeaningfulPaint, 1); |
847 histogram_tester_.ExpectTotalCount( | 929 histogram_tester_.ExpectTotalCount( |
848 internal::kHistogramParseStartToFirstMeaningfulPaint, 1); | 930 internal::kHistogramParseStartToFirstMeaningfulPaint, 1); |
849 } | 931 } |
850 | 932 |
851 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, | 933 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, |
852 FirstMeaningfulPaintNotRecorded) { | 934 FirstMeaningfulPaintNotRecorded) { |
853 ASSERT_TRUE(embedded_test_server()->Start()); | 935 ASSERT_TRUE(embedded_test_server()->Start()); |
854 | 936 |
855 auto waiter = CreatePageLoadMetricsWaiter(); | 937 auto waiter = CreatePageLoadMetricsWaiter(); |
856 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 938 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
857 | 939 |
858 ui_test_utils::NavigateToURL( | 940 ui_test_utils::NavigateToURL( |
859 browser(), embedded_test_server()->GetURL( | 941 browser(), embedded_test_server()->GetURL( |
860 "/page_load_metrics/page_with_active_connections.html")); | 942 "/page_load_metrics/page_with_active_connections.html")); |
861 waiter->Wait(); | 943 waiter->Wait(); |
862 | 944 |
863 // Navigate away before a FMP is reported. | 945 // Navigate away before a FMP is reported. |
864 NavigateToUntrackedUrl(); | 946 NavigateToUntrackedUrl(); |
865 | 947 |
866 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 948 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
867 1); | 949 1); |
868 histogram_tester_.ExpectUniqueSample( | 950 histogram_tester_.ExpectUniqueSample( |
869 internal::kHistogramFirstMeaningfulPaintStatus, | 951 internal::kHistogramFirstMeaningfulPaintStatus, |
870 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_NETWORK_STABLE, 1); | 952 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_NETWORK_STABLE, 1); |
871 histogram_tester_.ExpectTotalCount( | 953 histogram_tester_.ExpectTotalCount( |
872 internal::kHistogramFirstMeaningfulPaint, 0); | 954 internal::kHistogramFirstMeaningfulPaint, 0); |
873 histogram_tester_.ExpectTotalCount( | 955 histogram_tester_.ExpectTotalCount( |
874 internal::kHistogramParseStartToFirstMeaningfulPaint, 0); | 956 internal::kHistogramParseStartToFirstMeaningfulPaint, 0); |
875 } | 957 } |
876 | 958 |
877 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, | 959 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, |
878 NoStatePrefetchObserverCacheable) { | 960 NoStatePrefetchObserverCacheable) { |
879 ASSERT_TRUE(embedded_test_server()->Start()); | 961 ASSERT_TRUE(embedded_test_server()->Start()); |
880 | 962 |
881 auto waiter = CreatePageLoadMetricsWaiter(); | 963 auto waiter = CreatePageLoadMetricsWaiter(); |
882 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 964 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
883 | 965 |
884 ui_test_utils::NavigateToURL(browser(), | 966 ui_test_utils::NavigateToURL(browser(), |
885 embedded_test_server()->GetURL("/title1.html")); | 967 embedded_test_server()->GetURL("/title1.html")); |
886 | 968 |
887 waiter->Wait(); | 969 waiter->Wait(); |
888 | 970 |
889 histogram_tester_.ExpectTotalCount( | 971 histogram_tester_.ExpectTotalCount( |
890 "Prerender.none_PrefetchTTFCP.Reference.NoStore.Visible", 0); | 972 "Prerender.none_PrefetchTTFCP.Reference.NoStore.Visible", 0); |
891 histogram_tester_.ExpectTotalCount( | 973 histogram_tester_.ExpectTotalCount( |
892 "Prerender.none_PrefetchTTFCP.Reference.Cacheable.Visible", 1); | 974 "Prerender.none_PrefetchTTFCP.Reference.Cacheable.Visible", 1); |
893 } | 975 } |
894 | 976 |
895 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, | 977 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, |
896 NoStatePrefetchObserverNoStore) { | 978 NoStatePrefetchObserverNoStore) { |
897 ASSERT_TRUE(embedded_test_server()->Start()); | 979 ASSERT_TRUE(embedded_test_server()->Start()); |
898 | 980 |
899 auto waiter = CreatePageLoadMetricsWaiter(); | 981 auto waiter = CreatePageLoadMetricsWaiter(); |
900 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 982 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
901 | 983 |
902 ui_test_utils::NavigateToURL(browser(), | 984 ui_test_utils::NavigateToURL(browser(), |
903 embedded_test_server()->GetURL("/nostore.html")); | 985 embedded_test_server()->GetURL("/nostore.html")); |
904 | 986 |
905 waiter->Wait(); | 987 waiter->Wait(); |
906 | 988 |
907 histogram_tester_.ExpectTotalCount( | 989 histogram_tester_.ExpectTotalCount( |
908 "Prerender.none_PrefetchTTFCP.Reference.NoStore.Visible", 1); | 990 "Prerender.none_PrefetchTTFCP.Reference.NoStore.Visible", 1); |
909 histogram_tester_.ExpectTotalCount( | 991 histogram_tester_.ExpectTotalCount( |
910 "Prerender.none_PrefetchTTFCP.Reference.Cacheable.Visible", 0); | 992 "Prerender.none_PrefetchTTFCP.Reference.Cacheable.Visible", 0); |
911 } | 993 } |
912 | 994 |
913 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, CSSTiming) { | 995 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, CSSTiming) { |
914 ASSERT_TRUE(embedded_test_server()->Start()); | 996 ASSERT_TRUE(embedded_test_server()->Start()); |
915 | 997 |
916 auto waiter = CreatePageLoadMetricsWaiter(); | 998 auto waiter = CreatePageLoadMetricsWaiter(); |
917 waiter->AddMainFrameExpectation(TimingField::STYLE_UPDATE_BEFORE_FCP); | 999 waiter->AddMainFrameExpectation(TimingField::STYLE_UPDATE_BEFORE_FCP); |
918 | 1000 |
919 // Careful: Blink code clamps timestamps to 5us, so any CSS parsing we do here | 1001 // Careful: Blink code clamps timestamps to 5us, so any CSS parsing we do here |
920 // must take >> 5us, otherwise we'll log 0 for the value and it will remain | 1002 // must take >> 5us, otherwise we'll log 0 for the value and it will remain |
921 // unset here. | 1003 // unset here. |
922 ui_test_utils::NavigateToURL( | 1004 ui_test_utils::NavigateToURL( |
923 browser(), | 1005 browser(), |
924 embedded_test_server()->GetURL("/page_load_metrics/page_with_css.html")); | 1006 embedded_test_server()->GetURL("/page_load_metrics/page_with_css.html")); |
925 waiter->Wait(); | 1007 waiter->Wait(); |
926 | 1008 |
927 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 1009 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
928 1); | 1010 1); |
929 histogram_tester_.ExpectTotalCount( | 1011 histogram_tester_.ExpectTotalCount( |
930 "PageLoad.CSSTiming.Parse.BeforeFirstContentfulPaint", 1); | 1012 "PageLoad.CSSTiming.Parse.BeforeFirstContentfulPaint", 1); |
931 histogram_tester_.ExpectTotalCount( | 1013 histogram_tester_.ExpectTotalCount( |
932 "PageLoad.CSSTiming.Update.BeforeFirstContentfulPaint", 1); | 1014 "PageLoad.CSSTiming.Update.BeforeFirstContentfulPaint", 1); |
933 histogram_tester_.ExpectTotalCount( | 1015 histogram_tester_.ExpectTotalCount( |
934 "PageLoad.CSSTiming.ParseAndUpdate.BeforeFirstContentfulPaint", 1); | 1016 "PageLoad.CSSTiming.ParseAndUpdate.BeforeFirstContentfulPaint", 1); |
935 } | 1017 } |
936 | 1018 |
937 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PayloadSize) { | 1019 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PayloadSize) { |
938 ASSERT_TRUE(embedded_test_server()->Start()); | 1020 ASSERT_TRUE(embedded_test_server()->Start()); |
939 | 1021 |
940 auto waiter = CreatePageLoadMetricsWaiter(); | 1022 auto waiter = CreatePageLoadMetricsWaiter(); |
941 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 1023 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
942 ui_test_utils::NavigateToURL(browser(), embedded_test_server()->GetURL( | 1024 ui_test_utils::NavigateToURL(browser(), embedded_test_server()->GetURL( |
943 "/page_load_metrics/large.html")); | 1025 "/page_load_metrics/large.html")); |
944 waiter->Wait(); | 1026 waiter->Wait(); |
945 | 1027 |
946 // Payload histograms are only logged when a page load terminates, so force | 1028 // Payload histograms are only logged when a page load terminates, so force |
947 // navigation to another page. | 1029 // navigation to another page. |
948 NavigateToUntrackedUrl(); | 1030 NavigateToUntrackedUrl(); |
949 | 1031 |
950 histogram_tester_.ExpectTotalCount(internal::kHistogramTotalBytes, 1); | 1032 histogram_tester_.ExpectTotalCount(internal::kHistogramTotalBytes, 1); |
951 | 1033 |
952 // Verify that there is a single sample recorded in the 10kB bucket (the size | 1034 // Verify that there is a single sample recorded in the 10kB bucket (the size |
953 // of the main HTML response). | 1035 // of the main HTML response). |
954 histogram_tester_.ExpectBucketCount(internal::kHistogramTotalBytes, 10, 1); | 1036 histogram_tester_.ExpectBucketCount(internal::kHistogramTotalBytes, 10, 1); |
955 } | 1037 } |
| 1038 |
| 1039 INSTANTIATE_TEST_CASE_P( |
| 1040 /* no prefix */, |
| 1041 PageLoadMetricsBrowserTest, |
| 1042 testing::Values(IPCType::LEGACY, IPCType::MOJO)); |
OLD | NEW |