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 NET_PROXY_PROXY_RESOLVER_WINHTTP_H_ 6 #define NET_PROXY_PROXY_RESOLVER_WINHTTP_H_ 7 8 #include "base/compiler_specific.h" 9 #include "net/proxy/proxy_resolver.h" 10 #include "url/gurl.h" 11 12 typedef void* HINTERNET; // From winhttp.h 13 14 namespace net { 15 16 // An implementation of ProxyResolver that uses WinHTTP and the system 17 // proxy settings. 18 class NET_EXPORT_PRIVATE ProxyResolverWinHttp : public ProxyResolver { 19 public: 20 ProxyResolverWinHttp(); 21 virtual ~ProxyResolverWinHttp(); 22 23 // ProxyResolver implementation: 24 virtual int GetProxyForURL(const GURL& url, 25 ProxyInfo* results, 26 const net::CompletionCallback& /*callback*/, 27 RequestHandle* /*request*/, 28 const BoundNetLog& /*net_log*/) OVERRIDE; 29 virtual void CancelRequest(RequestHandle request) OVERRIDE; 30 31 virtual LoadState GetLoadState(RequestHandle request) const OVERRIDE; 32 33 virtual void CancelSetPacScript() OVERRIDE; 34 35 virtual int SetPacScript( 36 const scoped_refptr<ProxyResolverScriptData>& script_data, 37 const net::CompletionCallback& /*callback*/) OVERRIDE; 38 39 private: 40 bool OpenWinHttpSession(); 41 void CloseWinHttpSession(); 42 43 // Proxy configuration is cached on the session handle. 44 HINTERNET session_handle_; 45 46 GURL pac_url_; 47 48 DISALLOW_COPY_AND_ASSIGN(ProxyResolverWinHttp); 49 }; 50 51 } // namespace net 52 53 #endif // NET_PROXY_PROXY_RESOLVER_WINHTTP_H_ 54