| Index: LayoutTests/fast/dom/HTMLDialogElement/modal-dialog-blocks-mouse-events.html
|
| diff --git a/LayoutTests/fast/dom/HTMLDialogElement/modal-dialog-blocks-mouse-events.html b/LayoutTests/fast/dom/HTMLDialogElement/modal-dialog-blocks-mouse-events.html
|
| index a725e10e672e50807a169b4c4430a44ebfea2cd5..2d1ec448391803cd3861469ab821cbfb315eae3f 100644
|
| --- a/LayoutTests/fast/dom/HTMLDialogElement/modal-dialog-blocks-mouse-events.html
|
| +++ b/LayoutTests/fast/dom/HTMLDialogElement/modal-dialog-blocks-mouse-events.html
|
| @@ -40,8 +40,17 @@
|
| {
|
| if (!window.eventSender)
|
| return;
|
| - var rect = element.getBoundingClientRect();
|
| - eventSender.mouseMoveTo(rect.left + rect.width / 2, rect.top + rect.height / 2);
|
| +
|
| + 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);
|
| @@ -52,46 +61,45 @@
|
|
|
| dialog.showModal();
|
|
|
| -inertDivHandledEvent = false;
|
| inertDiv = document.getElementById('inert-div');
|
| +inertDiv.firedOn = false;
|
| eventFiredOnInertNode = function(event) {
|
| - inertDivHandledEvent = true;
|
| + inertDiv.firedOn = true;
|
| inertDiv.style.backgroundColor = 'red';
|
| };
|
|
|
| events = ['mousedown', 'mouseup', 'click', 'mousemove', 'mouseover', 'mouseout'];
|
| dialogDiv = document.getElementById('dialog-div');
|
| -handledEvents = {};
|
| -handledEvents.dialogDiv = {};
|
| +dialogDiv.firedOnEvents = {};
|
| eventFiredOnDialog = function(event) {
|
| - handledEvents.dialogDiv[event.type] = true;
|
| - if (Object.keys(handledEvents.dialogDiv).length == events.length)
|
| + dialogDiv.firedOnEvents[event.type] = true;
|
| + if (Object.keys(dialogDiv.firedOnEvents).length == events.length)
|
| dialogDiv.style.backgroundColor = 'green';
|
| };
|
|
|
| -handledEvents.document = {};
|
| -expectedEventCountForDocument = events.length - 1; // document won't get 'mouseout'
|
| -eventFiredOnDocument = function(event) {
|
| - handledEvents.document[event.type] = true;
|
| - if (Object.keys(handledEvents.document).length == document.expectedEventCount && !inertDivHandledEvent)
|
| +body = document.body;
|
| +body.firedOnEvents = {};
|
| +eventFiredOnBody = function(event) {
|
| + body.firedOnEvents[event.type] = true;
|
| + if (Object.keys(body.firedOnEvents).length == events.length && !inertDiv.firedOn)
|
| inertDiv.style.backgroundColor = 'green';
|
| };
|
|
|
| for (var i = 0; i < events.length; ++i) {
|
| inertDiv.addEventListener(events[i], eventFiredOnInertNode);
|
| dialogDiv.addEventListener(events[i], eventFiredOnDialog);
|
| - document.addEventListener(events[i], eventFiredOnDocument);
|
| + document.body.addEventListener(events[i], eventFiredOnBody);
|
| }
|
|
|
| debug('Clicking on inert box');
|
| clickOn(inertDiv);
|
| -shouldBeFalse('inertDivHandledEvent');
|
| -shouldBe('Object.keys(handledEvents.document).length', 'expectedEventCountForDocument');
|
| +shouldBeFalse('inertDiv.firedOn');
|
| +shouldBe('Object.keys(body.firedOnEvents).length', 'events.length');
|
|
|
| debug('Clicking on non-inert box');
|
| clickOn(dialogDiv);
|
| -shouldBeFalse('inertDivHandledEvent');
|
| -shouldBe('Object.keys(handledEvents.dialogDiv).length', 'events.length');
|
| +shouldBeFalse('inertDiv.firedOn');
|
| +shouldBe('Object.keys(dialogDiv.firedOnEvents).length', 'events.length');
|
| </script>
|
| </body>
|
| </html>
|
|
|