| Index: chrome/browser/prerender/prerender_unittest.cc
|
| diff --git a/chrome/browser/prerender/prerender_unittest.cc b/chrome/browser/prerender/prerender_unittest.cc
|
| index 68d6c5bbddbb4f1c7dbcc19977ddbac1ab8352a3..5a197314b43c2902d3e6e071f5d51e3e1cc50937 100644
|
| --- a/chrome/browser/prerender/prerender_unittest.cc
|
| +++ b/chrome/browser/prerender/prerender_unittest.cc
|
| @@ -97,6 +97,17 @@ const gfx::Size kSize(640, 480);
|
|
|
| const uint32_t kDefaultRelTypes = PrerenderRelTypePrerender;
|
|
|
| +const Origin g_prerender_silence_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,
|
| +};
|
| +
|
| base::SimpleTestTickClock* OverridePrerenderManagerTimeTicks(
|
| PrerenderManager* prerender_manager) {
|
| auto tick_clock = base::MakeUnique<base::SimpleTestTickClock>();
|
| @@ -1134,29 +1145,59 @@ TEST_F(PrerenderTest, PrerenderSilenceAllowsOffline) {
|
| EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin());
|
| }
|
|
|
| +// Checks that the "PrerenderSilence experiment does not disable forced-cellular
|
| +// prerendering.
|
| +TEST_F(PrerenderTest, PrerenderSilenceAllowsForcedCellular) {
|
| + // 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(OverridePrerenderManagerTime("2016-12-20T00:00:30Z",
|
| + prerender_manager()));
|
| + GURL url("http://www.google.com/");
|
| + DummyPrerenderContents* prerender_contents =
|
| + prerender_manager()->CreateNextPrerenderContents(
|
| + url, ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
|
| + FINAL_STATUS_MANAGER_SHUTDOWN);
|
| + std::unique_ptr<PrerenderHandle> prerender_handle =
|
| + prerender_manager()->AddPrerenderOnCellularFromExternalRequest(
|
| + url, content::Referrer(), nullptr, gfx::Rect(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_EXTERNAL_REQUEST_FORCED_CELLULAR,
|
| + 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"));
|
| ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:01:00Z",
|
| prerender_manager()));
|
| - 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,
|
| - };
|
| - for (const Origin& origin : origins) {
|
| + for (const Origin& origin : g_prerender_silence_origins) {
|
| EXPECT_TRUE(
|
| prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin));
|
| }
|
| }
|
|
|
| +// Checks that the "PrerenderSilence" experiment disables prerendering even
|
| +// without the field trial, then expires.
|
| +TEST_F(PrerenderTest, PrerenderSilenceWithoutFieldTrial) {
|
| + ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-14T08:00:01Z",
|
| + prerender_manager()));
|
| + for (const Origin& origin : g_prerender_silence_origins) {
|
| + EXPECT_TRUE(
|
| + prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin));
|
| + }
|
| + ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-15T08:00:00Z",
|
| + prerender_manager()));
|
| + for (const Origin& origin : g_prerender_silence_origins) {
|
| + EXPECT_FALSE(
|
| + prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin));
|
| + }
|
| +}
|
| +
|
| // Checks that prerendering is enabled after expiration of the
|
| // "PrerenderSilence" experiment.
|
| TEST_F(PrerenderTest, PrerenderSilenceAllowsAfterExpiration) {
|
|
|