| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| function testElementStyle(propertyJS, propertyCSS, type, value) |
| { |
| if (type != null) { |
| shouldBe("e.style." + propertyJS, "'" + value + "'"); |
| shouldBe("e.style.getPropertyCSSValue('" + propertyCSS + "').toString()", "'" + type + "'"); |
| shouldBe("e.style.getPropertyCSSValue('" + propertyCSS + "').cssText", "'" + value + "'"); |
| } else |
| shouldBeNull("e.style.getPropertyCSSValue('" + propertyCSS + "')"); |
| } |
| |
| function testComputedStyle(propertyJS, propertyCSS, type, value) |
| { |
| computedStyle = window.getComputedStyle(e, null); |
| shouldBe("computedStyle." + propertyJS, "'" + value + "'"); |
| shouldBe("computedStyle.getPropertyCSSValue('" + propertyCSS + "').toString()", "'" + type + "'"); |
| shouldBe("computedStyle.getPropertyCSSValue('" + propertyCSS + "').cssText", "'" + value + "'"); |
| } |
| |
| description("Test to make sure text-decoration property returns values properly.") |
| |
| var testContainer = document.createElement("div"); |
| testContainer.contentEditable = true; |
| document.body.appendChild(testContainer); |
| |
| testContainer.innerHTML = '<div id="test">hello world</div>'; |
| debug("Initial value:"); |
| e = document.getElementById('test'); |
| testElementStyle("textDecoration", "text-decoration", null, ''); |
| testComputedStyle("textDecoration", "text-decoration", "[object CSSPrimitiveValue]", "none"); |
| debug(''); |
| |
| debug("Initial value (explicit):"); |
| e.style.textDecoration = 'initial'; |
| testElementStyle("textDecoration", "text-decoration", "[object CSSValue]", "initial"); |
| testComputedStyle("textDecoration", "text-decoration", "[object CSSPrimitiveValue]", "none"); |
| debug(''); |
| |
| debug("Value 'none':"); |
| e.style.textDecoration = 'none'; |
| testElementStyle("textDecoration", "text-decoration", "[object CSSPrimitiveValue]", "none"); |
| testComputedStyle("textDecoration", "text-decoration", "[object CSSPrimitiveValue]", "none"); |
| debug(''); |
| |
| debug("Value 'underline':"); |
| e.style.textDecoration = 'underline'; |
| testElementStyle("textDecoration", "text-decoration", "[object CSSValueList]", "underline"); |
| testComputedStyle("textDecoration", "text-decoration", "[object CSSValueList]", "underline"); |
| debug(''); |
| |
| debug("Value 'overline':"); |
| e.style.textDecoration = 'overline'; |
| testElementStyle("textDecoration", "text-decoration", "[object CSSValueList]", "overline"); |
| testComputedStyle("textDecoration", "text-decoration", "[object CSSValueList]", "overline"); |
| debug(''); |
| |
| debug("Value 'line-through':"); |
| e.style.textDecoration = 'line-through'; |
| testElementStyle("textDecoration", "text-decoration", "[object CSSValueList]", "line-through"); |
| testComputedStyle("textDecoration", "text-decoration", "[object CSSValueList]", "line-through"); |
| debug(''); |
| |
| debug("Value 'underline overline line-through':"); |
| e.style.textDecoration = 'underline overline line-through'; |
| testElementStyle("textDecoration", "text-decoration", "[object CSSValueList]", "underline overline line-through"); |
| testComputedStyle("textDecoration", "text-decoration", "[object CSSValueList]", "underline overline line-through"); |
| debug(''); |
| |
| debug("Value 'blink' (valid but ignored):"); |
| e.style.textDecoration = 'blink'; |
| testElementStyle("textDecoration", "text-decoration", "[object CSSValueList]", "blink"); |
| testComputedStyle("textDecoration", "text-decoration", "[object CSSPrimitiveValue]", "none"); |
| debug(''); |
| |
| debug("Value '':"); |
| e.style.textDecoration = ''; |
| testElementStyle("textDecoration", "text-decoration", null, ''); |
| testComputedStyle("textDecoration", "text-decoration", "[object CSSPrimitiveValue]", "none"); |
| debug(''); |
| |
| testContainer.innerHTML = '<div id="test-parent" style="text-decoration: underline;">hello <span id="test-ancestor" style="text-decoration: inherit;">world</span></div>'; |
| debug("Parent gets 'underline' value:"); |
| e = document.getElementById('test-parent'); |
| testElementStyle("textDecoration", "text-decoration", "[object CSSValueList]", "underline"); |
| testComputedStyle("textDecoration", "text-decoration", "[object CSSValueList]", "underline"); |
| debug(''); |
| |
| debug("Ancestor should explicitly inherit value from parent when 'inherit' value is used:"); |
| e = document.getElementById('test-ancestor'); |
| testElementStyle("textDecoration", "text-decoration", "[object CSSValue]", "inherit"); |
| testComputedStyle("textDecoration", "text-decoration", "[object CSSValueList]", "underline"); |
| debug(''); |
| |
| debug("Ancestor should not implicitly inherit value from parent (i.e. when value is void):"); |
| e.style.textDecoration = ''; |
| testElementStyle("textDecoration", "text-decoration", null, ''); |
| testComputedStyle("textDecoration", "text-decoration", "[object CSSPrimitiveValue]", "none"); |
| debug(''); |
| |
| document.body.removeChild(testContainer); |
| </script> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |