<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
<meta name="viewport" content="width=device-width, user-scalable=no">
<script id="ui-script" type="text/plain">
    (function() {
        uiController.didEndZoomingCallback = function() {
            uiController.uiScriptComplete(uiController.zoomScale);
        };
        
        uiController.singleTapAtPoint(10, 10, function() {});
    })();
</script></head>

<body onload="runTest();">
<input type="text" id="textfield">
<p id="result">This test has to run in iOS WebKitTestRunner.</p>

<p id="description"></p>
<div id="console"></div>

<script>
    description("This tests that even though force user scalable = true, we won't scale if a text field gets focus and the page has user-scalable=no");

    if (window.testRunner) {
        window.jsTestIsAsync = true;
        testRunner.setIgnoresViewportScaleLimits(true);
    }

    function runTest()
    {
        if (testRunner.runUIScript) {
            var uiScript = document.getElementById('ui-script').text;
            testRunner.runUIScript(document.getElementById('ui-script').text, function(result) {
                debug("Zoom scale is: " + result);
                finishJSTest();
            });
        }
    }
</script>

<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
