| Index: chrome/browser/prerender/prerender_manager_unittest.cc
|
| diff --git a/chrome/browser/prerender/prerender_manager_unittest.cc b/chrome/browser/prerender/prerender_manager_unittest.cc
|
| index bdedb0ff47ee0a44cf5c5a934df7aa9fe24370ec..d28c1d4428901be6d0c6d2c6dfabb25fb592d59b 100644
|
| --- a/chrome/browser/prerender/prerender_manager_unittest.cc
|
| +++ b/chrome/browser/prerender/prerender_manager_unittest.cc
|
| @@ -2,13 +2,16 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "base/command_line.h"
|
| #include "base/memory/scoped_vector.h"
|
| #include "base/message_loop.h"
|
| #include "base/time.h"
|
| #include "chrome/browser/prerender/prerender_contents.h"
|
| #include "chrome/browser/prerender/prerender_manager.h"
|
| #include "chrome/browser/prerender/prerender_origin.h"
|
| +#include "chrome/common/chrome_switches.h"
|
| #include "chrome/test/base/testing_browser_process.h"
|
| +#include "chrome/test/base/testing_profile.h"
|
| #include "content/browser/renderer_host/render_view_host.h"
|
| #include "content/test/test_browser_thread.h"
|
| #include "googleurl/src/gurl.h"
|
| @@ -25,11 +28,11 @@ class DummyPrerenderContents : public PrerenderContents {
|
| DummyPrerenderContents(PrerenderManager* prerender_manager,
|
| PrerenderTracker* prerender_tracker,
|
| const GURL& url,
|
| + Origin origin,
|
| FinalStatus expected_final_status)
|
| : PrerenderContents(prerender_manager, prerender_tracker,
|
| NULL, url, content::Referrer(),
|
| - ORIGIN_LINK_REL_PRERENDER,
|
| - PrerenderManager::kNoExperiment),
|
| + origin, PrerenderManager::kNoExperiment),
|
| has_started_(false),
|
| expected_final_status_(expected_final_status) {
|
| }
|
| @@ -66,7 +69,7 @@ class DummyPrerenderContents : public PrerenderContents {
|
| class TestPrerenderManager : public PrerenderManager {
|
| public:
|
| explicit TestPrerenderManager(PrerenderTracker* prerender_tracker)
|
| - : PrerenderManager(NULL, prerender_tracker),
|
| + : PrerenderManager(&profile_, prerender_tracker),
|
| time_(base::Time::Now()),
|
| time_ticks_(base::TimeTicks::Now()),
|
| next_prerender_contents_(NULL),
|
| @@ -104,6 +107,7 @@ class TestPrerenderManager : public PrerenderManager {
|
| FinalStatus expected_final_status) {
|
| DummyPrerenderContents* prerender_contents =
|
| new DummyPrerenderContents(this, prerender_tracker_, url,
|
| + ORIGIN_LINK_REL_PRERENDER,
|
| expected_final_status);
|
| SetNextPrerenderContents(prerender_contents);
|
| return prerender_contents;
|
| @@ -111,10 +115,22 @@ class TestPrerenderManager : public PrerenderManager {
|
|
|
| DummyPrerenderContents* CreateNextPrerenderContents(
|
| const GURL& url,
|
| + Origin origin,
|
| + FinalStatus expected_final_status) {
|
| + DummyPrerenderContents* prerender_contents =
|
| + new DummyPrerenderContents(this, prerender_tracker_, url,
|
| + origin, expected_final_status);
|
| + SetNextPrerenderContents(prerender_contents);
|
| + return prerender_contents;
|
| + }
|
| +
|
| + DummyPrerenderContents* CreateNextPrerenderContents(
|
| + const GURL& url,
|
| const std::vector<GURL>& alias_urls,
|
| FinalStatus expected_final_status) {
|
| DummyPrerenderContents* prerender_contents =
|
| new DummyPrerenderContents(this, prerender_tracker_, url,
|
| + ORIGIN_LINK_REL_PRERENDER,
|
| expected_final_status);
|
| for (std::vector<GURL>::const_iterator it = alias_urls.begin();
|
| it != alias_urls.end();
|
| @@ -162,6 +178,8 @@ class TestPrerenderManager : public PrerenderManager {
|
| Origin origin,
|
| uint8 experiment_id) OVERRIDE {
|
| DCHECK(next_prerender_contents_.get());
|
| + DCHECK_EQ(next_prerender_contents_->prerender_url(), url);
|
| + DCHECK_EQ(next_prerender_contents_->origin(), origin);
|
| return next_prerender_contents_.release();
|
| }
|
|
|
| @@ -173,6 +191,8 @@ class TestPrerenderManager : public PrerenderManager {
|
| ScopedVector<PrerenderContents> used_prerender_contents_;
|
|
|
| PrerenderTracker* prerender_tracker_;
|
| +
|
| + TestingProfile profile_;
|
| };
|
|
|
| class RestorePrerenderMode {
|
| @@ -192,6 +212,10 @@ class PrerenderManagerTest : public testing::Test {
|
| PrerenderManagerTest() : ui_thread_(BrowserThread::UI, &message_loop_),
|
| prerender_manager_(
|
| new TestPrerenderManager(prerender_tracker())) {
|
| + // Enable omnibox prerendering.
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kPrerenderFromOmnibox,
|
| + switches::kPrerenderFromOmniboxSwitchValueEnabled);
|
| }
|
|
|
| TestPrerenderManager* prerender_manager() {
|
| @@ -526,7 +550,46 @@ TEST_F(PrerenderManagerTest, ClearTest) {
|
| EXPECT_TRUE(prerender_contents->has_started());
|
| prerender_manager()->ClearData(PrerenderManager::CLEAR_PRERENDER_CONTENTS);
|
| DummyPrerenderContents* null = NULL;
|
| - EXPECT_EQ(null, prerender_manager()->GetEntry(url));
|
| + EXPECT_EQ(null, prerender_manager()->FindEntry(url));
|
| +}
|
| +
|
| +// Make sure canceling works as expected.
|
| +TEST_F(PrerenderManagerTest, CancelAllTest) {
|
| + GURL url("http://www.google.com/");
|
| + DummyPrerenderContents* prerender_contents =
|
| + prerender_manager()->CreateNextPrerenderContents(
|
| + url, FINAL_STATUS_CANCELLED);
|
| + EXPECT_TRUE(prerender_manager()->AddSimplePrerender(url));
|
| + EXPECT_TRUE(prerender_contents->has_started());
|
| + prerender_manager()->CancelAllPrerenders();
|
| + const DummyPrerenderContents* null = NULL;
|
| + EXPECT_EQ(null, prerender_manager()->FindEntry(url));
|
| +}
|
| +
|
| +// Make sure canceling for omnibox works as expected.
|
| +TEST_F(PrerenderManagerTest, CancelOmniboxRemovesOmniboxTest) {
|
| + // Check canceling removes the Omnibox url.
|
| + GURL url("http://www.google.com/");
|
| + DummyPrerenderContents* prerender_contents =
|
| + prerender_manager()->CreateNextPrerenderContents(
|
| + url, ORIGIN_OMNIBOX, FINAL_STATUS_CANCELLED);
|
| + EXPECT_TRUE(prerender_manager()->AddPrerenderFromOmnibox(url, NULL));
|
| + EXPECT_TRUE(prerender_contents->has_started());
|
| + prerender_manager()->CancelOmniboxPrerenders();
|
| + const DummyPrerenderContents* null = NULL;
|
| + EXPECT_EQ(null, prerender_manager()->FindEntry(url));
|
| +}
|
| +
|
| +TEST_F(PrerenderManagerTest, CancelOmniboxDoesNotRemoveLinkTest) {
|
| + GURL url("http://www.google.com/");
|
| + DummyPrerenderContents* prerender_contents =
|
| + prerender_manager()->CreateNextPrerenderContents(
|
| + url, ORIGIN_LINK_REL_PRERENDER, FINAL_STATUS_MANAGER_SHUTDOWN);
|
| + EXPECT_TRUE(prerender_manager()->AddSimplePrerender(url));
|
| + EXPECT_TRUE(prerender_contents->has_started());
|
| + prerender_manager()->CancelOmniboxPrerenders();
|
| + const DummyPrerenderContents* null = NULL;
|
| + EXPECT_NE(null, prerender_manager()->FindEntry(url));
|
| }
|
|
|
| } // namespace prerender
|
|
|