Commit 15e5a046 authored by pasko's avatar pasko Committed by Commit bot

Prerender: exclude AGSA from the PrerenderSilence experiment

Currently AGSA only uses ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR. The experiment
will not take effect on these origins. Other 1st party apps are not using this
prerender::Origin, as far as we know, and the use of it is restricted to 1st
party, hence this change should not affect the experiment for other Android
apps.

BUG=640592

Review-Url: https://codereview.chromium.org/2600893002
Cr-Commit-Position: refs/heads/master@{#440750}
parent aa0a47da
......@@ -1262,8 +1262,10 @@ void PrerenderManager::RecordNetworkBytes(Origin origin,
}
bool PrerenderManager::IsPrerenderSilenceExperiment(Origin origin) const {
if (origin == ORIGIN_OFFLINE)
if (origin == ORIGIN_OFFLINE ||
origin == ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR) {
return false;
}
// The group name should contain expiration time formatted as:
// "ExperimentYes_expires_YYYY-MM-DDTHH:MM:SSZ".
......
......@@ -1231,7 +1231,7 @@ TEST_F(PrerenderTest, PrerenderNotAllowedOnCellularWithExternalOrigin) {
EXPECT_FALSE(prerender_contents->prerendering_has_started());
}
// Checks that the "PrerenderSilence experiment does not disable offline
// Checks that the "PrerenderSilence" experiment does not disable offline
// prerendering.
TEST_F(PrerenderTest, PrerenderSilenceAllowsOffline) {
// Set the time to 30 seconds before the experiment expires.
......@@ -1252,13 +1252,36 @@ TEST_F(PrerenderTest, PrerenderSilenceAllowsOffline) {
EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin());
}
// Checks that the "PrerenderSilence" experiment disables prerendering.
// 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 and
// re-enables it after expiration.
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 prerender_silence_origins[] = {
ORIGIN_GWS_PRERENDER,
ORIGIN_OMNIBOX,
ORIGIN_NONE,
......@@ -1267,12 +1290,23 @@ TEST_F(PrerenderTest, PrerenderSilenceDisallowsNonOffline) {
ORIGIN_EXTERNAL_REQUEST,
ORIGIN_INSTANT,
ORIGIN_LINK_REL_NEXT,
ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
};
for (const Origin& origin : origins) {
// Prerender before expiration of the experiment.
ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:01:00Z",
prerender_manager()));
for (const Origin& origin : prerender_silence_origins) {
EXPECT_TRUE(
prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin));
}
// Prerender after expiration of the experiment.
ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:03:00Z",
prerender_manager()));
for (const Origin& origin : prerender_silence_origins) {
EXPECT_FALSE(
prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin));
}
}
// Checks that prerendering is enabled after expiration of the
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment