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_FACTORY_H_
65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define CHROME_BROWSER_NET_SPDYPROXY_DATA_REDUCTION_PROXY_CHROME_SETTINGS_FACTORY_H_
75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings_factory.h"
95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/compiler_specific.h"
115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/memory/singleton.h"
125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/data_reduction_proxy/browser/data_reduction_proxy_params.h"
135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class DataReductionProxyChromeSettings;
165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Constucts a DataReductionProxySettings object suitable for use with a
185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Chrome browser.
195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class DataReductionProxyChromeSettingsFactory
205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    : public BrowserContextKeyedServiceFactory {
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public:
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Returns a settings object for the given context.
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  static DataReductionProxyChromeSettings* GetForBrowserContext(
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      content::BrowserContext* context);
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Returns true if this context has a settings object.
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  static bool HasDataReductionProxyChromeSettings(
295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      content::BrowserContext* context);
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Returns an instance of this factory.
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  static DataReductionProxyChromeSettingsFactory* GetInstance();
335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) private:
355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  friend struct DefaultSingletonTraits<DataReductionProxyChromeSettingsFactory>;
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  DataReductionProxyChromeSettingsFactory();
385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual ~DataReductionProxyChromeSettingsFactory();
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // BrowserContextKeyedServiceFactory:
425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual KeyedService* BuildServiceInstanceFor(
435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      content::BrowserContext* context) const OVERRIDE;
445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(DataReductionProxyChromeSettingsFactory);
465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)};
475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif  // CHROME_BROWSER_NET_SPDYPROXY_DATA_REDUCTION_PROXY_CHROME_SETTINGS_FACTORY_H_
49