expression-cross-realm.tentative.html (2832B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>Cross-realm XPath evaluator</title> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <body> 7 <script> 8 function toArray(result) { 9 var a = []; 10 while (true) { 11 var node = result.iterateNext(); 12 if (node === null) break; 13 a.push(node); 14 } 15 return a; 16 } 17 18 var html_ns = "http://www.w3.org/1999/xhtml"; 19 var xml_doc = document.implementation.createDocument(html_ns, "html"); 20 var html_doc = document.implementation.createHTMLDocument(); 21 22 promise_test(async (t) => { 23 const iframe = document.createElement("iframe"); 24 iframe.src = "/common/dummy.xml"; 25 document.body.appendChild(iframe); 26 await new Promise(resolve => { 27 iframe.addEventListener("load", resolve, {once: true}); 28 }); 29 t.add_cleanup(() => iframe.remove()); 30 const iframe_expression = iframe.contentDocument.createExpression("//html"); 31 assert_array_equals(toArray(iframe_expression.evaluate(xml_doc)), []); 32 }, "expression from realm with XML associated document, context node in XML document, no namespace resolver"); 33 34 promise_test(async (t) => { 35 const iframe = document.createElement("iframe"); 36 iframe.src = "/common/dummy.xml"; 37 document.body.appendChild(iframe); 38 await new Promise(resolve => { 39 iframe.addEventListener("load", resolve, {once: true}); 40 }); 41 t.add_cleanup(() => iframe.remove()); 42 const iframe_expression = iframe.contentDocument.createExpression("//html"); 43 assert_array_equals(toArray(iframe_expression.evaluate(html_doc)), [html_doc.documentElement]); 44 }, "expression from realm with XML associated document, context node in HTML document, no namespace resolver"); 45 46 promise_test(async (t) => { 47 const iframe = document.createElement("iframe"); 48 iframe.src = "/common/blank.html"; 49 document.body.appendChild(iframe); 50 await new Promise(resolve => { 51 iframe.addEventListener("load", resolve, {once: true}); 52 }); 53 t.add_cleanup(() => iframe.remove()); 54 const iframe_expression = iframe.contentDocument.createExpression("//html"); 55 assert_array_equals(toArray(iframe_expression.evaluate(xml_doc)), []); 56 }, "expression from realm with HTML associated document, context node in XML document, no namespace resolver"); 57 58 promise_test(async (t) => { 59 const iframe = document.createElement("iframe"); 60 iframe.src = "/common/blank.html"; 61 document.body.appendChild(iframe); 62 await new Promise(resolve => { 63 iframe.addEventListener("load", resolve, {once: true}); 64 }); 65 t.add_cleanup(() => iframe.remove()); 66 const iframe_expression = iframe.contentDocument.createExpression("//html"); 67 assert_array_equals(toArray(iframe_expression.evaluate(html_doc)), [html_doc.documentElement]); 68 }, "expression from realm with HTML associated document, context node in HTML document, no namespace resolver"); 69 </script>