15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef CHROME_BROWSER_NET_SPDYPROXY_DATA_REDUCTION_PROXY_CHROME_SETTINGS_H_ 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define CHROME_BROWSER_NET_SPDYPROXY_DATA_REDUCTION_PROXY_CHROME_SETTINGS_H_ 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/data_reduction_proxy/browser/data_reduction_proxy_settings.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/keyed_service/core/keyed_service.h" 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace base { 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class PrefService; 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace data_reduction_proxy { 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class DataReductionProxyConfigurator; 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class DataReductionProxyParams; 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace net { 226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class URLRequestContextGetter; 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class PrefService; 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Data reduction proxy settings class suitable for use with a Chrome browser. 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// It is keyed to a browser context. 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class DataReductionProxyChromeSettings 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) : public data_reduction_proxy::DataReductionProxySettings, 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public KeyedService { 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Constructs a settings object with the given configuration parameters. 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Construction and destruction must happen on the UI thread. 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) explicit DataReductionProxyChromeSettings( 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) data_reduction_proxy::DataReductionProxyParams* params); 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Destructs the settings object. 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ~DataReductionProxyChromeSettings(); 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Initialize the settings object with the given configurator, prefs services, 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // and request context. 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) void InitDataReductionProxySettings( 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) data_reduction_proxy::DataReductionProxyConfigurator* configurator, 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) PrefService* profile_prefs, 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) PrefService* local_state_prefs, 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) net::URLRequestContextGetter* request_context); 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Gets the client type for the data reduction proxy. 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static std::string GetClient(); 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) private: 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Registers the DataReductionProxyEnabled synthetic field trial with 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // the group |data_reduction_proxy_enabled|. 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void RegisterSyntheticFieldTrial(bool data_reduction_proxy_enabled); 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(DataReductionProxyChromeSettings); 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // CHROME_BROWSER_NET_SPDYPROXY_DATA_REDUCTION_PROXY_CHROME_SETTINGS_H_ 61