blob: 39e910d6889af67e5ac2f2d94b6f83482bd55781 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<style>
body {
height: 1200px;
}
.post {
width: 500px;
height: 600px;
overflow: auto;
border: 1px solid black;
}
.content {
width: 1000px;
height: 100%;
background-image: repeating-linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2) 100px), repeating-linear-gradient(to right, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2) 100px);
}
</style>
<script src="../../../resources/js-test-pre.js"></script>
<script>
jsTestIsAsync = true;
var divTarget;
var pageScrollPositionBefore;
var divScrollPositionBefore;
function checkForScroll()
{
var pageScrollPositionAfter = document.scrollingElement.scrollTop;
var divScrollPositionAfter = divTarget.scrollLeft;
if (pageScrollPositionBefore != pageScrollPositionAfter)
testPassed("Page received wheel events.");
else
testFailed("Page did not receive wheel events.");
finishJSTest();
}
function scrollTest()
{
pageScrollPositionBefore = document.scrollingElement.scrollTop;
divTarget = document.getElementById('parent');
divScrollPositionBefore = divTarget.scrollLeft;
var startPosX = divTarget.offsetLeft + 20;
var startPosY = divTarget.offsetTop + (divTarget.clientHeight / 2); // One wheel turn before end.
eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 1, 'none', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 1, 'none', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none');
setTimeout(checkForScroll, 100);
}
function setupTopLevel()
{
description("Tests that scroll events of type 'none' work properly.");
if (window.eventSender) {
setTimeout(scrollTest, 0);
return;
}
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 textured region. (1) Use the mouse wheel to scroll vertically, then (2) hold the shift key while<br/>"
+ "moving the mouse wheel to scroll horizontally, then (3) release the shift key and attempt to scroll vertically.<br/><br/>"
+ "The final set of vertical moves should modify the parent page scroll position.</p>";
messageLocation.appendChild(message);
finishJSTest();
}
window.addEventListener('load', () => {
setupTopLevel();
}, false);
</script>
</head>
<body>
<div id="parent" class="post">
<div id="target" class="content">
Test region.
</div>
</div>
</div>
<div id="console"></div>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>