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

Unified Diff: chrome/browser/prerender/prerender_manager_unittest.cc

Issue 6625066: Add pending preloads indexed by routing id. Start preloading once we navigate. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 9 years, 9 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 side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | chrome/browser/prerender/prerender_resource_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698