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

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

Issue 2859393002: Report page load timing information for child frames. (Closed)
Patch Set: rebase Created 3 years, 7 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 3422 matching lines...) Expand 10 before | Expand all | Expand 10 after
3433 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), 3433 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(),
3434 GetActiveWebContents()); 3434 GetActiveWebContents());
3435 observer.SetNavigationStartTicksForTesting(load_start); 3435 observer.SetNavigationStartTicksForTesting(load_start);
3436 3436
3437 page_load_metrics::PageLoadTiming timing; 3437 page_load_metrics::PageLoadTiming timing;
3438 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. 3438 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time.
3439 timing.paint_timing.first_contentful_paint = 3439 timing.paint_timing.first_contentful_paint =
3440 base::TimeDelta::FromMilliseconds(2654); 3440 base::TimeDelta::FromMilliseconds(2654);
3441 page_load_metrics::PageLoadMetricsObserverTestHarness:: 3441 page_load_metrics::PageLoadMetricsObserverTestHarness::
3442 PopulateRequiredTimingFields(&timing); 3442 PopulateRequiredTimingFields(&timing);
3443 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); 3443 observer.OnFirstContentfulPaintInPage(timing,
3444 GenericPageLoadExtraInfo(dest_url()));
3444 3445
3445 histogram_tester().ExpectTotalCount( 3446 histogram_tester().ExpectTotalCount(
3446 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); 3447 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1);
3447 histogram_tester().ExpectUniqueSample( 3448 histogram_tester().ExpectUniqueSample(
3448 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1); 3449 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1);
3449 } 3450 }
3450 3451
3451 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, FirstContentfulPaintTimingReuse) { 3452 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, FirstContentfulPaintTimingReuse) {
3452 GetPrerenderManager()->DisablePageLoadMetricsObserverForTesting(); 3453 GetPrerenderManager()->DisablePageLoadMetricsObserverForTesting();
3453 base::SimpleTestTickClock* clock = OverridePrerenderManagerTimeTicks(); 3454 base::SimpleTestTickClock* clock = OverridePrerenderManagerTimeTicks();
(...skipping 20 matching lines...) Expand all
3474 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), 3475 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(),
3475 GetActiveWebContents()); 3476 GetActiveWebContents());
3476 observer.SetNavigationStartTicksForTesting(load_start); 3477 observer.SetNavigationStartTicksForTesting(load_start);
3477 3478
3478 page_load_metrics::PageLoadTiming timing; 3479 page_load_metrics::PageLoadTiming timing;
3479 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. 3480 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time.
3480 timing.paint_timing.first_contentful_paint = 3481 timing.paint_timing.first_contentful_paint =
3481 base::TimeDelta::FromMilliseconds(2361); 3482 base::TimeDelta::FromMilliseconds(2361);
3482 page_load_metrics::PageLoadMetricsObserverTestHarness:: 3483 page_load_metrics::PageLoadMetricsObserverTestHarness::
3483 PopulateRequiredTimingFields(&timing); 3484 PopulateRequiredTimingFields(&timing);
3484 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); 3485 observer.OnFirstContentfulPaintInPage(timing,
3486 GenericPageLoadExtraInfo(dest_url()));
3485 3487
3486 histogram_tester().ExpectTotalCount( 3488 histogram_tester().ExpectTotalCount(
3487 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); 3489 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1);
3488 // If the first prerender had been used, the perceived TTFCP would have been 3490 // If the first prerender had been used, the perceived TTFCP would have been
3489 // under a second: 2362ms - 2 sec worth of Advance(). 3491 // under a second: 2362ms - 2 sec worth of Advance().
3490 histogram_tester().ExpectUniqueSample( 3492 histogram_tester().ExpectUniqueSample(
3491 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1361, 1); 3493 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1361, 1);
3492 } 3494 }
3493 3495
3494 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 3496 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
(...skipping 20 matching lines...) Expand all
3515 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), 3517 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(),
3516 GetActiveWebContents()); 3518 GetActiveWebContents());
3517 observer.SetNavigationStartTicksForTesting(load_start); 3519 observer.SetNavigationStartTicksForTesting(load_start);
3518 3520
3519 page_load_metrics::PageLoadTiming timing; 3521 page_load_metrics::PageLoadTiming timing;
3520 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. 3522 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time.
3521 timing.paint_timing.first_contentful_paint = 3523 timing.paint_timing.first_contentful_paint =
3522 base::TimeDelta::FromMilliseconds(2361); 3524 base::TimeDelta::FromMilliseconds(2361);
3523 page_load_metrics::PageLoadMetricsObserverTestHarness:: 3525 page_load_metrics::PageLoadMetricsObserverTestHarness::
3524 PopulateRequiredTimingFields(&timing); 3526 PopulateRequiredTimingFields(&timing);
3525 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); 3527 observer.OnFirstContentfulPaintInPage(timing,
3528 GenericPageLoadExtraInfo(dest_url()));
3526 3529
3527 histogram_tester().ExpectTotalCount( 3530 histogram_tester().ExpectTotalCount(
3528 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); 3531 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1);
3529 // If the timed out had been used, the perceived TTFCP would have been 3532 // If the timed out had been used, the perceived TTFCP would have been
3530 // negative. 3533 // negative.
3531 histogram_tester().ExpectUniqueSample( 3534 histogram_tester().ExpectUniqueSample(
3532 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1361, 1); 3535 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1361, 1);
3533 } 3536 }
3534 3537
3535 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 3538 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
(...skipping 22 matching lines...) Expand all
3558 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), 3561 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(),
3559 GetActiveWebContents()); 3562 GetActiveWebContents());
3560 observer.SetNavigationStartTicksForTesting(clock->NowTicks()); 3563 observer.SetNavigationStartTicksForTesting(clock->NowTicks());
3561 3564
3562 page_load_metrics::PageLoadTiming timing; 3565 page_load_metrics::PageLoadTiming timing;
3563 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. 3566 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time.
3564 timing.paint_timing.first_contentful_paint = 3567 timing.paint_timing.first_contentful_paint =
3565 base::TimeDelta::FromMilliseconds(2362); 3568 base::TimeDelta::FromMilliseconds(2362);
3566 page_load_metrics::PageLoadMetricsObserverTestHarness:: 3569 page_load_metrics::PageLoadMetricsObserverTestHarness::
3567 PopulateRequiredTimingFields(&timing); 3570 PopulateRequiredTimingFields(&timing);
3568 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); 3571 observer.OnFirstContentfulPaintInPage(timing,
3572 GenericPageLoadExtraInfo(dest_url()));
3569 3573
3570 histogram_tester().ExpectTotalCount( 3574 histogram_tester().ExpectTotalCount(
3571 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Visible", 0); 3575 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Visible", 0);
3572 histogram_tester().ExpectTotalCount( 3576 histogram_tester().ExpectTotalCount(
3573 "Prerender.none_PerceivedTTFCPRecorded.Visible", 1); 3577 "Prerender.none_PerceivedTTFCPRecorded.Visible", 1);
3574 3578
3575 // Check that the prerender didn't happen with a defined origin. 3579 // Check that the prerender didn't happen with a defined origin.
3576 histogram_tester().ExpectTotalCount( 3580 histogram_tester().ExpectTotalCount(
3577 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 0); 3581 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 0);
3578 histogram_tester().ExpectTotalCount( 3582 histogram_tester().ExpectTotalCount(
(...skipping 29 matching lines...) Expand all
3608 GetActiveWebContents()); 3612 GetActiveWebContents());
3609 observer.SetNavigationStartTicksForTesting(load_start); 3613 observer.SetNavigationStartTicksForTesting(load_start);
3610 3614
3611 page_load_metrics::PageLoadTiming timing; 3615 page_load_metrics::PageLoadTiming timing;
3612 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. 3616 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time.
3613 // The FCP time should end up on the edge of the bucket. 3617 // The FCP time should end up on the edge of the bucket.
3614 timing.paint_timing.first_contentful_paint = 3618 timing.paint_timing.first_contentful_paint =
3615 base::TimeDelta::FromMilliseconds(2654); 3619 base::TimeDelta::FromMilliseconds(2654);
3616 page_load_metrics::PageLoadMetricsObserverTestHarness:: 3620 page_load_metrics::PageLoadMetricsObserverTestHarness::
3617 PopulateRequiredTimingFields(&timing); 3621 PopulateRequiredTimingFields(&timing);
3618 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); 3622 observer.OnFirstContentfulPaintInPage(timing,
3623 GenericPageLoadExtraInfo(dest_url()));
3619 3624
3620 histogram_tester().ExpectTotalCount( 3625 histogram_tester().ExpectTotalCount(
3621 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); 3626 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1);
3622 histogram_tester().ExpectUniqueSample( 3627 histogram_tester().ExpectUniqueSample(
3623 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1); 3628 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1);
3624 } 3629 }
3625 3630
3626 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, FirstContentfulPaintHidden) { 3631 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, FirstContentfulPaintHidden) {
3627 GetPrerenderManager()->DisablePageLoadMetricsObserverForTesting(); 3632 GetPrerenderManager()->DisablePageLoadMetricsObserverForTesting();
3628 base::SimpleTestTickClock* clock = OverridePrerenderManagerTimeTicks(); 3633 base::SimpleTestTickClock* clock = OverridePrerenderManagerTimeTicks();
(...skipping 10 matching lines...) Expand all
3639 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING, 3644 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING,
3640 observer.OnHidden(page_load_metrics::PageLoadTiming(), 3645 observer.OnHidden(page_load_metrics::PageLoadTiming(),
3641 GenericPageLoadExtraInfo(dest_url()))); 3646 GenericPageLoadExtraInfo(dest_url())));
3642 3647
3643 page_load_metrics::PageLoadTiming timing; 3648 page_load_metrics::PageLoadTiming timing;
3644 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. 3649 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time.
3645 timing.paint_timing.first_contentful_paint = 3650 timing.paint_timing.first_contentful_paint =
3646 base::TimeDelta::FromMilliseconds(2654); 3651 base::TimeDelta::FromMilliseconds(2654);
3647 page_load_metrics::PageLoadMetricsObserverTestHarness:: 3652 page_load_metrics::PageLoadMetricsObserverTestHarness::
3648 PopulateRequiredTimingFields(&timing); 3653 PopulateRequiredTimingFields(&timing);
3649 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); 3654 observer.OnFirstContentfulPaintInPage(timing,
3655 GenericPageLoadExtraInfo(dest_url()));
3650 3656
3651 histogram_tester().ExpectTotalCount( 3657 histogram_tester().ExpectTotalCount(
3652 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1); 3658 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1);
3653 histogram_tester().ExpectUniqueSample( 3659 histogram_tester().ExpectUniqueSample(
3654 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1654, 1); 3660 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1654, 1);
3655 } 3661 }
3656 3662
3657 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 3663 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
3658 FirstContentfulPaintHiddenNoCommit) { 3664 FirstContentfulPaintHiddenNoCommit) {
3659 GetPrerenderManager()->DisablePageLoadMetricsObserverForTesting(); 3665 GetPrerenderManager()->DisablePageLoadMetricsObserverForTesting();
(...skipping 24 matching lines...) Expand all
3684 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING, 3690 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING,
3685 observer.OnHidden(page_load_metrics::PageLoadTiming(), 3691 observer.OnHidden(page_load_metrics::PageLoadTiming(),
3686 GenericPageLoadExtraInfo(dest_url()))); 3692 GenericPageLoadExtraInfo(dest_url())));
3687 3693
3688 page_load_metrics::PageLoadTiming timing; 3694 page_load_metrics::PageLoadTiming timing;
3689 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. 3695 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time.
3690 timing.paint_timing.first_contentful_paint = 3696 timing.paint_timing.first_contentful_paint =
3691 base::TimeDelta::FromMilliseconds(2362); 3697 base::TimeDelta::FromMilliseconds(2362);
3692 page_load_metrics::PageLoadMetricsObserverTestHarness:: 3698 page_load_metrics::PageLoadMetricsObserverTestHarness::
3693 PopulateRequiredTimingFields(&timing); 3699 PopulateRequiredTimingFields(&timing);
3694 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); 3700 observer.OnFirstContentfulPaintInPage(timing,
3701 GenericPageLoadExtraInfo(dest_url()));
3695 3702
3696 histogram_tester().ExpectTotalCount( 3703 histogram_tester().ExpectTotalCount(
3697 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Hidden", 0); 3704 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Hidden", 0);
3698 histogram_tester().ExpectTotalCount( 3705 histogram_tester().ExpectTotalCount(
3699 "Prerender.none_PerceivedTTFCPRecorded.Hidden", 1); 3706 "Prerender.none_PerceivedTTFCPRecorded.Hidden", 1);
3700 3707
3701 // Check that the prerender didn't happen with a defined origin. 3708 // Check that the prerender didn't happen with a defined origin.
3702 histogram_tester().ExpectTotalCount( 3709 histogram_tester().ExpectTotalCount(
3703 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 0); 3710 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 0);
3704 histogram_tester().ExpectTotalCount( 3711 histogram_tester().ExpectTotalCount(
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
3921 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents, 3928 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents,
3922 "DidDisplayReallyPass()", 3929 "DidDisplayReallyPass()",
3923 &display_test_result)); 3930 &display_test_result));
3924 ASSERT_TRUE(display_test_result); 3931 ASSERT_TRUE(display_test_result);
3925 } 3932 }
3926 #endif // !defined(DISABLE_NACL) 3933 #endif // !defined(DISABLE_NACL)
3927 3934
3928 } // namespace prerender 3935 } // namespace prerender
3929 3936
3930 #endif // !defined(OS_MACOSX) || !defined(ADDRESS_SANITIZER) 3937 #endif // !defined(OS_MACOSX) || !defined(ADDRESS_SANITIZER)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698