| 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 |