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

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

Issue 11316311: Make PrerenderHandle an observer of PrerenderContents. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: clear to land Created 8 years 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
« no previous file with comments | « chrome/browser/prerender/prerender_tracker_unittest.cc ('k') | chrome/common/prerender_messages.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « chrome/browser/prerender/prerender_tracker_unittest.cc ('k') | chrome/common/prerender_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698