- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / net / pref_proxy_config_tracker.h
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_