| <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] --> |
| <html> |
| <head> |
| <script src="../../../resources/basic-gestures.js"></script> |
| <script src="../../../resources/ui-helper.js"></script> |
| <script> |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| const pageScale = 7.5; |
| |
| async function runTest() |
| { |
| if (!testRunner.runUIScript) |
| return; |
| |
| var output = ''; |
| |
| await UIHelper.setHardwareKeyboardAttached(false); |
| await UIHelper.activateElementAndWaitForInputSession(document.getElementById('editable')); |
| |
| await UIHelper.immediateZoomToScale(3.284); |
| await UIHelper.immediateScrollTo(390, 500); |
| |
| await Promise.all([UIHelper.ensureVisibleContentRectUpdate(), UIHelper.ensureStablePresentationUpdate()]); |
| |
| var originalXOffset = window.pageXOffset; |
| var originalYOffset = window.pageYOffset; |
| |
| await UIHelper.enterText(" "); |
| |
| var secondXOffset = window.pageXOffset; |
| var secondYOffset = window.pageYOffset; |
| |
| // Scrolling is not immedate, wait until the viewport has time to adjust |
| await Promise.all([UIHelper.ensureVisibleContentRectUpdate(), UIHelper.ensurePresentationUpdate()]); |
| await UIHelper.enterText("a"); |
| |
| var finalXOffset = window.pageXOffset; |
| var finalYOffset = window.pageYOffset; |
| |
| if ((originalXOffset != secondXOffset) || (originalYOffset != secondYOffset)) |
| output += 'Page has scrolled on the first input'; |
| if ((originalXOffset == secondXOffset) && (originalYOffset == secondYOffset)) |
| output += 'Page has not scrolled on the first input'; |
| output +='<br>'; |
| |
| if ((secondXOffset != finalXOffset) || (secondYOffset != finalYOffset)) |
| output += 'Page has scrolled on the second input.'; |
| if ((secondXOffset == finalXOffset) && (secondYOffset == finalYOffset)) |
| output += 'Page has not scrolled on the second input'; |
| output += '<br>'; |
| |
| document.getElementById('testArea').innerHTML = output; |
| await UIHelper.immediateZoomToScale(1.0); |
| await UIHelper.immediateScrollTo(0, 0); |
| testRunner.notifyDone(); |
| } |
| |
| window.addEventListener('load', runTest, false); |
| </script> |
| <style> |
| #testArea { |
| height: 2000px; |
| width: 300px; |
| background-color: silver; |
| font-family: monospace; |
| font-size: 18px; |
| } |
| #editable { |
| font-family: monospace; |
| font-size: 18px; |
| margin-top: 100px; |
| margin-left: 100px; |
| } |
| </style> |
| </head> |
| <body> |
| This test focuses a form, them zooms and scrolls the page. |
| Then text is entered in the form, and we check to make sure the page has scrolled |
| when needed to make the input visible again. On iPhone, the page should scroll on |
| the first text input so that the input element in is visible again, but should not |
| scroll more than once, as it should be visible after the first scroll. On iPad, the |
| input should not scroll at all, as the iPad is larger and should not need to scroll |
| for the input element to be visible. The test results should refelct these expectaitions. |
| <div id="testArea"><input id="editable" type="text" value="Test text"></input></div> |
| </body> |
| </html> |
| |
| |
| |
| |