resolver-non-string-result.html (1453B)
1 <!DOCTYPE html> 2 <meta charset=utf-8> 3 <title>XPathNSResolver non-string return value</title> 4 <link rel="help" href="https://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathEvaluator"> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="resources/invalid_namespace_test.js"></script> 8 <div id=log></div> 9 <script> 10 "use strict"; 11 12 promise_test(t => { 13 return invalid_namespace_test(t, () => undefined); 14 }, "undefined"); 15 16 promise_test(t => { 17 return invalid_namespace_test(t, () => null); 18 }, "null"); 19 20 test(t => { 21 let resolverCalls = 0; 22 23 document.evaluate("/foo:bar", document.documentElement, () => { 24 resolverCalls++; 25 return 0; 26 }); 27 28 assert_equals(resolverCalls, 1); 29 }, "number"); 30 31 test(t => { 32 let resolverCalls = 0; 33 34 document.evaluate("/foo:bar", document.documentElement, () => { 35 resolverCalls++; 36 return false; 37 }); 38 39 assert_equals(resolverCalls, 1); 40 }, "boolean"); 41 42 promise_test(t => { 43 return promise_rejects_js(t, TypeError, 44 invalid_namespace_test(t, () => Symbol()) 45 ); 46 }, "symbol"); 47 48 promise_test(t => { 49 const testError = { name: "test" }; 50 const resolverResult = { 51 toString: () => { throw testError; }, 52 valueOf: t.unreached_func("`valueOf` should not be called."), 53 }; 54 55 return promise_rejects_exactly(t, testError, 56 invalid_namespace_test(t, () => resolverResult) 57 ); 58 }, "object coercion (abrupt completion)"); 59 </script> 60 </body>