| 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 "chrome/browser/prerender/prerender_field_trial.h" | 5 #include "chrome/browser/prerender/prerender_field_trial.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 const char kDisabledGroup[] = "Disabled"; | 37 const char kDisabledGroup[] = "Disabled"; |
| 38 const char kEnabledGroup[] = "Enabled"; | 38 const char kEnabledGroup[] = "Enabled"; |
| 39 | 39 |
| 40 const char kLocalPredictorSpecTrialName[] = "PrerenderLocalPredictorSpec"; | 40 const char kLocalPredictorSpecTrialName[] = "PrerenderLocalPredictorSpec"; |
| 41 const char kLocalPredictorKeyName[] = "LocalPredictor"; | 41 const char kLocalPredictorKeyName[] = "LocalPredictor"; |
| 42 const char kLocalPredictorUnencryptedSyncOnlyKeyName[] = | 42 const char kLocalPredictorUnencryptedSyncOnlyKeyName[] = |
| 43 "LocalPredictorUnencryptedSyncOnly"; | 43 "LocalPredictorUnencryptedSyncOnly"; |
| 44 const char kSideEffectFreeWhitelistKeyName[] = "SideEffectFreeWhitelist"; | 44 const char kSideEffectFreeWhitelistKeyName[] = "SideEffectFreeWhitelist"; |
| 45 const char kPrerenderLaunchKeyName[] = "PrerenderLaunch"; | 45 const char kPrerenderLaunchKeyName[] = "PrerenderLaunch"; |
| 46 const char kPrerenderAlwaysControlKeyName[] = "PrerenderAlwaysControl"; | 46 const char kPrerenderAlwaysControlKeyName[] = "PrerenderAlwaysControl"; |
| 47 const char kPrerenderPrefetchKeyName[] = "PrerenderPrefetch"; |
| 47 const char kPrerenderQueryPrerenderServiceKeyName[] = | 48 const char kPrerenderQueryPrerenderServiceKeyName[] = |
| 48 "PrerenderQueryPrerenderService"; | 49 "PrerenderQueryPrerenderService"; |
| 49 const char kPrerenderQueryPrerenderServiceCurrentURLKeyName[] = | 50 const char kPrerenderQueryPrerenderServiceCurrentURLKeyName[] = |
| 50 "PrerenderQueryPrerenderServiceCurrentURL"; | 51 "PrerenderQueryPrerenderServiceCurrentURL"; |
| 51 const char kPrerenderQueryPrerenderServiceCandidateURLsKeyName[] = | 52 const char kPrerenderQueryPrerenderServiceCandidateURLsKeyName[] = |
| 52 "PrerenderQueryPrerenderServiceCandidateURLs"; | 53 "PrerenderQueryPrerenderServiceCandidateURLs"; |
| 53 const char kPrerenderServiceBehaviorIDKeyName[] = "PrerenderServiceBehaviorID"; | 54 const char kPrerenderServiceBehaviorIDKeyName[] = "PrerenderServiceBehaviorID"; |
| 54 const char kPrerenderServiceFetchTimeoutKeyName[] = | 55 const char kPrerenderServiceFetchTimeoutKeyName[] = |
| 55 "PrerenderServiceFetchTimeoutMs"; | 56 "PrerenderServiceFetchTimeoutMs"; |
| 56 const char kPrerenderTTLKeyName[] = "PrerenderTTLSeconds"; | 57 const char kPrerenderTTLKeyName[] = "PrerenderTTLSeconds"; |
| 57 const char kPrerenderPriorityHalfLifeTimeKeyName[] = | 58 const char kPrerenderPriorityHalfLifeTimeKeyName[] = |
| 58 "PrerenderPriorityHalfLifeTimeSeconds"; | 59 "PrerenderPriorityHalfLifeTimeSeconds"; |
| 59 const char kMaxConcurrentPrerenderKeyName[] = "MaxConcurrentPrerenders"; | 60 const char kMaxConcurrentPrerenderKeyName[] = "MaxConcurrentPrerenders"; |
| 61 const char kMaxLaunchPrerenderKeyName[] = "MaxLaunchPrerenders"; |
| 60 const char kSkipFragment[] = "SkipFragment"; | 62 const char kSkipFragment[] = "SkipFragment"; |
| 61 const char kSkipHTTPS[] = "SkipHTTPS"; | 63 const char kSkipHTTPS[] = "SkipHTTPS"; |
| 62 const char kSkipWhitelist[] = "SkipWhitelist"; | 64 const char kSkipWhitelist[] = "SkipWhitelist"; |
| 63 const char kSkipServiceWhitelist[] = "SkipServiceWhitelist"; | 65 const char kSkipServiceWhitelist[] = "SkipServiceWhitelist"; |
| 64 const char kSkipLoggedIn[] = "SkipLoggedIn"; | 66 const char kSkipLoggedIn[] = "SkipLoggedIn"; |
| 65 const char kSkipDefaultNoPrerender[] = "SkipDefaultNoPrerender"; | 67 const char kSkipDefaultNoPrerender[] = "SkipDefaultNoPrerender"; |
| 66 const char kPrerenderServiceURLPrefixParameterName[] = | 68 const char kPrerenderServiceURLPrefixParameterName[] = |
| 67 "PrerenderServiceURLPrefix"; | 69 "PrerenderServiceURLPrefix"; |
| 68 const char kDefaultPrerenderServiceURLPrefix[] = | 70 const char kDefaultPrerenderServiceURLPrefix[] = |
| 69 "https://clients4.google.com/prerenderservice/?q="; | 71 "https://clients4.google.com/prerenderservice/?q="; |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 return IsLocalPredictorEnabled() && | 323 return IsLocalPredictorEnabled() && |
| 322 GetLocalPredictorSpecValue(kSideEffectFreeWhitelistKeyName) != | 324 GetLocalPredictorSpecValue(kSideEffectFreeWhitelistKeyName) != |
| 323 kDisabledGroup; | 325 kDisabledGroup; |
| 324 } | 326 } |
| 325 | 327 |
| 326 bool IsLocalPredictorPrerenderLaunchEnabled() { | 328 bool IsLocalPredictorPrerenderLaunchEnabled() { |
| 327 return GetLocalPredictorSpecValue(kPrerenderLaunchKeyName) != kDisabledGroup; | 329 return GetLocalPredictorSpecValue(kPrerenderLaunchKeyName) != kDisabledGroup; |
| 328 } | 330 } |
| 329 | 331 |
| 330 bool IsLocalPredictorPrerenderAlwaysControlEnabled() { | 332 bool IsLocalPredictorPrerenderAlwaysControlEnabled() { |
| 331 return GetLocalPredictorSpecValue(kPrerenderAlwaysControlKeyName) == | 333 // If we prefetch rather than prerender, we automatically also prerender |
| 334 // as a control group only. |
| 335 return (GetLocalPredictorSpecValue(kPrerenderAlwaysControlKeyName) == |
| 336 kEnabledGroup) || IsLocalPredictorPrerenderPrefetchEnabled(); |
| 337 } |
| 338 |
| 339 bool IsLocalPredictorPrerenderPrefetchEnabled() { |
| 340 return GetLocalPredictorSpecValue(kPrerenderPrefetchKeyName) == |
| 332 kEnabledGroup; | 341 kEnabledGroup; |
| 333 } | 342 } |
| 334 | 343 |
| 335 bool ShouldQueryPrerenderService(Profile* profile) { | 344 bool ShouldQueryPrerenderService(Profile* profile) { |
| 336 return IsUnencryptedSyncEnabled(profile) && | 345 return IsUnencryptedSyncEnabled(profile) && |
| 337 GetLocalPredictorSpecValue(kPrerenderQueryPrerenderServiceKeyName) == | 346 GetLocalPredictorSpecValue(kPrerenderQueryPrerenderServiceKeyName) == |
| 338 kEnabledGroup; | 347 kEnabledGroup; |
| 339 } | 348 } |
| 340 | 349 |
| 341 bool ShouldQueryPrerenderServiceForCurrentURL() { | 350 bool ShouldQueryPrerenderServiceForCurrentURL() { |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 389 } | 398 } |
| 390 | 399 |
| 391 int GetLocalPredictorMaxConcurrentPrerenders() { | 400 int GetLocalPredictorMaxConcurrentPrerenders() { |
| 392 int num_prerenders; | 401 int num_prerenders; |
| 393 StringToInt(GetLocalPredictorSpecValue(kMaxConcurrentPrerenderKeyName), | 402 StringToInt(GetLocalPredictorSpecValue(kMaxConcurrentPrerenderKeyName), |
| 394 &num_prerenders); | 403 &num_prerenders); |
| 395 // Sanity check: Ensure the number of prerenders is between 1 and 10. | 404 // Sanity check: Ensure the number of prerenders is between 1 and 10. |
| 396 return std::min(std::max(num_prerenders, 1), 10); | 405 return std::min(std::max(num_prerenders, 1), 10); |
| 397 } | 406 } |
| 398 | 407 |
| 408 int GetLocalPredictorMaxLaunchPrerenders() { |
| 409 int num_prerenders; |
| 410 StringToInt(GetLocalPredictorSpecValue(kMaxLaunchPrerenderKeyName), |
| 411 &num_prerenders); |
| 412 // Sanity check: Ensure the number of prerenders is between 1 and 10. |
| 413 return std::min(std::max(num_prerenders, 1), 10); |
| 414 } |
| 415 |
| 399 bool SkipLocalPredictorFragment() { | 416 bool SkipLocalPredictorFragment() { |
| 400 return GetLocalPredictorSpecValue(kSkipFragment) == kEnabledGroup; | 417 return GetLocalPredictorSpecValue(kSkipFragment) == kEnabledGroup; |
| 401 } | 418 } |
| 402 | 419 |
| 403 bool SkipLocalPredictorHTTPS() { | 420 bool SkipLocalPredictorHTTPS() { |
| 404 return GetLocalPredictorSpecValue(kSkipHTTPS) == kEnabledGroup; | 421 return GetLocalPredictorSpecValue(kSkipHTTPS) == kEnabledGroup; |
| 405 } | 422 } |
| 406 | 423 |
| 407 bool SkipLocalPredictorWhitelist() { | 424 bool SkipLocalPredictorWhitelist() { |
| 408 return GetLocalPredictorSpecValue(kSkipWhitelist) == kEnabledGroup; | 425 return GetLocalPredictorSpecValue(kSkipWhitelist) == kEnabledGroup; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 434 return GetLocalPredictorSpecValue(kDisableSessionStorageNamespaceMerging) != | 451 return GetLocalPredictorSpecValue(kDisableSessionStorageNamespaceMerging) != |
| 435 kDisabledGroup; | 452 kDisabledGroup; |
| 436 } | 453 } |
| 437 | 454 |
| 438 bool IsPrerenderCookieStoreEnabled() { | 455 bool IsPrerenderCookieStoreEnabled() { |
| 439 return GetLocalPredictorSpecValue(kPrerenderCookieStore) != kDisabledGroup && | 456 return GetLocalPredictorSpecValue(kPrerenderCookieStore) != kDisabledGroup && |
| 440 FieldTrialList::FindFullName(kPrerenderCookieStore) != kDisabledGroup; | 457 FieldTrialList::FindFullName(kPrerenderCookieStore) != kDisabledGroup; |
| 441 } | 458 } |
| 442 | 459 |
| 443 } // namespace prerender | 460 } // namespace prerender |
| OLD | NEW |