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

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

Issue 6685012: Give prerendering RVH's RenderWidgetHostViews. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Comment typos fixed Created 9 years, 8 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
===================================================================
--- chrome/browser/prerender/prerender_manager_unittest.cc (revision 82104)
+++ chrome/browser/prerender/prerender_manager_unittest.cc (working copy)
@@ -39,7 +39,8 @@
EXPECT_EQ(expected_final_status_, final_status());
}
- virtual void StartPrerendering() OVERRIDE {
+ virtual void StartPrerendering(
+ const RenderViewHost* source_render_view_host) OVERRIDE {
has_started_ = true;
}
@@ -84,7 +85,8 @@
// Shorthand to add a simple preload with no aliases.
bool AddSimplePreload(const GURL& url) {
- return AddPreload(url, std::vector<GURL>(), GURL());
+ return AddPreload(std::pair<int, int>(-1, -1), url, std::vector<GURL>(),
+ GURL());
}
bool IsPendingEntry(const GURL& url) {
@@ -93,6 +95,12 @@
void set_rate_limit_enabled(bool enabled) { rate_limit_enabled_ = true; }
+ // Shorthand to add a simple preload with aliases.
+ bool AddSimplePreloadWithAliases(const GURL& url,
+ const std::vector<GURL>& alias_urls) {
+ return AddPreload(std::pair<int, int>(-1, -1), url, alias_urls, GURL());
+ }
+
PrerenderContents* next_pc() { return next_pc_.get(); }
protected:
@@ -279,19 +287,19 @@
FINAL_STATUS_USED);
// Test that all of the aliases work, but nont_an_alias_url does not.
prerender_manager_->SetNextPrerenderContents(pc);
- EXPECT_TRUE(prerender_manager_->AddPreload(url, alias_urls, GURL()));
+ EXPECT_TRUE(prerender_manager_->AddSimplePreloadWithAliases(url, alias_urls));
ASSERT_EQ(NULL, prerender_manager_->GetEntry(not_an_alias_url));
ASSERT_EQ(pc, prerender_manager_->GetEntry(alias_url1));
prerender_manager_->SetNextPrerenderContents(pc);
- EXPECT_TRUE(prerender_manager_->AddPreload(url, alias_urls, GURL()));
+ EXPECT_TRUE(prerender_manager_->AddSimplePreloadWithAliases(url, alias_urls));
ASSERT_EQ(pc, prerender_manager_->GetEntry(alias_url2));
prerender_manager_->SetNextPrerenderContents(pc);
- EXPECT_TRUE(prerender_manager_->AddPreload(url, alias_urls, GURL()));
+ EXPECT_TRUE(prerender_manager_->AddSimplePreloadWithAliases(url, alias_urls));
ASSERT_EQ(pc, prerender_manager_->GetEntry(url));
// Test that alias URLs can not be added.
prerender_manager_->SetNextPrerenderContents(pc);
- EXPECT_TRUE(prerender_manager_->AddPreload(url, alias_urls, GURL()));
+ EXPECT_TRUE(prerender_manager_->AddSimplePreloadWithAliases(url, alias_urls));
EXPECT_FALSE(prerender_manager_->AddSimplePreload(url));
EXPECT_FALSE(prerender_manager_->AddSimplePreload(alias_url1));
EXPECT_FALSE(prerender_manager_->AddSimplePreload(alias_url2));
@@ -426,4 +434,67 @@
ASSERT_EQ(GURL("http://validURLSareGREAT.com").spec(), result.spec());
}
+// Ensure an entry with a |pending_final_status| is not returned.
+TEST_F(PrerenderManagerTest, DropEntriesWithPendingFinalStatus) {
+ GURL url("http://www.google.com/");
+ DummyPrerenderContents* pc =
+ new DummyPrerenderContents(prerender_manager_.get(), url,
+ FINAL_STATUS_COMPOSITING);
+ DummyPrerenderContents* null = NULL;
+ prerender_manager_->SetNextPrerenderContents(pc);
+ EXPECT_TRUE(prerender_manager_->AddSimplePreload(url));
+ EXPECT_EQ(null, prerender_manager_->next_pc());
+ EXPECT_TRUE(pc->has_started());
+ pc->set_pending_final_status(FINAL_STATUS_COMPOSITING);
+ ASSERT_EQ(null, prerender_manager_->GetEntry(url));
+}
+
+// Adds 2 entries, sets the |pending_final_status| of the second one, and checks
+// that adding a third entry removes the second rather than the first.
+TEST_F(PrerenderManagerTest, DropSecondEntryWithPendingFinalStatus) {
+ prerender_manager_->set_max_elements(2);
+ GURL url1("http://www.google.com/");
+ DummyPrerenderContents* pc1 =
+ new DummyPrerenderContents(prerender_manager_.get(), url1,
+ FINAL_STATUS_USED);
+ DummyPrerenderContents* null = NULL;
+ prerender_manager_->SetNextPrerenderContents(pc1);
+ EXPECT_TRUE(prerender_manager_->AddSimplePreload(url1));
+ EXPECT_EQ(null, prerender_manager_->next_pc());
+ EXPECT_TRUE(pc1->has_started());
+ GURL url2("http://news.google.com/");
+ DummyPrerenderContents* pc2 =
+ new DummyPrerenderContents(prerender_manager_.get(), url1,
+ FINAL_STATUS_COMPOSITING);
+ prerender_manager_->SetNextPrerenderContents(pc2);
+ EXPECT_TRUE(prerender_manager_->AddSimplePreload(url2));
+ EXPECT_EQ(null, prerender_manager_->next_pc());
+ EXPECT_TRUE(pc2->has_started());
+ pc2->set_pending_final_status(FINAL_STATUS_COMPOSITING);
+ GURL url3("http://images.google.com/");
+ DummyPrerenderContents* pc3 =
+ new DummyPrerenderContents(prerender_manager_.get(), url3,
+ FINAL_STATUS_USED);
+ prerender_manager_->SetNextPrerenderContents(pc3);
+ EXPECT_TRUE(prerender_manager_->AddSimplePreload(url3));
+ EXPECT_EQ(null, prerender_manager_->next_pc());
+ EXPECT_TRUE(pc2->has_started());
+ ASSERT_EQ(pc1, prerender_manager_->GetEntry(url1));
+ ASSERT_EQ(null, prerender_manager_->GetEntry(url2));
+ ASSERT_EQ(pc3, prerender_manager_->GetEntry(url3));
+ pc1->set_final_status(FINAL_STATUS_USED);
+ delete pc1;
Paweł Hajdan Jr. 2011/04/20 06:49:37 Could you switch the pointers to scoped_ptrs inste
mmenke 2011/04/20 15:15:19 Done. Reworked these tests slightly, to avoid sim
+ pc3->set_final_status(FINAL_STATUS_USED);
+ delete pc3;
+}
+
+// Tests that prerendering is cancelled when the source render view does not
+// exist. On failure, the DCHECK in CreatePrerenderContents() above should be
+// triggered.
+TEST_F(PrerenderManagerTest, SourceRenderViewClosed) {
+ GURL url("http://www.google.com/");
+ EXPECT_FALSE(prerender_manager_->AddPreload(
+ std::pair<int, int>(100, 100), url, std::vector<GURL>(), GURL()));
+}
+
} // namespace prerender
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | chrome/browser/prerender/prerender_render_widget_host_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698