Index: third_party/WebKit/LayoutTests/svg/dom/SVGLength-viewport-units.html |
diff --git a/third_party/WebKit/LayoutTests/svg/dom/SVGLength-viewport-units.html b/third_party/WebKit/LayoutTests/svg/dom/SVGLength-viewport-units.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b7c29228a8e572504d04e5c4d57ee7822ffbca23 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/svg/dom/SVGLength-viewport-units.html |
@@ -0,0 +1,72 @@ |
+<!DOCTYPE html> |
+<script src="../../resources/testharness.js"></script> |
+<script src="../../resources/testharnessreport.js"></script> |
+<svg width="1" height="1" visibility="hidden"> |
+</svg> |
+<script> |
+var svgElement = document.querySelector("svg"); |
+var viewportWidth = window.innerWidth; |
+var viewportHeight = window.innerHeight; |
+var EPSILON = Math.pow(2, -8); |
+ |
+function viewportWidthPercent() |
+{ |
+ return (viewportWidth / 100); |
+} |
+ |
+function viewportHeightPercent() |
+{ |
+ return (viewportHeight / 100); |
+} |
+ |
+function viewportMinPercent() |
+{ |
+ return (Math.min(viewportWidth, viewportHeight) / 100); |
+} |
+ |
+function viewportMaxPercent() |
+{ |
+ return (Math.max(viewportWidth, viewportHeight) / 100); |
+} |
+ |
+test(function() { |
+ svgElement.setAttribute("width", "10vw"); |
+ assert_approx_equals(svgElement.width.baseVal.value, 10 * viewportWidthPercent(), EPSILON); |
+ assert_equals(svgElement.width.baseVal.valueInSpecifiedUnits, 10); |
+ assert_throws(null, function() {svgElement.width.baseVal.valueAsString = '2vw'}); |
+ svgElement.width.baseVal.valueInSpecifiedUnits = 2; |
+ assert_approx_equals(svgElement.width.baseVal.value, 2 * viewportWidthPercent(), EPSILON); |
+ assert_equals(svgElement.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_UNKNOWN); |
+}, "Tests vw unit"); |
+ |
+test(function() { |
+ svgElement.setAttribute("width", "10vh"); |
+ assert_approx_equals(svgElement.width.baseVal.value, 10 * viewportHeightPercent(), EPSILON); |
+ assert_equals(svgElement.width.baseVal.valueInSpecifiedUnits, 10); |
+ assert_throws(null, function() {svgElement.width.baseVal.valueAsString = '2vh'}); |
+ svgElement.width.baseVal.valueInSpecifiedUnits = 2; |
+ assert_approx_equals(svgElement.width.baseVal.value, 2 * viewportHeightPercent(), EPSILON); |
+ assert_equals(svgElement.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_UNKNOWN); |
+}, "Tests vh unit"); |
+ |
+test(function() { |
+ svgElement.setAttribute("width", "10vmin"); |
+ assert_approx_equals(svgElement.width.baseVal.value, 10 * viewportMinPercent(), EPSILON); |
+ assert_equals(svgElement.width.baseVal.valueInSpecifiedUnits, 10); |
+ assert_throws(null, function() {svgElement.width.baseVal.valueAsString = '2vmin'}); |
+ svgElement.width.baseVal.valueInSpecifiedUnits = 2; |
+ assert_approx_equals(svgElement.width.baseVal.value, 2 * viewportMinPercent(), EPSILON); |
+ assert_equals(svgElement.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_UNKNOWN); |
+}, "Tests vmin unit"); |
+ |
+test(function() { |
+ svgElement.setAttribute("width", "10vmax"); |
+ assert_approx_equals(svgElement.width.baseVal.value, 10 * viewportMaxPercent(), EPSILON); |
+ assert_equals(svgElement.width.baseVal.valueInSpecifiedUnits, 10); |
+ assert_throws(null, function() {svgElement.width.baseVal.valueAsString = '2vmax'}); |
+ svgElement.width.baseVal.valueInSpecifiedUnits = 2; |
+ assert_approx_equals(svgElement.width.baseVal.value, 2 * viewportMaxPercent(), EPSILON); |
+ assert_equals(svgElement.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_UNKNOWN); |
+}, "Tests vmax unit"); |
+ |
+</script> |