blob: 0fd876819977837723edda5f0f5ae9cf398f1bf1 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
<script>
jsTestIsAsync = true;
var divTarget;
var pageScrollPositionBefore;
var divScrollPositionBefore;
function locationInWindowCoordinates(element)
{
var position = {};
position.x = element.offsetLeft;
position.y = element.offsetTop;
while (element.offsetParent) {
position.x = position.x + element.offsetParent.offsetLeft;
position.y = position.y + element.offsetParent.offsetTop;
if (element == document.getElementsByTagName("body")[0])
break;
element = element.offsetParent;
}
return position;
}
function checkForScroll()
{
var pageScrollPositionAfter = document.scrollingElement.scrollTop;
var divScrollPositionAfter = divTarget.scrollTop;
if (divScrollPositionBefore != divScrollPositionAfter)
testPassed("div did scroll.");
else
testFailed("div did NOT scroll.");
if (pageScrollPositionBefore == pageScrollPositionAfter)
testPassed("Page did NOT scroll.");
else
testFailed("Page DID scroll.");
finishJSTest();
}
function scrollTest()
{
pageScrollPositionBefore = document.scrollingElement.scrollTop;
divTarget = document.getElementById('scrollable_div');
var windowPosition = locationInWindowCoordinates(divTarget);
var startPosX = windowPosition.x + 0.5 * divTarget.clientWidth;
var startPosY = windowPosition.y + 0.5 * divTarget.clientHeight;
divScrollPositionBefore = divTarget.scrollTop;
eventSender.monitorWheelEvents();
eventSender.mouseMoveTo(startPosX, startPosY);
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
eventSender.callAfterScrollingCompletes(checkForScroll);
}
function setupTopLevel()
{
description("Tests that iframe does scroll when inner iframe is NOT scrollable.");
if (window.eventSender) {
setTimeout(scrollTest, 0);
return;
}
var messageLocation = document.getElementById('parent');
var message = document.createElement('div');
message.innerHTML = "<p>To manually run this test, place the mouse pointer "
+ "inside the iframe, then use the mouse wheel or a two-finger swipe to scroll the iframe to the bottom (and beyond).</p>"
+ "<p>The test passes if you scroll to the bottom of the iframe but the main page does not scroll.</p>";
messageLocation.appendChild(message);
finishJSTest();
}
</script>
</head>
<body>
<div id="parent" style="height: 2000px">
<div id="source" style="height: 20px">
Put mouse inside the iframe (below) and flick downwards
</div>
<div id="scrollable_div" style="height: 400px; width: 430px; overflow-y:auto; padding: 0;">
<iframe id="non_scrollable_iframe" src="resources/background.html" scrolling="no" style="height: 2100px; width:410px;" onload="setupTopLevel();">
</iframe>
</div>
</div>
<div id="console"></div>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>