blob: 29a1626e293a94d9374dc84889fff2fc282e4fdf [file] [log] [blame]
<!DOCTYPE html>
<html>
<script src="../../resources/ahem.js"></script>
<style>
* { font-size: 16px; }
svg, rect { font-family: 'Ahem'; }
div { font-size: 8px; }
</style>
<html>
<svg id="svg" width="0" height="0"></svg>
<script src="../../resources/js-test.js"></script>
<script>
description("Test that 'length' presentation attribute values are parsed with CSS presentation rules.");
function computedStyle(elementname, property, value) {
var elm = document.createElementNS('http://www.w3.org/2000/svg', elementname);
document.getElementById('svg').appendChild(elm);
elm.setAttribute(property, value);
var computedValue = getComputedStyle(elm).getPropertyValue(property);
document.getElementById('svg').removeChild(elm);
return computedValue;
}
function testComputed(elementname, property, value, expected) {
shouldBeEqualToString('computedStyle("' + elementname + '", "' + property + '", "' + value + '")', expected);
}
function negativeTest(elementname, property, value, expected) {
testComputed(elementname, property, value, expected);
}
function testAttributeOnElement(elementname, attributename, initial_value) {
testComputed(elementname, attributename, " 100", "100px");
testComputed(elementname, attributename, "100 ", "100px");
testComputed(elementname, attributename, "100px", "100px");
testComputed(elementname, attributename, "1em", "16px");
// testComputed(elementname, attributename, "1ex", "12.8000001907349px"); // enable this again once http://crbug.com/441840 is fixed
testComputed(elementname, attributename, "20%", "20%");
testComputed(elementname, attributename, "-200px", "-200px");
negativeTest(elementname, attributename, "auto", initial_value);
negativeTest(elementname, attributename, "100 px", initial_value);
negativeTest(elementname, attributename, "100px;", initial_value);
negativeTest(elementname, attributename, "100px !important", initial_value);
negativeTest(elementname, attributename, "{ 100px }", initial_value);
}
var xyelements = [ "mask", "svg", "rect", "image", "foreignObject" ];
for (var elm of xyelements) {
let initial_value = elm === "mask" ? "-10%" : "0px";
testAttributeOnElement(elm, "x", initial_value);
testAttributeOnElement(elm, "y", initial_value);
}
var rxryelements = [ "rect", "ellipse" ];
for (var elm of rxryelements) {
let initial_value = "0px";
testAttributeOnElement(elm, "rx", initial_value);
testAttributeOnElement(elm, "ry", initial_value);
}
testAttributeOnElement("circle", "r", "0px");
</script>
</body>
</html>