blob: 48106492a0a31e007c193762c879d25c89604b07 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
<script src="../../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
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 finishTest()
{
finishJSTest();
testRunner.notifyDone();
}
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.");
finishTest();
}
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.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()
{
if (window.eventSender) {
jsTestIsAsync = true;
testRunner.waitUntilDone();
eventSender.monitorWheelEvents();
setTimeout(scrollTest, 0);
} else {
var messageLocation = document.getElementById('parent');
var message = document.createElement('div');
message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
+ "inside the IFrame, then use the mouse wheel or a two-finger swipe to scroll the IFrame to the bottom (and beyond).<br/>"
+ "<br/><br/>"
+ "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
messageLocation.appendChild(message);
}
}
</script>
<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" style="height: 2100px; width:410px; overflow:hidden; scrolling: no" onload="setupTopLevel();">
</iframe>
</div>
</div>
<div id="console"></div>
<script>
description("Tests that iframe does scroll when inner iframe is NOT scrollable.");
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>