• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_PREF_PROXY_CONFIG_TRACKER_H_
6 #define CHROME_BROWSER_NET_PREF_PROXY_CONFIG_TRACKER_H_
7 
8 #include "base/basictypes.h"
9 #include "base/memory/scoped_ptr.h"
10 
11 namespace net {
12 class ProxyConfigService;
13 }
14 
15 // Interface for a class that tracks proxy preferences. The purpose of the
16 // concrete class is to track changes in the Preferences, to translates the
17 // preferences to net::ProxyConfig and to push the result over to a
18 // net::ProxyConfigService onto the IO thread.
19 class PrefProxyConfigTracker {
20  public:
21   PrefProxyConfigTracker();
22   virtual ~PrefProxyConfigTracker();
23 
24   // Creates a net::ProxyConfigService and keeps a pointer to it. After this
25   // call, this tracker forwards any changes of proxy preferences to the created
26   // ProxyConfigService. The returned ProxyConfigService must not be deleted
27   // before DetachFromPrefService was called. Takes ownership of the passed
28   // |base_service|, which can be NULL. This |base_service| provides the proxy
29   // settings of the OS (except of ChromeOS). This must be called on the
30   // UI thread.
31   virtual scoped_ptr<net::ProxyConfigService> CreateTrackingProxyConfigService(
32       scoped_ptr<net::ProxyConfigService> base_service) = 0;
33 
34   // Releases the PrefService passed upon construction and the |base_service|
35   // passed to CreateTrackingProxyConfigService. This must be called on the UI
36   // thread.
37   virtual void DetachFromPrefService() = 0;
38 
39  private:
40   DISALLOW_COPY_AND_ASSIGN(PrefProxyConfigTracker);
41 };
42 
43 #endif  // CHROME_BROWSER_NET_PREF_PROXY_CONFIG_TRACKER_H_
44