Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(307)

Side by Side Diff: chrome/browser/prerender/prerender_unittest.cc

Issue 10918189: Add PrerenderStatusEvent on Prerenders (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: rebase to trunk, remove some unrelated fixes... Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | chrome/common/prerender_messages.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | chrome/common/prerender_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698