| 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 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 291 expected_final_status_(expected_final_status) {} | 291 expected_final_status_(expected_final_status) {} |
| 292 | 292 |
| 293 DummyPrerenderContents::~DummyPrerenderContents() { | 293 DummyPrerenderContents::~DummyPrerenderContents() { |
| 294 EXPECT_EQ(expected_final_status_, final_status()); | 294 EXPECT_EQ(expected_final_status_, final_status()); |
| 295 test_prerender_manager_->DummyPrerenderContentsDestroyed(-1, route_id_); | 295 test_prerender_manager_->DummyPrerenderContentsDestroyed(-1, route_id_); |
| 296 } | 296 } |
| 297 | 297 |
| 298 void DummyPrerenderContents::StartPrerendering( | 298 void DummyPrerenderContents::StartPrerendering( |
| 299 const gfx::Rect& bounds, | 299 const gfx::Rect& bounds, |
| 300 content::SessionStorageNamespace* session_storage_namespace) { | 300 content::SessionStorageNamespace* session_storage_namespace) { |
| 301 // In the base PrerenderContents implementation, StartPrerendering will | |
| 302 // be called even when the PrerenderManager is part of the control group, | |
| 303 // but it will early exit before actually creating a new RenderView if | |
| 304 // |is_control_group| is true; | |
| 305 load_start_time_ = test_prerender_manager_->GetCurrentTimeTicks(); | 301 load_start_time_ = test_prerender_manager_->GetCurrentTimeTicks(); |
| 306 if (!test_prerender_manager_->IsControlGroup()) { | 302 prerendering_has_started_ = true; |
| 307 prerendering_has_started_ = true; | 303 test_prerender_manager_->DummyPrerenderContentsStarted(-1, route_id_, this); |
| 308 test_prerender_manager_->DummyPrerenderContentsStarted(-1, route_id_, this); | 304 NotifyPrerenderStart(); |
| 309 NotifyPrerenderStart(); | |
| 310 } | |
| 311 } | 305 } |
| 312 | 306 |
| 313 class PrerenderTest : public testing::Test { | 307 class PrerenderTest : public testing::Test { |
| 314 public: | 308 public: |
| 315 static const int kDefaultChildId = -1; | 309 static const int kDefaultChildId = -1; |
| 316 static const int kDefaultRenderViewRouteId = -1; | 310 static const int kDefaultRenderViewRouteId = -1; |
| 317 | 311 |
| 318 PrerenderTest() | 312 PrerenderTest() |
| 319 : ui_thread_(BrowserThread::UI, &message_loop_), | 313 : ui_thread_(BrowserThread::UI, &message_loop_), |
| 320 prerender_manager_(new UnitTestPrerenderManager(&profile_)), | 314 prerender_manager_(new UnitTestPrerenderManager(&profile_)), |
| (...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 907 // Use the referring prerender. | 901 // Use the referring prerender. |
| 908 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 902 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 909 std::unique_ptr<PrerenderContents> entry = | 903 std::unique_ptr<PrerenderContents> entry = |
| 910 prerender_manager()->FindAndUseEntry(url); | 904 prerender_manager()->FindAndUseEntry(url); |
| 911 ASSERT_EQ(prerender_contents, entry.get()); | 905 ASSERT_EQ(prerender_contents, entry.get()); |
| 912 | 906 |
| 913 // The pending prerender doesn't start. | 907 // The pending prerender doesn't start. |
| 914 EXPECT_FALSE(LauncherHasRunningPrerender(child_id, last_prerender_id())); | 908 EXPECT_FALSE(LauncherHasRunningPrerender(child_id, last_prerender_id())); |
| 915 } | 909 } |
| 916 | 910 |
| 917 // Tests that a PrerenderManager created for a browser session in the control | |
| 918 // group works as expected. | |
| 919 TEST_F(PrerenderTest, ControlGroup) { | |
| 920 RestorePrerenderMode restore_prerender_mode; | |
| 921 PrerenderManager::SetMode( | |
| 922 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); | |
| 923 GURL url("http://www.google.com/"); | |
| 924 DummyPrerenderContents* prerender_contents = | |
| 925 prerender_manager()->CreateNextPrerenderContents( | |
| 926 url, | |
| 927 FINAL_STATUS_MANAGER_SHUTDOWN); | |
| 928 EXPECT_TRUE(AddSimplePrerender(url)); | |
| 929 EXPECT_FALSE(prerender_contents->prerendering_has_started()); | |
| 930 } | |
| 931 | |
| 932 // Tests that prerendering is cancelled when the source render view does not | 911 // Tests that prerendering is cancelled when the source render view does not |
| 933 // exist. On failure, the DCHECK in CreatePrerenderContents() above should be | 912 // exist. On failure, the DCHECK in CreatePrerenderContents() above should be |
| 934 // triggered. | 913 // triggered. |
| 935 TEST_F(PrerenderTest, SourceRenderViewClosed) { | 914 TEST_F(PrerenderTest, SourceRenderViewClosed) { |
| 936 GURL url("http://www.google.com/"); | 915 GURL url("http://www.google.com/"); |
| 937 prerender_manager()->CreateNextPrerenderContents( | 916 prerender_manager()->CreateNextPrerenderContents( |
| 938 url, | 917 url, |
| 939 FINAL_STATUS_MANAGER_SHUTDOWN); | 918 FINAL_STATUS_MANAGER_SHUTDOWN); |
| 940 prerender_link_manager()->OnAddPrerender( | 919 prerender_link_manager()->OnAddPrerender( |
| 941 100, GetNextPrerenderID(), url, kDefaultRelTypes, Referrer(), kSize, 200); | 920 100, GetNextPrerenderID(), url, kDefaultRelTypes, Referrer(), kSize, 200); |
| (...skipping 843 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1785 prerender_contents->SetPrerenderMode(PREFETCH_ONLY); | 1764 prerender_contents->SetPrerenderMode(PREFETCH_ONLY); |
| 1786 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("GET")); | 1765 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("GET")); |
| 1787 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("HEAD")); | 1766 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("HEAD")); |
| 1788 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("OPTIONS")); | 1767 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("OPTIONS")); |
| 1789 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("POST")); | 1768 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("POST")); |
| 1790 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("TRACE")); | 1769 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("TRACE")); |
| 1791 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("WHATEVER")); | 1770 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("WHATEVER")); |
| 1792 } | 1771 } |
| 1793 | 1772 |
| 1794 } // namespace prerender | 1773 } // namespace prerender |
| OLD | NEW |