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
3// found in the LICENSE file.
4
5#include "chrome/browser/net/async_dns_field_trial.h"
6
7#include "base/metrics/field_trial.h"
8#include "base/strings/string_util.h"
9#include "build/build_config.h"
10
11namespace chrome_browser_net {
12
13bool ConfigureAsyncDnsFieldTrial() {
14#if defined(OS_ANDROID) || defined(OS_IOS)
15  // There is no DnsConfigService on those platforms so disable the field trial.
16  return false;
17#endif
18
19#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_MACOSX)
20  const bool kDefault = true;
21#else
22  const bool kDefault = false;
23#endif
24
25  // Configure the AsyncDns field trial as follows:
26  // groups AsyncDnsA and AsyncDnsB: return true,
27  // groups SystemDnsA and SystemDnsB: return false,
28  // otherwise (trial absent): return default.
29  std::string group_name = base::FieldTrialList::FindFullName("AsyncDns");
30  if (!group_name.empty())
31    return StartsWithASCII(group_name, "AsyncDns", false /* case_sensitive */);
32  return kDefault;
33}
34
35}  // namespace chrome_browser_net
36