| 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 ea029d4ec1ea9efc5a54dd2c43ebf2e67c7d42fc..f96a6984dbdd399cf85acb0054994d1cb642601a 100644
|
| --- a/chrome/browser/prerender/prerender_manager_unittest.cc
|
| +++ b/chrome/browser/prerender/prerender_manager_unittest.cc
|
| @@ -6,6 +6,8 @@
|
| #include "chrome/browser/prerender/prerender_contents.h"
|
| #include "chrome/browser/prerender/prerender_manager.h"
|
| #include "content/browser/browser_thread.h"
|
| +#include "content/browser/renderer_host/render_view_host.h"
|
| +#include "content/browser/renderer_host/render_process_host.h"
|
| #include "googleurl/src/gurl.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -41,6 +43,16 @@ class DummyPrerenderContents : public PrerenderContents {
|
| has_started_ = true;
|
| }
|
|
|
| + virtual bool GetChildId(int* child_id) const OVERRIDE {
|
| + *child_id = 0;
|
| + return true;
|
| + }
|
| +
|
| + virtual bool GetRouteId(int* route_id) const OVERRIDE {
|
| + *route_id = 0;
|
| + return true;
|
| + }
|
| +
|
| bool has_started() const { return has_started_; }
|
|
|
| private:
|
| @@ -75,6 +87,10 @@ class TestPrerenderManager : public PrerenderManager {
|
| return AddPreload(url, std::vector<GURL>(), GURL());
|
| }
|
|
|
| + bool IsPendingEntry(const GURL& url) {
|
| + return (PrerenderManager::FindPendingEntry(url) != NULL);
|
| + }
|
| +
|
| void set_rate_limit_enabled(bool enabled) { rate_limit_enabled_ = true; }
|
|
|
| PrerenderContents* next_pc() { return next_pc_.get(); }
|
| @@ -335,4 +351,61 @@ TEST_F(PrerenderManagerTest, RateLimitOutsideWindowTest) {
|
| prerender_manager_->set_rate_limit_enabled(false);
|
| }
|
|
|
| +TEST_F(PrerenderManagerTest, PendingPreloadTest) {
|
| + GURL url("http://www.google.com/");
|
| + DummyPrerenderContents* pc =
|
| + new DummyPrerenderContents(prerender_manager_.get(),
|
| + url,
|
| + FINAL_STATUS_USED);
|
| + prerender_manager_->SetNextPrerenderContents(pc);
|
| + EXPECT_TRUE(prerender_manager_->AddSimplePreload(url));
|
| +
|
| + int child_id;
|
| + int route_id;
|
| + ASSERT_TRUE(pc->GetChildId(&child_id));
|
| + ASSERT_TRUE(pc->GetRouteId(&route_id));
|
| +
|
| + GURL pending_url("http://news.google.com/");
|
| +
|
| + prerender_manager_->AddPendingPreload(std::make_pair(child_id, route_id),
|
| + pending_url,
|
| + std::vector<GURL>(),
|
| + url);
|
| +
|
| + EXPECT_TRUE(prerender_manager_->IsPendingEntry(pending_url));
|
| + EXPECT_TRUE(pc->has_started());
|
| + ASSERT_EQ(pc, prerender_manager_->GetEntry(url));
|
| + pc->set_final_status(FINAL_STATUS_USED);
|
| +
|
| + delete pc;
|
| +}
|
| +
|
| +TEST_F(PrerenderManagerTest, PendingPreloadSkippedTest) {
|
| + GURL url("http://www.google.com/");
|
| + DummyPrerenderContents* pc =
|
| + new DummyPrerenderContents(prerender_manager_.get(),
|
| + url,
|
| + FINAL_STATUS_TIMED_OUT);
|
| + prerender_manager_->SetNextPrerenderContents(pc);
|
| +
|
| + int child_id;
|
| + int route_id;
|
| + ASSERT_TRUE(pc->GetChildId(&child_id));
|
| + ASSERT_TRUE(pc->GetRouteId(&route_id));
|
| +
|
| + EXPECT_TRUE(prerender_manager_->AddSimplePreload(url));
|
| + prerender_manager_->AdvanceTime(prerender_manager_->max_prerender_age()
|
| + + base::TimeDelta::FromSeconds(1));
|
| + // GetEntry will cull old entries which should now include pc.
|
| + ASSERT_EQ(NULL, prerender_manager_->GetEntry(url));
|
| +
|
| + GURL pending_url("http://news.google.com/");
|
| +
|
| + prerender_manager_->AddPendingPreload(std::make_pair(child_id, route_id),
|
| + pending_url,
|
| + std::vector<GURL>(),
|
| + url);
|
| + EXPECT_FALSE(prerender_manager_->IsPendingEntry(pending_url));
|
| +}
|
| +
|
| } // namespace prerender
|
|
|