| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| description("Test exceptions thrown by the CSSPrimitiveValue APIs. Primitive values are currently immutable (see https://bugs.webkit.org/show_bug.cgi?id=31223)"); |
| |
| var element = document.createElement('div'); |
| element.id = "test-element" |
| document.documentElement.appendChild(element); |
| |
| var styleElement = document.createElement('style'); |
| styleElement.innerText = "#test-element { position: absolute; left: 10px; font-family: Times; }"; |
| document.documentElement.appendChild(styleElement); |
| |
| function checkThrows(style) { |
| left = style.getPropertyCSSValue("left"); |
| |
| shouldBe("left.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "10"); |
| shouldBe("left.getFloatValue(CSSPrimitiveValue.CSS_DIMENSION)", "10"); |
| shouldBe("left.getFloatValue(CSSPrimitiveValue.CSS_PX)", "10"); |
| |
| shouldThrow("left.setFloatValue(CSSPrimitiveValue.CSS_NUMBER, 25)"); |
| shouldThrow("left.setFloatValue(CSSPrimitiveValue.CSS_DIMENSION, 25)"); |
| shouldThrow("left.setFloatValue(CSSPrimitiveValue.CSS_PX, 25)"); |
| shouldThrow("left.setFloatValue(CSSPrimitiveValue.CSS_UNKNOWN, 25)"); |
| shouldThrow("left.setFloatValue(CSSPrimitiveValue.CSS_STRING, 25)"); |
| shouldThrow("left.getFloatValue(CSSPrimitiveValue.CSS_UNKNOWN)"); |
| shouldThrow("left.getFloatValue(CSSPrimitiveValue.CSS_STRING)"); |
| |
| shouldThrow("left.getStringValue()"); |
| shouldThrow("left.getCounterValue()"); |
| shouldThrow("left.getRectValue()"); |
| shouldThrow("left.getRGBColorValue()"); |
| |
| shouldBe("left.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "10"); |
| shouldBe("left.getFloatValue(CSSPrimitiveValue.CSS_DIMENSION)", "10"); |
| shouldBe("left.getFloatValue(CSSPrimitiveValue.CSS_PX)", "10"); |
| |
| fontFamily = style.getPropertyCSSValue("font-family")[0]; |
| |
| shouldBe("fontFamily.getStringValue()", '"Times"'); |
| |
| shouldThrow("fontFamily.setStringValue(CSSPrimitiveValue.CSS_STRING, 'Hi there!')"); |
| shouldThrow("fontFamily.setStringValue(CSSPrimitiveValue.CSS_ATTR, \"G'day!\")"); |
| shouldThrow("fontFamily.setStringValue(CSSPrimitiveValue.CSS_UNKNOWN, 'Hi there!')"); |
| shouldThrow("fontFamily.setStringValue(CSSPrimitiveValue.CSS_DIMENSION, \"G'day!\")"); |
| shouldThrow("fontFamily.setStringValue(CSSPrimitiveValue.CSS_COUNTER, 'Hello, world!')"); |
| |
| shouldThrow("fontFamily.getFloatValue()"); |
| shouldThrow("fontFamily.getCounterValue()"); |
| shouldThrow("fontFamily.getRectValue()"); |
| shouldThrow("fontFamily.getRGBColorValue()"); |
| |
| shouldBe("fontFamily.getStringValue()", '"Times"'); |
| } |
| |
| var style = styleElement.sheet.cssRules[0].style; |
| checkThrows(style); |
| |
| var computedStyle = window.getComputedStyle(element, null); |
| checkThrows(computedStyle); |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |