| <!doctype html> |
| <title>HTML: default style for 'appearance'</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <body> |
| <script> |
| // namespaces |
| const htmlns = 'http://www.w3.org/1999/xhtml'; |
| const svgns = 'http://www.w3.org/2000/svg'; |
| |
| // auto |
| testAppearance(htmlns, 'input', null, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'text'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'TEXT'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'search'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'tel'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'url'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'email'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'password'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'date'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'month'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'week'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'time'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'datetime-local'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'number'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'range'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'color'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'checkbox'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'radio'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'submit'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'reset'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'button'}, 'auto'); |
| testAppearance(htmlns, 'input', {type: 'unknowntype'}, 'auto'); |
| testAppearance(htmlns, 'select', null, 'auto'); |
| testAppearance(htmlns, 'select', {multiple: ''}, 'auto'); |
| testAppearance(htmlns, 'select', {size: '2'}, 'auto'); |
| testAppearance(htmlns, 'button', null, 'auto'); |
| testAppearance(htmlns, 'textarea', null, 'auto'); |
| testAppearance(htmlns, 'meter', null, 'auto'); |
| testAppearance(htmlns, 'progress', null, 'auto'); |
| |
| // none |
| testAppearance(htmlns, 'input', {type: 'hidden'}, 'none'); |
| testAppearance(htmlns, 'input', {type: 'HIDDEN'}, 'none'); |
| testAppearance(htmlns, 'input', {type: 'file'}, 'none'); |
| testAppearance(htmlns, 'input', {type: 'image'}, 'none'); |
| testAppearance(htmlns, 'div', null, 'none'); |
| testAppearance(htmlns, 'details', null, 'none'); |
| testAppearance(htmlns, 'summary', null, 'none'); |
| testAppearance(htmlns, 'video', null, 'none'); |
| testAppearance(htmlns, 'video', {controls: ''}, 'none'); |
| testAppearance(htmlns, 'menuitem', null, 'none'); |
| testAppearance(htmlns, 'marquee', null, 'none'); |
| testAppearance(htmlns, 'keygen', null, 'none'); |
| testAppearance(null, 'input', null, 'none'); |
| testAppearance(svgns, 'input', null, 'none'); |
| |
| test(t => { |
| assertAppearance(document.documentElement, 'none'); |
| }, 'The html element'); |
| |
| test(t => { |
| assertAppearance(document.body, 'none'); |
| }, 'The body element'); |
| |
| |
| function testAppearance(ns, tag, attributes, expected) { |
| test(t => { |
| const elm = document.createElementNS(ns, tag); |
| for (const att in attributes) { |
| elm.setAttribute(att, attributes[att]); |
| } |
| document.body.appendChild(elm); |
| t.add_cleanup(() => elm.remove()); |
| assertAppearance(elm, expected); |
| }, formatTestName(ns, tag, attributes)); |
| } |
| |
| function assertAppearance(elm, expected) { |
| const computedStyle = getComputedStyle(elm); |
| assert_equals(computedStyle.getPropertyValue('-webkit-appearance'), expected, '-webkit-appearance'); |
| assert_equals(computedStyle.getPropertyValue('appearance'), expected, 'appearance (no prefix)'); |
| } |
| |
| function formatTestName(ns, tag, attributes) { |
| let s = `<${tag}`; |
| for (const att in attributes) { |
| s += ` ${att}="${attributes[att]}"`; |
| } |
| s += '>'; |
| if (ns !== htmlns) { |
| s += ` (namespace: ${ns})`; |
| } |
| return s; |
| } |
| </script> |