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

Unified Diff: chrome/browser/chrome_browser_field_trials.cc

Issue 10831277: [net] Change factory methods for HostResolver and HostCache to return a scoped_ptr (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add ChromeBrowserFieldTrials::AsyncDnsFieldTrial Created 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chrome_browser_field_trials.cc
diff --git a/chrome/browser/chrome_browser_field_trials.cc b/chrome/browser/chrome_browser_field_trials.cc
index f1e27a852d57317c77120cf072304e0ef51e6876..14d0c3bdbb3df42c223e0429befed585288e7ef8 100644
--- a/chrome/browser/chrome_browser_field_trials.cc
+++ b/chrome/browser/chrome_browser_field_trials.cc
@@ -124,6 +124,7 @@ void ChromeBrowserFieldTrials::SetupFieldTrials(bool proxy_policy_is_set) {
SetupUniformityFieldTrials();
AutocompleteFieldTrial::Activate();
DisableNewTabFieldTrialIfNecesssary();
+ AsyncDnsFieldTrial();
}
// This is an A/B test for the maximum number of persistent connections per
@@ -582,3 +583,53 @@ void ChromeBrowserFieldTrials::DisableNewTabFieldTrialIfNecesssary() {
trial->Disable();
}
}
+
+// When --enable-async-dns is not set, users will be in A/B test for DnsClient.
cbentzel 2012/08/16 20:09:21 Do you want to move this to a ternary (enabled/dis
szym 2012/08/16 20:38:55 I'm okay with that. I'm not sure what this means f
+// group A (async enabled): Use DnsClient if DnsConfig is known. Fall back to
+// getaddrinfo on failures.
+// group B (async disabled): Never use DnsClient.
+void ChromeBrowserFieldTrials::AsyncDnsFieldTrial() {
+ // Use the concurrency override from the command-line, if any.
+ if (parsed_command_line_.HasSwitch(switches::kHostResolverParallelism)) {
+ std::string s = parsed_command_line_.GetSwitchValueASCII(
+ switches::kHostResolverParallelism);
+
+ // Parse the switch (it should be a positive integer formatted as decimal).
+ int n;
+ if (base::StringToInt(s, &n) && n > 0) {
+ net::HostResolver::set_default_max_concurrent_resolves(
+ static_cast<size_t>(n));
+ } else {
+ LOG(ERROR) << "Invalid switch for host resolver parallelism: " << s;
+ }
+ }
+
+ // Use the retry attempts override from the command-line, if any.
+ if (parsed_command_line_.HasSwitch(switches::kHostResolverRetryAttempts)) {
+ std::string s = parsed_command_line_.GetSwitchValueASCII(
+ switches::kHostResolverRetryAttempts);
+ // Parse the switch (it should be a non-negative integer).
+ int n;
+ if (base::StringToInt(s, &n) && n >= 0) {
+ net::HostResolver::set_default_max_retry_attempts(static_cast<size_t>(n));
+ } else {
+ LOG(ERROR) << "Invalid switch for host resolver retry attempts: " << s;
+ }
+ }
+
+ bool use_async = parsed_command_line_.HasSwitch(switches::kEnableAsyncDns);
+ if (use_async) {
+ net::HostResolver::set_default_enable_async(true);
+ return; // Trial disabled.
+ }
+
+ const base::FieldTrial::Probability kAsyncDnsDivisor = 100;
+ base::FieldTrial::Probability enabled_probability = 50;
+
+ scoped_refptr<base::FieldTrial> trial(
+ base::FieldTrialList::FactoryGetFieldTrial(
+ "AsyncDns", kAsyncDnsDivisor, "disabled", 2012, 9, 30, NULL));
+
+ int enabled_group = trial->AppendGroup("enabled", enabled_probability);
+ net::HostResolver::set_default_enable_async(trial->group() == enabled_group);
+}

Powered by Google App Engine
This is Rietveld 408576698