| OLD | NEW |
| 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 Loading... |
| 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 kGroupName[]; |
| 156 static const char kDefaultGroupName[]; |
| 157 static const char kEverythingGroupName[]; |
| 158 static const char kLateScriptsGroupName[]; |
| 159 static const char kFontsGroupName[]; |
| 160 static const char kAsyncScriptsGroupName[]; |
| 161 static const char kPrioritiesGroupName[]; |
| 154 | 162 |
| 155 BlinkSettingsFieldTrialTest() | 163 BlinkSettingsFieldTrialTest() |
| 156 : trial_list_(NULL), | 164 : trial_list_(NULL), |
| 157 command_line_(base::CommandLine::NO_PROGRAM) {} | 165 command_line_(base::CommandLine::NO_PROGRAM) {} |
| 158 | 166 |
| 159 void SetUp() override { | 167 void SetUp() override { |
| 160 command_line_.AppendSwitchASCII( | 168 command_line_.AppendSwitchASCII( |
| 161 switches::kProcessType, switches::kRendererProcess); | 169 switches::kProcessType, switches::kRendererProcess); |
| 162 } | 170 } |
| 163 | 171 |
| 164 void TearDown() override { | 172 void TearDown() override { |
| 165 variations::testing::ClearAllVariationParams(); | 173 variations::testing::ClearAllVariationParams(); |
| 166 } | 174 } |
| 167 | 175 |
| 168 void CreateFieldTrial(const char* trial_name) { | 176 void CreateFieldTrial(const char* trial_name, const char* group_name) { |
| 169 base::FieldTrialList::CreateFieldTrial(trial_name, kGroupName); | 177 base::FieldTrialList::CreateFieldTrial(trial_name, group_name); |
| 170 } | 178 } |
| 171 | 179 |
| 172 void CreateFieldTrialWithParams( | 180 void CreateFieldTrialWithParams( |
| 173 const char* trial_name, | 181 const char* trial_name, |
| 182 const char* group_name, |
| 174 const char* key1, const char* value1, | 183 const char* key1, const char* value1, |
| 175 const char* key2, const char* value2) { | 184 const char* key2, const char* value2) { |
| 176 std::map<std::string, std::string> params; | 185 std::map<std::string, std::string> params; |
| 177 params.insert(std::make_pair(key1, value1)); | 186 params.insert(std::make_pair(key1, value1)); |
| 178 params.insert(std::make_pair(key2, value2)); | 187 params.insert(std::make_pair(key2, value2)); |
| 179 CreateFieldTrial(trial_name); | 188 CreateFieldTrial(trial_name, kGroupName); |
| 180 variations::AssociateVariationParams(trial_name, kGroupName, params); | 189 variations::AssociateVariationParams(trial_name, kGroupName, params); |
| 181 } | 190 } |
| 182 | 191 |
| 183 void AppendContentBrowserClientSwitches() { | 192 void AppendContentBrowserClientSwitches() { |
| 184 client_.AppendExtraCommandLineSwitches(&command_line_, kFakeChildProcessId); | 193 client_.AppendExtraCommandLineSwitches(&command_line_, kFakeChildProcessId); |
| 185 } | 194 } |
| 186 | 195 |
| 187 const base::CommandLine& command_line() const { | 196 const base::CommandLine& command_line() const { |
| 188 return command_line_; | 197 return command_line_; |
| 189 } | 198 } |
| 190 | 199 |
| 191 void AppendBlinkSettingsSwitch(const char* value) { | 200 void AppendBlinkSettingsSwitch(const char* value) { |
| 192 command_line_.AppendSwitchASCII(switches::kBlinkSettings, value); | 201 command_line_.AppendSwitchASCII(switches::kBlinkSettings, value); |
| 193 } | 202 } |
| 194 | 203 |
| 195 private: | 204 private: |
| 196 static const int kFakeChildProcessId = 1; | 205 static const int kFakeChildProcessId = 1; |
| 197 static const char kGroupName[]; | |
| 198 | 206 |
| 199 ChromeContentBrowserClient client_; | 207 ChromeContentBrowserClient client_; |
| 200 base::FieldTrialList trial_list_; | 208 base::FieldTrialList trial_list_; |
| 201 base::CommandLine command_line_; | 209 base::CommandLine command_line_; |
| 202 | 210 |
| 203 content::TestBrowserThreadBundle thread_bundle_; | 211 content::TestBrowserThreadBundle thread_bundle_; |
| 204 }; | 212 }; |
| 205 | 213 |
| 206 const char BlinkSettingsFieldTrialTest::kParserFieldTrialName[] = | 214 const char BlinkSettingsFieldTrialTest::kParserFieldTrialName[] = |
| 207 "BackgroundHtmlParserTokenLimits"; | 215 "BackgroundHtmlParserTokenLimits"; |
| 208 const char BlinkSettingsFieldTrialTest::kIFrameFieldTrialName[] = | 216 const char BlinkSettingsFieldTrialTest::kIFrameFieldTrialName[] = |
| 209 "LowPriorityIFrames"; | 217 "LowPriorityIFrames"; |
| 218 const char BlinkSettingsFieldTrialTest::kResourcePrioritiesFieldTrialName[] = |
| 219 "ResourcePriorities"; |
| 210 const char BlinkSettingsFieldTrialTest::kGroupName[] = "FakeGroup"; | 220 const char BlinkSettingsFieldTrialTest::kGroupName[] = "FakeGroup"; |
| 221 const char BlinkSettingsFieldTrialTest::kDefaultGroupName[] = "Default"; |
| 222 const char BlinkSettingsFieldTrialTest::kEverythingGroupName[] = |
| 223 "Everything_11111_1_1_10"; |
| 224 const char BlinkSettingsFieldTrialTest::kLateScriptsGroupName[] = |
| 225 "LateScripts_10000_0_1_10"; |
| 226 const char BlinkSettingsFieldTrialTest::kFontsGroupName[] = |
| 227 "FontOnly_01000_0_1_10"; |
| 228 const char BlinkSettingsFieldTrialTest::kAsyncScriptsGroupName[] = |
| 229 "FontOnly_00100_0_1_10"; |
| 230 const char BlinkSettingsFieldTrialTest::kPrioritiesGroupName[] = |
| 231 "FontOnly_00010_0_1_10"; |
| 211 | 232 |
| 212 TEST_F(BlinkSettingsFieldTrialTest, NoFieldTrial) { | 233 TEST_F(BlinkSettingsFieldTrialTest, NoFieldTrial) { |
| 213 AppendContentBrowserClientSwitches(); | 234 AppendContentBrowserClientSwitches(); |
| 214 EXPECT_FALSE(command_line().HasSwitch(switches::kBlinkSettings)); | 235 EXPECT_FALSE(command_line().HasSwitch(switches::kBlinkSettings)); |
| 215 } | 236 } |
| 216 | 237 |
| 217 TEST_F(BlinkSettingsFieldTrialTest, FieldTrialWithoutParams) { | 238 TEST_F(BlinkSettingsFieldTrialTest, FieldTrialWithoutParams) { |
| 218 CreateFieldTrial(kParserFieldTrialName); | 239 CreateFieldTrial(kParserFieldTrialName, kGroupName); |
| 240 AppendContentBrowserClientSwitches(); |
| 241 EXPECT_FALSE(command_line().HasSwitch(switches::kBlinkSettings)); |
| 242 } |
| 243 |
| 244 TEST_F(BlinkSettingsFieldTrialTest, FieldTrialWithDefaultParams) { |
| 245 CreateFieldTrial(kResourcePrioritiesFieldTrialName, kDefaultGroupName); |
| 219 AppendContentBrowserClientSwitches(); | 246 AppendContentBrowserClientSwitches(); |
| 220 EXPECT_FALSE(command_line().HasSwitch(switches::kBlinkSettings)); | 247 EXPECT_FALSE(command_line().HasSwitch(switches::kBlinkSettings)); |
| 221 } | 248 } |
| 222 | 249 |
| 223 TEST_F(BlinkSettingsFieldTrialTest, BlinkSettingsSwitchAlreadySpecified) { | 250 TEST_F(BlinkSettingsFieldTrialTest, BlinkSettingsSwitchAlreadySpecified) { |
| 224 AppendBlinkSettingsSwitch("foo"); | 251 AppendBlinkSettingsSwitch("foo"); |
| 225 CreateFieldTrialWithParams(kParserFieldTrialName, | 252 CreateFieldTrialWithParams(kParserFieldTrialName, kGroupName, |
| 226 "key1", "value1", "key2", "value2"); | 253 "key1", "value1", "key2", "value2"); |
| 227 AppendContentBrowserClientSwitches(); | 254 AppendContentBrowserClientSwitches(); |
| 228 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); | 255 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); |
| 229 EXPECT_EQ("foo", | 256 EXPECT_EQ("foo", |
| 230 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); | 257 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); |
| 231 } | 258 } |
| 232 | 259 |
| 233 TEST_F(BlinkSettingsFieldTrialTest, FieldTrialEnabled) { | 260 TEST_F(BlinkSettingsFieldTrialTest, FieldTrialEnabled) { |
| 234 CreateFieldTrialWithParams(kParserFieldTrialName, | 261 CreateFieldTrialWithParams(kParserFieldTrialName, kGroupName, |
| 235 "key1", "value1", "key2", "value2"); | 262 "key1", "value1", "key2", "value2"); |
| 236 AppendContentBrowserClientSwitches(); | 263 AppendContentBrowserClientSwitches(); |
| 237 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); | 264 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); |
| 238 EXPECT_EQ("key1=value1,key2=value2", | 265 EXPECT_EQ("key1=value1,key2=value2", |
| 239 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); | 266 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); |
| 240 } | 267 } |
| 241 | 268 |
| 242 TEST_F(BlinkSettingsFieldTrialTest, MultipleFieldTrialsEnabled) { | 269 TEST_F(BlinkSettingsFieldTrialTest, MultipleFieldTrialsEnabled) { |
| 243 CreateFieldTrialWithParams(kParserFieldTrialName, | 270 CreateFieldTrialWithParams(kParserFieldTrialName, kGroupName, |
| 244 "key1", "value1", "key2", "value2"); | 271 "key1", "value1", "key2", "value2"); |
| 245 CreateFieldTrialWithParams(kIFrameFieldTrialName, | 272 CreateFieldTrialWithParams(kIFrameFieldTrialName, kGroupName, |
| 246 "keyA", "valueA", "keyB", "valueB"); | 273 "keyA", "valueA", "keyB", "valueB"); |
| 247 AppendContentBrowserClientSwitches(); | 274 AppendContentBrowserClientSwitches(); |
| 248 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); | 275 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); |
| 249 EXPECT_EQ("key1=value1,key2=value2,keyA=valueA,keyB=valueB", | 276 EXPECT_EQ("key1=value1,key2=value2,keyA=valueA,keyB=valueB", |
| 250 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); | 277 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); |
| 251 } | 278 } |
| 252 | 279 |
| 253 TEST_F(BlinkSettingsFieldTrialTest, MultipleFieldTrialsDuplicateKeys) { | 280 TEST_F(BlinkSettingsFieldTrialTest, MultipleFieldTrialsDuplicateKeys) { |
| 254 CreateFieldTrialWithParams(kParserFieldTrialName, | 281 CreateFieldTrialWithParams(kParserFieldTrialName, kGroupName, |
| 255 "key1", "value1", "key2", "value2"); | 282 "key1", "value1", "key2", "value2"); |
| 256 CreateFieldTrialWithParams(kIFrameFieldTrialName, | 283 CreateFieldTrialWithParams(kIFrameFieldTrialName, kGroupName, |
| 257 "key2", "duplicate", "key3", "value3"); | 284 "key2", "duplicate", "key3", "value3"); |
| 258 AppendContentBrowserClientSwitches(); | 285 AppendContentBrowserClientSwitches(); |
| 259 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); | 286 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); |
| 260 EXPECT_EQ("key1=value1,key2=value2,key2=duplicate,key3=value3", | 287 EXPECT_EQ("key1=value1,key2=value2,key2=duplicate,key3=value3", |
| 261 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); | 288 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); |
| 262 } | 289 } |
| 263 | 290 |
| 291 TEST_F(BlinkSettingsFieldTrialTest, ResourcePrioritiesEverythingEnabled) { |
| 292 CreateFieldTrial(kResourcePrioritiesFieldTrialName, kEverythingGroupName); |
| 293 AppendContentBrowserClientSwitches(); |
| 294 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); |
| 295 EXPECT_EQ("fetchDeferLateScripts=true," |
| 296 "fetchIncreaseFontPriority=true," |
| 297 "fetchIncreaseAsyncScriptPriority=true," |
| 298 "fetchIncreasePriorities=true", |
| 299 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); |
| 300 } |
| 301 |
| 302 TEST_F(BlinkSettingsFieldTrialTest, ResourcePrioritiesDeferLateScripts) { |
| 303 CreateFieldTrial(kResourcePrioritiesFieldTrialName, kLateScriptsGroupName); |
| 304 AppendContentBrowserClientSwitches(); |
| 305 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); |
| 306 EXPECT_EQ("fetchDeferLateScripts=true", |
| 307 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); |
| 308 } |
| 309 |
| 310 TEST_F(BlinkSettingsFieldTrialTest, ResourcePrioritiesFontsEnabled) { |
| 311 CreateFieldTrial(kResourcePrioritiesFieldTrialName, kFontsGroupName); |
| 312 AppendContentBrowserClientSwitches(); |
| 313 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); |
| 314 EXPECT_EQ("fetchIncreaseFontPriority=true", |
| 315 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); |
| 316 } |
| 317 |
| 318 TEST_F(BlinkSettingsFieldTrialTest, ResourcePrioritiesIncreaseAsyncScript) { |
| 319 CreateFieldTrial(kResourcePrioritiesFieldTrialName, kAsyncScriptsGroupName); |
| 320 AppendContentBrowserClientSwitches(); |
| 321 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); |
| 322 EXPECT_EQ("fetchIncreaseAsyncScriptPriority=true", |
| 323 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); |
| 324 } |
| 325 |
| 326 TEST_F(BlinkSettingsFieldTrialTest, ResourcePrioritiesIncreasePriorities) { |
| 327 CreateFieldTrial(kResourcePrioritiesFieldTrialName, kPrioritiesGroupName); |
| 328 AppendContentBrowserClientSwitches(); |
| 329 EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings)); |
| 330 EXPECT_EQ("fetchIncreasePriorities=true", |
| 331 command_line().GetSwitchValueASCII(switches::kBlinkSettings)); |
| 332 } |
| 333 |
| 264 } // namespace chrome | 334 } // namespace chrome |
| 265 | 335 |
| 266 #if !defined(OS_IOS) && !defined(OS_ANDROID) | 336 #if !defined(OS_IOS) && !defined(OS_ANDROID) |
| 267 namespace content { | 337 namespace content { |
| 268 | 338 |
| 269 class InstantNTPURLRewriteTest : public BrowserWithTestWindowTest { | 339 class InstantNTPURLRewriteTest : public BrowserWithTestWindowTest { |
| 270 protected: | 340 protected: |
| 271 void SetUp() override { | 341 void SetUp() override { |
| 272 BrowserWithTestWindowTest::SetUp(); | 342 BrowserWithTestWindowTest::SetUp(); |
| 273 field_trial_list_.reset(new base::FieldTrialList( | 343 field_trial_list_.reset(new base::FieldTrialList( |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 | 376 |
| 307 NavigationEntry* entry = browser()->tab_strip_model()-> | 377 NavigationEntry* entry = browser()->tab_strip_model()-> |
| 308 GetActiveWebContents()->GetController().GetLastCommittedEntry(); | 378 GetActiveWebContents()->GetController().GetLastCommittedEntry(); |
| 309 ASSERT_TRUE(entry != NULL); | 379 ASSERT_TRUE(entry != NULL); |
| 310 EXPECT_EQ(url_rewritten, entry->GetURL()); | 380 EXPECT_EQ(url_rewritten, entry->GetURL()); |
| 311 EXPECT_EQ(url_original, entry->GetVirtualURL()); | 381 EXPECT_EQ(url_original, entry->GetVirtualURL()); |
| 312 } | 382 } |
| 313 | 383 |
| 314 } // namespace content | 384 } // namespace content |
| 315 #endif // !defined(OS_IOS) && !defined(OS_ANDROID) | 385 #endif // !defined(OS_IOS) && !defined(OS_ANDROID) |
| OLD | NEW |