blob: e050ce072861cd66199ec1bcbc8f2d6ef21d3c26 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<style>
dialog {
width: 50px;
}
</style>
<script src="../../resources/js-test.js"></script>
</head>
<body>
<a id="a" href="javascript:void(0)">Click me</a>
<button id="button">Click me</button>
<div id="div" style="background-color: blue; width: 50px; height: 50px">Click meeee</div>
<span id="span">Click me</span>
<div id="dialog-parent" style="width: 50px; height: 50px">
<span id="dialog-sibling">Click meeee</span>
<dialog></dialog>
</div>
<script>
function clickOn(element)
{
if (!window.eventSender)
return;
var absoluteTop = 0;
var absoluteLeft = 0;
for (var parentNode = element; parentNode; parentNode = parentNode.offsetParent) {
absoluteLeft += parentNode.offsetLeft;
absoluteTop += parentNode.offsetTop;
}
var x = absoluteLeft + element.offsetWidth / 2;
var y = absoluteTop + element.offsetHeight / 2;
eventSender.mouseMoveTo(x, y);
eventSender.mouseDown();
eventSender.mouseUp();
eventSender.mouseMoveTo(0, 0);
}
function eventFiredOnInertElement(e) {
e.target.style.background = 'red';
inertElementFiredOn = true;
}
description('Tests that inert inlines do not receive mouse events. ' +
'To test manually, click on all the "Click me"s. The test ' +
'fails if you see red.');
inertElements = ['a', 'button', 'div', 'span']
inertElements.forEach(function(id) {
element = document.getElementById(id);
element.addEventListener('click', eventFiredOnInertElement);
element.addEventListener('mousemove', eventFiredOnInertElement);
});
document.addEventListener('click', function(e) {
document.firedOn = true;
});
document.getElementById('dialog-parent').addEventListener('click', function(e) {
e.target.firedOn = true;
});
document.querySelector('dialog').showModal();
inertElements.forEach(function(id) {
expectedTarget = document;
if (id == 'dialog-sibling')
expectedTarget = document.getElementById('dialog-parent')
element = document.getElementById(id);
inertElementFiredOn = false;
expectedTarget.firedOn = false;
debug('clicking on ' + id);
clickOn(element);
shouldBeFalse('inertElementFiredOn');
shouldBeTrue('expectedTarget.firedOn');
});
</script>
</body>
</html>