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 |