Bug 1852740: add tests for the `fetchpriority` attribute in Link headers. r=necko...
[gecko.git] / dom / xul / test / test_bug311681.xhtml
blob8caef2ca5b50895d9f9177ffb0367969f97ad95d
1 <?xml version="1.0"?>
2 <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
3 <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
4 <!--
5 https://bugzilla.mozilla.org/show_bug.cgi?id=311681
6 -->
7 <window title="Mozilla Bug 311681"
8 xmlns:html="http://www.w3.org/1999/xhtml"
9 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
11 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
13 <body xmlns="http://www.w3.org/1999/xhtml">
14 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=311681">Mozilla Bug 311681</a>
15 <script class="testbody" type="text/javascript">
16 <![CDATA[
17 // Setup script
18 SimpleTest.waitForExplicitFinish();
20 // Make sure to trigger the hashtable case by asking for enough elements
21 // by ID.
22 for (var i = 0; i < 256; ++i) {
23 var x = document.getElementById(i);
26 // save off the document.getElementById function, since getting it as a
27 // property off the document it causes a content flush.
28 var fun = document.getElementById;
30 // Slot for our initial element with id "content"
31 var testNode;
33 function getCont() {
34 return fun.call(document, "content");
37 function testClone() {
38 // Test to make sure that if we have multiple nodes with the same ID in
39 // a document we don't forget about one of them when the other is
40 // removed.
41 var newParent = $("display");
42 var node = testNode.cloneNode(true);
43 isnot(node, testNode, "Clone should be a different node");
45 newParent.appendChild(node);
47 // Check what getElementById returns, no flushing
48 is(getCont(), node, "Should be getting new node pre-flush 1")
50 // Trigger a layout flush, just in case.
51 let itemHeight = newParent.offsetHeight/10;
53 // Check what getElementById returns now.
54 is(getCont(), node, "Should be getting new node post-flush 1")
56 clear(newParent);
58 // Check what getElementById returns, no flushing
59 is(getCont(), testNode, "Should be getting orig node pre-flush 2");
61 // Trigger a layout flush, just in case.
62 itemHeight = newParent.offsetHeight/10;
64 // Check what getElementById returns now.
65 is(getCont(), testNode, "Should be getting orig node post-flush 2");
67 node = testNode.cloneNode(true);
68 newParent.appendChild(node);
69 testNode.remove();
71 // Check what getElementById returns, no flushing
72 is(getCont(), node, "Should be getting clone pre-flush");
74 // Trigger a layout flush, just in case.
75 // eslint-disable-next-line no-unused-vars
76 itemHeight = newParent.offsetHeight/10;
78 // Check what getElementById returns now.
79 is(getCont(), node, "Should be getting clone post-flush");
83 function clear(node) {
84 while (node.hasChildNodes()) {
85 node.firstChild.remove();
89 addLoadEvent(testClone);
90 addLoadEvent(SimpleTest.finish);
91 ]]>
92 </script>
93 <p id="display"></p>
94 <div id="content" style="display: none">
95 <script class="testbody" type="text/javascript">
96 <![CDATA[
97 testNode = fun.call(document, "content");
98 // Needs incremental XML parser
99 isnot(testNode, null, "Should have node here");
101 </script>
102 </div>
103 <pre id="test">
104 </pre>
105 </body>
107 </window>