<!doctype html>
<html>
    <head>
        <title>Viewport: Scroll in iframe - no page scale</title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width">
        <script src="/resources/testharness.js"></script>
        <script src="/resources/testharnessreport.js"></script>
        <script src="viewport_support.js"></script>
        <style>
          iframe {
            width: 200px;
            height: 300px;
            border: 0;
          }
        </style>
    </head>
    <body>
    <h1>Viewport: Scroll in iframe - no page scale</h1>
    <h4>Test Description: This test checks that window.visualViewport returns correct offset and scroll values without any pinch-zoom page scale applied.</h4>
    <iframe></iframe>
    <div id="complete-notice">
        <p>frames[0].window.visualViewport's offsetLeft and offsetTop is (<span id="scroll-offset-log"></span>).</p>
        <p>frames[0].window.visualViewport's pageLeft and pageTop is (<span id="scroll-page-log"></span>).</p>
    </div>
    <div id="log"></div>
    </body>
    <script>
        var iframe = frames[0].window;

        // Add overflow we can scroll.
        iframe.document.body.style.width = "2000px";
        iframe.document.body.style.height = "2000px";

        iframe.scrollTo(1000, 1200);


        test(function() {
              assert_equals(iframe.visualViewport.offsetLeft, 0);
            }, "offsetLeft must be 0.");
        test(function() {
              assert_equals(iframe.visualViewport.offsetTop, 0);
            }, "offsetTop must be 0.");
        test(function() {
              assert_equals(iframe.visualViewport.pageLeft, 1000);
            }, "pageLeft must reflect location of viewport in document.");
        test(function() {
              assert_equals(iframe.visualViewport.pageTop, 1200);
            }, "pageTop must reflect location of viewport in document.");

        document.getElementById("scroll-offset-log").innerText = iframe.visualViewport.offsetLeft+ ", " + iframe.visualViewport.offsetTop;
        document.getElementById("scroll-page-log").innerText = iframe.visualViewport.pageLeft + ", " + iframe.visualViewport.pageTop;
    </script>
</html>
