| Index: net/proxy/dhcp_proxy_script_fetcher_factory.h
|
| diff --git a/net/proxy/dhcp_proxy_script_fetcher_factory.h b/net/proxy/dhcp_proxy_script_fetcher_factory.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..20e4104d8ee88e22ebb3131edb0093cfa53ed2f0
|
| --- /dev/null
|
| +++ b/net/proxy/dhcp_proxy_script_fetcher_factory.h
|
| @@ -0,0 +1,68 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef NET_PROXY_DHCP_SCRIPT_FETCHER_FACTORY_H_
|
| +#define NET_PROXY_DHCP_SCRIPT_FETCHER_FACTORY_H_
|
| +#pragma once
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/memory/singleton.h"
|
| +#include "net/base/completion_callback.h"
|
| +#include "net/url_request/url_request_context.h"
|
| +
|
| +namespace net {
|
| +
|
| +class DhcpProxyScriptFetcher;
|
| +
|
| +// Factory object for creating the appropriate concrete base class of
|
| +// DhcpProxyScriptFetcher for your operating system and settings.
|
| +//
|
| +// You might think we could just implement a DHCP client at the protocol
|
| +// level and have cross-platform support for retrieving PAC configuration
|
| +// from DHCP, but unfortunately the DHCP protocol assumes there is a single
|
| +// client per machine (specifically per network interface card), and there
|
| +// is an implicit state machine between the client and server, so adding a
|
| +// second client to the machine would not be advisable (see e.g. some
|
| +// discussion of what can happen at this URL:
|
| +// http://www.net.princeton.edu/multi-dhcp-one-interface-handling.html).
|
| +//
|
| +// Therefore, we have platform-specific implementations, and so we use
|
| +// this factory to select the right one.
|
| +class DhcpProxyScriptFetcherFactory {
|
| + public:
|
| + // Creates a new factory object with default settings.
|
| + DhcpProxyScriptFetcherFactory();
|
| +
|
| + // Ownership is transferred to the caller. url_request_context must be valid
|
| + // and its lifetime must exceed that of the returned DhcpProxyScriptFetcher.
|
| + //
|
| + // Note that while a request is in progress, the fetcher may be holding a
|
| + // reference to |url_request_context|. Be careful not to create cycles
|
| + // between the fetcher and the context; you can break such cycles by calling
|
| + // Cancel().
|
| + DhcpProxyScriptFetcher* Create(URLRequestContext* url_request_context);
|
| +
|
| + // Attempts to enable/disable the DHCP WPAD feature. Does nothing
|
| + // if |IsSupported()| returns false.
|
| + //
|
| + // The current default is |enabled() == false|.
|
| + void set_enabled(bool enabled);
|
| +
|
| + // Returns true if the DHCP WPAD feature is enabled. Always returns
|
| + // false if |IsSupported()| is false.
|
| + bool enabled() const;
|
| +
|
| + // Returns true if the DHCP WPAD feature is supported on the current
|
| + // operating system.
|
| + static bool IsSupported();
|
| +
|
| + protected:
|
| + bool feature_enabled_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DhcpProxyScriptFetcherFactory);
|
| +};
|
| +
|
| +} // namespace net
|
| +
|
| +#endif // NET_PROXY_DHCP_SCRIPT_FETCHER_FACTORY_H_
|
|
|