Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Side by Side Diff: net/proxy/dhcp_proxy_script_fetcher_factory.h

Issue 1273013004: Returning scoped_ptr<> instead of raw pointer in DhcpProxyScriptFetcherFactory::Create (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef NET_PROXY_DHCP_SCRIPT_FETCHER_FACTORY_H_ 5 #ifndef NET_PROXY_DHCP_SCRIPT_FETCHER_FACTORY_H_
6 #define NET_PROXY_DHCP_SCRIPT_FETCHER_FACTORY_H_ 6 #define NET_PROXY_DHCP_SCRIPT_FETCHER_FACTORY_H_
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/memory/singleton.h" 9 #include "base/memory/singleton.h"
10 #include "net/base/completion_callback.h" 10 #include "net/base/completion_callback.h"
11 #include "net/base/net_export.h" 11 #include "net/base/net_export.h"
12 #include "net/proxy/dhcp_proxy_script_fetcher.h"
12 13
13 namespace net { 14 namespace net {
14 15
15 class DhcpProxyScriptFetcher;
16 class URLRequestContext; 16 class URLRequestContext;
17 17
18 // Factory object for creating the appropriate concrete base class of 18 // Factory object for creating the appropriate concrete base class of
19 // DhcpProxyScriptFetcher for your operating system and settings. 19 // DhcpProxyScriptFetcher for your operating system and settings.
20 // 20 //
21 // You might think we could just implement a DHCP client at the protocol 21 // You might think we could just implement a DHCP client at the protocol
22 // level and have cross-platform support for retrieving PAC configuration 22 // level and have cross-platform support for retrieving PAC configuration
23 // from DHCP, but unfortunately the DHCP protocol assumes there is a single 23 // from DHCP, but unfortunately the DHCP protocol assumes there is a single
24 // client per machine (specifically per network interface card), and there 24 // client per machine (specifically per network interface card), and there
25 // is an implicit state machine between the client and server, so adding a 25 // is an implicit state machine between the client and server, so adding a
26 // second client to the machine would not be advisable (see e.g. some 26 // second client to the machine would not be advisable (see e.g. some
27 // discussion of what can happen at this URL: 27 // discussion of what can happen at this URL:
28 // http://www.net.princeton.edu/multi-dhcp-one-interface-handling.html). 28 // http://www.net.princeton.edu/multi-dhcp-one-interface-handling.html).
29 // 29 //
30 // Therefore, we have platform-specific implementations, and so we use 30 // Therefore, we have platform-specific implementations, and so we use
31 // this factory to select the right one. 31 // this factory to select the right one.
32 class NET_EXPORT DhcpProxyScriptFetcherFactory { 32 class NET_EXPORT DhcpProxyScriptFetcherFactory {
33 public: 33 public:
34 // Creates a new factory object with default settings. 34 // Creates a new factory object with default settings.
35 DhcpProxyScriptFetcherFactory(); 35 DhcpProxyScriptFetcherFactory();
36 36
37 // Ownership is transferred to the caller. url_request_context must be valid 37 // url_request_context must be valid and its lifetime must exceed that of the
38 // and its lifetime must exceed that of the returned DhcpProxyScriptFetcher. 38 // returned DhcpProxyScriptFetcher.
39 // 39 //
40 // Note that while a request is in progress, the fetcher may be holding a 40 // Note that while a request is in progress, the fetcher may be holding a
41 // reference to |url_request_context|. Be careful not to create cycles 41 // reference to |url_request_context|. Be careful not to create cycles
42 // between the fetcher and the context; you can break such cycles by calling 42 // between the fetcher and the context; you can break such cycles by calling
43 // Cancel(). 43 // Cancel().
44 DhcpProxyScriptFetcher* Create(URLRequestContext* url_request_context); 44 scoped_ptr<DhcpProxyScriptFetcher> Create(
45 URLRequestContext* url_request_context);
45 46
46 // Attempts to enable/disable the DHCP WPAD feature. Does nothing 47 // Attempts to enable/disable the DHCP WPAD feature. Does nothing
47 // if |IsSupported()| returns false. 48 // if |IsSupported()| returns false.
48 // 49 //
49 // The default is |enabled() == true|. 50 // The default is |enabled() == true|.
50 void set_enabled(bool enabled); 51 void set_enabled(bool enabled);
51 52
52 // Returns true if the DHCP WPAD feature is enabled. Always returns 53 // Returns true if the DHCP WPAD feature is enabled. Always returns
53 // false if |IsSupported()| is false. 54 // false if |IsSupported()| is false.
54 bool enabled() const; 55 bool enabled() const;
55 56
56 // Returns true if the DHCP WPAD feature is supported on the current 57 // Returns true if the DHCP WPAD feature is supported on the current
57 // operating system. 58 // operating system.
58 static bool IsSupported(); 59 static bool IsSupported();
59 60
60 private: 61 private:
61 bool feature_enabled_; 62 bool feature_enabled_;
62 63
63 DISALLOW_COPY_AND_ASSIGN(DhcpProxyScriptFetcherFactory); 64 DISALLOW_COPY_AND_ASSIGN(DhcpProxyScriptFetcherFactory);
64 }; 65 };
65 66
66 } // namespace net 67 } // namespace net
67 68
68 #endif // NET_PROXY_DHCP_SCRIPT_FETCHER_FACTORY_H_ 69 #endif // NET_PROXY_DHCP_SCRIPT_FETCHER_FACTORY_H_
OLDNEW
« no previous file with comments | « chrome/browser/net/proxy_service_factory.cc ('k') | net/proxy/dhcp_proxy_script_fetcher_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698