| <!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] --> |
| |
| <html> |
| <head> |
| <meta name="viewport" content="initial-scale=0.5"> |
| <style> |
| button { |
| display: block; |
| } |
| iframe { |
| margin-top: 800px; |
| } |
| </style> |
| |
| <script src="resources/zooming-test-utils.js"></script> |
| <script> |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| if (window.internals) |
| internals.settings.setFrameFlattening("FullyEnabled") |
| |
| function getTypingUIScript() |
| { |
| return ` |
| (function() { |
| uiController.typeCharacterUsingHardwareKeyboard('delete', function() { |
| uiController.uiScriptComplete(); |
| }); |
| })();` |
| } |
| |
| function buttonClicked() |
| { |
| document.getElementById('frame').contentDocument.getElementById('input').focus(); |
| } |
| |
| function pageDidScroll() |
| { |
| document.getElementById('result').textContent = 'FAIL: page scrolled to ' + document.scrollingElement.scrollTop; |
| } |
| |
| function testTyping() |
| { |
| window.addEventListener('scroll', pageDidScroll, false); |
| |
| var uiScript = getTypingUIScript(); |
| testRunner.runUIScript(uiScript, function() { |
| // Wait for any scroll to happen. |
| window.setTimeout(function() { |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| }, 100); |
| }); |
| } |
| |
| function doTest() |
| { |
| // Get the text field focused via a user event so we zoom to it. |
| var point = getPointInsideElement(document.getElementById('target'), 10, 10); |
| |
| var uiScript = zoomAfterSingleTapUIScript(point.x, point.y, true); |
| testRunner.runUIScript(uiScript, function(result) { |
| window.setTimeout(function() { |
| testTyping(); |
| }, 0); |
| }); |
| } |
| |
| window.addEventListener('load', doTest, false); |
| </script> |
| </head> |
| <body> |
| |
| <p>Tests that typing into a text input in an iframe should not scroll.</p> |
| <div id="result"> |
| PASS: page did not scroll. |
| </div> |
| |
| <button id="target" onclick="buttonClicked()">Click to focus input</button> |
| |
| <iframe id="frame" srcdoc="<style>input { margin: 400px 20px; }</style> |
| <input id='input' type='text' value='aaa'> |
| "></iframe> |
| |
| </body> |
| </html> |