Index: chrome/browser/prerender/prerender_unittest.cc |
diff --git a/chrome/browser/prerender/prerender_unittest.cc b/chrome/browser/prerender/prerender_unittest.cc |
index 27fa12a775ce55fbba447f53e8fd171c6718922c..45e48f8f079567fbc7923fd5845821d66cc67e20 100644 |
--- a/chrome/browser/prerender/prerender_unittest.cc |
+++ b/chrome/browser/prerender/prerender_unittest.cc |
@@ -135,7 +135,7 @@ class UnitTestPrerenderManager : public PrerenderManager { |
active_prerenders_.erase(to_erase); |
prerender_contents->SetFinalStatus(FINAL_STATUS_USED); |
- prerender_contents->StartPendingPrerenders(); |
+ prerender_contents->PrepareForUse(); |
return prerender_contents; |
} |
@@ -362,12 +362,10 @@ TEST_F(PrerenderTest, DuplicateTest) { |
kDefaultChildId, kDefaultRenderViewRouteId, url, |
Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); |
- EXPECT_TRUE(duplicate_prerender_handle->IsValid()); |
EXPECT_TRUE(duplicate_prerender_handle->IsPrerendering()); |
ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
- EXPECT_FALSE(duplicate_prerender_handle->IsValid()); |
EXPECT_FALSE(duplicate_prerender_handle->IsPrerendering()); |
} |
@@ -649,13 +647,12 @@ TEST_F(PrerenderTest, PendingPrerenderTest) { |
child_id, route_id, pending_url, |
Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); |
CHECK(pending_prerender_handle.get()); |
- EXPECT_TRUE(pending_prerender_handle->IsValid()); |
- EXPECT_TRUE(pending_prerender_handle->IsPending()); |
+ EXPECT_FALSE(pending_prerender_handle->IsPrerendering()); |
EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
- EXPECT_FALSE(pending_prerender_handle->IsPending()); |
+ EXPECT_TRUE(pending_prerender_handle->IsPrerendering()); |
ASSERT_EQ(pending_prerender_contents, |
prerender_manager()->FindAndUseEntry(pending_url)); |
} |
@@ -686,14 +683,12 @@ TEST_F(PrerenderTest, InvalidPendingPrerenderTest) { |
child_id, route_id, pending_url, |
Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); |
DCHECK(pending_prerender_handle.get()); |
- EXPECT_TRUE(pending_prerender_handle->IsValid()); |
- EXPECT_TRUE(pending_prerender_handle->IsPending()); |
+ EXPECT_FALSE(pending_prerender_handle->IsPrerendering()); |
EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
- EXPECT_FALSE(pending_prerender_handle->IsValid()); |
- EXPECT_FALSE(pending_prerender_handle->IsPending()); |
+ EXPECT_FALSE(pending_prerender_handle->IsPrerendering()); |
} |
TEST_F(PrerenderTest, CancelPendingPrerenderTest) { |
@@ -716,13 +711,11 @@ TEST_F(PrerenderTest, CancelPendingPrerenderTest) { |
child_id, route_id, pending_url, |
Referrer(url, WebKit::WebReferrerPolicyDefault), kSize)); |
CHECK(pending_prerender_handle.get()); |
- EXPECT_TRUE(pending_prerender_handle->IsValid()); |
- EXPECT_TRUE(pending_prerender_handle->IsPending()); |
+ EXPECT_FALSE(pending_prerender_handle->IsPrerendering()); |
EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
- pending_prerender_handle->OnCancel(); |
- EXPECT_FALSE(pending_prerender_handle->IsValid()); |
+ pending_prerender_handle.reset(); |
ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
} |
@@ -793,6 +786,7 @@ TEST_F(PrerenderTest, PPLTDummy) { |
url, FINAL_STATUS_UNSUPPORTED_SCHEME); |
EXPECT_TRUE(AddSimplePrerender(url)); |
EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
+ EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
DummyPrerenderContents* pplt_dummy_contents = |
prerender_manager()->CreateNextPrerenderContents(url, |
@@ -800,8 +794,10 @@ TEST_F(PrerenderTest, PPLTDummy) { |
GURL ftp_url("ftp://ftp.google.com/"); |
// Adding this ftp URL will force the expected unsupported scheme error. |
prerender_contents->AddAliasURL(ftp_url); |
+ EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
ASSERT_EQ(pplt_dummy_contents, prerender_manager()->FindAndUseEntry(url)); |
+ EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
} |
// Tests that our PPLT dummy prerender gets created properly, even |
@@ -839,13 +835,14 @@ TEST_F(PrerenderTest, PPLTLateCancel) { |
prerender_contents->Destroy(FINAL_STATUS_JAVASCRIPT_ALERT); |
ASSERT_EQ(duplicate_prerender_contents, prerender_manager()->FindEntry(url)); |
+ // Make sure that events on prerender handles propogate to the match |
+ // complete replacement. |
+ DummyPrerenderContents* null = NULL; |
prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
last_prerender_id()); |
- DummyPrerenderContents* null = NULL; |
ASSERT_EQ(null, prerender_manager()->FindEntry(url)); |
} |
- |
// Tests that the prerender manager matches include the fragment. |
TEST_F(PrerenderTest, FragmentMatchesTest) { |
GURL fragment_url("http://www.google.com/#test"); |
@@ -966,8 +963,6 @@ TEST_F(PrerenderTest, LinkManagerCancelThenAbandon) { |
ASSERT_EQ(null, prerender_manager()->FindEntry(url)); |
} |
-// TODO(gavinp): Re-enabmed this test after abandon has an effect on Prerenders, |
-// like shortening the timeouts. |
TEST_F(PrerenderTest, LinkManagerAbandon) { |
EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
GURL url("http://www.myexample.com"); |
@@ -986,7 +981,33 @@ TEST_F(PrerenderTest, LinkManagerAbandon) { |
EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
+} |
+ |
+TEST_F(PrerenderTest, LinkManagerAbandonThenCancel) { |
EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
+ GURL url("http://www.myexample.com"); |
+ DummyPrerenderContents* prerender_contents = |
+ prerender_manager()->CreateNextPrerenderContents( |
+ url, FINAL_STATUS_CANCELLED); |
+ |
+ EXPECT_TRUE(AddSimplePrerender(url)); |
+ |
+ EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
+ EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
+ ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
+ EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
+ prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, |
+ last_prerender_id()); |
+ |
+ EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
+ ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
+ |
+ prerender_link_manager()->OnCancelPrerender(kDefaultChildId, |
+ last_prerender_id()); |
+ EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
+ EXPECT_TRUE(prerender_contents->prerendering_has_been_cancelled()); |
+ DummyPrerenderContents* null = NULL; |
+ ASSERT_EQ(null, prerender_manager()->FindEntry(url)); |
} |
TEST_F(PrerenderTest, LinkManagerCancelTwice) { |
@@ -1116,7 +1137,6 @@ TEST_F(PrerenderTest, LinkManagerAddTwiceAbandonTwice) { |
prerender_link_manager()->OnAbandonPrerender(kDefaultChildId, |
second_prerender_id); |
- EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
} |
@@ -1172,9 +1192,6 @@ TEST_F(PrerenderTest, LinkManagerExpireThenAddAgain) { |
EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); |
ASSERT_EQ(second_prerender_contents, |
prerender_manager()->FindAndUseEntry(url)); |
- // The PrerenderLinkManager is not empty since we never removed the first |
- // prerender. |
- EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
} |
TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) { |
@@ -1200,7 +1217,29 @@ TEST_F(PrerenderTest, LinkManagerCancelThenAddAgain) { |
EXPECT_TRUE(second_prerender_contents->prerendering_has_started()); |
ASSERT_EQ(second_prerender_contents, |
prerender_manager()->FindAndUseEntry(url)); |
- EXPECT_FALSE(IsEmptyPrerenderLinkManager()); |
+} |
+ |
+TEST_F(PrerenderTest, LinkManagerChannelClosing) { |
+ EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
+ GURL url("http://www.myexample.com"); |
+ DummyPrerenderContents* prerender_contents = |
+ prerender_manager()->CreateNextPrerenderContents( |
+ url, FINAL_STATUS_TIMED_OUT); |
+ |
+ EXPECT_TRUE(AddSimplePrerender(url)); |
+ EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
+ EXPECT_FALSE(prerender_contents->prerendering_has_been_cancelled()); |
+ ASSERT_EQ(prerender_contents, prerender_manager()->FindEntry(url)); |
+ |
+ prerender_link_manager()->OnChannelClosing(kDefaultChildId); |
+ |
+ prerender_manager()->AdvanceTimeTicks( |
+ prerender_manager()->config().abandon_time_to_live + |
+ TimeDelta::FromSeconds(1)); |
+ |
+ DummyPrerenderContents* null = NULL; |
+ EXPECT_EQ(null, prerender_manager()->FindEntry(url)); |
+ EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
} |
} // namespace prerender |