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