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

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: rebase 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..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,
« 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