Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(153)

Side by Side Diff: LayoutTests/fast/dom/HTMLDialogElement/modal-dialog-blocks-mouse-events.html

Issue 138183003: Revert of Make ancestors of modal <dialog> inert (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 <head> 3 <head>
4 <style> 4 <style>
5 #inert-div { 5 #inert-div {
6 height: 100px; 6 height: 100px;
7 width: 100px; 7 width: 100px;
8 background: blue; 8 background: blue;
9 } 9 }
10 10
(...skipping 22 matching lines...) Expand all
33 description('Test for bug 110952. Ensure that mouse events are not ' + 33 description('Test for bug 110952. Ensure that mouse events are not ' +
34 'dispatched to an inert node. To test manually, move the mouse ' + 34 'dispatched to an inert node. To test manually, move the mouse ' +
35 'to the blue box, click, and then move the mouse outside. Then ' + 35 'to the blue box, click, and then move the mouse outside. Then ' +
36 'repeat for the red box. The test succeeds if both boxes turn ' + 36 'repeat for the red box. The test succeeds if both boxes turn ' +
37 'green.'); 37 'green.');
38 38
39 function clickOn(element) 39 function clickOn(element)
40 { 40 {
41 if (!window.eventSender) 41 if (!window.eventSender)
42 return; 42 return;
43 var rect = element.getBoundingClientRect(); 43
44 eventSender.mouseMoveTo(rect.left + rect.width / 2, rect.top + rect.height / 2); 44 var absoluteTop = 0;
45 var absoluteLeft = 0;
46 for (var parentNode = element; parentNode; parentNode = parentNode.offsetPar ent) {
47 absoluteLeft += parentNode.offsetLeft;
48 absoluteTop += parentNode.offsetTop;
49 }
50
51 var x = absoluteLeft + element.offsetWidth / 2;
52 var y = absoluteTop + element.offsetHeight / 2;
53 eventSender.mouseMoveTo(x, y);
45 eventSender.mouseDown(); 54 eventSender.mouseDown();
46 eventSender.mouseUp(); 55 eventSender.mouseUp();
47 eventSender.mouseMoveTo(0, 0); 56 eventSender.mouseMoveTo(0, 0);
48 } 57 }
49 58
50 if (window.testRunner) 59 if (window.testRunner)
51 testRunner.dumpAsText(); 60 testRunner.dumpAsText();
52 61
53 dialog.showModal(); 62 dialog.showModal();
54 63
55 inertDivHandledEvent = false;
56 inertDiv = document.getElementById('inert-div'); 64 inertDiv = document.getElementById('inert-div');
65 inertDiv.firedOn = false;
57 eventFiredOnInertNode = function(event) { 66 eventFiredOnInertNode = function(event) {
58 inertDivHandledEvent = true; 67 inertDiv.firedOn = true;
59 inertDiv.style.backgroundColor = 'red'; 68 inertDiv.style.backgroundColor = 'red';
60 }; 69 };
61 70
62 events = ['mousedown', 'mouseup', 'click', 'mousemove', 'mouseover', 'mouseout' ]; 71 events = ['mousedown', 'mouseup', 'click', 'mousemove', 'mouseover', 'mouseout' ];
63 dialogDiv = document.getElementById('dialog-div'); 72 dialogDiv = document.getElementById('dialog-div');
64 handledEvents = {}; 73 dialogDiv.firedOnEvents = {};
65 handledEvents.dialogDiv = {};
66 eventFiredOnDialog = function(event) { 74 eventFiredOnDialog = function(event) {
67 handledEvents.dialogDiv[event.type] = true; 75 dialogDiv.firedOnEvents[event.type] = true;
68 if (Object.keys(handledEvents.dialogDiv).length == events.length) 76 if (Object.keys(dialogDiv.firedOnEvents).length == events.length)
69 dialogDiv.style.backgroundColor = 'green'; 77 dialogDiv.style.backgroundColor = 'green';
70 }; 78 };
71 79
72 handledEvents.document = {}; 80 body = document.body;
73 expectedEventCountForDocument = events.length - 1; // document won't get 'mouseo ut' 81 body.firedOnEvents = {};
74 eventFiredOnDocument = function(event) { 82 eventFiredOnBody = function(event) {
75 handledEvents.document[event.type] = true; 83 body.firedOnEvents[event.type] = true;
76 if (Object.keys(handledEvents.document).length == document.expectedEventCoun t && !inertDivHandledEvent) 84 if (Object.keys(body.firedOnEvents).length == events.length && !inertDiv.fir edOn)
77 inertDiv.style.backgroundColor = 'green'; 85 inertDiv.style.backgroundColor = 'green';
78 }; 86 };
79 87
80 for (var i = 0; i < events.length; ++i) { 88 for (var i = 0; i < events.length; ++i) {
81 inertDiv.addEventListener(events[i], eventFiredOnInertNode); 89 inertDiv.addEventListener(events[i], eventFiredOnInertNode);
82 dialogDiv.addEventListener(events[i], eventFiredOnDialog); 90 dialogDiv.addEventListener(events[i], eventFiredOnDialog);
83 document.addEventListener(events[i], eventFiredOnDocument); 91 document.body.addEventListener(events[i], eventFiredOnBody);
84 } 92 }
85 93
86 debug('Clicking on inert box'); 94 debug('Clicking on inert box');
87 clickOn(inertDiv); 95 clickOn(inertDiv);
88 shouldBeFalse('inertDivHandledEvent'); 96 shouldBeFalse('inertDiv.firedOn');
89 shouldBe('Object.keys(handledEvents.document).length', 'expectedEventCountForDoc ument'); 97 shouldBe('Object.keys(body.firedOnEvents).length', 'events.length');
90 98
91 debug('Clicking on non-inert box'); 99 debug('Clicking on non-inert box');
92 clickOn(dialogDiv); 100 clickOn(dialogDiv);
93 shouldBeFalse('inertDivHandledEvent'); 101 shouldBeFalse('inertDiv.firedOn');
94 shouldBe('Object.keys(handledEvents.dialogDiv).length', 'events.length'); 102 shouldBe('Object.keys(dialogDiv.firedOnEvents).length', 'events.length');
95 </script> 103 </script>
96 </body> 104 </body>
97 </html> 105 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698