| <!DOCTYPE html> |
| <style> |
| /* Body is large enough to scroll but not enough to restore the scroll |
| position without clamping. */ |
| body { |
| height: 2000px; |
| width: 2000px; |
| } |
| </style> |
| |
| <div id='console'></div> |
| |
| <script src="../../resources/js-test.js"></script> |
| <script> |
| jsTestIsAsync = true |
| setPrintTestResultsLazily(); |
| description('Test ensures that frame scroll position is not prematurely ' + |
| 'clamped and restored before load event fires.'); |
| |
| // Forcing layout causes the frame to attempt to restore scroll position if |
| // possible even before page loading is complete. |
| forceLayout(); |
| debug('Scroll position should not be clamped and restored while frame is loading'); |
| shouldBe('document.scrollingElement.scrollLeft', '0'); |
| shouldBe('document.scrollingElement.scrollTop', '0'); |
| |
| onload = function() { |
| if (window.name == 'verification') { |
| shouldBe('document.scrollingElement.scrollLeft', '5000'); |
| shouldBe('document.scrollingElement.scrollTop', '5001'); |
| |
| window.name = ""; |
| setTimeout(function(){ window.scrollTo(0, 0); }, 0); |
| finishJSTest(); |
| } else { |
| window.scrollTo(5000, 5001); |
| shouldBe('document.scrollingElement.scrollLeft', '5000'); |
| shouldBe('document.scrollingElement.scrollTop', '5001'); |
| setTimeout(function(){ |
| window.name = "verification"; |
| window.location = "../../resources/back.html"; |
| }, 0); |
| } |
| } |
| |
| function forceLayout () { |
| document.body.scrollTop; |
| } |
| </script> |
| |
| <style> |
| body { |
| height: 9999px; |
| width: 9999px; |
| } |
| </style> |