| <!DOCTYPE html> |
| <html xmlns:foo="http://www.webkit.org/awesome.html"> |
| <head> |
| <meta charset="utf-8"> |
| <script src="../../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <div id="test-container" style="display: none;"></div> |
| </body> |
| <script> |
| description('In HTML, attributes should be ASCII case-insensitive. This test includes basic coverage for setting names with the prefix syntax through the simple attribute API.'); |
| |
| var testContainer = document.getElementById('test-container'); |
| |
| function testAttributeOnTarget(equivalentNames, distinctNames) { |
| for (var equivalentName of equivalentNames) { |
| shouldBeTrue('document.getElementById("target").hasAttribute("' + equivalentName + '")'); |
| shouldBeEqualToString('document.getElementById("target").getAttribute("' + equivalentName + '")', 'WebKit!'); |
| } |
| |
| for (var distinctName of distinctNames) { |
| shouldBeFalse('document.getElementById("target").hasAttribute("' + distinctName + '")'); |
| shouldBe('document.getElementById("target").getAttribute("' + distinctName + '")', 'null'); |
| } |
| |
| var target = document.getElementById("target"); |
| for (var distinctName of distinctNames) { |
| target.removeAttribute(distinctName); |
| } |
| |
| for (var equivalentName of equivalentNames) { |
| shouldBeTrue('document.getElementById("target").hasAttribute("' + equivalentName + '")'); |
| shouldBeEqualToString('document.getElementById("target").getAttribute("' + equivalentName + '")', 'WebKit!'); |
| } |
| } |
| |
| function testParsedAttribute(attribute, equivalentNames, distinctNames) { |
| testContainer.innerHTML = '<div ' + attribute + '="WebKit!" id="target"></div>'; |
| testAttributeOnTarget(equivalentNames, distinctNames); |
| testContainer.innerHTML = ''; |
| } |
| |
| function testAttributeFromDOMApis(attribute, equivalentNames, distinctNames) { |
| var newElement = document.createElement('div'); |
| newElement.setAttribute('id', 'target'); |
| newElement.setAttribute(attribute, "WebKit!"); |
| testContainer.appendChild(newElement); |
| testAttributeOnTarget(equivalentNames, distinctNames); |
| testContainer.innerHTML = ''; |
| } |
| |
| function testAttribute(equivalentNames, distinctNames) { |
| for (var testCase of equivalentNames) { |
| debug("Testing " + testCase); |
| testParsedAttribute(testCase, equivalentNames, distinctNames); |
| testAttributeFromDOMApis(testCase, equivalentNames, distinctNames); |
| debug(""); |
| } |
| } |
| |
| // ASCII prefixes. |
| testAttribute(['foo:data-æøå', 'foo:DATA-æøå', 'foo:Data-æøå', 'FOO:data-æøå', 'Foo:data-æøå'], ['data-ÆØÅ', 'data-Æøå', 'foo:data-ÆØÅ', 'foo:data-Æøå']); |
| testAttribute(['foo:data-Æøå', 'foo:DATA-Æøå', 'foo:Data-Æøå', 'FOO:data-Æøå', 'Foo:data-Æøå'], ['data-ÆØÅ', 'data-æøå', 'foo:data-ÆØÅ', 'foo:data-æøå']); |
| testAttribute(['foo:data-ÆØÅ', 'foo:DATA-ÆØÅ', 'foo:Data-ÆØÅ', 'FOO:data-ÆØÅ', 'Foo:data-ÆØÅ'], ['data-Æøå', 'data-æøå', 'foo:data-Æøå', 'foo:data-æøå']); |
| |
| // Non-ASCII prefixes. |
| testAttribute(['fooæøå:data-æøå', 'Fooæøå:DATA-æøå', 'FOOæøå:Data-æøå'], ['fooÆøå:data-ÆØÅ', 'FooÆøå:data-Æøå', 'FOOÆøå:data-ÆØÅ', 'fooæøå:data-Æøå', 'fooæøå:data-ÆØÅ', 'fooæøå:data-Æøå']); |
| |
| </script> |
| <script src="../../../resources/js-test-post.js"></script> |
| </html> |