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

Side by Side Diff: chrome/browser/prerender/prerender_unittest.cc

Issue 2538723003: Prerender: Hardcode the Silence experiment date (Closed)
Patch Set: allow ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR during PrerenderSilence Created 4 years 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 UnitTestPrerenderManager* test_prerender_manager_; 90 UnitTestPrerenderManager* test_prerender_manager_;
91 FinalStatus expected_final_status_; 91 FinalStatus expected_final_status_;
92 }; 92 };
93 93
94 int DummyPrerenderContents::g_next_route_id_ = 0; 94 int DummyPrerenderContents::g_next_route_id_ = 0;
95 95
96 const gfx::Size kSize(640, 480); 96 const gfx::Size kSize(640, 480);
97 97
98 const uint32_t kDefaultRelTypes = PrerenderRelTypePrerender; 98 const uint32_t kDefaultRelTypes = PrerenderRelTypePrerender;
99 99
100 const Origin g_prerender_silence_origins[] = {
101 ORIGIN_GWS_PRERENDER,
102 ORIGIN_OMNIBOX,
103 ORIGIN_NONE,
104 ORIGIN_LINK_REL_PRERENDER_SAMEDOMAIN,
105 ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN,
106 ORIGIN_EXTERNAL_REQUEST,
107 ORIGIN_INSTANT,
108 ORIGIN_LINK_REL_NEXT,
109 };
110
100 base::SimpleTestTickClock* OverridePrerenderManagerTimeTicks( 111 base::SimpleTestTickClock* OverridePrerenderManagerTimeTicks(
101 PrerenderManager* prerender_manager) { 112 PrerenderManager* prerender_manager) {
102 auto tick_clock = base::MakeUnique<base::SimpleTestTickClock>(); 113 auto tick_clock = base::MakeUnique<base::SimpleTestTickClock>();
103 base::SimpleTestTickClock* tick_clock_ptr = tick_clock.get(); 114 base::SimpleTestTickClock* tick_clock_ptr = tick_clock.get();
104 prerender_manager->SetTickClockForTesting(std::move(tick_clock)); 115 prerender_manager->SetTickClockForTesting(std::move(tick_clock));
105 return tick_clock_ptr; 116 return tick_clock_ptr;
106 } 117 }
107 118
108 bool OverridePrerenderManagerTime(const char* utc_time, 119 bool OverridePrerenderManagerTime(const char* utc_time,
109 PrerenderManager* prerender_manager) { 120 PrerenderManager* prerender_manager) {
(...skipping 1017 matching lines...) Expand 10 before | Expand all | Expand 10 after
1127 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN); 1138 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN);
1128 std::unique_ptr<PrerenderHandle> prerender_handle = 1139 std::unique_ptr<PrerenderHandle> prerender_handle =
1129 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize); 1140 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize);
1130 EXPECT_TRUE(prerender_handle); 1141 EXPECT_TRUE(prerender_handle);
1131 EXPECT_TRUE(prerender_handle->IsPrerendering()); 1142 EXPECT_TRUE(prerender_handle->IsPrerendering());
1132 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1143 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1133 EXPECT_EQ(prerender_contents, prerender_handle->contents()); 1144 EXPECT_EQ(prerender_contents, prerender_handle->contents());
1134 EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin()); 1145 EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin());
1135 } 1146 }
1136 1147
1148 // Checks that the "PrerenderSilence experiment does not disable forced-cellular
1149 // prerendering.
1150 TEST_F(PrerenderTest, PrerenderSilenceAllowsForcedCellular) {
1151 // Set the time to 30 seconds before the experiment expires.
1152 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1153 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:01:00Z"));
1154 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:00:30Z",
1155 prerender_manager()));
1156 GURL url("http://www.google.com/");
1157 DummyPrerenderContents* prerender_contents =
1158 prerender_manager()->CreateNextPrerenderContents(
1159 url, ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
1160 FINAL_STATUS_MANAGER_SHUTDOWN);
1161 std::unique_ptr<PrerenderHandle> prerender_handle =
1162 prerender_manager()->AddPrerenderOnCellularFromExternalRequest(
1163 url, content::Referrer(), nullptr, gfx::Rect(kSize));
1164 EXPECT_TRUE(prerender_handle);
1165 EXPECT_TRUE(prerender_handle->IsPrerendering());
1166 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1167 EXPECT_EQ(prerender_contents, prerender_handle->contents());
1168 EXPECT_EQ(ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
1169 prerender_handle->contents()->origin());
1170 }
1171
1137 // Checks that the "PrerenderSilence" experiment disables prerendering. 1172 // Checks that the "PrerenderSilence" experiment disables prerendering.
1138 TEST_F(PrerenderTest, PrerenderSilenceDisallowsNonOffline) { 1173 TEST_F(PrerenderTest, PrerenderSilenceDisallowsNonOffline) {
1139 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 1174 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1140 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z")); 1175 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z"));
1141 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:01:00Z", 1176 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:01:00Z",
1142 prerender_manager())); 1177 prerender_manager()));
1143 const Origin origins[] = { 1178 for (const Origin& origin : g_prerender_silence_origins) {
1144 ORIGIN_GWS_PRERENDER,
1145 ORIGIN_OMNIBOX,
1146 ORIGIN_NONE,
1147 ORIGIN_LINK_REL_PRERENDER_SAMEDOMAIN,
1148 ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN,
1149 ORIGIN_EXTERNAL_REQUEST,
1150 ORIGIN_INSTANT,
1151 ORIGIN_LINK_REL_NEXT,
1152 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
1153 };
1154 for (const Origin& origin : origins) {
1155 EXPECT_TRUE( 1179 EXPECT_TRUE(
1156 prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin)); 1180 prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin));
1157 } 1181 }
1158 } 1182 }
1159 1183
1184 // Checks that the "PrerenderSilence" experiment disables prerendering even
1185 // without the field trial, then expires.
1186 TEST_F(PrerenderTest, PrerenderSilenceWithoutFieldTrial) {
1187 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-14T08:00:01Z",
1188 prerender_manager()));
1189 for (const Origin& origin : g_prerender_silence_origins) {
1190 EXPECT_TRUE(
1191 prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin));
1192 }
1193 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-15T08:00:00Z",
1194 prerender_manager()));
1195 for (const Origin& origin : g_prerender_silence_origins) {
1196 EXPECT_FALSE(
1197 prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin));
1198 }
1199 }
1200
1160 // Checks that prerendering is enabled after expiration of the 1201 // Checks that prerendering is enabled after expiration of the
1161 // "PrerenderSilence" experiment. 1202 // "PrerenderSilence" experiment.
1162 TEST_F(PrerenderTest, PrerenderSilenceAllowsAfterExpiration) { 1203 TEST_F(PrerenderTest, PrerenderSilenceAllowsAfterExpiration) {
1163 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 1204 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1164 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z")); 1205 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z"));
1165 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:01:60Z", 1206 ASSERT_TRUE(OverridePrerenderManagerTime("2016-12-20T00:01:60Z",
1166 prerender_manager())); 1207 prerender_manager()));
1167 GURL url("http://www.google.com/"); 1208 GURL url("http://www.google.com/");
1168 DummyPrerenderContents* prerender_contents = 1209 DummyPrerenderContents* prerender_contents =
1169 prerender_manager()->CreateNextPrerenderContents(url, FINAL_STATUS_USED); 1210 prerender_manager()->CreateNextPrerenderContents(url, FINAL_STATUS_USED);
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after
1764 prerender_contents->SetPrerenderMode(PREFETCH_ONLY); 1805 prerender_contents->SetPrerenderMode(PREFETCH_ONLY);
1765 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("GET")); 1806 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("GET"));
1766 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("HEAD")); 1807 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("HEAD"));
1767 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("OPTIONS")); 1808 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("OPTIONS"));
1768 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("POST")); 1809 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("POST"));
1769 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("TRACE")); 1810 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("TRACE"));
1770 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("WHATEVER")); 1811 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("WHATEVER"));
1771 } 1812 }
1772 1813
1773 } // namespace prerender 1814 } // namespace prerender
OLDNEW
« 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