<!DOCTYPE html>
<html>
<head>
    <script src="media-file.js"></script>
    <script type="text/javascript">
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }

        function dumpLayers()
        {
            if (window.testRunner) {
                document.getElementById('outText').textContent = window.internals.layerTreeAsText(document);
                testRunner.notifyDone();
            }
        }

        function rotate() {
            videoRotate.play();
            videoRotate.style.webkitTransform = "rotateY(180deg)";
            dumpLayers();
        }

        function start()
        {
            videoRotate.addEventListener('canplaythrough', rotate, false);
            videoRotate.src = findMediaFile("video", "content/test");
        }

        window.addEventListener('load', start, false);
</script>
</head>
<body>
    <pre id="outText"></pre>
    <video id="videoRotate" width="480" height="270"></video>
</body>
</html>
