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

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

Issue 2275933002: Experiment to disable Prerendering with fast wind-down (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove FRIEND_TEST_ALL_PREFIXES Created 4 years, 4 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 c30343e836f38b41161b386ca55538d2f0b02814..42ed22c0b15a24d9e2f5e984dde5304cd10d0fa6 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,65 @@ TEST_F(PrerenderTest, PrerenderNotAllowedOnCellularWithExternalOrigin) {
EXPECT_FALSE(prerender_contents->prerendering_has_started());
}
+// Checks that the "PrerenderSilence experiment does not disable offline
+// prerendering.
+TEST_F(PrerenderTest, PrerenderSilenceAllowsOffline) {
+ // 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"));
mmenke 2016/08/26 16:44:47 Do we really want a unit test with an expiration d
pasko 2016/08/26 17:39:31 I do not follow how release channel can be relevan
mmenke 2016/08/26 18:15:40 Ahh, I missed that. Channel is relevant because i
+ 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());
+}
+
+// Checks that the "PrerenderSilence" experiment disables prerendering.
+TEST_F(PrerenderTest, PrerenderSilenceDisallowsNonOffline) {
+ ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
+ "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z"));
+ 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) {
+ EXPECT_TRUE(
+ prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin));
+ }
+}
+
+// Checks that prerendering is enabled after expiration of the
+// "PrerenderSilence" experiment.
+TEST_F(PrerenderTest, PrerenderSilenceAllowsAfterExpiration) {
+ 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));
+ 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,
« 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