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