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

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

Issue 10553029: Handle interface to prerenders. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more standard code, simpler handle, no class explosion Created 8 years, 6 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/time.h" 8 #include "base/time.h"
9 #include "chrome/browser/prerender/prerender_contents.h" 9 #include "chrome/browser/prerender/prerender_contents.h"
10 #include "chrome/browser/prerender/prerender_handle.h"
10 #include "chrome/browser/prerender/prerender_link_manager.h" 11 #include "chrome/browser/prerender/prerender_link_manager.h"
11 #include "chrome/browser/prerender/prerender_manager.h" 12 #include "chrome/browser/prerender/prerender_manager.h"
12 #include "chrome/browser/prerender/prerender_origin.h" 13 #include "chrome/browser/prerender/prerender_origin.h"
13 #include "chrome/common/chrome_switches.h" 14 #include "chrome/common/chrome_switches.h"
14 #include "chrome/test/base/testing_browser_process.h" 15 #include "chrome/test/base/testing_browser_process.h"
15 #include "chrome/test/base/testing_profile.h" 16 #include "chrome/test/base/testing_profile.h"
16 #include "content/public/browser/render_view_host.h" 17 #include "content/public/browser/render_view_host.h"
17 #include "content/public/test/test_browser_thread.h" 18 #include "content/public/test/test_browser_thread.h"
18 #include "googleurl/src/gurl.h" 19 #include "googleurl/src/gurl.h"
19 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 25 matching lines...) Expand all
45 46
46 virtual void StartPrerendering( 47 virtual void StartPrerendering(
47 int ALLOW_UNUSED creator_child_id, 48 int ALLOW_UNUSED creator_child_id,
48 const gfx::Size& ALLOW_UNUSED size, 49 const gfx::Size& ALLOW_UNUSED size,
49 content::SessionStorageNamespace* ALLOW_UNUSED session_storage_namespace, 50 content::SessionStorageNamespace* ALLOW_UNUSED session_storage_namespace,
50 bool is_control_group) OVERRIDE { 51 bool is_control_group) OVERRIDE {
51 // In the base PrerenderContents implementation, StartPrerendering will 52 // In the base PrerenderContents implementation, StartPrerendering will
52 // be called even when the PrerenderManager is part of the control group, 53 // be called even when the PrerenderManager is part of the control group,
53 // but it will early exit before actually creating a new RenderView if 54 // but it will early exit before actually creating a new RenderView if
54 // |is_control_group| is true; 55 // |is_control_group| is true;
55 if (!is_control_group) 56 if (!is_control_group) {
56 prerendering_has_started_ = true; 57 prerendering_has_started_ = true;
58 }
59 load_start_time_ = base::TimeTicks::Now();
57 } 60 }
58 61
59 virtual bool GetChildId(int* child_id) const OVERRIDE { 62 virtual bool GetChildId(int* child_id) const OVERRIDE {
60 *child_id = 0; 63 *child_id = 0;
61 return true; 64 return true;
62 } 65 }
63 66
64 virtual bool GetRouteId(int* route_id) const OVERRIDE { 67 virtual bool GetRouteId(int* route_id) const OVERRIDE {
65 *route_id = 0; 68 *route_id = 0;
66 return true; 69 return true;
67 } 70 }
68 71
69 FinalStatus expected_final_status() const { return expected_final_status_; } 72 FinalStatus expected_final_status() const { return expected_final_status_; }
70 73
71 bool prerendering_has_been_cancelled() const { 74 bool prerendering_has_been_cancelled() const {
72 return PrerenderContents::prerendering_has_been_cancelled(); 75 return PrerenderContents::prerendering_has_been_cancelled();
73 } 76 }
74 77
75 private: 78 private:
76 FinalStatus expected_final_status_; 79 FinalStatus expected_final_status_;
77 }; 80 };
78 81
79 class TestPrerenderManager : public PrerenderManager { 82 class TestPrerenderManager : public PrerenderManager {
80 public: 83 public:
84 using PrerenderManager::FindEntry;
85
81 explicit TestPrerenderManager(PrerenderTracker* prerender_tracker) 86 explicit TestPrerenderManager(PrerenderTracker* prerender_tracker)
82 : PrerenderManager(&profile_, prerender_tracker), 87 : PrerenderManager(&profile_, prerender_tracker),
83 time_(base::Time::Now()), 88 time_(base::Time::Now()),
84 time_ticks_(base::TimeTicks::Now()), 89 time_ticks_(base::TimeTicks::Now()),
85 next_prerender_contents_(NULL), 90 next_prerender_contents_(NULL),
86 prerender_tracker_(prerender_tracker) { 91 prerender_tracker_(prerender_tracker) {
87 set_rate_limit_enabled(false); 92 set_rate_limit_enabled(false);
88 } 93 }
89 94
90 virtual ~TestPrerenderManager() { 95 virtual ~TestPrerenderManager() {
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 FINAL_STATUS_USED); 487 FINAL_STATUS_USED);
483 EXPECT_TRUE(AddSimplePrerender(url)); 488 EXPECT_TRUE(AddSimplePrerender(url));
484 489
485 int child_id; 490 int child_id;
486 int route_id; 491 int route_id;
487 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); 492 ASSERT_TRUE(prerender_contents->GetChildId(&child_id));
488 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); 493 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id));
489 494
490 GURL pending_url("http://news.google.com/"); 495 GURL pending_url("http://news.google.com/");
491 496
492 EXPECT_TRUE(prerender_manager()->AddPrerenderFromLinkRelPrerender( 497 base::WeakPtr<PrerenderHandle> prerender_handle =
493 child_id, route_id, 498 prerender_manager()->AddPrerenderFromLinkRelPrerender(
494 pending_url, Referrer(url, WebKit::WebReferrerPolicyDefault), 499 child_id, route_id, pending_url,
495 gfx::Size())); 500 Referrer(url, WebKit::WebReferrerPolicyDefault), gfx::Size());
496 501 EXPECT_TRUE(prerender_handle);
497 EXPECT_TRUE(prerender_manager()->IsPendingEntry(pending_url)); 502 EXPECT_TRUE(prerender_handle && prerender_handle->IsPending());
498 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 503 EXPECT_TRUE(prerender_contents->prerendering_has_started());
499 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); 504 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url));
500 } 505 }
501 506
502 // Tests that a PrerenderManager created for a browser session in the control 507 // Tests that a PrerenderManager created for a browser session in the control
503 // group works as expected. 508 // group works as expected.
504 TEST_F(PrerenderTest, ControlGroup) { 509 TEST_F(PrerenderTest, ControlGroup) {
505 RestorePrerenderMode restore_prerender_mode; 510 RestorePrerenderMode restore_prerender_mode;
506 PrerenderManager::SetMode( 511 PrerenderManager::SetMode(
507 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); 512 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP);
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 DummyPrerenderContents* prerender_contents = 668 DummyPrerenderContents* prerender_contents =
664 prerender_manager()->CreateNextPrerenderContents( 669 prerender_manager()->CreateNextPrerenderContents(
665 url, FINAL_STATUS_CANCELLED); 670 url, FINAL_STATUS_CANCELLED);
666 EXPECT_TRUE(AddSimplePrerender(url)); 671 EXPECT_TRUE(AddSimplePrerender(url));
667 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 672 EXPECT_TRUE(prerender_contents->prerendering_has_started());
668 prerender_manager()->CancelAllPrerenders(); 673 prerender_manager()->CancelAllPrerenders();
669 const DummyPrerenderContents* null = NULL; 674 const DummyPrerenderContents* null = NULL;
670 EXPECT_EQ(null, prerender_manager()->FindEntry(url)); 675 EXPECT_EQ(null, prerender_manager()->FindEntry(url));
671 } 676 }
672 677
673 // Make sure canceling for omnibox works as expected.
674 TEST_F(PrerenderTest, CancelOmniboxRemovesOmniboxTest) {
675 // Check canceling removes the Omnibox url.
676 GURL url("http://www.google.com/");
677 DummyPrerenderContents* prerender_contents =
678 prerender_manager()->CreateNextPrerenderContents(
679 url, ORIGIN_OMNIBOX, FINAL_STATUS_CANCELLED);
680 EXPECT_TRUE(prerender_manager()->AddPrerenderFromOmnibox(url, NULL));
681 EXPECT_TRUE(prerender_contents->prerendering_has_started());
682 prerender_manager()->CancelOmniboxPrerenders();
683 const DummyPrerenderContents* null = NULL;
684 EXPECT_EQ(null, prerender_manager()->FindEntry(url));
685 }
686
687 TEST_F(PrerenderTest, CancelOmniboxDoesNotRemoveLinkTest) {
688 GURL url("http://www.google.com/");
689 DummyPrerenderContents* prerender_contents =
690 prerender_manager()->CreateNextPrerenderContents(
691 url, ORIGIN_LINK_REL_PRERENDER, FINAL_STATUS_MANAGER_SHUTDOWN);
692 EXPECT_TRUE(AddSimplePrerender(url));
693 EXPECT_TRUE(prerender_contents->prerendering_has_started());
694 prerender_manager()->CancelOmniboxPrerenders();
695 const DummyPrerenderContents* null = NULL;
696 EXPECT_NE(null, prerender_manager()->FindEntry(url));
697 }
698
699 TEST_F(PrerenderTest, OmniboxNotAllowedWhenDisabled) { 678 TEST_F(PrerenderTest, OmniboxNotAllowedWhenDisabled) {
700 prerender_manager()->set_enabled(false); 679 prerender_manager()->set_enabled(false);
701 EXPECT_FALSE(prerender_manager()->AddPrerenderFromOmnibox( 680 EXPECT_FALSE(prerender_manager()->AddPrerenderFromOmnibox(
702 GURL("http://www.example.com"), NULL)); 681 GURL("http://www.example.com"), NULL));
703 } 682 }
704 683
705 TEST_F(PrerenderTest, LinkRelNotAllowedWhenDisabled) { 684 TEST_F(PrerenderTest, LinkRelNotAllowedWhenDisabled) {
706 prerender_manager()->set_enabled(false); 685 prerender_manager()->set_enabled(false);
707 EXPECT_FALSE(AddSimplePrerender( 686 EXPECT_FALSE(AddSimplePrerender(
708 GURL("http://www.example.com"))); 687 GURL("http://www.example.com")));
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 DummyPrerenderContents* second_prerender_contents = 964 DummyPrerenderContents* second_prerender_contents =
986 prerender_manager()->CreateNextPrerenderContents( 965 prerender_manager()->CreateNextPrerenderContents(
987 url, FINAL_STATUS_USED); 966 url, FINAL_STATUS_USED);
988 EXPECT_TRUE(AddSimplePrerender(url)); 967 EXPECT_TRUE(AddSimplePrerender(url));
989 EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); 968 EXPECT_TRUE(second_prerender_contents->prerendering_has_started());
990 ASSERT_EQ(second_prerender_contents, prerender_manager()->GetEntry(url)); 969 ASSERT_EQ(second_prerender_contents, prerender_manager()->GetEntry(url));
991 EXPECT_FALSE(IsEmptyPrerenderLinkManager()); 970 EXPECT_FALSE(IsEmptyPrerenderLinkManager());
992 } 971 }
993 972
994 } // namespace prerender 973 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698