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

Side by Side Diff: chrome/browser/prerender/prerender_browsertest.cc

Issue 2806863003: [Page Load Metrics] Structure PageLoadTiming. (Closed)
Patch Set: rebase Created 3 years, 8 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <stddef.h> 5 #include <stddef.h>
6 #include <deque> 6 #include <deque>
7 #include <set> 7 #include <set>
8 #include <string> 8 #include <string>
9 #include <unordered_map> 9 #include <unordered_map>
10 #include <utility> 10 #include <utility>
(...skipping 3288 matching lines...) Expand 10 before | Expand all | Expand 10 after
3299 base::TimeTicks load_start = clock->NowTicks(); 3299 base::TimeTicks load_start = clock->NowTicks();
3300 clock->Advance(base::TimeDelta::FromSeconds(1)); 3300 clock->Advance(base::TimeDelta::FromSeconds(1));
3301 NavigateToDestURL(); 3301 NavigateToDestURL();
3302 3302
3303 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), 3303 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(),
3304 GetActiveWebContents()); 3304 GetActiveWebContents());
3305 observer.SetNavigationStartTicksForTesting(load_start); 3305 observer.SetNavigationStartTicksForTesting(load_start);
3306 3306
3307 page_load_metrics::PageLoadTiming timing; 3307 page_load_metrics::PageLoadTiming timing;
3308 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. 3308 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time.
3309 timing.first_contentful_paint = base::TimeDelta::FromMilliseconds(2654); 3309 timing.paint_timing.first_contentful_paint =
3310 base::TimeDelta::FromMilliseconds(2654);
3310 page_load_metrics::PageLoadMetricsObserverTestHarness:: 3311 page_load_metrics::PageLoadMetricsObserverTestHarness::
3311 PopulateRequiredTimingFields(&timing); 3312 PopulateRequiredTimingFields(&timing);
3312 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); 3313 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url()));
3313 3314
3314 histogram_tester().ExpectTotalCount( 3315 histogram_tester().ExpectTotalCount(
3315 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); 3316 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1);
3316 histogram_tester().ExpectUniqueSample( 3317 histogram_tester().ExpectUniqueSample(
3317 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1); 3318 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1);
3318 } 3319 }
3319 3320
(...skipping 20 matching lines...) Expand all
3340 PrerenderTestURL(url, FINAL_STATUS_USED, 1); 3341 PrerenderTestURL(url, FINAL_STATUS_USED, 1);
3341 clock->Advance(base::TimeDelta::FromSeconds(1)); 3342 clock->Advance(base::TimeDelta::FromSeconds(1));
3342 3343
3343 NavigateToDestURL(); 3344 NavigateToDestURL();
3344 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), 3345 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(),
3345 GetActiveWebContents()); 3346 GetActiveWebContents());
3346 observer.SetNavigationStartTicksForTesting(load_start); 3347 observer.SetNavigationStartTicksForTesting(load_start);
3347 3348
3348 page_load_metrics::PageLoadTiming timing; 3349 page_load_metrics::PageLoadTiming timing;
3349 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. 3350 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time.
3350 timing.first_contentful_paint = base::TimeDelta::FromMilliseconds(2361); 3351 timing.paint_timing.first_contentful_paint =
3352 base::TimeDelta::FromMilliseconds(2361);
3351 page_load_metrics::PageLoadMetricsObserverTestHarness:: 3353 page_load_metrics::PageLoadMetricsObserverTestHarness::
3352 PopulateRequiredTimingFields(&timing); 3354 PopulateRequiredTimingFields(&timing);
3353 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); 3355 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url()));
3354 3356
3355 histogram_tester().ExpectTotalCount( 3357 histogram_tester().ExpectTotalCount(
3356 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); 3358 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1);
3357 // If the first prerender had been used, the perceived TTFCP would have been 3359 // If the first prerender had been used, the perceived TTFCP would have been
3358 // under a second: 2362ms - 2 sec worth of Advance(). 3360 // under a second: 2362ms - 2 sec worth of Advance().
3359 histogram_tester().ExpectUniqueSample( 3361 histogram_tester().ExpectUniqueSample(
3360 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1361, 1); 3362 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1361, 1);
(...skipping 19 matching lines...) Expand all
3380 3382
3381 clock->Advance(base::TimeDelta::FromSeconds(1)); 3383 clock->Advance(base::TimeDelta::FromSeconds(1));
3382 NavigateToDestURL(); 3384 NavigateToDestURL();
3383 3385
3384 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), 3386 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(),
3385 GetActiveWebContents()); 3387 GetActiveWebContents());
3386 observer.SetNavigationStartTicksForTesting(load_start); 3388 observer.SetNavigationStartTicksForTesting(load_start);
3387 3389
3388 page_load_metrics::PageLoadTiming timing; 3390 page_load_metrics::PageLoadTiming timing;
3389 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. 3391 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time.
3390 timing.first_contentful_paint = base::TimeDelta::FromMilliseconds(2361); 3392 timing.paint_timing.first_contentful_paint =
3393 base::TimeDelta::FromMilliseconds(2361);
3391 page_load_metrics::PageLoadMetricsObserverTestHarness:: 3394 page_load_metrics::PageLoadMetricsObserverTestHarness::
3392 PopulateRequiredTimingFields(&timing); 3395 PopulateRequiredTimingFields(&timing);
3393 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); 3396 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url()));
3394 3397
3395 histogram_tester().ExpectTotalCount( 3398 histogram_tester().ExpectTotalCount(
3396 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); 3399 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1);
3397 // If the timed out had been used, the perceived TTFCP would have been 3400 // If the timed out had been used, the perceived TTFCP would have been
3398 // negative. 3401 // negative.
3399 histogram_tester().ExpectUniqueSample( 3402 histogram_tester().ExpectUniqueSample(
3400 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1361, 1); 3403 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1361, 1);
(...skipping 22 matching lines...) Expand all
3423 3426
3424 clock->Advance(base::TimeDelta::FromSeconds(1)); 3427 clock->Advance(base::TimeDelta::FromSeconds(1));
3425 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, false); 3428 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, false);
3426 3429
3427 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), 3430 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(),
3428 GetActiveWebContents()); 3431 GetActiveWebContents());
3429 observer.SetNavigationStartTicksForTesting(clock->NowTicks()); 3432 observer.SetNavigationStartTicksForTesting(clock->NowTicks());
3430 3433
3431 page_load_metrics::PageLoadTiming timing; 3434 page_load_metrics::PageLoadTiming timing;
3432 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. 3435 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time.
3433 timing.first_contentful_paint = base::TimeDelta::FromMilliseconds(2362); 3436 timing.paint_timing.first_contentful_paint =
3437 base::TimeDelta::FromMilliseconds(2362);
3434 page_load_metrics::PageLoadMetricsObserverTestHarness:: 3438 page_load_metrics::PageLoadMetricsObserverTestHarness::
3435 PopulateRequiredTimingFields(&timing); 3439 PopulateRequiredTimingFields(&timing);
3436 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); 3440 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url()));
3437 3441
3438 histogram_tester().ExpectTotalCount( 3442 histogram_tester().ExpectTotalCount(
3439 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Visible", 0); 3443 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Visible", 0);
3440 histogram_tester().ExpectTotalCount( 3444 histogram_tester().ExpectTotalCount(
3441 "Prerender.none_PerceivedTTFCPRecorded.Visible", 1); 3445 "Prerender.none_PerceivedTTFCPRecorded.Visible", 1);
3442 3446
3443 // Check that the prerender didn't happen with a defined origin. 3447 // Check that the prerender didn't happen with a defined origin.
(...skipping 28 matching lines...) Expand all
3472 clock->Advance(base::TimeDelta::FromSeconds(1)); 3476 clock->Advance(base::TimeDelta::FromSeconds(1));
3473 NavigateToDestURL(); 3477 NavigateToDestURL();
3474 3478
3475 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), 3479 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(),
3476 GetActiveWebContents()); 3480 GetActiveWebContents());
3477 observer.SetNavigationStartTicksForTesting(load_start); 3481 observer.SetNavigationStartTicksForTesting(load_start);
3478 3482
3479 page_load_metrics::PageLoadTiming timing; 3483 page_load_metrics::PageLoadTiming timing;
3480 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. 3484 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time.
3481 // The FCP time should end up on the edge of the bucket. 3485 // The FCP time should end up on the edge of the bucket.
3482 timing.first_contentful_paint = base::TimeDelta::FromMilliseconds(2654); 3486 timing.paint_timing.first_contentful_paint =
3487 base::TimeDelta::FromMilliseconds(2654);
3483 page_load_metrics::PageLoadMetricsObserverTestHarness:: 3488 page_load_metrics::PageLoadMetricsObserverTestHarness::
3484 PopulateRequiredTimingFields(&timing); 3489 PopulateRequiredTimingFields(&timing);
3485 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); 3490 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url()));
3486 3491
3487 histogram_tester().ExpectTotalCount( 3492 histogram_tester().ExpectTotalCount(
3488 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); 3493 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1);
3489 histogram_tester().ExpectUniqueSample( 3494 histogram_tester().ExpectUniqueSample(
3490 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1); 3495 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1);
3491 } 3496 }
3492 3497
3493 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, FirstContentfulPaintHidden) { 3498 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, FirstContentfulPaintHidden) {
3494 GetPrerenderManager()->DisablePageLoadMetricsObserverForTesting(); 3499 GetPrerenderManager()->DisablePageLoadMetricsObserverForTesting();
3495 base::SimpleTestTickClock* clock = OverridePrerenderManagerTimeTicks(); 3500 base::SimpleTestTickClock* clock = OverridePrerenderManagerTimeTicks();
3496 base::TimeTicks load_start = clock->NowTicks(); 3501 base::TimeTicks load_start = clock->NowTicks();
3497 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); 3502 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1);
3498 3503
3499 clock->Advance(base::TimeDelta::FromSeconds(1)); 3504 clock->Advance(base::TimeDelta::FromSeconds(1));
3500 NavigateToDestURL(); 3505 NavigateToDestURL();
3501 3506
3502 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), 3507 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(),
3503 GetActiveWebContents()); 3508 GetActiveWebContents());
3504 observer.SetNavigationStartTicksForTesting(load_start); 3509 observer.SetNavigationStartTicksForTesting(load_start);
3505 3510
3506 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING, 3511 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING,
3507 observer.OnHidden(page_load_metrics::PageLoadTiming(), 3512 observer.OnHidden(page_load_metrics::PageLoadTiming(),
3508 GenericPageLoadExtraInfo(dest_url()))); 3513 GenericPageLoadExtraInfo(dest_url())));
3509 3514
3510 page_load_metrics::PageLoadTiming timing; 3515 page_load_metrics::PageLoadTiming timing;
3511 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. 3516 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time.
3512 timing.first_contentful_paint = base::TimeDelta::FromMilliseconds(2654); 3517 timing.paint_timing.first_contentful_paint =
3518 base::TimeDelta::FromMilliseconds(2654);
3513 page_load_metrics::PageLoadMetricsObserverTestHarness:: 3519 page_load_metrics::PageLoadMetricsObserverTestHarness::
3514 PopulateRequiredTimingFields(&timing); 3520 PopulateRequiredTimingFields(&timing);
3515 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); 3521 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url()));
3516 3522
3517 histogram_tester().ExpectTotalCount( 3523 histogram_tester().ExpectTotalCount(
3518 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1); 3524 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1);
3519 histogram_tester().ExpectUniqueSample( 3525 histogram_tester().ExpectUniqueSample(
3520 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1654, 1); 3526 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1654, 1);
3521 } 3527 }
3522 3528
(...skipping 24 matching lines...) Expand all
3547 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), 3553 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(),
3548 GetActiveWebContents()); 3554 GetActiveWebContents());
3549 observer.SetNavigationStartTicksForTesting(clock->NowTicks()); 3555 observer.SetNavigationStartTicksForTesting(clock->NowTicks());
3550 3556
3551 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING, 3557 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING,
3552 observer.OnHidden(page_load_metrics::PageLoadTiming(), 3558 observer.OnHidden(page_load_metrics::PageLoadTiming(),
3553 GenericPageLoadExtraInfo(dest_url()))); 3559 GenericPageLoadExtraInfo(dest_url())));
3554 3560
3555 page_load_metrics::PageLoadTiming timing; 3561 page_load_metrics::PageLoadTiming timing;
3556 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. 3562 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time.
3557 timing.first_contentful_paint = base::TimeDelta::FromMilliseconds(2362); 3563 timing.paint_timing.first_contentful_paint =
3564 base::TimeDelta::FromMilliseconds(2362);
3558 page_load_metrics::PageLoadMetricsObserverTestHarness:: 3565 page_load_metrics::PageLoadMetricsObserverTestHarness::
3559 PopulateRequiredTimingFields(&timing); 3566 PopulateRequiredTimingFields(&timing);
3560 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); 3567 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url()));
3561 3568
3562 histogram_tester().ExpectTotalCount( 3569 histogram_tester().ExpectTotalCount(
3563 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Hidden", 0); 3570 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Hidden", 0);
3564 histogram_tester().ExpectTotalCount( 3571 histogram_tester().ExpectTotalCount(
3565 "Prerender.none_PerceivedTTFCPRecorded.Hidden", 1); 3572 "Prerender.none_PerceivedTTFCPRecorded.Hidden", 1);
3566 3573
3567 // Check that the prerender didn't happen with a defined origin. 3574 // Check that the prerender didn't happen with a defined origin.
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
3787 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents, 3794 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents,
3788 "DidDisplayReallyPass()", 3795 "DidDisplayReallyPass()",
3789 &display_test_result)); 3796 &display_test_result));
3790 ASSERT_TRUE(display_test_result); 3797 ASSERT_TRUE(display_test_result);
3791 } 3798 }
3792 #endif // !defined(DISABLE_NACL) 3799 #endif // !defined(DISABLE_NACL)
3793 3800
3794 } // namespace prerender 3801 } // namespace prerender
3795 3802
3796 #endif // !defined(OS_MACOSX) || !defined(ADDRESS_SANITIZER) 3803 #endif // !defined(OS_MACOSX) || !defined(ADDRESS_SANITIZER)
OLDNEW
« no previous file with comments | « chrome/browser/page_load_metrics/page_load_tracker.cc ('k') | chrome/common/page_load_metrics/page_load_metrics_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698