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()); |