tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

evaluator-cross-realm.tentative.html (2828B)


      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_evaluator = new iframe.contentWindow.XPathEvaluator();
     31  assert_array_equals(toArray(iframe_evaluator.evaluate("//html", xml_doc)), []);
     32 }, "evaluator 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_evaluator = new iframe.contentWindow.XPathEvaluator();
     43  assert_array_equals(toArray(iframe_evaluator.evaluate("//html", html_doc)), [html_doc.documentElement]);
     44 }, "evaluator 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_evaluator = new iframe.contentWindow.XPathEvaluator();
     55  assert_array_equals(toArray(iframe_evaluator.evaluate("//html", xml_doc)), []);
     56 }, "evaluator 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_evaluator = new iframe.contentWindow.XPathEvaluator();
     67  assert_array_equals(toArray(iframe_evaluator.evaluate("//html", html_doc)), [html_doc.documentElement]);
     68 }, "evaluator from realm with HTML associated document, context node in HTML document, no namespace resolver");
     69 </script>