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

Side by Side Diff: chrome/browser/chrome_content_browser_client_unittest.cc

Issue 1230133005: Fix Resource Priorities and Scheduling (Chrome Side) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes from review feedback Created 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/chrome_content_browser_client.h" 5 #include "chrome/browser/chrome_content_browser_client.h"
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/metrics/field_trial.h" 10 #include "base/metrics/field_trial.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 MaybeCopyDisableWebRtcEncryptionSwitch(version_info::Channel::STABLE); 144 MaybeCopyDisableWebRtcEncryptionSwitch(version_info::Channel::STABLE);
145 EXPECT_FALSE(to_command_line_.HasSwitch(switches::kDisableWebRtcEncryption)); 145 EXPECT_FALSE(to_command_line_.HasSwitch(switches::kDisableWebRtcEncryption));
146 } 146 }
147 147
148 #endif // ENABLE_WEBRTC 148 #endif // ENABLE_WEBRTC
149 149
150 class BlinkSettingsFieldTrialTest : public testing::Test { 150 class BlinkSettingsFieldTrialTest : public testing::Test {
151 public: 151 public:
152 static const char kParserFieldTrialName[]; 152 static const char kParserFieldTrialName[];
153 static const char kIFrameFieldTrialName[]; 153 static const char kIFrameFieldTrialName[];
154 static const char kResourcePrioritiesFieldTrialName[];
155 static const char kFakeGroupName[];
156 static const char kDefaultGroupName[];
154 157
155 BlinkSettingsFieldTrialTest() 158 BlinkSettingsFieldTrialTest()
156 : trial_list_(NULL), 159 : trial_list_(NULL),
157 command_line_(base::CommandLine::NO_PROGRAM) {} 160 command_line_(base::CommandLine::NO_PROGRAM) {}
158 161
159 void SetUp() override { 162 void SetUp() override {
160 command_line_.AppendSwitchASCII( 163 command_line_.AppendSwitchASCII(
161 switches::kProcessType, switches::kRendererProcess); 164 switches::kProcessType, switches::kRendererProcess);
162 } 165 }
163 166
164 void TearDown() override { 167 void TearDown() override {
165 variations::testing::ClearAllVariationParams(); 168 variations::testing::ClearAllVariationParams();
166 } 169 }
167 170
168 void CreateFieldTrial(const char* trial_name) { 171 void CreateFieldTrial(const char* trial_name, const char* group_name) {
169 base::FieldTrialList::CreateFieldTrial(trial_name, kGroupName); 172 base::FieldTrialList::CreateFieldTrial(trial_name, group_name);
170 } 173 }
171 174
172 void CreateFieldTrialWithParams( 175 void CreateFieldTrialWithParams(
173 const char* trial_name, 176 const char* trial_name,
177 const char* group_name,
174 const char* key1, const char* value1, 178 const char* key1, const char* value1,
175 const char* key2, const char* value2) { 179 const char* key2, const char* value2) {
176 std::map<std::string, std::string> params; 180 std::map<std::string, std::string> params;
177 params.insert(std::make_pair(key1, value1)); 181 params.insert(std::make_pair(key1, value1));
178 params.insert(std::make_pair(key2, value2)); 182 params.insert(std::make_pair(key2, value2));
179 CreateFieldTrial(trial_name); 183 CreateFieldTrial(trial_name, kFakeGroupName);
180 variations::AssociateVariationParams(trial_name, kGroupName, params); 184 variations::AssociateVariationParams(trial_name, kFakeGroupName, params);
181 } 185 }
182 186
183 void AppendContentBrowserClientSwitches() { 187 void AppendContentBrowserClientSwitches() {
184 client_.AppendExtraCommandLineSwitches(&command_line_, kFakeChildProcessId); 188 client_.AppendExtraCommandLineSwitches(&command_line_, kFakeChildProcessId);
185 } 189 }
186 190
187 const base::CommandLine& command_line() const { 191 const base::CommandLine& command_line() const {
188 return command_line_; 192 return command_line_;
189 } 193 }
190 194
191 void AppendBlinkSettingsSwitch(const char* value) { 195 void AppendBlinkSettingsSwitch(const char* value) {
192 command_line_.AppendSwitchASCII(switches::kBlinkSettings, value); 196 command_line_.AppendSwitchASCII(switches::kBlinkSettings, value);
193 } 197 }
194 198
195 private: 199 private:
196 static const int kFakeChildProcessId = 1; 200 static const int kFakeChildProcessId = 1;
197 static const char kGroupName[];
198 201
199 ChromeContentBrowserClient client_; 202 ChromeContentBrowserClient client_;
200 base::FieldTrialList trial_list_; 203 base::FieldTrialList trial_list_;
201 base::CommandLine command_line_; 204 base::CommandLine command_line_;
202 205
203 content::TestBrowserThreadBundle thread_bundle_; 206 content::TestBrowserThreadBundle thread_bundle_;
204 }; 207 };
205 208
206 const char BlinkSettingsFieldTrialTest::kParserFieldTrialName[] = 209 const char BlinkSettingsFieldTrialTest::kParserFieldTrialName[] =
207 "BackgroundHtmlParserTokenLimits"; 210 "BackgroundHtmlParserTokenLimits";
208 const char BlinkSettingsFieldTrialTest::kIFrameFieldTrialName[] = 211 const char BlinkSettingsFieldTrialTest::kIFrameFieldTrialName[] =
209 "LowPriorityIFrames"; 212 "LowPriorityIFrames";
210 const char BlinkSettingsFieldTrialTest::kGroupName[] = "FakeGroup"; 213 const char BlinkSettingsFieldTrialTest::kResourcePrioritiesFieldTrialName[] =
214 "ResourcePriorities";
215 const char BlinkSettingsFieldTrialTest::kFakeGroupName[] = "FakeGroup";
216 const char BlinkSettingsFieldTrialTest::kDefaultGroupName[] = "Default";
211 217
212 TEST_F(BlinkSettingsFieldTrialTest, NoFieldTrial) { 218 TEST_F(BlinkSettingsFieldTrialTest, NoFieldTrial) {
213 AppendContentBrowserClientSwitches(); 219 AppendContentBrowserClientSwitches();
214 EXPECT_FALSE(command_line().HasSwitch(switches::kBlinkSettings)); 220 EXPECT_FALSE(command_line().HasSwitch(switches::kBlinkSettings));
215 } 221 }
216 222
217 TEST_F(BlinkSettingsFieldTrialTest, FieldTrialWithoutParams) { 223 TEST_F(BlinkSettingsFieldTrialTest, FieldTrialWithoutParams) {
218 CreateFieldTrial(kParserFieldTrialName); 224 CreateFieldTrial(kParserFieldTrialName, kFakeGroupName);
219 AppendContentBrowserClientSwitches(); 225 AppendContentBrowserClientSwitches();
220 EXPECT_FALSE(command_line().HasSwitch(switches::kBlinkSettings)); 226 EXPECT_FALSE(command_line().HasSwitch(switches::kBlinkSettings));
221 } 227 }
222 228
223 TEST_F(BlinkSettingsFieldTrialTest, BlinkSettingsSwitchAlreadySpecified) { 229 TEST_F(BlinkSettingsFieldTrialTest, BlinkSettingsSwitchAlreadySpecified) {
224 AppendBlinkSettingsSwitch("foo"); 230 AppendBlinkSettingsSwitch("foo");
225 CreateFieldTrialWithParams(kParserFieldTrialName, 231 CreateFieldTrialWithParams(kParserFieldTrialName, kFakeGroupName,
226 "key1", "value1", "key2", "value2"); 232 "key1", "value1", "key2", "value2");
227 AppendContentBrowserClientSwitches(); 233 AppendContentBrowserClientSwitches();
228 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); 234 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings));
229 EXPECT_EQ("foo", 235 EXPECT_EQ("foo",
230 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); 236 command_line().GetSwitchValueASCII(switches::kBlinkSettings));
231 } 237 }
232 238
233 TEST_F(BlinkSettingsFieldTrialTest, FieldTrialEnabled) { 239 TEST_F(BlinkSettingsFieldTrialTest, FieldTrialEnabled) {
234 CreateFieldTrialWithParams(kParserFieldTrialName, 240 CreateFieldTrialWithParams(kParserFieldTrialName, kFakeGroupName,
235 "key1", "value1", "key2", "value2"); 241 "key1", "value1", "key2", "value2");
236 AppendContentBrowserClientSwitches(); 242 AppendContentBrowserClientSwitches();
237 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); 243 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings));
238 EXPECT_EQ("key1=value1,key2=value2", 244 EXPECT_EQ("key1=value1,key2=value2",
239 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); 245 command_line().GetSwitchValueASCII(switches::kBlinkSettings));
240 } 246 }
241 247
242 TEST_F(BlinkSettingsFieldTrialTest, MultipleFieldTrialsEnabled) { 248 TEST_F(BlinkSettingsFieldTrialTest, MultipleFieldTrialsEnabled) {
243 CreateFieldTrialWithParams(kParserFieldTrialName, 249 CreateFieldTrialWithParams(kParserFieldTrialName, kFakeGroupName,
244 "key1", "value1", "key2", "value2"); 250 "key1", "value1", "key2", "value2");
245 CreateFieldTrialWithParams(kIFrameFieldTrialName, 251 CreateFieldTrialWithParams(kIFrameFieldTrialName, kFakeGroupName,
246 "keyA", "valueA", "keyB", "valueB"); 252 "keyA", "valueA", "keyB", "valueB");
247 AppendContentBrowserClientSwitches(); 253 AppendContentBrowserClientSwitches();
248 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); 254 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings));
249 EXPECT_EQ("key1=value1,key2=value2,keyA=valueA,keyB=valueB", 255 EXPECT_EQ("key1=value1,key2=value2,keyA=valueA,keyB=valueB",
250 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); 256 command_line().GetSwitchValueASCII(switches::kBlinkSettings));
251 } 257 }
252 258
253 TEST_F(BlinkSettingsFieldTrialTest, MultipleFieldTrialsDuplicateKeys) { 259 TEST_F(BlinkSettingsFieldTrialTest, MultipleFieldTrialsDuplicateKeys) {
254 CreateFieldTrialWithParams(kParserFieldTrialName, 260 CreateFieldTrialWithParams(kParserFieldTrialName, kFakeGroupName,
255 "key1", "value1", "key2", "value2"); 261 "key1", "value1", "key2", "value2");
256 CreateFieldTrialWithParams(kIFrameFieldTrialName, 262 CreateFieldTrialWithParams(kIFrameFieldTrialName, kFakeGroupName,
257 "key2", "duplicate", "key3", "value3"); 263 "key2", "duplicate", "key3", "value3");
258 AppendContentBrowserClientSwitches(); 264 AppendContentBrowserClientSwitches();
259 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); 265 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings));
260 EXPECT_EQ("key1=value1,key2=value2,key2=duplicate,key3=value3", 266 EXPECT_EQ("key1=value1,key2=value2,key2=duplicate,key3=value3",
261 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); 267 command_line().GetSwitchValueASCII(switches::kBlinkSettings));
262 } 268 }
263 269
270 TEST_F(BlinkSettingsFieldTrialTest, ResourcePrioritiesDefault) {
271 CreateFieldTrial(kResourcePrioritiesFieldTrialName, kDefaultGroupName);
272 AppendContentBrowserClientSwitches();
273 EXPECT_FALSE(command_line().HasSwitch(switches::kBlinkSettings));
274 }
275
276 TEST_F(BlinkSettingsFieldTrialTest, ResourcePrioritiesEverythingEnabled) {
277 CreateFieldTrial(kResourcePrioritiesFieldTrialName,
278 "Everything_11111_1_1_10");
279 AppendContentBrowserClientSwitches();
280 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings));
281 EXPECT_EQ("fetchDeferLateScripts=true,"
282 "fetchIncreaseFontPriority=true,"
283 "fetchIncreaseAsyncScriptPriority=true,"
284 "fetchIncreasePriorities=true",
285 command_line().GetSwitchValueASCII(switches::kBlinkSettings));
286 }
287
288 TEST_F(BlinkSettingsFieldTrialTest, ResourcePrioritiesDeferLateScripts) {
289 CreateFieldTrial(kResourcePrioritiesFieldTrialName,
290 "LateScripts_10000_0_1_10");
291 AppendContentBrowserClientSwitches();
292 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings));
293 EXPECT_EQ("fetchDeferLateScripts=true",
294 command_line().GetSwitchValueASCII(switches::kBlinkSettings));
295 }
296
297 TEST_F(BlinkSettingsFieldTrialTest, ResourcePrioritiesFontsEnabled) {
298 CreateFieldTrial(kResourcePrioritiesFieldTrialName, "FontOnly_01000_0_1_10");
299 AppendContentBrowserClientSwitches();
300 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings));
301 EXPECT_EQ("fetchIncreaseFontPriority=true",
302 command_line().GetSwitchValueASCII(switches::kBlinkSettings));
303 }
304
305 TEST_F(BlinkSettingsFieldTrialTest, ResourcePrioritiesIncreaseAsyncScript) {
306 CreateFieldTrial(kResourcePrioritiesFieldTrialName,
307 "AsyncScript_00100_0_1_10");
308 AppendContentBrowserClientSwitches();
309 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings));
310 EXPECT_EQ("fetchIncreaseAsyncScriptPriority=true",
311 command_line().GetSwitchValueASCII(switches::kBlinkSettings));
312 }
313
314 TEST_F(BlinkSettingsFieldTrialTest, ResourcePrioritiesIncreasePriorities) {
315 CreateFieldTrial(kResourcePrioritiesFieldTrialName,
316 "IncreasePriorities_00010_0_1_10");
317 AppendContentBrowserClientSwitches();
318 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings));
319 EXPECT_EQ("fetchIncreasePriorities=true",
320 command_line().GetSwitchValueASCII(switches::kBlinkSettings));
321 }
322
264 } // namespace chrome 323 } // namespace chrome
265 324
266 #if !defined(OS_IOS) && !defined(OS_ANDROID) 325 #if !defined(OS_IOS) && !defined(OS_ANDROID)
267 namespace content { 326 namespace content {
268 327
269 class InstantNTPURLRewriteTest : public BrowserWithTestWindowTest { 328 class InstantNTPURLRewriteTest : public BrowserWithTestWindowTest {
270 protected: 329 protected:
271 void SetUp() override { 330 void SetUp() override {
272 BrowserWithTestWindowTest::SetUp(); 331 BrowserWithTestWindowTest::SetUp();
273 field_trial_list_.reset(new base::FieldTrialList( 332 field_trial_list_.reset(new base::FieldTrialList(
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 365
307 NavigationEntry* entry = browser()->tab_strip_model()-> 366 NavigationEntry* entry = browser()->tab_strip_model()->
308 GetActiveWebContents()->GetController().GetLastCommittedEntry(); 367 GetActiveWebContents()->GetController().GetLastCommittedEntry();
309 ASSERT_TRUE(entry != NULL); 368 ASSERT_TRUE(entry != NULL);
310 EXPECT_EQ(url_rewritten, entry->GetURL()); 369 EXPECT_EQ(url_rewritten, entry->GetURL());
311 EXPECT_EQ(url_original, entry->GetVirtualURL()); 370 EXPECT_EQ(url_original, entry->GetVirtualURL());
312 } 371 }
313 372
314 } // namespace content 373 } // namespace content
315 #endif // !defined(OS_IOS) && !defined(OS_ANDROID) 374 #endif // !defined(OS_IOS) && !defined(OS_ANDROID)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698