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 20 using data_reduction_proxy::DataReductionProxyParams; 21 using data_reduction_proxy::DataReductionProxySettings; 22 23 DataReductionProxyChromeSettings::DataReductionProxyChromeSettings( 24 DataReductionProxyParams* params) : DataReductionProxySettings(params) { 25 } 26 27 DataReductionProxyChromeSettings::~DataReductionProxyChromeSettings() { 28 } 29 30 void 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 46 void DataReductionProxyChromeSettings::RegisterSyntheticFieldTrial( 47 bool data_reduction_proxy_enabled) { 48 ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial( 49 "DataReductionProxyEnabled", 50 data_reduction_proxy_enabled ? "true" : "false"); 51 } 52 53 // static 54 std::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