1 // Copyright (c) 2009 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_JS_BINDINGS_H 6 #define NET_PROXY_PROXY_JS_BINDINGS_H 7 8 #include <string> 9 10 class MessageLoop; 11 12 namespace net { 13 14 class HostResolver; 15 16 // Interface for the javascript bindings. 17 class ProxyResolverJSBindings { 18 public: 19 virtual ~ProxyResolverJSBindings() {} 20 21 // Handler for "alert(message)" 22 virtual void Alert(const std::string& message) = 0; 23 24 // Handler for "myIpAddress()". Returns empty string on failure. 25 virtual std::string MyIpAddress() = 0; 26 27 // Handler for "myIpAddressEx()". Returns empty string on failure. 28 // 29 // This is a Microsoft extension to PAC for IPv6, see: 30 // http://blogs.msdn.com/wndp/articles/IPV6_PAC_Extensions_v0_9.aspx 31 virtual std::string MyIpAddressEx() = 0; 32 33 // Handler for "dnsResolve(host)". Returns empty string on failure. 34 virtual std::string DnsResolve(const std::string& host) = 0; 35 36 // Handler for "dnsResolveEx(host)". Returns empty string on failure. 37 // 38 // This is a Microsoft extension to PAC for IPv6, see: 39 // http://blogs.msdn.com/wndp/articles/IPV6_PAC_Extensions_v0_9.aspx 40 virtual std::string DnsResolveEx(const std::string& host) = 0; 41 42 // Handler for when an error is encountered. |line_number| may be -1 43 // if a line number is not applicable to this error. 44 virtual void OnError(int line_number, const std::string& error) = 0; 45 46 // Creates a default javascript bindings implementation that will: 47 // - Send script error messages to LOG(INFO) 48 // - Send script alert()s to LOG(INFO) 49 // - Use the provided host resolver to service dnsResolve(). 50 // 51 // |host_resolver| will be used in async mode on |host_resolver_loop|. If 52 // |host_resolver_loop| is NULL, then |host_resolver| will be used in sync 53 // mode on the PAC thread. 54 static ProxyResolverJSBindings* CreateDefault( 55 HostResolver* host_resolver, MessageLoop* host_resolver_loop); 56 }; 57 58 } // namespace net 59 60 #endif // NET_PROXY_PROXY_JS_BINDINGS_H 61