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 <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
635 EXPECT_TRUE(AddSimplePrerender(url)); | 635 EXPECT_TRUE(AddSimplePrerender(url)); |
636 EXPECT_EQ(prerender_contents1, | 636 EXPECT_EQ(prerender_contents1, |
637 prerender_manager()->next_prerender_contents()); | 637 prerender_manager()->next_prerender_contents()); |
638 EXPECT_FALSE(prerender_contents1->prerendering_has_started()); | 638 EXPECT_FALSE(prerender_contents1->prerendering_has_started()); |
639 | 639 |
640 std::unique_ptr<PrerenderContents> entry = | 640 std::unique_ptr<PrerenderContents> entry = |
641 prerender_manager()->FindAndUseEntry(url); | 641 prerender_manager()->FindAndUseEntry(url); |
642 ASSERT_EQ(prerender_contents, entry.get()); | 642 ASSERT_EQ(prerender_contents, entry.get()); |
643 } | 643 } |
644 | 644 |
| 645 // Make sure that if queue a request, and a second prerender request for the |
| 646 // same URL comes in, that the second request attaches to the first prerender, |
| 647 // and we don't use the second prerender contents. |
| 648 // This test is the same as the "DuplicateTest" above, but for NoStatePrefetch. |
| 649 TEST_F(PrerenderTest, DuplicateTest_NoStatePrefetch) { |
| 650 RestorePrerenderMode restore_prerender_mode; |
| 651 prerender_manager()->SetMode( |
| 652 PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH); |
| 653 |
| 654 SetConcurrency(2); |
| 655 GURL url("http://www.google.com/"); |
| 656 DummyPrerenderContents* prerender_contents = |
| 657 prerender_manager()->CreateNextPrerenderContents(url, FINAL_STATUS_USED); |
| 658 EXPECT_TRUE(AddSimplePrerender(url)); |
| 659 EXPECT_FALSE(prerender_manager()->next_prerender_contents()); |
| 660 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 661 |
| 662 DummyPrerenderContents* prerender_contents1 = |
| 663 prerender_manager()->CreateNextPrerenderContents( |
| 664 url, FINAL_STATUS_MANAGER_SHUTDOWN); |
| 665 EXPECT_TRUE(AddSimplePrerender(url)); |
| 666 EXPECT_EQ(prerender_contents1, |
| 667 prerender_manager()->next_prerender_contents()); |
| 668 EXPECT_FALSE(prerender_contents1->prerendering_has_started()); |
| 669 |
| 670 std::unique_ptr<PrerenderContents> entry = |
| 671 prerender_manager()->FindAndUseEntry(url); |
| 672 ASSERT_EQ(prerender_contents, entry.get()); |
| 673 } |
| 674 |
645 // Ensure that we expire a prerendered page after the max. permitted time. | 675 // Ensure that we expire a prerendered page after the max. permitted time. |
646 TEST_F(PrerenderTest, ExpireTest) { | 676 TEST_F(PrerenderTest, ExpireTest) { |
647 base::SimpleTestTickClock* tick_clock = | 677 base::SimpleTestTickClock* tick_clock = |
648 OverridePrerenderManagerTimeTicks(prerender_manager()); | 678 OverridePrerenderManagerTimeTicks(prerender_manager()); |
649 GURL url("http://www.google.com/"); | 679 GURL url("http://www.google.com/"); |
650 DummyPrerenderContents* prerender_contents = | 680 DummyPrerenderContents* prerender_contents = |
651 prerender_manager()->CreateNextPrerenderContents( | 681 prerender_manager()->CreateNextPrerenderContents( |
652 url, | 682 url, |
653 FINAL_STATUS_TIMED_OUT); | 683 FINAL_STATUS_TIMED_OUT); |
654 EXPECT_TRUE(AddSimplePrerender(url)); | 684 EXPECT_TRUE(AddSimplePrerender(url)); |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
787 TEST_F(PrerenderTest, NoStatePrefetchDuplicate) { | 817 TEST_F(PrerenderTest, NoStatePrefetchDuplicate) { |
788 const GURL kUrl("http://www.google.com/"); | 818 const GURL kUrl("http://www.google.com/"); |
789 | 819 |
790 RestorePrerenderMode restore_prerender_mode; | 820 RestorePrerenderMode restore_prerender_mode; |
791 prerender_manager()->SetMode( | 821 prerender_manager()->SetMode( |
792 PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH); | 822 PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH); |
793 base::SimpleTestTickClock* tick_clock = | 823 base::SimpleTestTickClock* tick_clock = |
794 OverridePrerenderManagerTimeTicks(prerender_manager()); | 824 OverridePrerenderManagerTimeTicks(prerender_manager()); |
795 | 825 |
796 // Prefetch the url once. | 826 // Prefetch the url once. |
797 prerender_manager()->CreateNextPrerenderContents( | 827 prerender_manager()->CreateNextPrerenderContents(kUrl, ORIGIN_OMNIBOX, |
798 kUrl, ORIGIN_OMNIBOX, FINAL_STATUS_MANAGER_SHUTDOWN); | 828 FINAL_STATUS_CANCELLED); |
799 EXPECT_TRUE( | 829 EXPECT_TRUE( |
800 prerender_manager()->AddPrerenderFromOmnibox(kUrl, nullptr, gfx::Size())); | 830 prerender_manager()->AddPrerenderFromOmnibox(kUrl, nullptr, gfx::Size())); |
| 831 // Cancel the prerender so that it is not reused. |
| 832 prerender_manager()->CancelAllPrerenders(); |
801 | 833 |
802 prerender_manager()->CreateNextPrerenderContents( | 834 prerender_manager()->CreateNextPrerenderContents( |
803 kUrl, ORIGIN_OMNIBOX, FINAL_STATUS_MANAGER_SHUTDOWN); | 835 kUrl, ORIGIN_OMNIBOX, FINAL_STATUS_MANAGER_SHUTDOWN); |
804 | 836 |
805 // Prefetching again before time_to_live aborts, because it is a duplicate. | 837 // Prefetching again before time_to_live aborts, because it is a duplicate. |
806 tick_clock->Advance(base::TimeDelta::FromSeconds(1)); | 838 tick_clock->Advance(base::TimeDelta::FromSeconds(1)); |
807 EXPECT_FALSE( | 839 EXPECT_FALSE( |
808 prerender_manager()->AddPrerenderFromOmnibox(kUrl, nullptr, gfx::Size())); | 840 prerender_manager()->AddPrerenderFromOmnibox(kUrl, nullptr, gfx::Size())); |
809 | 841 |
810 // Prefetching after time_to_live succeeds. | 842 // Prefetching after time_to_live succeeds. |
(...skipping 1137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1948 prerender_contents->SetPrerenderMode(PREFETCH_ONLY); | 1980 prerender_contents->SetPrerenderMode(PREFETCH_ONLY); |
1949 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("GET")); | 1981 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("GET")); |
1950 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("HEAD")); | 1982 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("HEAD")); |
1951 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("OPTIONS")); | 1983 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("OPTIONS")); |
1952 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("POST")); | 1984 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("POST")); |
1953 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("TRACE")); | 1985 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("TRACE")); |
1954 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("WHATEVER")); | 1986 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("WHATEVER")); |
1955 } | 1987 } |
1956 | 1988 |
1957 } // namespace prerender | 1989 } // namespace prerender |
OLD | NEW |