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

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

Issue 2580753005: Disable No-State prefetch for offline origins. (Closed)
Patch Set: Created 4 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
Index: chrome/browser/prerender/prerender_unittest.cc
diff --git a/chrome/browser/prerender/prerender_unittest.cc b/chrome/browser/prerender/prerender_unittest.cc
index 9820d3fb24ac20b97f0f94dcb7301643c1f5c743..2a3f8a9fc6ac9d3a0d40edbd1c8204280dd72d07 100644
--- a/chrome/browser/prerender/prerender_unittest.cc
+++ b/chrome/browser/prerender/prerender_unittest.cc
@@ -490,6 +490,80 @@ TEST_F(PrerenderTest, OfflinePrerenderIgnoresThirdPartyCookiesPref) {
EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin());
}
+// Checks that the prerender mode affects "normal" origins such as omnibox, but
+// not offline origin.
+TEST_F(PrerenderTest, PrerenderModePerOrigin) {
+ RestorePrerenderMode restore_prerender_mode;
+
+ prerender_manager()->SetMode(
+ PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH);
+ EXPECT_TRUE(PrerenderManager::IsPrerenderingPossible());
+ EXPECT_FALSE(PrerenderManager::IsNoStatePrefetch(ORIGIN_OFFLINE));
+ EXPECT_TRUE(PrerenderManager::IsNoStatePrefetch(ORIGIN_OMNIBOX));
+ EXPECT_FALSE(PrerenderManager::IsSimpleLoadExperiment(ORIGIN_OFFLINE));
+ EXPECT_FALSE(PrerenderManager::IsSimpleLoadExperiment(ORIGIN_OMNIBOX));
+
+ prerender_manager()->SetMode(PrerenderManager::PRERENDER_MODE_ENABLED);
+ EXPECT_TRUE(PrerenderManager::IsPrerenderingPossible());
+ EXPECT_FALSE(PrerenderManager::IsNoStatePrefetch(ORIGIN_OFFLINE));
+ EXPECT_FALSE(PrerenderManager::IsNoStatePrefetch(ORIGIN_OMNIBOX));
+ EXPECT_FALSE(PrerenderManager::IsSimpleLoadExperiment(ORIGIN_OFFLINE));
+ EXPECT_FALSE(PrerenderManager::IsSimpleLoadExperiment(ORIGIN_OMNIBOX));
+
+ prerender_manager()->SetMode(PrerenderManager::PRERENDER_MODE_DISABLED);
+ EXPECT_FALSE(PrerenderManager::IsPrerenderingPossible());
+
+ prerender_manager()->SetMode(
+ PrerenderManager::PRERENDER_MODE_SIMPLE_LOAD_EXPERIMENT);
+ EXPECT_TRUE(PrerenderManager::IsPrerenderingPossible());
+ EXPECT_FALSE(PrerenderManager::IsNoStatePrefetch(ORIGIN_OFFLINE));
+ EXPECT_FALSE(PrerenderManager::IsNoStatePrefetch(ORIGIN_OMNIBOX));
+ EXPECT_FALSE(PrerenderManager::IsSimpleLoadExperiment(ORIGIN_OFFLINE));
+ EXPECT_TRUE(PrerenderManager::IsSimpleLoadExperiment(ORIGIN_OMNIBOX));
+}
+
+TEST_F(PrerenderTest, PrerenderRespectsPrerenderModeNoStatePrefetch) {
+ GURL url("http://www.google.com/");
+ RestorePrerenderMode restore_prerender_mode;
+
+ prerender_manager()->SetMode(
+ PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH);
+
+ DummyPrerenderContents* prerender_contents =
+ prerender_manager()->CreateNextPrerenderContents(
+ url, FINAL_STATUS_MANAGER_SHUTDOWN);
+ EXPECT_TRUE(AddSimplePrerender(url));
+ EXPECT_EQ(PREFETCH_ONLY, prerender_contents->prerender_mode());
+}
+
+TEST_F(PrerenderTest, PrerenderRespectsPrerenderModeSimpleLoad) {
+ GURL url("http://www.google.com/");
+ RestorePrerenderMode restore_prerender_mode;
+
+ prerender_manager()->SetMode(
+ PrerenderManager::PRERENDER_MODE_SIMPLE_LOAD_EXPERIMENT);
+ EXPECT_FALSE(AddSimplePrerender(url));
+}
+
+// Checks that a full prerender happens in offline mode, even if no-state
+// prefetch is enabled.
+TEST_F(PrerenderTest, OfflinePrerenderIgnoresPrerenderMode) {
+ GURL url("http://www.google.com/");
+ RestorePrerenderMode restore_prerender_mode;
+
+ prerender_manager()->SetMode(
+ PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH);
+
+ ASSERT_TRUE(PrerenderManager::IsPrerenderingPossible());
+
+ DummyPrerenderContents* prerender_contents =
+ prerender_manager()->CreateNextPrerenderContents(
+ url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN);
+ std::unique_ptr<PrerenderHandle> prerender_handle(
+ prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize));
+ EXPECT_EQ(FULL_PRERENDER, prerender_contents->prerender_mode());
+}
+
TEST_F(PrerenderTest, PrerenderDisabledOnLowEndDevice) {
GURL url("http://www.google.com/");
ASSERT_TRUE(PrerenderManager::IsPrerenderingPossible());

Powered by Google App Engine
This is Rietveld 408576698