| // Try calling the browser-side bound functions with varying (invalid) |
| // inputs. There is no notion of "success" for this test, other than |
| // verifying the correct C++ bindings were reached with expected values. |
| |
| function MyObject() { |
| this.x = "3"; |
| } |
| |
| MyObject.prototype.toString = function() { |
| throw "exception from calling toString()"; |
| } |
| |
| function expectEquals(expectation, actual) { |
| if (!(expectation === actual)) { |
| throw "FAIL: expected: " + expectation + ", actual: " + actual; |
| } |
| } |
| |
| function FindProxyForURL(url, host) { |
| // Call dnsResolve with some wonky arguments. |
| // Those expected to fail (because we have passed a non-string parameter) |
| // will return |null|, whereas those that have called through to the C++ |
| // bindings will return '127.0.0.1'. |
| expectEquals(null, dnsResolve()); |
| expectEquals(null, dnsResolve(null)); |
| expectEquals(null, dnsResolve(undefined)); |
| expectEquals('127.0.0.1', dnsResolve("")); |
| expectEquals(null, dnsResolve({foo: 'bar'})); |
| expectEquals(null, dnsResolve(fn)); |
| expectEquals(null, dnsResolve(['3'])); |
| expectEquals('127.0.0.1', dnsResolve("arg1", "arg2", "arg3", "arg4")); |
| |
| // Call alert with some wonky arguments. |
| alert(); |
| alert(null); |
| alert(undefined); |
| alert({foo:'bar'}); |
| |
| // This should throw an exception when we toString() the argument |
| // to alert in the bindings. |
| try { |
| alert(new MyObject()); |
| } catch (e) { |
| alert(e); |
| } |
| |
| // Call myIpAddress() with wonky arguments |
| myIpAddress(null); |
| myIpAddress(null, null); |
| |
| // Call myIpAddressEx() correctly (no arguments). |
| myIpAddressEx(); |
| |
| // Call dnsResolveEx() (note that isResolvableEx() implicity calls it.) |
| isResolvableEx("is_resolvable"); |
| dnsResolveEx("foobar"); |
| |
| return "DIRECT"; |
| } |
| |
| function fn() {} |
| |