Index: chrome/browser/prerender/prerender_unittest.cc |
diff --git a/chrome/browser/prerender/prerender_unittest.cc b/chrome/browser/prerender/prerender_unittest.cc |
index c30343e836f38b41161b386ca55538d2f0b02814..54feea511acf37cb55d90c5bdc350efc12dd6f32 100644 |
--- a/chrome/browser/prerender/prerender_unittest.cc |
+++ b/chrome/browser/prerender/prerender_unittest.cc |
@@ -148,6 +148,10 @@ class UnitTestPrerenderManager : public PrerenderManager { |
return prerender_contents; |
} |
+ bool SetTime(const std::string& time_string) { |
+ return base::Time::FromString(time_string.c_str(), &time_); |
+ } |
+ |
void AdvanceTime(TimeDelta delta) { |
time_ += delta; |
} |
@@ -1104,6 +1108,63 @@ TEST_F(PrerenderTest, PrerenderNotAllowedOnCellularWithExternalOrigin) { |
EXPECT_FALSE(prerender_contents->prerendering_has_started()); |
} |
+TEST_F(PrerenderTest, PrerenderSilenceAllowsOffline) { |
droger
2016/08/25 13:17:29
Can you add a comment like:
// Checks that the pre
pasko
2016/08/25 13:32:01
Done this and other comments with slight modificat
|
+ // Set the time to 30 seconds before the experiment expires. |
+ ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
+ "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:01:00Z")); |
+ ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:00:30Z")); |
+ GURL url("http://www.google.com/"); |
+ 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_TRUE(prerender_handle); |
+ EXPECT_TRUE(prerender_handle->IsPrerendering()); |
+ EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
+ EXPECT_EQ(prerender_contents, prerender_handle->contents()); |
+ EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin()); |
+} |
+ |
+TEST_F(PrerenderTest, PrerenderSilenceDisallowsNonOffline) { |
droger
2016/08/25 13:17:29
// Checks that the prerender silence experiment di
pasko
2016/08/25 13:32:01
Done.
|
+ ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
+ "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z")); |
+ GURL url("http://www.google.com/"); |
+ const Origin origins[] = { |
+ ORIGIN_GWS_PRERENDER, |
+ ORIGIN_OMNIBOX, |
+ ORIGIN_NONE, |
+ ORIGIN_LINK_REL_PRERENDER_SAMEDOMAIN, |
+ ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN, |
+ ORIGIN_EXTERNAL_REQUEST, |
+ ORIGIN_INSTANT, |
+ ORIGIN_LINK_REL_NEXT, |
+ ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, |
+ }; |
+ ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:01:00Z")); |
+ for (const Origin& origin : origins) { |
+ std::unique_ptr<PrerenderHandle> prerender_handle( |
+ prerender_manager()->AddPrerender(origin, url, content::Referrer(), |
+ gfx::Rect(kSize), nullptr)); |
+ EXPECT_FALSE(prerender_handle); |
+ } |
+} |
+ |
+TEST_F(PrerenderTest, PrerenderSilenceAllowsAfterExpiration) { |
droger
2016/08/25 13:17:28
// Checks that prerendering is enabled after expir
pasko
2016/08/25 13:32:01
Done.
|
+ ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
+ "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z")); |
+ GURL url("http://www.google.com/"); |
+ ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:01:00Z")); |
+ prerender_manager()->AdvanceTime(TimeDelta::FromSeconds(60)); |
droger
2016/08/25 13:17:29
Should we call AdvanceTimeticks too, so that times
pasko
2016/08/25 13:32:01
TimeTicks should only be inspected after a prerend
|
+ DummyPrerenderContents* prerender_contents = |
+ prerender_manager()->CreateNextPrerenderContents(url, FINAL_STATUS_USED); |
+ EXPECT_TRUE(AddSimplePrerender(url)); |
+ EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
+ std::unique_ptr<PrerenderContents> entry = |
+ prerender_manager()->FindAndUseEntry(url); |
+ ASSERT_EQ(prerender_contents, entry.get()); |
+} |
+ |
TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) { |
const Origin origins[] = { |
ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, |