tor-browser

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

MutationObserver-textContent.html (3304B)


      1 <!doctype html>
      2 <meta charset=utf-8>
      3 <title></title>
      4 <script src=/resources/testharness.js></script>
      5 <script src=/resources/testharnessreport.js></script>
      6 <script>
      7 
      8 async function test() {
      9 
     10  let testElement1 = async_test("Setting Element.textContent");
     11  let el = document.createElement("div");
     12  let m = new MutationObserver((records) => testElement1.step(()=> {
     13    assert_equals(records.length, 1, "Should have one record");
     14    assert_equals(records[0].addedNodes[0].nodeType, Node.TEXT_NODE, "Should have gotten a text node as a child.");
     15    assert_equals(records[0].addedNodes[0].data, "foo");
     16    m.disconnect();
     17    testElement1.done();
     18  }));
     19  m.observe(el, { childList: true });
     20  el.textContent = "foo";
     21 
     22  await Promise.resolve(); // Run microtasks
     23 
     24  let testElement2 = async_test("Setting Element.textContent to the same value");
     25  m = new MutationObserver((records) => testElement2.step(()=> {
     26    assert_equals(records.length, 1, "Should have one record");
     27    assert_equals(records[0].removedNodes[0].nodeType, Node.TEXT_NODE, "Should have removed a text node.");
     28    assert_equals(records[0].removedNodes[0].data, "foo");
     29    assert_equals(records[0].addedNodes[0].nodeType, Node.TEXT_NODE, "Should have gotten a text node as a child.");
     30    assert_equals(records[0].addedNodes[0].data, "foo");
     31    m.disconnect();
     32    testElement2.done();
     33  }));
     34  m.observe(el, { childList: true });
     35  testElement2.step(() => { assert_equals(el.textContent, "foo"); });
     36  el.textContent = "foo";
     37 
     38  await Promise.resolve(); // Run microtasks
     39 
     40  let testElement3 = async_test("Setting Element.textContent to a different value");
     41  m = new MutationObserver((records) => testElement3.step(()=> {
     42    assert_equals(records.length, 1, "Should have one record");
     43    assert_equals(records[0].removedNodes[0].nodeType, Node.TEXT_NODE, "Should have removed a text node.");
     44    assert_equals(records[0].removedNodes[0].data, "foo");
     45    assert_equals(records[0].addedNodes[0].nodeType, Node.TEXT_NODE, "Should have gotten a text node as a child.");
     46    assert_equals(records[0].addedNodes[0].data, "bar");
     47    m.disconnect();
     48    testElement3.done();
     49  }));
     50  m.observe(el, { childList: true });
     51  testElement3.step(() => { assert_equals(el.textContent, "foo"); });
     52  el.textContent = "bar";
     53 
     54  await Promise.resolve(); // Run microtasks
     55 
     56  let testElement4 = async_test("Setting Element.textContent to the same value when the old node is a CDATASection");
     57  let xml = new DOMParser().parseFromString("<root></root>", "text/xml");
     58  el = xml.createElement("somelement");
     59  el.appendChild(xml.createCDATASection("foo"));
     60  m = new MutationObserver((records) => testElement4.step(()=> {
     61    assert_equals(records.length, 1, "Should have one record");
     62    assert_equals(records[0].removedNodes[0].nodeType, Node.CDATA_SECTION_NODE, "Should have removed a cdata node.");
     63    assert_equals(records[0].removedNodes[0].data, "foo");
     64    assert_equals(records[0].addedNodes[0].nodeType, Node.TEXT_NODE, "Should have gotten a text node as a child.");
     65    assert_equals(records[0].addedNodes[0].data, "foo");
     66    m.disconnect();
     67    testElement4.done();
     68  }));
     69  m.observe(el, { childList: true });
     70  testElement4.step(() => { assert_equals(el.textContent, "foo"); });
     71  el.textContent = "foo";
     72 
     73 }
     74 test();
     75 
     76 </script>