<!DOCTYPE html>
<html style="width: 1600px; height: 1200px">
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body onload="runTest()">
<img id="testImage" src="resources/animated.gif" style="-webkit-transform: translatez(0);">
<script>
description("Make sure directly-composited animated GIFs properly get suspended / resumed based on visibility inside viewport.");
jsTestIsAsync = true;

var testImage = document.getElementById("testImage");
var frameIndexImageWasPausedAt = 0;

function isImageAnimated()
{
  return !internals.hasPausedImageAnimations(testImage);
}

function checkFrameIndexAndFinish()
{
  // Actually make sure that the frame index changes.
  shouldBecomeDifferent("internals.imageFrameIndex(testImage)", "frameIndexImageWasPausedAt", finishJSTest);
}

function scrollUp()
{
  frameIndexImageWasPausedAt = internals.imageFrameIndex(testImage);
  
  debug("Animation was paused, scroll up so that the image is visible again");
  window.scrollBy(0, -600);

  shouldBecomeEqual("isImageAnimated()", "true", checkFrameIndexAndFinish);
}

function scrollDown()
{
  debug("Scroll down so that the image is no longer visible");
  window.scrollBy(0, 600);
  shouldBecomeEqual("isImageAnimated()", "false", scrollUp);
}

function runTest()
{
  if (!window.internals)
    return;

  shouldBecomeEqual("isImageAnimated()", "true", scrollDown);
}
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
