Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / net / spdyproxy / data_reduction_proxy_chrome_settings.cc
1 // Copyright 2014 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/spdyproxy/data_reduction_proxy_chrome_settings.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "base/prefs/pref_service.h"
9 #include "base/strings/string_split.h"
10 #include "chrome/browser/browser_process.h"
11 #include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
12 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.h"
13 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/profiles/profile_manager.h"
15 #include "chrome/common/chrome_version_info.h"
16 #include "components/data_reduction_proxy/browser/data_reduction_proxy_auth_request_handler.h"
17 #include "components/data_reduction_proxy/browser/data_reduction_proxy_configurator.h"
18 #include "components/data_reduction_proxy/browser/data_reduction_proxy_params.h"
19 #include "components/data_reduction_proxy/browser/data_reduction_proxy_settings.h"
20 #include "net/url_request/url_request_context_getter.h"
21
22 using data_reduction_proxy::DataReductionProxyParams;
23 using data_reduction_proxy::DataReductionProxySettings;
24
25 DataReductionProxyChromeSettings::DataReductionProxyChromeSettings(
26     DataReductionProxyParams* params) : DataReductionProxySettings(params) {
27 }
28
29 DataReductionProxyChromeSettings::~DataReductionProxyChromeSettings() {
30 }
31
32 void DataReductionProxyChromeSettings::InitDataReductionProxySettings(
33     data_reduction_proxy::DataReductionProxyConfigurator* configurator,
34     PrefService* profile_prefs,
35     PrefService* local_state_prefs,
36     net::URLRequestContextGetter* request_context) {
37   SetProxyConfigurator(configurator);
38   DataReductionProxySettings::InitDataReductionProxySettings(
39       profile_prefs,
40       local_state_prefs,
41       request_context);
42   DataReductionProxySettings::SetOnDataReductionEnabledCallback(
43       base::Bind(&DataReductionProxyChromeSettings::RegisterSyntheticFieldTrial,
44                  base::Unretained(this)));
45   SetDataReductionProxyAlternativeEnabled(
46       DataReductionProxyParams::IsIncludedInAlternativeFieldTrial());
47 }
48
49 void DataReductionProxyChromeSettings::RegisterSyntheticFieldTrial(
50     bool data_reduction_proxy_enabled) {
51   ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial(
52       "DataReductionProxyEnabled",
53       data_reduction_proxy_enabled ? "true" : "false");
54 }
55
56 // static
57 std::string DataReductionProxyChromeSettings::GetBuildAndPatchNumber() {
58   chrome::VersionInfo version_info;
59   std::vector<std::string> version_parts;
60   base::SplitString(version_info.Version(), '.', &version_parts);
61   if (version_parts.size() != 4)
62     return "";
63   return version_parts[2] + version_parts[3];
64 }
65
66 // static
67 std::string DataReductionProxyChromeSettings::GetClient() {
68 #if defined(OS_ANDROID)
69   return data_reduction_proxy::kClientChromeAndroid;
70 #elif defined(OS_IOS)
71   return data_reduction_proxy::kClientChromeIOS;
72 #else
73   return "";
74 #endif
75 }