| 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 "base/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "base/memory/scoped_vector.h" | 6 #include "base/memory/scoped_vector.h" |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "base/stringprintf.h" | 8 #include "base/stringprintf.h" |
| 9 #include "base/time.h" | 9 #include "base/time.h" |
| 10 #include "chrome/browser/prerender/prerender_contents.h" | 10 #include "chrome/browser/prerender/prerender_contents.h" |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 const GURL& url, | 40 const GURL& url, |
| 41 Origin origin, | 41 Origin origin, |
| 42 FinalStatus expected_final_status); | 42 FinalStatus expected_final_status); |
| 43 | 43 |
| 44 virtual ~DummyPrerenderContents() { | 44 virtual ~DummyPrerenderContents() { |
| 45 EXPECT_EQ(expected_final_status_, final_status()); | 45 EXPECT_EQ(expected_final_status_, final_status()); |
| 46 } | 46 } |
| 47 | 47 |
| 48 virtual void StartPrerendering( | 48 virtual void StartPrerendering( |
| 49 int ALLOW_UNUSED creator_child_id, | 49 int ALLOW_UNUSED creator_child_id, |
| 50 int ALLOW_UNUSED prerender_id, |
| 50 const gfx::Size& ALLOW_UNUSED size, | 51 const gfx::Size& ALLOW_UNUSED size, |
| 51 content::SessionStorageNamespace* ALLOW_UNUSED session_storage_namespace, | 52 content::SessionStorageNamespace* ALLOW_UNUSED session_storage_namespace, |
| 52 bool is_control_group) OVERRIDE; | 53 bool is_control_group) OVERRIDE; |
| 53 | 54 |
| 54 virtual bool GetChildId(int* child_id) const OVERRIDE { | 55 virtual bool GetChildId(int* child_id) const OVERRIDE { |
| 55 *child_id = 0; | 56 *child_id = 0; |
| 56 return true; | 57 return true; |
| 57 } | 58 } |
| 58 | 59 |
| 59 virtual bool GetRouteId(int* route_id) const OVERRIDE { | 60 virtual bool GetRouteId(int* route_id) const OVERRIDE { |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 FinalStatus expected_final_status) | 235 FinalStatus expected_final_status) |
| 235 : PrerenderContents(test_prerender_manager, prerender_tracker, | 236 : PrerenderContents(test_prerender_manager, prerender_tracker, |
| 236 NULL, url, Referrer(), origin, | 237 NULL, url, Referrer(), origin, |
| 237 PrerenderManager::kNoExperiment), | 238 PrerenderManager::kNoExperiment), |
| 238 test_prerender_manager_(test_prerender_manager), | 239 test_prerender_manager_(test_prerender_manager), |
| 239 expected_final_status_(expected_final_status) { | 240 expected_final_status_(expected_final_status) { |
| 240 } | 241 } |
| 241 | 242 |
| 242 void DummyPrerenderContents::StartPrerendering( | 243 void DummyPrerenderContents::StartPrerendering( |
| 243 int ALLOW_UNUSED creator_child_id, | 244 int ALLOW_UNUSED creator_child_id, |
| 245 int ALLOW_UNUSED prerender_id, |
| 244 const gfx::Size& ALLOW_UNUSED size, | 246 const gfx::Size& ALLOW_UNUSED size, |
| 245 content::SessionStorageNamespace* ALLOW_UNUSED session_storage_namespace, | 247 content::SessionStorageNamespace* ALLOW_UNUSED session_storage_namespace, |
| 246 bool is_control_group) { | 248 bool is_control_group) { |
| 247 // In the base PrerenderContents implementation, StartPrerendering will | 249 // In the base PrerenderContents implementation, StartPrerendering will |
| 248 // be called even when the PrerenderManager is part of the control group, | 250 // be called even when the PrerenderManager is part of the control group, |
| 249 // but it will early exit before actually creating a new RenderView if | 251 // but it will early exit before actually creating a new RenderView if |
| 250 // |is_control_group| is true; | 252 // |is_control_group| is true; |
| 251 if (!is_control_group) | 253 if (!is_control_group) |
| 252 prerendering_has_started_ = true; | 254 prerendering_has_started_ = true; |
| 253 load_start_time_ = test_prerender_manager_->GetCurrentTimeTicks(); | 255 load_start_time_ = test_prerender_manager_->GetCurrentTimeTicks(); |
| 254 } | 256 } |
| 255 | 257 |
| 256 class PrerenderTest : public testing::Test { | 258 class PrerenderTest : public testing::Test { |
| 257 public: | 259 public: |
| 258 static const int kDefaultChildId = -1; | 260 static const int kDefaultChildId = -1; |
| 261 static const int kDefaultPrerenderId = -1; |
| 259 static const int kDefaultRenderViewRouteId = -1; | 262 static const int kDefaultRenderViewRouteId = -1; |
| 260 | 263 |
| 261 PrerenderTest() : ui_thread_(BrowserThread::UI, &message_loop_), | 264 PrerenderTest() : ui_thread_(BrowserThread::UI, &message_loop_), |
| 262 prerender_manager_( | 265 prerender_manager_( |
| 263 new UnitTestPrerenderManager(prerender_tracker())), | 266 new UnitTestPrerenderManager(prerender_tracker())), |
| 264 prerender_link_manager_( | 267 prerender_link_manager_( |
| 265 new PrerenderLinkManager(prerender_manager_.get())), | 268 new PrerenderLinkManager(prerender_manager_.get())), |
| 266 last_prerender_id_(0) { | 269 last_prerender_id_(0) { |
| 267 // Enable omnibox prerendering. | 270 // Enable omnibox prerendering. |
| 268 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 271 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 GURL url("http://www.google.com/"); | 333 GURL url("http://www.google.com/"); |
| 331 DummyPrerenderContents* prerender_contents = | 334 DummyPrerenderContents* prerender_contents = |
| 332 prerender_manager()->CreateNextPrerenderContents( | 335 prerender_manager()->CreateNextPrerenderContents( |
| 333 url, | 336 url, |
| 334 FINAL_STATUS_USED); | 337 FINAL_STATUS_USED); |
| 335 EXPECT_TRUE(AddSimplePrerender(url)); | 338 EXPECT_TRUE(AddSimplePrerender(url)); |
| 336 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 339 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 337 | 340 |
| 338 scoped_ptr<PrerenderHandle> duplicate_prerender_handle( | 341 scoped_ptr<PrerenderHandle> duplicate_prerender_handle( |
| 339 prerender_manager()->AddPrerenderFromLinkRelPrerender( | 342 prerender_manager()->AddPrerenderFromLinkRelPrerender( |
| 340 kDefaultChildId, kDefaultRenderViewRouteId, url, | 343 kDefaultChildId, kDefaultPrerenderId, kDefaultRenderViewRouteId, url, |
| 341 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); | 344 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); |
| 342 | 345 |
| 343 EXPECT_TRUE(duplicate_prerender_handle->IsValid()); | 346 EXPECT_TRUE(duplicate_prerender_handle->IsValid()); |
| 344 EXPECT_TRUE(duplicate_prerender_handle->IsPrerendering()); | 347 EXPECT_TRUE(duplicate_prerender_handle->IsPrerendering()); |
| 345 | 348 |
| 346 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 349 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
| 347 | 350 |
| 348 EXPECT_FALSE(duplicate_prerender_handle->IsValid()); | 351 EXPECT_FALSE(duplicate_prerender_handle->IsValid()); |
| 349 EXPECT_FALSE(duplicate_prerender_handle->IsPrerendering()); | 352 EXPECT_FALSE(duplicate_prerender_handle->IsPrerendering()); |
| 350 } | 353 } |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 617 | 620 |
| 618 GURL pending_url("http://news.google.com/"); | 621 GURL pending_url("http://news.google.com/"); |
| 619 | 622 |
| 620 DummyPrerenderContents* pending_prerender_contents = | 623 DummyPrerenderContents* pending_prerender_contents = |
| 621 prerender_manager()->CreateNextPrerenderContents( | 624 prerender_manager()->CreateNextPrerenderContents( |
| 622 pending_url, | 625 pending_url, |
| 623 ORIGIN_GWS_PRERENDER, | 626 ORIGIN_GWS_PRERENDER, |
| 624 FINAL_STATUS_USED); | 627 FINAL_STATUS_USED); |
| 625 scoped_ptr<PrerenderHandle> pending_prerender_handle( | 628 scoped_ptr<PrerenderHandle> pending_prerender_handle( |
| 626 prerender_manager()->AddPrerenderFromLinkRelPrerender( | 629 prerender_manager()->AddPrerenderFromLinkRelPrerender( |
| 627 child_id, route_id, pending_url, | 630 child_id, kDefaultPrerenderId, route_id, pending_url, |
| 628 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); | 631 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); |
| 629 DCHECK(pending_prerender_handle.get()); | 632 DCHECK(pending_prerender_handle.get()); |
| 630 EXPECT_TRUE(pending_prerender_handle->IsValid()); | 633 EXPECT_TRUE(pending_prerender_handle->IsValid()); |
| 631 EXPECT_TRUE(pending_prerender_handle->IsPending()); | 634 EXPECT_TRUE(pending_prerender_handle->IsPending()); |
| 632 | 635 |
| 633 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 636 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 634 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 637 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
| 635 | 638 |
| 636 EXPECT_FALSE(pending_prerender_handle->IsPending()); | 639 EXPECT_FALSE(pending_prerender_handle->IsPending()); |
| 637 ASSERT_EQ(pending_prerender_contents, | 640 ASSERT_EQ(pending_prerender_contents, |
| (...skipping 16 matching lines...) Expand all Loading... |
| 654 // This pending URL has an unsupported scheme, and won't be able | 657 // This pending URL has an unsupported scheme, and won't be able |
| 655 // to start. | 658 // to start. |
| 656 GURL pending_url("ftp://news.google.com/"); | 659 GURL pending_url("ftp://news.google.com/"); |
| 657 | 660 |
| 658 prerender_manager()->CreateNextPrerenderContents( | 661 prerender_manager()->CreateNextPrerenderContents( |
| 659 pending_url, | 662 pending_url, |
| 660 ORIGIN_GWS_PRERENDER, | 663 ORIGIN_GWS_PRERENDER, |
| 661 FINAL_STATUS_UNSUPPORTED_SCHEME); | 664 FINAL_STATUS_UNSUPPORTED_SCHEME); |
| 662 scoped_ptr<PrerenderHandle> pending_prerender_handle( | 665 scoped_ptr<PrerenderHandle> pending_prerender_handle( |
| 663 prerender_manager()->AddPrerenderFromLinkRelPrerender( | 666 prerender_manager()->AddPrerenderFromLinkRelPrerender( |
| 664 child_id, route_id, pending_url, | 667 child_id, kDefaultPrerenderId, route_id, pending_url, |
| 665 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); | 668 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); |
| 666 DCHECK(pending_prerender_handle.get()); | 669 DCHECK(pending_prerender_handle.get()); |
| 667 EXPECT_TRUE(pending_prerender_handle->IsValid()); | 670 EXPECT_TRUE(pending_prerender_handle->IsValid()); |
| 668 EXPECT_TRUE(pending_prerender_handle->IsPending()); | 671 EXPECT_TRUE(pending_prerender_handle->IsPending()); |
| 669 | 672 |
| 670 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 673 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 671 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 674 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
| 672 | 675 |
| 673 EXPECT_FALSE(pending_prerender_handle->IsValid()); | 676 EXPECT_FALSE(pending_prerender_handle->IsValid()); |
| 674 EXPECT_FALSE(pending_prerender_handle->IsPending()); | 677 EXPECT_FALSE(pending_prerender_handle->IsPending()); |
| 675 } | 678 } |
| 676 | 679 |
| 677 TEST_F(PrerenderTest, CancelPendingPrerenderTest) { | 680 TEST_F(PrerenderTest, CancelPendingPrerenderTest) { |
| 678 GURL url("http://www.google.com/"); | 681 GURL url("http://www.google.com/"); |
| 679 DummyPrerenderContents* prerender_contents = | 682 DummyPrerenderContents* prerender_contents = |
| 680 prerender_manager()->CreateNextPrerenderContents( | 683 prerender_manager()->CreateNextPrerenderContents( |
| 681 url, | 684 url, |
| 682 FINAL_STATUS_USED); | 685 FINAL_STATUS_USED); |
| 683 EXPECT_TRUE(AddSimplePrerender(url)); | 686 EXPECT_TRUE(AddSimplePrerender(url)); |
| 684 | 687 |
| 685 int child_id; | 688 int child_id; |
| 686 int route_id; | 689 int route_id; |
| 687 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); | 690 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); |
| 688 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); | 691 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); |
| 689 | 692 |
| 690 GURL pending_url("http://news.google.com/"); | 693 GURL pending_url("http://news.google.com/"); |
| 691 | 694 |
| 692 scoped_ptr<PrerenderHandle> pending_prerender_handle( | 695 scoped_ptr<PrerenderHandle> pending_prerender_handle( |
| 693 prerender_manager()->AddPrerenderFromLinkRelPrerender( | 696 prerender_manager()->AddPrerenderFromLinkRelPrerender( |
| 694 child_id, route_id, pending_url, | 697 child_id, kDefaultPrerenderId, route_id, pending_url, |
| 695 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); | 698 Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); |
| 696 DCHECK(pending_prerender_handle.get()); | 699 DCHECK(pending_prerender_handle.get()); |
| 697 EXPECT_TRUE(pending_prerender_handle->IsValid()); | 700 EXPECT_TRUE(pending_prerender_handle->IsValid()); |
| 698 EXPECT_TRUE(pending_prerender_handle->IsPending()); | 701 EXPECT_TRUE(pending_prerender_handle->IsPending()); |
| 699 | 702 |
| 700 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 703 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 701 | 704 |
| 702 pending_prerender_handle->OnCancel(); | 705 pending_prerender_handle->OnCancel(); |
| 703 EXPECT_FALSE(pending_prerender_handle->IsValid()); | 706 EXPECT_FALSE(pending_prerender_handle->IsValid()); |
| 704 | 707 |
| (...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1153 prerender_manager()->CreateNextPrerenderContents( | 1156 prerender_manager()->CreateNextPrerenderContents( |
| 1154 url, FINAL_STATUS_USED); | 1157 url, FINAL_STATUS_USED); |
| 1155 EXPECT_TRUE(AddSimplePrerender(url)); | 1158 EXPECT_TRUE(AddSimplePrerender(url)); |
| 1156 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); | 1159 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); |
| 1157 ASSERT_EQ(second_prerender_contents, | 1160 ASSERT_EQ(second_prerender_contents, |
| 1158 prerender_manager()->FindAndUseEntry(url)); | 1161 prerender_manager()->FindAndUseEntry(url)); |
| 1159 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); | 1162 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
| 1160 } | 1163 } |
| 1161 | 1164 |
| 1162 } // namespace prerender | 1165 } // namespace prerender |
| OLD | NEW |