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 |