| 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 3417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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::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.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); | 3444 observer.OnFirstContentfulPaint(timing, 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 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 3469 EnableJavascriptCalls(); | 3470 EnableJavascriptCalls(); |
| 3470 PrerenderTestURL(url, FINAL_STATUS_USED, 1); | 3471 PrerenderTestURL(url, FINAL_STATUS_USED, 1); |
| 3471 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3472 clock->Advance(base::TimeDelta::FromSeconds(1)); |
| 3472 | 3473 |
| 3473 NavigateToDestURL(); | 3474 NavigateToDestURL(); |
| 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; |
| 3480 page_load_metrics::InitPageLoadTimingForTest(&timing); |
| 3479 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3481 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
| 3480 timing.paint_timing.first_contentful_paint = | 3482 timing.paint_timing->first_contentful_paint = |
| 3481 base::TimeDelta::FromMilliseconds(2361); | 3483 base::TimeDelta::FromMilliseconds(2361); |
| 3482 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3484 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
| 3483 PopulateRequiredTimingFields(&timing); | 3485 PopulateRequiredTimingFields(&timing); |
| 3484 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); | 3486 observer.OnFirstContentfulPaint(timing, 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( |
| (...skipping 19 matching lines...) Expand all Loading... |
| 3510 PrerenderTestURL(url, FINAL_STATUS_USED, 1); | 3512 PrerenderTestURL(url, FINAL_STATUS_USED, 1); |
| 3511 | 3513 |
| 3512 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3514 clock->Advance(base::TimeDelta::FromSeconds(1)); |
| 3513 NavigateToDestURL(); | 3515 NavigateToDestURL(); |
| 3514 | 3516 |
| 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; |
| 3522 page_load_metrics::InitPageLoadTimingForTest(&timing); |
| 3520 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3523 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
| 3521 timing.paint_timing.first_contentful_paint = | 3524 timing.paint_timing->first_contentful_paint = |
| 3522 base::TimeDelta::FromMilliseconds(2361); | 3525 base::TimeDelta::FromMilliseconds(2361); |
| 3523 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3526 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
| 3524 PopulateRequiredTimingFields(&timing); | 3527 PopulateRequiredTimingFields(&timing); |
| 3525 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); | 3528 observer.OnFirstContentfulPaint(timing, 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( |
| (...skipping 21 matching lines...) Expand all Loading... |
| 3553 prerender_start_loop.Run(); | 3556 prerender_start_loop.Run(); |
| 3554 | 3557 |
| 3555 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3558 clock->Advance(base::TimeDelta::FromSeconds(1)); |
| 3556 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, false); | 3559 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, false); |
| 3557 | 3560 |
| 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; |
| 3566 page_load_metrics::InitPageLoadTimingForTest(&timing); |
| 3563 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3567 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
| 3564 timing.paint_timing.first_contentful_paint = | 3568 timing.paint_timing->first_contentful_paint = |
| 3565 base::TimeDelta::FromMilliseconds(2362); | 3569 base::TimeDelta::FromMilliseconds(2362); |
| 3566 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3570 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
| 3567 PopulateRequiredTimingFields(&timing); | 3571 PopulateRequiredTimingFields(&timing); |
| 3568 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); | 3572 observer.OnFirstContentfulPaint(timing, 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 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 3602 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 3606 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
| 3603 | 3607 |
| 3604 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3608 clock->Advance(base::TimeDelta::FromSeconds(1)); |
| 3605 NavigateToDestURL(); | 3609 NavigateToDestURL(); |
| 3606 | 3610 |
| 3607 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3611 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
| 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; |
| 3616 page_load_metrics::InitPageLoadTimingForTest(&timing); |
| 3612 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3617 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
| 3613 // The FCP time should end up on the edge of the bucket. | 3618 // The FCP time should end up on the edge of the bucket. |
| 3614 timing.paint_timing.first_contentful_paint = | 3619 timing.paint_timing->first_contentful_paint = |
| 3615 base::TimeDelta::FromMilliseconds(2654); | 3620 base::TimeDelta::FromMilliseconds(2654); |
| 3616 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3621 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
| 3617 PopulateRequiredTimingFields(&timing); | 3622 PopulateRequiredTimingFields(&timing); |
| 3618 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); | 3623 observer.OnFirstContentfulPaint(timing, 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(); |
| 3629 base::TimeTicks load_start = clock->NowTicks(); | 3634 base::TimeTicks load_start = clock->NowTicks(); |
| 3630 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 3635 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
| 3631 | 3636 |
| 3632 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3637 clock->Advance(base::TimeDelta::FromSeconds(1)); |
| 3633 NavigateToDestURL(); | 3638 NavigateToDestURL(); |
| 3634 | 3639 |
| 3635 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3640 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
| 3636 GetActiveWebContents()); | 3641 GetActiveWebContents()); |
| 3637 observer.SetNavigationStartTicksForTesting(load_start); | 3642 observer.SetNavigationStartTicksForTesting(load_start); |
| 3638 | 3643 |
| 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; |
| 3649 page_load_metrics::InitPageLoadTimingForTest(&timing); |
| 3644 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3650 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
| 3645 timing.paint_timing.first_contentful_paint = | 3651 timing.paint_timing->first_contentful_paint = |
| 3646 base::TimeDelta::FromMilliseconds(2654); | 3652 base::TimeDelta::FromMilliseconds(2654); |
| 3647 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3653 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
| 3648 PopulateRequiredTimingFields(&timing); | 3654 PopulateRequiredTimingFields(&timing); |
| 3649 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); | 3655 observer.OnFirstContentfulPaint(timing, 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 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 3679 | 3685 |
| 3680 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3686 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
| 3681 GetActiveWebContents()); | 3687 GetActiveWebContents()); |
| 3682 observer.SetNavigationStartTicksForTesting(clock->NowTicks()); | 3688 observer.SetNavigationStartTicksForTesting(clock->NowTicks()); |
| 3683 | 3689 |
| 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; |
| 3695 page_load_metrics::InitPageLoadTimingForTest(&timing); |
| 3689 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3696 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
| 3690 timing.paint_timing.first_contentful_paint = | 3697 timing.paint_timing->first_contentful_paint = |
| 3691 base::TimeDelta::FromMilliseconds(2362); | 3698 base::TimeDelta::FromMilliseconds(2362); |
| 3692 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3699 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
| 3693 PopulateRequiredTimingFields(&timing); | 3700 PopulateRequiredTimingFields(&timing); |
| 3694 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); | 3701 observer.OnFirstContentfulPaint(timing, 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 |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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) |
| OLD | NEW |