<html>
<head>
  <style type="text/css">
    body {
        margin: 0;
    }
    iframe {
        width: 320px;
        height: 200px;
        -webkit-transform: translateZ(0);
        border: none;
    }
    
    #indicator {
        position: absolute;
        top: 0px;
        left: 0px;
        height: 100px;
        width: 100px;
        background-color: red;
    }
  </style>
  <script type="text/javascript" charset="utf-8">
    
    if (window.testRunner)
        testRunner.waitUntilDone();

    function runTest()
    {
        var frameDocument = document.getElementById('frame').contentWindow.document;
        var subframeWindow = frameDocument.getElementById('subframe').contentWindow;
        subframeWindow.scrollTo(0, 100);

        if (window.testRunner)
            testRunner.notifyDone();
    }
    
    window.addEventListener('load', function() {
        setTimeout(runTest, 10);
    }, false);
    
  </script>
</head>
<body>

<!-- In pixel results, you should see a single green square with no red. -->
<div id="indicator"></div>
<iframe id="frame" src="resources/nested-subframe.html"></iframe>

</body>
</html>
