<!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 -webkit-animation-play-state interacting with suspendAnimation</title>
  <style type="text/css" media="screen">
    #box1 {
      height: 100px;
      width: 100px;
      background-color: blue;
      margin: 0;
      -webkit-animation-duration: 2s;
      -webkit-animation-timing-function: linear;
      -webkit-animation-name: "move1";
      -webkit-animation-play-state: running;
    }
    @-webkit-keyframes "move1" {
        from { -webkit-transform: translateX(0); }
        to   { -webkit-transform: translateX(400px); }
    }
    #box2 {
      position:absolute;
      top: 260px;
      height: 100px;
      width: 100px;
      background-color: red;
      -webkit-animation-duration: 2s;
      -webkit-animation-timing-function: linear;
      -webkit-animation-name: "move2";
    }
    @-webkit-keyframes "move2" {
        from { left: 0; }
        to   { left: 400px; }
    }
  </style>
  <script src="resources/animation-test-helpers.js" type="text/javascript" charset="utf-8"></script>
  <script type="text/javascript" charset="utf-8">
    
    const expectedValues = [
      // [animation-name, time, element-id, property, expected-value, tolerance]
      ["move1", 0.55, "box1", "webkitTransform", [1,0,0,1,100,0], 20],
      ["move1", 0.65, "box1", "webkitTransform", [1,0,0,1,100,0], 20],
      ["move1", 0.75, "box1", "webkitTransform", [1,0,0,1,100,0], 20],
      ["move1", 1,    "box1", "webkitTransform", [1,0,0,1,140,0], 20],
      ["move2", 0.55, "box2", "left", 100, 20],
      ["move2", 0.65, "box2", "left", 100, 20],
      ["move2", 0.75, "box2", "left", 100, 20],
      ["move2", 1,    "box2", "left", 140, 20],
    ];
    
    function pause()
    {
        document.getElementById("box1").style.webkitAnimationPlayState = "paused";
        document.getElementById("box2").style.webkitAnimationPlayState = "paused";
    }

    function suspend()
    {
        if (window.internals)
            internals.suspendAnimations();
    }

    function unpause()
    {
        document.getElementById("box1").style.webkitAnimationPlayState = "running";
        document.getElementById("box2").style.webkitAnimationPlayState = "running";
    }

    function resume()
    {
        if (window.internals)
            internals.resumeAnimations();
    }

    function setTimers()
    {
        setTimeout(pause, 500);
        setTimeout(suspend, 600);
        setTimeout(unpause, 700);
        setTimeout(resume, 800);
    }
    
    runAnimationTest(expectedValues, setTimers, null /* event */, true /* disablePauseAnimationAPI */);
    
  </script>
</head>
<body>
<p>
This test makes sure a play-state change in an animation during suspend does not resume the animation.
<div id="box1">
</div>
<div id="box2">
</div>
<div id="result">
</div>
</body>
</html>
