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

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: Created 8 years, 3 months 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
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 *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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698