blob: 10730e7960d717f74be7bd33d3bec69f7896b874 [file] [log] [blame]
<head>
<script src="../resources/js-test.js"></script>
<style>
body {
/* Hide the horizontal-scrollbar so that clicking right at the
bottom of the vertical scrollbar will trigger a scroll */
overflow-x: hidden;
}
#container {
/* The plugin is guaranteed not to be in the margin. */
margin-left: 10px;
}
</style>
</head>
<body>
<div id="container"></div>
<pre id="console"></pre>
</body>
<script>
description('This tests whether scrolling still works correctly when an overlay scrollbar is over a plugin. The plugin should still receive mouse down/up events when clicking an overlay scrollbar. Scrolling should still work correctly too. However mouse capture should not be started on the plugin as this would interfere with events going to the scrollbar.');
window.jsTestIsAsync = true;
var startLogging = false;
var eventHistory = [];
function runTest() {
// Mouse down on the scrollbar which is over the plugin.
eventSender.mouseMoveTo(window.innerWidth - 1,
window.innerHeight - 1);
eventSender.mouseDown();
// Move outside the plugin, it shouldn't receive any events
// because there shouldn't be any mouse capture.
eventSender.mouseMoveTo(5, 5);
// A mouse up will be received because when dragging off a
// scrollbar and releasing, it dispatches an event to the last
// element under the mouse.
eventSender.mouseUp();
shouldBe('eventHistory.length', '2');
shouldBe('eventHistory[0]', '"plugin.mousedown"');
shouldBe('eventHistory[1]', '"plugin.mouseup"');
shouldBecomeEqual('window.scrollY > 0', 'true', finishJSTest);
}
window.onload = function() {
if (!window.eventSender || !window.internals) {
finishJSTest();
return;
}
internals.settings.setOverlayScrollbarsEnabled(true);
var d = document.getElementById('container');
var plugin = document.createElement('object');
plugin.type = 'application/x-blink-test-plugin';
plugin.width = window.innerWidth * 2;
plugin.height = window.innerHeight * 2;
plugin.addEventListener('mousedown', function(e) {
startLogging = true;
eventHistory.push('plugin.mousedown');
});
plugin.addEventListener('mouseup', function(e) {
if (startLogging)
eventHistory.push('plugin.mouseup');
});
plugin.addEventListener('mousemove', function(e) {
if (startLogging)
eventHistory.push('plugin.mousemove');
});
d.appendChild(plugin);
runTest();
}
</script>