OLD | NEW |
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 3416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3427 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 3427 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
3428 | 3428 |
3429 base::TimeTicks load_start = clock->NowTicks(); | 3429 base::TimeTicks load_start = clock->NowTicks(); |
3430 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3430 clock->Advance(base::TimeDelta::FromSeconds(1)); |
3431 NavigateToDestURL(); | 3431 NavigateToDestURL(); |
3432 | 3432 |
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::mojom::PageLoadTiming timing; |
| 3438 page_load_metrics::InitPageLoadTimingForTest(&timing); |
3438 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3439 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
3439 timing.paint_timing.first_contentful_paint = | 3440 timing.paint_timing->first_contentful_paint = |
3440 base::TimeDelta::FromMilliseconds(2654); | 3441 base::TimeDelta::FromMilliseconds(2654); |
3441 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3442 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
3442 PopulateRequiredTimingFields(&timing); | 3443 PopulateRequiredTimingFields(&timing); |
3443 observer.OnFirstContentfulPaintInPage(timing, | 3444 observer.OnFirstContentfulPaintInPage(timing, |
3444 GenericPageLoadExtraInfo(dest_url())); | 3445 GenericPageLoadExtraInfo(dest_url())); |
3445 | 3446 |
3446 histogram_tester().ExpectTotalCount( | 3447 histogram_tester().ExpectTotalCount( |
3447 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); | 3448 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); |
3448 histogram_tester().ExpectUniqueSample( | 3449 histogram_tester().ExpectUniqueSample( |
3449 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1); | 3450 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1); |
(...skipping 19 matching lines...) Expand all Loading... |
3469 base::TimeTicks load_start = clock->NowTicks(); | 3470 base::TimeTicks load_start = clock->NowTicks(); |
3470 EnableJavascriptCalls(); | 3471 EnableJavascriptCalls(); |
3471 PrerenderTestURL(url, FINAL_STATUS_USED, 1); | 3472 PrerenderTestURL(url, FINAL_STATUS_USED, 1); |
3472 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3473 clock->Advance(base::TimeDelta::FromSeconds(1)); |
3473 | 3474 |
3474 NavigateToDestURL(); | 3475 NavigateToDestURL(); |
3475 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3476 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
3476 GetActiveWebContents()); | 3477 GetActiveWebContents()); |
3477 observer.SetNavigationStartTicksForTesting(load_start); | 3478 observer.SetNavigationStartTicksForTesting(load_start); |
3478 | 3479 |
3479 page_load_metrics::PageLoadTiming timing; | 3480 page_load_metrics::mojom::PageLoadTiming timing; |
| 3481 page_load_metrics::InitPageLoadTimingForTest(&timing); |
3480 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3482 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
3481 timing.paint_timing.first_contentful_paint = | 3483 timing.paint_timing->first_contentful_paint = |
3482 base::TimeDelta::FromMilliseconds(2361); | 3484 base::TimeDelta::FromMilliseconds(2361); |
3483 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3485 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
3484 PopulateRequiredTimingFields(&timing); | 3486 PopulateRequiredTimingFields(&timing); |
3485 observer.OnFirstContentfulPaintInPage(timing, | 3487 observer.OnFirstContentfulPaintInPage(timing, |
3486 GenericPageLoadExtraInfo(dest_url())); | 3488 GenericPageLoadExtraInfo(dest_url())); |
3487 | 3489 |
3488 histogram_tester().ExpectTotalCount( | 3490 histogram_tester().ExpectTotalCount( |
3489 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); | 3491 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); |
3490 // If the first prerender had been used, the perceived TTFCP would have been | 3492 // If the first prerender had been used, the perceived TTFCP would have been |
3491 // under a second: 2362ms - 2 sec worth of Advance(). | 3493 // under a second: 2362ms - 2 sec worth of Advance(). |
(...skipping 19 matching lines...) Expand all Loading... |
3511 base::TimeTicks load_start = clock->NowTicks(); | 3513 base::TimeTicks load_start = clock->NowTicks(); |
3512 PrerenderTestURL(url, FINAL_STATUS_USED, 1); | 3514 PrerenderTestURL(url, FINAL_STATUS_USED, 1); |
3513 | 3515 |
3514 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3516 clock->Advance(base::TimeDelta::FromSeconds(1)); |
3515 NavigateToDestURL(); | 3517 NavigateToDestURL(); |
3516 | 3518 |
3517 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3519 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
3518 GetActiveWebContents()); | 3520 GetActiveWebContents()); |
3519 observer.SetNavigationStartTicksForTesting(load_start); | 3521 observer.SetNavigationStartTicksForTesting(load_start); |
3520 | 3522 |
3521 page_load_metrics::PageLoadTiming timing; | 3523 page_load_metrics::mojom::PageLoadTiming timing; |
| 3524 page_load_metrics::InitPageLoadTimingForTest(&timing); |
3522 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3525 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
3523 timing.paint_timing.first_contentful_paint = | 3526 timing.paint_timing->first_contentful_paint = |
3524 base::TimeDelta::FromMilliseconds(2361); | 3527 base::TimeDelta::FromMilliseconds(2361); |
3525 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3528 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
3526 PopulateRequiredTimingFields(&timing); | 3529 PopulateRequiredTimingFields(&timing); |
3527 observer.OnFirstContentfulPaintInPage(timing, | 3530 observer.OnFirstContentfulPaintInPage(timing, |
3528 GenericPageLoadExtraInfo(dest_url())); | 3531 GenericPageLoadExtraInfo(dest_url())); |
3529 | 3532 |
3530 histogram_tester().ExpectTotalCount( | 3533 histogram_tester().ExpectTotalCount( |
3531 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); | 3534 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); |
3532 // If the timed out had been used, the perceived TTFCP would have been | 3535 // If the timed out had been used, the perceived TTFCP would have been |
3533 // negative. | 3536 // negative. |
(...skipping 21 matching lines...) Expand all Loading... |
3555 PrerenderTestURL(url, FINAL_STATUS_NAVIGATION_UNCOMMITTED, 0); | 3558 PrerenderTestURL(url, FINAL_STATUS_NAVIGATION_UNCOMMITTED, 0); |
3556 prerender_start_loop.Run(); | 3559 prerender_start_loop.Run(); |
3557 | 3560 |
3558 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3561 clock->Advance(base::TimeDelta::FromSeconds(1)); |
3559 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, false); | 3562 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, false); |
3560 | 3563 |
3561 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3564 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
3562 GetActiveWebContents()); | 3565 GetActiveWebContents()); |
3563 observer.SetNavigationStartTicksForTesting(clock->NowTicks()); | 3566 observer.SetNavigationStartTicksForTesting(clock->NowTicks()); |
3564 | 3567 |
3565 page_load_metrics::PageLoadTiming timing; | 3568 page_load_metrics::mojom::PageLoadTiming timing; |
| 3569 page_load_metrics::InitPageLoadTimingForTest(&timing); |
3566 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3570 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
3567 timing.paint_timing.first_contentful_paint = | 3571 timing.paint_timing->first_contentful_paint = |
3568 base::TimeDelta::FromMilliseconds(2362); | 3572 base::TimeDelta::FromMilliseconds(2362); |
3569 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3573 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
3570 PopulateRequiredTimingFields(&timing); | 3574 PopulateRequiredTimingFields(&timing); |
3571 observer.OnFirstContentfulPaintInPage(timing, | 3575 observer.OnFirstContentfulPaintInPage(timing, |
3572 GenericPageLoadExtraInfo(dest_url())); | 3576 GenericPageLoadExtraInfo(dest_url())); |
3573 | 3577 |
3574 histogram_tester().ExpectTotalCount( | 3578 histogram_tester().ExpectTotalCount( |
3575 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Visible", 0); | 3579 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Visible", 0); |
3576 histogram_tester().ExpectTotalCount( | 3580 histogram_tester().ExpectTotalCount( |
3577 "Prerender.none_PerceivedTTFCPRecorded.Visible", 1); | 3581 "Prerender.none_PerceivedTTFCPRecorded.Visible", 1); |
(...skipping 27 matching lines...) Expand all Loading... |
3605 EnableJavascriptCalls(); | 3609 EnableJavascriptCalls(); |
3606 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 3610 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
3607 | 3611 |
3608 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3612 clock->Advance(base::TimeDelta::FromSeconds(1)); |
3609 NavigateToDestURL(); | 3613 NavigateToDestURL(); |
3610 | 3614 |
3611 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3615 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
3612 GetActiveWebContents()); | 3616 GetActiveWebContents()); |
3613 observer.SetNavigationStartTicksForTesting(load_start); | 3617 observer.SetNavigationStartTicksForTesting(load_start); |
3614 | 3618 |
3615 page_load_metrics::PageLoadTiming timing; | 3619 page_load_metrics::mojom::PageLoadTiming timing; |
| 3620 page_load_metrics::InitPageLoadTimingForTest(&timing); |
3616 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3621 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
3617 // The FCP time should end up on the edge of the bucket. | 3622 // The FCP time should end up on the edge of the bucket. |
3618 timing.paint_timing.first_contentful_paint = | 3623 timing.paint_timing->first_contentful_paint = |
3619 base::TimeDelta::FromMilliseconds(2654); | 3624 base::TimeDelta::FromMilliseconds(2654); |
3620 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3625 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
3621 PopulateRequiredTimingFields(&timing); | 3626 PopulateRequiredTimingFields(&timing); |
3622 observer.OnFirstContentfulPaintInPage(timing, | 3627 observer.OnFirstContentfulPaintInPage(timing, |
3623 GenericPageLoadExtraInfo(dest_url())); | 3628 GenericPageLoadExtraInfo(dest_url())); |
3624 | 3629 |
3625 histogram_tester().ExpectTotalCount( | 3630 histogram_tester().ExpectTotalCount( |
3626 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); | 3631 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); |
3627 histogram_tester().ExpectUniqueSample( | 3632 histogram_tester().ExpectUniqueSample( |
3628 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1); | 3633 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1); |
3629 } | 3634 } |
3630 | 3635 |
3631 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, FirstContentfulPaintHidden) { | 3636 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, FirstContentfulPaintHidden) { |
3632 GetPrerenderManager()->DisablePageLoadMetricsObserverForTesting(); | 3637 GetPrerenderManager()->DisablePageLoadMetricsObserverForTesting(); |
3633 base::SimpleTestTickClock* clock = OverridePrerenderManagerTimeTicks(); | 3638 base::SimpleTestTickClock* clock = OverridePrerenderManagerTimeTicks(); |
3634 base::TimeTicks load_start = clock->NowTicks(); | 3639 base::TimeTicks load_start = clock->NowTicks(); |
3635 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 3640 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
3636 | 3641 |
3637 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3642 clock->Advance(base::TimeDelta::FromSeconds(1)); |
3638 NavigateToDestURL(); | 3643 NavigateToDestURL(); |
3639 | 3644 |
3640 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3645 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
3641 GetActiveWebContents()); | 3646 GetActiveWebContents()); |
3642 observer.SetNavigationStartTicksForTesting(load_start); | 3647 observer.SetNavigationStartTicksForTesting(load_start); |
3643 | 3648 |
3644 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING, | 3649 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING, |
3645 observer.OnHidden(page_load_metrics::PageLoadTiming(), | 3650 observer.OnHidden(page_load_metrics::mojom::PageLoadTiming(), |
3646 GenericPageLoadExtraInfo(dest_url()))); | 3651 GenericPageLoadExtraInfo(dest_url()))); |
3647 | 3652 |
3648 page_load_metrics::PageLoadTiming timing; | 3653 page_load_metrics::mojom::PageLoadTiming timing; |
| 3654 page_load_metrics::InitPageLoadTimingForTest(&timing); |
3649 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3655 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
3650 timing.paint_timing.first_contentful_paint = | 3656 timing.paint_timing->first_contentful_paint = |
3651 base::TimeDelta::FromMilliseconds(2654); | 3657 base::TimeDelta::FromMilliseconds(2654); |
3652 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3658 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
3653 PopulateRequiredTimingFields(&timing); | 3659 PopulateRequiredTimingFields(&timing); |
3654 observer.OnFirstContentfulPaintInPage(timing, | 3660 observer.OnFirstContentfulPaintInPage(timing, |
3655 GenericPageLoadExtraInfo(dest_url())); | 3661 GenericPageLoadExtraInfo(dest_url())); |
3656 | 3662 |
3657 histogram_tester().ExpectTotalCount( | 3663 histogram_tester().ExpectTotalCount( |
3658 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1); | 3664 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1); |
3659 histogram_tester().ExpectUniqueSample( | 3665 histogram_tester().ExpectUniqueSample( |
3660 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1654, 1); | 3666 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1654, 1); |
(...skipping 20 matching lines...) Expand all Loading... |
3681 prerender_start_loop.Run(); | 3687 prerender_start_loop.Run(); |
3682 | 3688 |
3683 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3689 clock->Advance(base::TimeDelta::FromSeconds(1)); |
3684 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, false); | 3690 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, false); |
3685 | 3691 |
3686 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3692 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
3687 GetActiveWebContents()); | 3693 GetActiveWebContents()); |
3688 observer.SetNavigationStartTicksForTesting(clock->NowTicks()); | 3694 observer.SetNavigationStartTicksForTesting(clock->NowTicks()); |
3689 | 3695 |
3690 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING, | 3696 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING, |
3691 observer.OnHidden(page_load_metrics::PageLoadTiming(), | 3697 observer.OnHidden(page_load_metrics::mojom::PageLoadTiming(), |
3692 GenericPageLoadExtraInfo(dest_url()))); | 3698 GenericPageLoadExtraInfo(dest_url()))); |
3693 | 3699 |
3694 page_load_metrics::PageLoadTiming timing; | 3700 page_load_metrics::mojom::PageLoadTiming timing; |
| 3701 page_load_metrics::InitPageLoadTimingForTest(&timing); |
3695 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3702 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
3696 timing.paint_timing.first_contentful_paint = | 3703 timing.paint_timing->first_contentful_paint = |
3697 base::TimeDelta::FromMilliseconds(2362); | 3704 base::TimeDelta::FromMilliseconds(2362); |
3698 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3705 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
3699 PopulateRequiredTimingFields(&timing); | 3706 PopulateRequiredTimingFields(&timing); |
3700 observer.OnFirstContentfulPaintInPage(timing, | 3707 observer.OnFirstContentfulPaintInPage(timing, |
3701 GenericPageLoadExtraInfo(dest_url())); | 3708 GenericPageLoadExtraInfo(dest_url())); |
3702 | 3709 |
3703 histogram_tester().ExpectTotalCount( | 3710 histogram_tester().ExpectTotalCount( |
3704 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Hidden", 0); | 3711 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Hidden", 0); |
3705 histogram_tester().ExpectTotalCount( | 3712 histogram_tester().ExpectTotalCount( |
3706 "Prerender.none_PerceivedTTFCPRecorded.Hidden", 1); | 3713 "Prerender.none_PerceivedTTFCPRecorded.Hidden", 1); |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3928 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents, | 3935 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents, |
3929 "DidDisplayReallyPass()", | 3936 "DidDisplayReallyPass()", |
3930 &display_test_result)); | 3937 &display_test_result)); |
3931 ASSERT_TRUE(display_test_result); | 3938 ASSERT_TRUE(display_test_result); |
3932 } | 3939 } |
3933 #endif // !defined(DISABLE_NACL) | 3940 #endif // !defined(DISABLE_NACL) |
3934 | 3941 |
3935 } // namespace prerender | 3942 } // namespace prerender |
3936 | 3943 |
3937 #endif // !defined(OS_MACOSX) || !defined(ADDRESS_SANITIZER) | 3944 #endif // !defined(OS_MACOSX) || !defined(ADDRESS_SANITIZER) |
OLD | NEW |