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

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

Issue 2614473002: [NoStatePrefetch] Cancel repeated prefetches with FINAL_STATUS_DUPLICATE (Closed)
Patch Set: Update test to use kPrefetchReuseMins 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
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | no next file » | 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 f9961bac1840cfe0e924d3a5f2ddca411a21f326..82b9e9666d8301ff63c6a55b5f6abbe41db6aefb 100644
--- a/chrome/browser/prerender/prerender_unittest.cc
+++ b/chrome/browser/prerender/prerender_unittest.cc
@@ -38,6 +38,7 @@
#include "content/public/browser/render_view_host.h"
#include "content/public/test/test_browser_thread.h"
#include "net/base/network_change_notifier.h"
+#include "net/http/http_cache.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"
@@ -781,6 +782,37 @@ 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/");
+
+ RestorePrerenderMode restore_prerender_mode;
+ prerender_manager()->SetMode(
+ PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH);
+ base::SimpleTestTickClock* tick_clock =
+ OverridePrerenderManagerTimeTicks(prerender_manager());
+
+ // 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(base::TimeDelta::FromSeconds(1));
+ EXPECT_FALSE(
+ prerender_manager()->AddPrerenderFromOmnibox(kUrl, nullptr, gfx::Size()));
+
+ // Prefetching after time_to_live succeeds.
+ tick_clock->Advance(
+ base::TimeDelta::FromMinutes(net::HttpCache::kPrefetchReuseMins));
+ 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
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698