| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Custom Elements: CEReactions on Element interface</title> |
| <meta name="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org"> |
| <meta name="assert" content="id, className, slot, setAttribute, setAttributeNS, removeAttribute, removeAttributeNS, setAttributeNode, setAttributeNodeNS, removeAttributeNode, insertAdjacentElement, innerHTML, outerHTML, and insertAdjacentHTML of Element interface must have CEReactions"> |
| <meta name="help" content="https://dom.spec.whatwg.org/#element"> |
| <meta name="help" content="https://w3c.github.io/DOM-Parsing/"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="../resources/custom-elements-helpers.js"></script> |
| <script src="./resources/reactions.js"></script> |
| </head> |
| <body> |
| <div id="log"></div> |
| <script> |
| |
| testReflectAttribute('id', 'id', 'foo', 'bar', 'id on Element'); |
| testReflectAttribute('className', 'class', 'foo', 'bar', 'className on Element'); |
| testReflectAttribute('slot', 'slot', 'foo', 'bar', 'slot on Element'); |
| |
| testAttributeAdder(function (element, name, value) { |
| element.setAttribute(name, value); |
| }, 'setAttribute on Element'); |
| |
| testAttributeAdder(function (element, name, value) { |
| element.setAttributeNS(null, name, value); |
| }, 'setAttributeNS on Element'); |
| |
| testAttributeRemover(function (element, name) { |
| element.removeAttribute(name); |
| }, 'removeAttribute on Element'); |
| |
| testAttributeRemover(function (element, name) { |
| element.removeAttributeNS(null, name); |
| }, 'removeAttributeNS on Element'); |
| |
| testAttributeRemover(function (element, name, value) { |
| if (element.hasAttribute(name)) |
| element.toggleAttribute(name); |
| }, 'toggleAttribute (only removes) on Element'); |
| |
| testAttributeRemover(function (element, name, value) { |
| element.toggleAttribute(name, false); |
| }, 'toggleAttribute (force false) on Element'); |
| |
| testAttributeAdder(function (element, name, value) { |
| var attr = document.createAttribute(name); |
| attr.value = value; |
| element.setAttributeNode(attr); |
| }, 'setAttributeNode on Element'); |
| |
| testAttributeAdder(function (element, name, value) { |
| var attr = document.createAttribute(name); |
| attr.value = value; |
| element.setAttributeNodeNS(attr); |
| }, 'setAttributeNodeNS on Element'); |
| |
| testAttributeRemover(function (element, name) { |
| var attr = element.getAttributeNode(name); |
| if (attr) |
| element.removeAttributeNode(element.getAttributeNode(name)); |
| }, 'removeAttributeNode on Element'); |
| |
| testNodeConnector(function (newContainer, element) { |
| newContainer.insertAdjacentElement('afterBegin', element); |
| }, 'insertAdjacentElement on Element'); |
| |
| testInsertingMarkup(function (newContainer, markup) { |
| newContainer.innerHTML = markup; |
| }, 'innerHTML on Element'); |
| |
| testNodeDisconnector(function (customElement) { |
| customElement.parentNode.innerHTML = ''; |
| }, 'innerHTML on Element'); |
| |
| testInsertingMarkup(function (newContainer, markup) { |
| newContainer.firstChild.outerHTML = markup; |
| }, 'outerHTML on Element'); |
| |
| testNodeDisconnector(function (customElement) { |
| customElement.outerHTML = ''; |
| }, 'outerHTML on Element'); |
| |
| testInsertingMarkup(function (newContainer, markup) { |
| newContainer.insertAdjacentHTML('afterBegin', markup); |
| }, 'insertAdjacentHTML on Element'); |
| |
| </script> |
| </body> |
| </html> |