Index: chrome/browser/prerender/prerender_unittest.cc |
diff --git a/chrome/browser/prerender/prerender_unittest.cc b/chrome/browser/prerender/prerender_unittest.cc |
index a8f56cbeb7d3f9ffdd6f683a96fd59874a2adcf9..3ff1a7854560b6cd998524b28174c91e933dfc74 100644 |
--- a/chrome/browser/prerender/prerender_unittest.cc |
+++ b/chrome/browser/prerender/prerender_unittest.cc |
@@ -316,6 +316,10 @@ class PrerenderTest : public testing::Test { |
return prerender_link_manager_->IsEmpty(); |
} |
+ size_t CountAllLinkPrerenders() { |
mmenke
2013/02/14 16:48:12
nit: const?
|
+ return prerender_link_manager_->prerenders_.size(); |
+ } |
+ |
int last_prerender_id() const { |
return last_prerender_id_; |
} |
@@ -394,6 +398,32 @@ TEST_F(PrerenderTest, DuplicateTest) { |
ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
} |
+// Makes sure that we do not create two running prerender entries for the same |
+// launcher and prerender id. |
+TEST_F(PrerenderTest, DoubleAddTest) { |
+ SetConcurrency(2); |
+ |
+ GURL url("http://www.google.com/"); |
+ DummyPrerenderContents* prerender_contents = |
+ prerender_manager()->CreateNextPrerenderContents( |
+ url, |
+ FINAL_STATUS_USED); |
+ EXPECT_TRUE(AddSimplePrerender(url)); |
+ EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
+ EXPECT_EQ(1u, CountAllLinkPrerenders()); |
+ |
+ GURL url2("http://www.notgoogle.com/"); |
+ prerender_link_manager()->OnAddPrerender(kDefaultChildId, |
+ last_prerender_id(), |
+ url, content::Referrer(), |
+ kSize, kDefaultRenderViewRouteId); |
+ // The second add had the same launcher and prerender_id as a running |
+ // prerender, so it should have done nothing. |
+ EXPECT_EQ(1u, CountAllLinkPrerenders()); |
+ ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
+ EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
+} |
+ |
// Ensure that we expire a prerendered page after the max. permitted time. |
TEST_F(PrerenderTest, ExpireTest) { |
GURL url("http://www.google.com/"); |