<!DOCTYPE>
<html>
<style>
 #element-container-vw {
   background:green;
   height:30vw;
   width:30vw;
   font-size:3vw;
   line-height:4vw;
   text-indent:2vw;
   margin-left:2vw;
   margin-right:2vw;
   margin-top:2vw;
   margin-bottom:2vw;
   border-top-left-radius:1vw;
   border-top-right-radius:1vw;
   border-bottom-left-radius:1vw;
   border-bottom-right-radius:1vw;
   min-height:10vw;
   min-width:10vw;
   max-height:60vw;
   max-width:60vw;
 }

 #element-container-absolute-vw {
   background:green;
   position:absolute;
   top:10vw;
   bottom:10vw;
   left:10vw;
   right:10vw;
   padding-left:2vw;
   padding-right:2vw;
   padding-top:2vw;
   padding-bottom:2vw;
 }

 #element-container-vh {
   background:green;
   height:30vh;
   width:30vh;
   font-size:3vh;
   line-height:4vh;
   text-indent:2vh;
   margin-left:2vh;
   margin-right:2vh;
   margin-top:2vh;
   margin-bottom:2vh;
   border-top-left-radius:1vh;
   border-top-right-radius:1vh;
   border-bottom-left-radius:1vh;
   border-bottom-right-radius:1vh;
   min-height:10vh;
   min-width:10vh;
   max-height:60vh;
   max-width:60vh;
 }

 #element-container-absolute-vh {
   background:green;
   position:absolute;
   top:10vh;
   bottom:10vh;
   left:10vh;
   right:10vh;
   padding-left:2vh;
   padding-right:2vh;
   padding-top:2vh;
   padding-bottom:2vh;
 }

 #element-container-vmin {
   background:green;
   height:30vmin;
   width:30vmin;
   font-size:3vmin;
   line-height:4vmin;
   text-indent:2vmin;
   margin-left:2vmin;
   margin-right:2vmin;
   margin-top:2vmin;
   margin-bottom:2vmin;
   border-top-left-radius:1vmin;
   border-top-right-radius:1vmin;
   border-bottom-left-radius:1vmin;
   border-bottom-right-radius:1vmin;
   min-height:10vmin;
   min-width:10vmin;
   max-height:60vmin;
   max-width:60vmin;
 }

 #element-container-absolute-vmin {
   background:green;
   position:absolute;
   top:10vmin;
   bottom:10vmin;
   left:10vmin;
   right:10vmin;
   padding-left:2vmin;
   padding-right:2vmin;
   padding-top:2vmin;
   padding-bottom:2vmin;
 }

 #element-container-vmax {
   background:green;
   height:30vmax;
   width:30vmax;
   font-size:3vmax;
   line-height:4vmax;
   text-indent:2vmax;
   margin-left:2vmax;
   margin-right:2vmax;
   margin-top:2vmax;
   margin-bottom:2vmax;
   border-top-left-radius:1vmax;
   border-top-right-radius:1vmax;
   border-bottom-left-radius:1vmax;
   border-bottom-right-radius:1vmax;
   min-height:10vmax;
   min-width:10vmax;
   max-height:60vmax;
   max-width:60vmax;
 }

 #element-container-absolute-vmax {
   background:green;
   position:absolute;
   top:10vmax;
   bottom:10vmax;
   left:10vmax;
   right:10vmax;
   padding-left:2vmax;
   padding-right:2vmax;
   padding-top:2vmax;
   padding-bottom:2vmax;
 }
 
</style>
<div id="element-container-vw"></div>
<script src="../../resources/js-test-pre.js"></script>
<script>
if (window.testRunner)
    testRunner.dumpAsText();

description("Test for Bug: 27160/91440 - Implement vw/vh/vmin/vmax (viewport sizes) from CSS 3 Values and Units");

// These have to be global for the test helpers to see them.
var element, style;

function getTheStyle() {
    debug("Test for vw")
    element = document.getElementById("element-container-vw");
    style = window.getComputedStyle(element,null);
    var viewportWidth = window.innerWidth;
    shouldBe('style.getPropertyValue("height")', "'" + Math.floor(30 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("width")', "'" + Math.floor(30 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("font-size")', "'" + Math.floor(3 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("line-height")', "'" + Math.floor(4 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("text-indent")', "'2vw'");
    shouldBe('style.getPropertyValue("margin-left")', "'" + Math.floor(2 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("margin-right")', "'" + Math.floor(2 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("margin-top")', "'" + Math.floor(2 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("margin-bottom")', "'" + Math.floor(2 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("border-top-left-radius")', "'" + Math.floor(1 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("border-top-right-radius")', "'" + Math.floor(1 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("border-bottom-left-radius")', "'" + Math.floor(1 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("border-bottom-right-radius")', "'" + Math.floor(1 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("min-height")', "'10vw'");
    shouldBe('style.getPropertyValue("min-width")', "'10vw'");
    shouldBe('style.getPropertyValue("max-height")', "'60vw'");
    shouldBe('style.getPropertyValue("max-width")', "'60vw'");
    element.id = "element-container-absolute-vw";
    shouldBe('style.getPropertyValue("top")', "'" + Math.floor(10 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("bottom")', "'" + Math.floor(10 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("left")', "'" + Math.floor(10 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("right")', "'" + Math.floor(10 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-left")', "'" + Math.floor(2 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-right")', "'" + Math.floor(2 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-top")', "'" + Math.floor(2 * viewportWidth / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-bottom")', "'" + Math.floor(2 * viewportWidth / 100) + "px'");

    debug("\nTest for vh")
    element.id = "element-container-vh";
    style = window.getComputedStyle(element,null);
    var viewportHeight = window.innerHeight;
    shouldBe('style.getPropertyValue("height")', "'" + Math.floor(30 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("width")', "'" + Math.floor(30 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("font-size")', "'" + Math.floor(3 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("line-height")', "'" + Math.floor(4 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("text-indent")', "'2vh'");
    shouldBe('style.getPropertyValue("margin-left")', "'" + Math.floor(2 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("margin-right")', "'" + Math.floor(2 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("margin-top")', "'" + Math.floor(2 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("margin-bottom")', "'" + Math.floor(2 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("border-top-left-radius")', "'" + Math.floor(1 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("border-top-right-radius")', "'" + Math.floor(1 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("border-bottom-left-radius")', "'" + Math.floor(1 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("border-bottom-right-radius")', "'" + Math.floor(1 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("min-height")', "'10vh'");
    shouldBe('style.getPropertyValue("min-width")', "'10vh'");
    shouldBe('style.getPropertyValue("max-height")', "'60vh'");
    shouldBe('style.getPropertyValue("max-width")', "'60vh'");
    element.id = "element-container-absolute-vh";
    shouldBe('style.getPropertyValue("top")', "'" + Math.floor(10 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("bottom")', "'" + Math.floor(10 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("left")', "'" + Math.floor(10 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("right")', "'" + Math.floor(10 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-left")', "'" + Math.floor(2 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-right")', "'" + Math.floor(2 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-top")', "'" + Math.floor(2 * viewportHeight / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-bottom")', "'" + Math.floor(2 * viewportHeight / 100) + "px'");

    debug("\nTest for vmin")
    element.id = "element-container-vmin";
    style = window.getComputedStyle(element,null);
    var viewportMinLength = Math.min(window.innerWidth, window.innerHeight);
    shouldBe('style.getPropertyValue("height")', "'" + Math.floor(30 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("width")', "'" + Math.floor(30 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("font-size")', "'" + Math.floor(3 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("line-height")', "'" + Math.floor(4 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("text-indent")', "'2vmin'");
    shouldBe('style.getPropertyValue("margin-left")', "'" + Math.floor(2 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("margin-right")', "'" + Math.floor(2 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("margin-top")', "'" + Math.floor(2 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("margin-bottom")', "'" + Math.floor(2 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("border-top-left-radius")', "'" + Math.floor(1 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("border-top-right-radius")', "'" + Math.floor(1 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("border-bottom-left-radius")', "'" + Math.floor(1 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("border-bottom-right-radius")', "'" + Math.floor(1 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("min-height")', "'10vmin'");
    shouldBe('style.getPropertyValue("min-width")', "'10vmin'");
    shouldBe('style.getPropertyValue("max-height")', "'60vmin'");
    shouldBe('style.getPropertyValue("max-width")', "'60vmin'");
    element.id = "element-container-absolute-vmin";
    shouldBe('style.getPropertyValue("top")', "'" + Math.floor(10 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("bottom")', "'" + Math.floor(10 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("left")', "'" + Math.floor(10 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("right")', "'" + Math.floor(10 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-left")', "'" + Math.floor(2 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-right")', "'" + Math.floor(2 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-top")', "'" + Math.floor(2 * viewportMinLength / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-bottom")', "'" + Math.floor(2 * viewportMinLength / 100) + "px'");

    debug("\nTest for vmax")
    element.id = "element-container-vmax";
    style = window.getComputedStyle(element,null);
    var viewportMaxLength = Math.max(window.innerWidth, window.innerHeight);
    shouldBe('style.getPropertyValue("height")', "'" + Math.floor(30 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("width")', "'" + Math.floor(30 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("font-size")', "'" + Math.floor(3 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("line-height")', "'" + Math.floor(4 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("text-indent")', "'2vmax'");
    shouldBe('style.getPropertyValue("margin-left")', "'" + Math.floor(2 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("margin-right")', "'" + Math.floor(2 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("margin-top")', "'" + Math.floor(2 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("margin-bottom")', "'" + Math.floor(2 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("border-top-left-radius")', "'" + Math.floor(1 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("border-top-right-radius")', "'" + Math.floor(1 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("border-bottom-left-radius")', "'" + Math.floor(1 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("border-bottom-right-radius")', "'" + Math.floor(1 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("min-height")', "'10vmax'");
    shouldBe('style.getPropertyValue("min-width")', "'10vmax'");
    shouldBe('style.getPropertyValue("max-height")', "'60vmax'");
    shouldBe('style.getPropertyValue("max-width")', "'60vmax'");
    element.id = "element-container-absolute-vmax";
    shouldBe('style.getPropertyValue("top")', "'" + Math.floor(10 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("bottom")', "'" + Math.floor(10 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("left")', "'" + Math.floor(10 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("right")', "'" + Math.floor(10 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-left")', "'" + Math.floor(2 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-right")', "'" + Math.floor(2 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-top")', "'" + Math.floor(2 * viewportMaxLength / 100) + "px'");
    shouldBe('style.getPropertyValue("padding-bottom")', "'" + Math.floor(2 * viewportMaxLength / 100) + "px'");
}
getTheStyle();
</script>
<script src="../../resources/js-test-post.js"></script>
</html>
