| 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 3418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 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.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); |
| 3444 | 3444 |
| 3445 histogram_tester().ExpectTotalCount( | 3445 histogram_tester().ExpectTotalCount( |
| 3446 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); | 3446 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); |
| 3447 histogram_tester().ExpectUniqueSample( | 3447 histogram_tester().ExpectUniqueSample( |
| 3448 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1); | 3448 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1); |
| 3449 } | 3449 } |
| (...skipping 20 matching lines...) Expand all Loading... |
| 3470 PrerenderTestURL(url, FINAL_STATUS_USED, 1); | 3470 PrerenderTestURL(url, FINAL_STATUS_USED, 1); |
| 3471 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3471 clock->Advance(base::TimeDelta::FromSeconds(1)); |
| 3472 | 3472 |
| 3473 NavigateToDestURL(); | 3473 NavigateToDestURL(); |
| 3474 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3474 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
| 3475 GetActiveWebContents()); | 3475 GetActiveWebContents()); |
| 3476 observer.SetNavigationStartTicksForTesting(load_start); | 3476 observer.SetNavigationStartTicksForTesting(load_start); |
| 3477 | 3477 |
| 3478 page_load_metrics::PageLoadTiming timing; | 3478 page_load_metrics::PageLoadTiming timing; |
| 3479 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3479 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
| 3480 timing.paint_timing.first_contentful_paint = | 3480 timing.paint_timing->first_contentful_paint = |
| 3481 base::TimeDelta::FromMilliseconds(2361); | 3481 base::TimeDelta::FromMilliseconds(2361); |
| 3482 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3482 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
| 3483 PopulateRequiredTimingFields(&timing); | 3483 PopulateRequiredTimingFields(&timing); |
| 3484 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); | 3484 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); |
| 3485 | 3485 |
| 3486 histogram_tester().ExpectTotalCount( | 3486 histogram_tester().ExpectTotalCount( |
| 3487 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); | 3487 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); |
| 3488 // If the first prerender had been used, the perceived TTFCP would have been | 3488 // If the first prerender had been used, the perceived TTFCP would have been |
| 3489 // under a second: 2362ms - 2 sec worth of Advance(). | 3489 // under a second: 2362ms - 2 sec worth of Advance(). |
| 3490 histogram_tester().ExpectUniqueSample( | 3490 histogram_tester().ExpectUniqueSample( |
| (...skipping 20 matching lines...) Expand all Loading... |
| 3511 | 3511 |
| 3512 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3512 clock->Advance(base::TimeDelta::FromSeconds(1)); |
| 3513 NavigateToDestURL(); | 3513 NavigateToDestURL(); |
| 3514 | 3514 |
| 3515 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3515 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
| 3516 GetActiveWebContents()); | 3516 GetActiveWebContents()); |
| 3517 observer.SetNavigationStartTicksForTesting(load_start); | 3517 observer.SetNavigationStartTicksForTesting(load_start); |
| 3518 | 3518 |
| 3519 page_load_metrics::PageLoadTiming timing; | 3519 page_load_metrics::PageLoadTiming timing; |
| 3520 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3520 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
| 3521 timing.paint_timing.first_contentful_paint = | 3521 timing.paint_timing->first_contentful_paint = |
| 3522 base::TimeDelta::FromMilliseconds(2361); | 3522 base::TimeDelta::FromMilliseconds(2361); |
| 3523 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3523 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
| 3524 PopulateRequiredTimingFields(&timing); | 3524 PopulateRequiredTimingFields(&timing); |
| 3525 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); | 3525 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); |
| 3526 | 3526 |
| 3527 histogram_tester().ExpectTotalCount( | 3527 histogram_tester().ExpectTotalCount( |
| 3528 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); | 3528 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); |
| 3529 // If the timed out had been used, the perceived TTFCP would have been | 3529 // If the timed out had been used, the perceived TTFCP would have been |
| 3530 // negative. | 3530 // negative. |
| 3531 histogram_tester().ExpectUniqueSample( | 3531 histogram_tester().ExpectUniqueSample( |
| (...skipping 22 matching lines...) Expand all Loading... |
| 3554 | 3554 |
| 3555 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3555 clock->Advance(base::TimeDelta::FromSeconds(1)); |
| 3556 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, false); | 3556 NavigateToDestURLWithDisposition(WindowOpenDisposition::CURRENT_TAB, false); |
| 3557 | 3557 |
| 3558 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3558 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
| 3559 GetActiveWebContents()); | 3559 GetActiveWebContents()); |
| 3560 observer.SetNavigationStartTicksForTesting(clock->NowTicks()); | 3560 observer.SetNavigationStartTicksForTesting(clock->NowTicks()); |
| 3561 | 3561 |
| 3562 page_load_metrics::PageLoadTiming timing; | 3562 page_load_metrics::PageLoadTiming timing; |
| 3563 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3563 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
| 3564 timing.paint_timing.first_contentful_paint = | 3564 timing.paint_timing->first_contentful_paint = |
| 3565 base::TimeDelta::FromMilliseconds(2362); | 3565 base::TimeDelta::FromMilliseconds(2362); |
| 3566 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3566 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
| 3567 PopulateRequiredTimingFields(&timing); | 3567 PopulateRequiredTimingFields(&timing); |
| 3568 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); | 3568 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); |
| 3569 | 3569 |
| 3570 histogram_tester().ExpectTotalCount( | 3570 histogram_tester().ExpectTotalCount( |
| 3571 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Visible", 0); | 3571 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Visible", 0); |
| 3572 histogram_tester().ExpectTotalCount( | 3572 histogram_tester().ExpectTotalCount( |
| 3573 "Prerender.none_PerceivedTTFCPRecorded.Visible", 1); | 3573 "Prerender.none_PerceivedTTFCPRecorded.Visible", 1); |
| 3574 | 3574 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 3604 clock->Advance(base::TimeDelta::FromSeconds(1)); | 3604 clock->Advance(base::TimeDelta::FromSeconds(1)); |
| 3605 NavigateToDestURL(); | 3605 NavigateToDestURL(); |
| 3606 | 3606 |
| 3607 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3607 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
| 3608 GetActiveWebContents()); | 3608 GetActiveWebContents()); |
| 3609 observer.SetNavigationStartTicksForTesting(load_start); | 3609 observer.SetNavigationStartTicksForTesting(load_start); |
| 3610 | 3610 |
| 3611 page_load_metrics::PageLoadTiming timing; | 3611 page_load_metrics::PageLoadTiming timing; |
| 3612 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3612 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
| 3613 // The FCP time should end up on the edge of the bucket. | 3613 // The FCP time should end up on the edge of the bucket. |
| 3614 timing.paint_timing.first_contentful_paint = | 3614 timing.paint_timing->first_contentful_paint = |
| 3615 base::TimeDelta::FromMilliseconds(2654); | 3615 base::TimeDelta::FromMilliseconds(2654); |
| 3616 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3616 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
| 3617 PopulateRequiredTimingFields(&timing); | 3617 PopulateRequiredTimingFields(&timing); |
| 3618 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); | 3618 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); |
| 3619 | 3619 |
| 3620 histogram_tester().ExpectTotalCount( | 3620 histogram_tester().ExpectTotalCount( |
| 3621 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); | 3621 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1); |
| 3622 histogram_tester().ExpectUniqueSample( | 3622 histogram_tester().ExpectUniqueSample( |
| 3623 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1); | 3623 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Visible", 1654, 1); |
| 3624 } | 3624 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 3635 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3635 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
| 3636 GetActiveWebContents()); | 3636 GetActiveWebContents()); |
| 3637 observer.SetNavigationStartTicksForTesting(load_start); | 3637 observer.SetNavigationStartTicksForTesting(load_start); |
| 3638 | 3638 |
| 3639 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING, | 3639 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING, |
| 3640 observer.OnHidden(page_load_metrics::PageLoadTiming(), | 3640 observer.OnHidden(page_load_metrics::PageLoadTiming(), |
| 3641 GenericPageLoadExtraInfo(dest_url()))); | 3641 GenericPageLoadExtraInfo(dest_url()))); |
| 3642 | 3642 |
| 3643 page_load_metrics::PageLoadTiming timing; | 3643 page_load_metrics::PageLoadTiming timing; |
| 3644 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3644 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
| 3645 timing.paint_timing.first_contentful_paint = | 3645 timing.paint_timing->first_contentful_paint = |
| 3646 base::TimeDelta::FromMilliseconds(2654); | 3646 base::TimeDelta::FromMilliseconds(2654); |
| 3647 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3647 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
| 3648 PopulateRequiredTimingFields(&timing); | 3648 PopulateRequiredTimingFields(&timing); |
| 3649 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); | 3649 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); |
| 3650 | 3650 |
| 3651 histogram_tester().ExpectTotalCount( | 3651 histogram_tester().ExpectTotalCount( |
| 3652 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1); | 3652 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1); |
| 3653 histogram_tester().ExpectUniqueSample( | 3653 histogram_tester().ExpectUniqueSample( |
| 3654 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1654, 1); | 3654 "Prerender.websame_PrefetchTTFCP.Warm.Cacheable.Hidden", 1654, 1); |
| 3655 } | 3655 } |
| (...skipping 24 matching lines...) Expand all Loading... |
| 3680 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), | 3680 PrerenderPageLoadMetricsObserver observer(GetPrerenderManager(), |
| 3681 GetActiveWebContents()); | 3681 GetActiveWebContents()); |
| 3682 observer.SetNavigationStartTicksForTesting(clock->NowTicks()); | 3682 observer.SetNavigationStartTicksForTesting(clock->NowTicks()); |
| 3683 | 3683 |
| 3684 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING, | 3684 EXPECT_EQ(page_load_metrics::PageLoadMetricsObserver::CONTINUE_OBSERVING, |
| 3685 observer.OnHidden(page_load_metrics::PageLoadTiming(), | 3685 observer.OnHidden(page_load_metrics::PageLoadTiming(), |
| 3686 GenericPageLoadExtraInfo(dest_url()))); | 3686 GenericPageLoadExtraInfo(dest_url()))); |
| 3687 | 3687 |
| 3688 page_load_metrics::PageLoadTiming timing; | 3688 page_load_metrics::PageLoadTiming timing; |
| 3689 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. | 3689 timing.navigation_start = base::Time::FromDoubleT(1); // Non-null time. |
| 3690 timing.paint_timing.first_contentful_paint = | 3690 timing.paint_timing->first_contentful_paint = |
| 3691 base::TimeDelta::FromMilliseconds(2362); | 3691 base::TimeDelta::FromMilliseconds(2362); |
| 3692 page_load_metrics::PageLoadMetricsObserverTestHarness:: | 3692 page_load_metrics::PageLoadMetricsObserverTestHarness:: |
| 3693 PopulateRequiredTimingFields(&timing); | 3693 PopulateRequiredTimingFields(&timing); |
| 3694 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); | 3694 observer.OnFirstContentfulPaint(timing, GenericPageLoadExtraInfo(dest_url())); |
| 3695 | 3695 |
| 3696 histogram_tester().ExpectTotalCount( | 3696 histogram_tester().ExpectTotalCount( |
| 3697 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Hidden", 0); | 3697 "Prerender.none_PrefetchTTFCP.Warm.Cacheable.Hidden", 0); |
| 3698 histogram_tester().ExpectTotalCount( | 3698 histogram_tester().ExpectTotalCount( |
| 3699 "Prerender.none_PerceivedTTFCPRecorded.Hidden", 1); | 3699 "Prerender.none_PerceivedTTFCPRecorded.Hidden", 1); |
| 3700 | 3700 |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3921 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents, | 3921 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents, |
| 3922 "DidDisplayReallyPass()", | 3922 "DidDisplayReallyPass()", |
| 3923 &display_test_result)); | 3923 &display_test_result)); |
| 3924 ASSERT_TRUE(display_test_result); | 3924 ASSERT_TRUE(display_test_result); |
| 3925 } | 3925 } |
| 3926 #endif // !defined(DISABLE_NACL) | 3926 #endif // !defined(DISABLE_NACL) |
| 3927 | 3927 |
| 3928 } // namespace prerender | 3928 } // namespace prerender |
| 3929 | 3929 |
| 3930 #endif // !defined(OS_MACOSX) || !defined(ADDRESS_SANITIZER) | 3930 #endif // !defined(OS_MACOSX) || !defined(ADDRESS_SANITIZER) |
| OLD | NEW |