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 "chrome/browser/browser_process.h"
10#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
11#include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.h"
12#include "chrome/browser/profiles/profile.h"
13#include "chrome/browser/profiles/profile_manager.h"
14#include "components/data_reduction_proxy/browser/data_reduction_proxy_auth_request_handler.h"
15#include "components/data_reduction_proxy/browser/data_reduction_proxy_configurator.h"
16#include "components/data_reduction_proxy/browser/data_reduction_proxy_params.h"
17#include "components/data_reduction_proxy/browser/data_reduction_proxy_settings.h"
18#include "net/url_request/url_request_context_getter.h"
19
20using data_reduction_proxy::DataReductionProxyParams;
21using data_reduction_proxy::DataReductionProxySettings;
22
23DataReductionProxyChromeSettings::DataReductionProxyChromeSettings(
24    DataReductionProxyParams* params) : DataReductionProxySettings(params) {
25}
26
27DataReductionProxyChromeSettings::~DataReductionProxyChromeSettings() {
28}
29
30void DataReductionProxyChromeSettings::InitDataReductionProxySettings(
31    data_reduction_proxy::DataReductionProxyConfigurator* configurator,
32    PrefService* profile_prefs,
33    PrefService* local_state_prefs,
34    net::URLRequestContextGetter* request_context) {
35  SetProxyConfigurator(configurator);
36  DataReductionProxySettings::InitDataReductionProxySettings(
37      profile_prefs,
38      request_context);
39  DataReductionProxySettings::SetOnDataReductionEnabledCallback(
40      base::Bind(&DataReductionProxyChromeSettings::RegisterSyntheticFieldTrial,
41                 base::Unretained(this)));
42  SetDataReductionProxyAlternativeEnabled(
43      DataReductionProxyParams::IsIncludedInAlternativeFieldTrial());
44}
45
46void DataReductionProxyChromeSettings::RegisterSyntheticFieldTrial(
47    bool data_reduction_proxy_enabled) {
48  ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial(
49      "DataReductionProxyEnabled",
50      data_reduction_proxy_enabled ? "true" : "false");
51}
52
53// static
54std::string DataReductionProxyChromeSettings::GetClient() {
55#if defined(OS_ANDROID)
56  return data_reduction_proxy::kClientChromeAndroid;
57#elif defined(OS_IOS)
58  return data_reduction_proxy::kClientChromeIOS;
59#else
60  return "";
61#endif
62}
63