1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_NET_PROXY_SERVICE_FACTORY_H_ 6 #define CHROME_BROWSER_NET_PROXY_SERVICE_FACTORY_H_ 7 8 #include "base/basictypes.h" 9 10 class PrefProxyConfigTracker; 11 class PrefService; 12 13 namespace base { 14 class CommandLine; 15 } 16 17 namespace net { 18 class NetLog; 19 class NetworkDelegate; 20 class ProxyConfigService; 21 class ProxyService; 22 class URLRequestContext; 23 } 24 25 class ProxyServiceFactory { 26 public: 27 // Creates a ProxyConfigService that delivers the system preferences 28 // (or the respective ChromeOS equivalent). 29 static net::ProxyConfigService* CreateProxyConfigService( 30 PrefProxyConfigTracker* tracker); 31 32 // Creates a PrefProxyConfigTracker that tracks preferences of a 33 // profile. On ChromeOS it additionaly tracks local state for shared proxy 34 // settings. This tracker should be used if the profile's preferences should 35 // be respected. On ChromeOS's signin screen this is for example not the case. 36 static PrefProxyConfigTracker* CreatePrefProxyConfigTrackerOfProfile( 37 PrefService* profile_prefs, 38 PrefService* local_state_prefs); 39 40 // Creates a PrefProxyConfigTracker that tracks local state only. This tracker 41 // should be used for the system request context and the signin screen 42 // (ChromeOS only). 43 static PrefProxyConfigTracker* CreatePrefProxyConfigTrackerOfLocalState( 44 PrefService* local_state_prefs); 45 46 // Create a proxy service according to the options on command line. 47 static net::ProxyService* CreateProxyService( 48 net::NetLog* net_log, 49 net::URLRequestContext* context, 50 net::NetworkDelegate* network_delegate, 51 net::ProxyConfigService* proxy_config_service, 52 const base::CommandLine& command_line, 53 bool quick_check_enabled); 54 55 private: 56 DISALLOW_IMPLICIT_CONSTRUCTORS(ProxyServiceFactory); 57 }; 58 59 #endif // CHROME_BROWSER_NET_PROXY_SERVICE_FACTORY_H_ 60