| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <title>Test of interfaces</title> | 2 <title>Test of interfaces</title> |
| 3 <link rel="author" title="Ms2ger" href="mailto:Ms2ger@gmail.com"> | 3 <link rel="author" title="Ms2ger" href="mailto:Ms2ger@gmail.com"> |
| 4 <link rel="help" href="https://html.spec.whatwg.org/multipage/"> | 4 <link rel="help" href="https://html.spec.whatwg.org/multipage/"> |
| 5 <link rel="help" href="https://heycam.github.io/webidl/#host-objects"> | 5 <link rel="help" href="https://heycam.github.io/webidl/#host-objects"> |
| 6 <link rel="help" href="http://www.ecma-international.org/publications/files/ECMA
-ST/ECMA-262.pdf#page=96"> | 6 <link rel="help" href="http://www.ecma-international.org/publications/files/ECMA
-ST/ECMA-262.pdf#page=96"> |
| 7 <script src="../../../../resources/testharness.js"></script> | 7 <script src="../../../../resources/testharness.js"></script> |
| 8 <script src="../../../../resources/testharnessreport.js"></script> | 8 <script src="../../../../resources/testharnessreport.js"></script> |
| 9 <script src=interfaces.js></script> | 9 <script src=interfaces.js></script> |
| 10 <div id="log"></div> | 10 <div id="log"></div> |
| 11 <script> | 11 <script> |
| 12 function do_test(local_name, iface, variant) { | 12 function do_test(local_name, iface) { |
| 13 test(function() { | 13 test(function() { |
| 14 var e; | 14 var e = document.createElement(local_name), i = "HTML" + iface + "Element"; |
| 15 var i = "HTML" + iface + "Element"; | |
| 16 if (variant === "useNS") { | |
| 17 // Use createElementNS here to preserve the case of local_name. | |
| 18 e = document.createElementNS("http://www.w3.org/1999/xhtml", local_name); | |
| 19 } else { | |
| 20 e = document.createElement(local_name); | |
| 21 } | |
| 22 assert_class_string(e, i, | 15 assert_class_string(e, i, |
| 23 "Element " + local_name + " should have " + i + | 16 "Element " + local_name + " should have " + i + |
| 24 " as its primary interface."); | 17 " as its primary interface."); |
| 25 assert_true(e instanceof window[i], | 18 assert_true(e instanceof window[i], |
| 26 "Element " + local_name + " should implement " + i + "."); | 19 "Element " + local_name + " should implement " + i + "."); |
| 27 assert_true(e instanceof HTMLElement, | 20 assert_true(e instanceof HTMLElement, |
| 28 "Element " + local_name + " should implement HTMLElement."); | 21 "Element " + local_name + " should implement HTMLElement."); |
| 29 assert_true(e instanceof Element, | 22 assert_true(e instanceof Element, |
| 30 "Element " + local_name + " should implement Element."); | 23 "Element " + local_name + " should implement Element."); |
| 31 assert_true(e instanceof Node, | 24 assert_true(e instanceof Node, |
| 32 "Element " + local_name + " should implement Node."); | 25 "Element " + local_name + " should implement Node."); |
| 33 }, "Interfaces for " + local_name); | 26 }, "Interfaces for " + local_name); |
| 34 } | 27 } |
| 35 | 28 |
| 36 elements.forEach(function(a) { | 29 elements.forEach(function(a) { |
| 37 do_test(a[0], a[1], "useNS"); | 30 do_test(a[0], a[1]); |
| 38 | 31 do_test(a[0].toUpperCase(), a[1]); |
| 39 // Only run the createElement variant if the input is all-lowercase, because c
reateElement | |
| 40 // case-folds to lowercase. Custom elements are required to use all-lowercase
to implement | |
| 41 // HTMLElement, otherwise they use HTMLUnknownElement per spec. Example: "foo-
BAR". | |
| 42 if (a[0] === a[0].toLowerCase()) { | |
| 43 do_test(a[0].toUpperCase(), a[1]); | |
| 44 } | |
| 45 }) | 32 }) |
| 46 </script> | 33 </script> |
| OLD | NEW |