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_factory.h" 6 7#include "base/bind.h" 8#include "base/memory/singleton.h" 9#include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.h" 10#include "components/data_reduction_proxy/browser/data_reduction_proxy_params.h" 11#include "components/data_reduction_proxy/browser/data_reduction_proxy_usage_stats.h" 12#include "components/keyed_service/content/browser_context_dependency_manager.h" 13#include "components/keyed_service/content/browser_context_keyed_service_factory.h" 14#include "content/public/browser/browser_thread.h" 15 16using content::BrowserThread; 17using data_reduction_proxy::DataReductionProxyParams; 18using data_reduction_proxy::DataReductionProxyUsageStats; 19 20// static 21DataReductionProxyChromeSettings* 22DataReductionProxyChromeSettingsFactory::GetForBrowserContext( 23 content::BrowserContext* context) { 24 return static_cast<DataReductionProxyChromeSettings*>( 25 GetInstance()->GetServiceForBrowserContext(context, true)); 26} 27 28// static 29bool 30DataReductionProxyChromeSettingsFactory::HasDataReductionProxyChromeSettings( 31 content::BrowserContext* context) { 32 return GetInstance()->GetServiceForBrowserContext(context, false) != NULL; 33} 34 35// static 36DataReductionProxyChromeSettingsFactory* 37DataReductionProxyChromeSettingsFactory::GetInstance() { 38 return Singleton<DataReductionProxyChromeSettingsFactory>::get(); 39} 40 41 42DataReductionProxyChromeSettingsFactory:: 43 DataReductionProxyChromeSettingsFactory() 44 : BrowserContextKeyedServiceFactory( 45 "DataReductionProxyChromeSettings", 46 BrowserContextDependencyManager::GetInstance()) { 47} 48 49DataReductionProxyChromeSettingsFactory:: 50 ~DataReductionProxyChromeSettingsFactory() { 51} 52 53KeyedService* DataReductionProxyChromeSettingsFactory::BuildServiceInstanceFor( 54 content::BrowserContext* context) const { 55 int flags = DataReductionProxyParams::kAllowed | 56 DataReductionProxyParams::kFallbackAllowed | 57 DataReductionProxyParams::kAlternativeAllowed; 58 if (DataReductionProxyParams::IsIncludedInPromoFieldTrial()) 59 flags |= DataReductionProxyParams::kPromoAllowed; 60 if (DataReductionProxyParams::IsIncludedInHoldbackFieldTrial()) 61 flags |= DataReductionProxyParams::kHoldback; 62 63 return new DataReductionProxyChromeSettings( 64 new DataReductionProxyParams(flags)); 65} 66