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

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

Issue 2614473002: [NoStatePrefetch] Cancel repeated prefetches with FINAL_STATUS_DUPLICATE (Closed)
Patch Set: more comments Created 3 years, 11 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_unittest.cc
diff --git a/chrome/browser/prerender/prerender_unittest.cc b/chrome/browser/prerender/prerender_unittest.cc
index f9961bac1840cfe0e924d3a5f2ddca411a21f326..ed84fbb2b80ddcc64c19a657e50879fbc798231e 100644
--- a/chrome/browser/prerender/prerender_unittest.cc
+++ b/chrome/browser/prerender/prerender_unittest.cc
@@ -781,6 +781,39 @@ TEST_F(PrerenderTest, LinkManagerNavigateAwayLaunchAnother) {
prerender_manager()->FindEntry(second_url));
}
+// Prefetching the same URL twice during |time_to_live| results in a duplicate
+// and is aborted.
+TEST_F(PrerenderTest, NoStatePrefetchDuplicate) {
+ const GURL kUrl("http://www.google.com/");
+ const TimeDelta kTimeToLive = TimeDelta::FromSeconds(300);
+ const TimeDelta kTestAdvance = TimeDelta::FromSeconds(100);
+
+ RestorePrerenderMode restore_prerender_mode;
+ prerender_manager()->SetMode(
+ PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH);
+ base::SimpleTestTickClock* tick_clock =
+ OverridePrerenderManagerTimeTicks(prerender_manager());
+ prerender_manager()->mutable_config().time_to_live = kTimeToLive;
+
+ // Prefetch the url once.
+ prerender_manager()->CreateNextPrerenderContents(
+ kUrl, ORIGIN_OMNIBOX, FINAL_STATUS_MANAGER_SHUTDOWN);
+ EXPECT_TRUE(
+ prerender_manager()->AddPrerenderFromOmnibox(kUrl, nullptr, gfx::Size()));
+
+ prerender_manager()->CreateNextPrerenderContents(
+ kUrl, ORIGIN_OMNIBOX, FINAL_STATUS_MANAGER_SHUTDOWN);
+
+ // Prefetching again before time_to_live aborts, because it is a duplicate.
+ tick_clock->Advance(kTestAdvance);
+ EXPECT_FALSE(
+ prerender_manager()->AddPrerenderFromOmnibox(kUrl, nullptr, gfx::Size()));
+
+ // Prefetching after time_to_live succeeds.
+ tick_clock->Advance(prerender_manager()->config().time_to_live);
+ EXPECT_TRUE(
+ prerender_manager()->AddPrerenderFromOmnibox(kUrl, nullptr, gfx::Size()));
+}
// Make sure that if we prerender more requests than we support, that we launch
// them in the order given up until we reach MaxConcurrency, at which point we

Powered by Google App Engine
This is Rietveld 408576698