| OLD | NEW |
| 1 <!doctype html> | 1 <!doctype html> |
| 2 <title>createContextualFragment() tests</title> | 2 <title>createContextualFragment() tests</title> |
| 3 <div id=log></div> | 3 <div id=log></div> |
| 4 <script src=/resources/testharness.js></script> | 4 <script src=/resources/testharness.js></script> |
| 5 <script src=/resources/testharnessreport.js></script> | 5 <script src=/resources/testharnessreport.js></script> |
| 6 <script> | 6 <script> |
| 7 // We are not testing XML documents here, because apparently it's not clear | 7 // We are not testing XML documents here, because apparently it's not clear |
| 8 // what we want to happen there. We also aren't testing the HTML parser in any | 8 // what we want to happen there. We also aren't testing the HTML parser in any |
| 9 // depth, just some basic sanity checks. | 9 // depth, just some basic sanity checks. |
| 10 | 10 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 test(function() { | 77 test(function() { |
| 78 assert_false(passed, "Sanity check"); | 78 assert_false(passed, "Sanity check"); |
| 79 var range = document.createRange(); | 79 var range = document.createRange(); |
| 80 range.selectNodeContents(document.documentElement); | 80 range.selectNodeContents(document.documentElement); |
| 81 var fragment = range.createContextualFragment("<script>passed = true</s"
+ "cript>"); | 81 var fragment = range.createContextualFragment("<script>passed = true</s"
+ "cript>"); |
| 82 assert_false(passed, "Fragment created but not yet added to document, sh
ould not have run"); | 82 assert_false(passed, "Fragment created but not yet added to document, sh
ould not have run"); |
| 83 document.body.appendChild(fragment); | 83 document.body.appendChild(fragment); |
| 84 assert_true(passed, "Fragment created and added to document, should run"
); | 84 assert_true(passed, "Fragment created and added to document, should run"
); |
| 85 }, "<script>s should be run when appended to the document (but not before)"); | 85 }, "<script>s should be run when appended to the document (but not before)"); |
| 86 | 86 |
| 87 // Historical bugs in browsers; see https://github.com/whatwg/html/issues/2222 |
| 88 |
| 89 [ |
| 90 // Void |
| 91 "area", |
| 92 "base", |
| 93 "basefont", |
| 94 "bgsound", |
| 95 "br", |
| 96 "col", |
| 97 "embed", |
| 98 "frame", |
| 99 "hr", |
| 100 "img", |
| 101 "input", |
| 102 "keygen", |
| 103 "link", |
| 104 "meta", |
| 105 "param", |
| 106 "source", |
| 107 "track", |
| 108 "wbr", |
| 109 |
| 110 // Historical |
| 111 "menuitem", |
| 112 "image" |
| 113 ].forEach(name => { |
| 114 test(() => { |
| 115 const range = document.createRange(); |
| 116 const contextNode = document.createElement(name); |
| 117 const selectedNode = document.createElement("div"); |
| 118 contextNode.appendChild(selectedNode); |
| 119 range.selectNode(selectedNode); |
| 120 |
| 121 range.createContextualFragment("some text"); |
| 122 }, `createContextualFragment should work even when the context is <${nam
e}>`); |
| 123 }); |
| 124 |
| 125 |
| 87 // Now that we've established basic sanity, let's do equivalence tests. Those | 126 // Now that we've established basic sanity, let's do equivalence tests. Those |
| 88 // are easier to write anyway. | 127 // are easier to write anyway. |
| 89 function testEquivalence(element1, fragment1, element2, fragment2) { | 128 function testEquivalence(element1, fragment1, element2, fragment2) { |
| 90 var range1 = element1.ownerDocument.createRange(); | 129 var range1 = element1.ownerDocument.createRange(); |
| 91 range1.selectNodeContents(element1); | 130 range1.selectNodeContents(element1); |
| 92 var range2 = element2.ownerDocument.createRange(); | 131 var range2 = element2.ownerDocument.createRange(); |
| 93 range2.selectNodeContents(element2); | 132 range2.selectNodeContents(element2); |
| 94 | 133 |
| 95 var result1 = range1.createContextualFragment(fragment1); | 134 var result1 = range1.createContextualFragment(fragment1); |
| 96 var result2 = range2.createContextualFragment(fragment2); | 135 var result2 = range2.createContextualFragment(fragment2); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 ["Text nodes shouldn't be special", | 170 ["Text nodes shouldn't be special", |
| 132 document.createTextNode("?"), "<body><p>", | 171 document.createTextNode("?"), "<body><p>", |
| 133 document.createElement("div"), "<body><p>"], | 172 document.createElement("div"), "<body><p>"], |
| 134 ["Non-Element parent should not be special", | 173 ["Non-Element parent should not be special", |
| 135 comment, "<body><p>", | 174 comment, "<body><p>", |
| 136 document.createElement("div"), "<body><p>"] | 175 document.createElement("div"), "<body><p>"] |
| 137 ]; | 176 ]; |
| 138 | 177 |
| 139 generate_tests(testEquivalence, tests); | 178 generate_tests(testEquivalence, tests); |
| 140 </script> | 179 </script> |
| OLD | NEW |