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