<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Test of font-size Animation Using em Units</title>
  <style type="text/css" media="screen">
    body {
        font-family: "arial";
        font-size: 10px;    
    }
    
    #box {
        position: absolute;
        left: 0;
        top: 100px;
        height: 250px;
        width: 400px;
        border: 1px solid black;
        -webkit-animation-duration: 1s;
        -webkit-animation-timing-function: linear;
        -webkit-animation-name: "anim";
    }
    @-webkit-keyframes "anim" {
        from { font-size: 1em; }
        to   { font-size: 2em; }
    }
    </style>
    <script type="text/javascript" charset="utf-8">
    if (window.layoutTestController) {
        layoutTestController.dumpAsText();
        layoutTestController.waitUntilDone();
    }
    
    result = "PASS";
    const defaultTolerance = 1;
    
    function isEqual(actual, desired, tolerance)
    {
        if (tolerance == undefined || tolerance == 0)
            tolerance = defaultTolerance;
        var diff = Math.abs(actual - desired);
        return diff < tolerance;
    }
    
    function snapshot(expected)
    {
        if (result != "PASS")
            return;
            
        var fontSize = parseInt(window.getComputedStyle(document.getElementById('box')).fontSize);
        if (!isEqual(fontSize, expected)) {
            result = "FAIL(was:"+fontSize+", expected:"+expected+")";
        }
    }

    function start()
    {
        setTimeout("snapshot(13)", 333);
        
        window.setTimeout(function() {
            document.getElementById('result').innerHTML = result;
            if (window.layoutTestController)
                layoutTestController.notifyDone();
        }, 400);
    }
    
    document.addEventListener('webkitAnimationStart', start, false);
    
  </script>
</head>
<body>
This test performs an animation of the font-size property using 'em' units. It tests whether or not we are properly 
getting the default font-size.
<div id="box">
Here is some text. Here is some text. Here is some text. Here is some text. Here is some text. Here is some text. 
Here is some text. Here is some text. Here is some text. Here is some text. Here is some text. Here is some text. 
</div>
<div id="result">
</div>
</body>
</html>
