OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 1213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1224 url, | 1224 url, |
1225 ORIGIN_EXTERNAL_REQUEST, | 1225 ORIGIN_EXTERNAL_REQUEST, |
1226 FINAL_STATUS_MANAGER_SHUTDOWN); | 1226 FINAL_STATUS_MANAGER_SHUTDOWN); |
1227 std::unique_ptr<PrerenderHandle> prerender_handle( | 1227 std::unique_ptr<PrerenderHandle> prerender_handle( |
1228 prerender_manager()->AddPrerenderFromExternalRequest( | 1228 prerender_manager()->AddPrerenderFromExternalRequest( |
1229 url, content::Referrer(), nullptr, gfx::Rect(kSize))); | 1229 url, content::Referrer(), nullptr, gfx::Rect(kSize))); |
1230 EXPECT_FALSE(prerender_handle); | 1230 EXPECT_FALSE(prerender_handle); |
1231 EXPECT_FALSE(prerender_contents->prerendering_has_started()); | 1231 EXPECT_FALSE(prerender_contents->prerendering_has_started()); |
1232 } | 1232 } |
1233 | 1233 |
1234 // Checks that the "PrerenderSilence experiment does not disable offline | 1234 // Checks that the "PrerenderSilence" experiment does not disable offline |
1235 // prerendering. | 1235 // prerendering. |
1236 TEST_F(PrerenderTest, PrerenderSilenceAllowsOffline) { | 1236 TEST_F(PrerenderTest, PrerenderSilenceAllowsOffline) { |
1237 // Set the time to 30 seconds before the experiment expires. | 1237 // Set the time to 30 seconds before the experiment expires. |
1238 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | 1238 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
1239 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:01:00Z")); | 1239 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:01:00Z")); |
1240 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:00:30Z", | 1240 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:00:30Z", |
1241 prerender_manager())); | 1241 prerender_manager())); |
1242 GURL url("http://www.google.com/"); | 1242 GURL url("http://www.google.com/"); |
1243 DummyPrerenderContents* prerender_contents = | 1243 DummyPrerenderContents* prerender_contents = |
1244 prerender_manager()->CreateNextPrerenderContents( | 1244 prerender_manager()->CreateNextPrerenderContents( |
1245 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN); | 1245 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN); |
1246 std::unique_ptr<PrerenderHandle> prerender_handle = | 1246 std::unique_ptr<PrerenderHandle> prerender_handle = |
1247 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize); | 1247 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize); |
1248 EXPECT_TRUE(prerender_handle); | 1248 EXPECT_TRUE(prerender_handle); |
1249 EXPECT_TRUE(prerender_handle->IsPrerendering()); | 1249 EXPECT_TRUE(prerender_handle->IsPrerendering()); |
1250 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 1250 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
1251 EXPECT_EQ(prerender_contents, prerender_handle->contents()); | 1251 EXPECT_EQ(prerender_contents, prerender_handle->contents()); |
1252 EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin()); | 1252 EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin()); |
1253 } | 1253 } |
1254 | 1254 |
1255 // Checks that the "PrerenderSilence" experiment disables prerendering. | 1255 // Checks that the "PrerenderSilence" experiment does not disable |
| 1256 // forced-cellular prerendering. |
| 1257 TEST_F(PrerenderTest, PrerenderSilenceAllowsForcedCellular) { |
| 1258 // Set the time to 30 seconds before the experiment expires. |
| 1259 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
| 1260 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:01:00Z")); |
| 1261 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:00:30Z", |
| 1262 prerender_manager())); |
| 1263 GURL url("http://www.google.com/"); |
| 1264 DummyPrerenderContents* prerender_contents = |
| 1265 prerender_manager()->CreateNextPrerenderContents( |
| 1266 url, ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, |
| 1267 FINAL_STATUS_MANAGER_SHUTDOWN); |
| 1268 std::unique_ptr<PrerenderHandle> prerender_handle = |
| 1269 prerender_manager()->AddPrerenderOnCellularFromExternalRequest( |
| 1270 url, content::Referrer(), nullptr, gfx::Rect(kSize)); |
| 1271 EXPECT_TRUE(prerender_handle); |
| 1272 EXPECT_TRUE(prerender_handle->IsPrerendering()); |
| 1273 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 1274 EXPECT_EQ(prerender_contents, prerender_handle->contents()); |
| 1275 EXPECT_EQ(ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, |
| 1276 prerender_handle->contents()->origin()); |
| 1277 } |
| 1278 |
| 1279 // Checks that the "PrerenderSilence" experiment disables prerendering and |
| 1280 // re-enables it after expiration. |
1256 TEST_F(PrerenderTest, PrerenderSilenceDisallowsNonOffline) { | 1281 TEST_F(PrerenderTest, PrerenderSilenceDisallowsNonOffline) { |
1257 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | 1282 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
1258 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z")); | 1283 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z")); |
1259 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:01:00Z", | 1284 Origin prerender_silence_origins[] = { |
1260 prerender_manager())); | |
1261 const Origin origins[] = { | |
1262 ORIGIN_GWS_PRERENDER, | 1285 ORIGIN_GWS_PRERENDER, |
1263 ORIGIN_OMNIBOX, | 1286 ORIGIN_OMNIBOX, |
1264 ORIGIN_NONE, | 1287 ORIGIN_NONE, |
1265 ORIGIN_LINK_REL_PRERENDER_SAMEDOMAIN, | 1288 ORIGIN_LINK_REL_PRERENDER_SAMEDOMAIN, |
1266 ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN, | 1289 ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN, |
1267 ORIGIN_EXTERNAL_REQUEST, | 1290 ORIGIN_EXTERNAL_REQUEST, |
1268 ORIGIN_INSTANT, | 1291 ORIGIN_INSTANT, |
1269 ORIGIN_LINK_REL_NEXT, | 1292 ORIGIN_LINK_REL_NEXT, |
1270 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, | |
1271 }; | 1293 }; |
1272 for (const Origin& origin : origins) { | 1294 |
| 1295 // Prerender before expiration of the experiment. |
| 1296 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:01:00Z", |
| 1297 prerender_manager())); |
| 1298 for (const Origin& origin : prerender_silence_origins) { |
1273 EXPECT_TRUE( | 1299 EXPECT_TRUE( |
1274 prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin)); | 1300 prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin)); |
1275 } | 1301 } |
| 1302 |
| 1303 // Prerender after expiration of the experiment. |
| 1304 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:03:00Z", |
| 1305 prerender_manager())); |
| 1306 for (const Origin& origin : prerender_silence_origins) { |
| 1307 EXPECT_FALSE( |
| 1308 prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin)); |
| 1309 } |
1276 } | 1310 } |
1277 | 1311 |
1278 // Checks that prerendering is enabled after expiration of the | 1312 // Checks that prerendering is enabled after expiration of the |
1279 // "PrerenderSilence" experiment. | 1313 // "PrerenderSilence" experiment. |
1280 TEST_F(PrerenderTest, PrerenderSilenceAllowsAfterExpiration) { | 1314 TEST_F(PrerenderTest, PrerenderSilenceAllowsAfterExpiration) { |
1281 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | 1315 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
1282 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z")); | 1316 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z")); |
1283 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:01:60Z", | 1317 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:01:60Z", |
1284 prerender_manager())); | 1318 prerender_manager())); |
1285 GURL url("http://www.google.com/"); | 1319 GURL url("http://www.google.com/"); |
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1882 prerender_contents->SetPrerenderMode(PREFETCH_ONLY); | 1916 prerender_contents->SetPrerenderMode(PREFETCH_ONLY); |
1883 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("GET")); | 1917 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("GET")); |
1884 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("HEAD")); | 1918 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("HEAD")); |
1885 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("OPTIONS")); | 1919 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("OPTIONS")); |
1886 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("POST")); | 1920 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("POST")); |
1887 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("TRACE")); | 1921 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("TRACE")); |
1888 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("WHATEVER")); | 1922 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("WHATEVER")); |
1889 } | 1923 } |
1890 | 1924 |
1891 } // namespace prerender | 1925 } // namespace prerender |
OLD | NEW |