6 function expected(text) {
7 return text.substr(text.indexOf(':') + 2);
12 function logger(event) {
13 var console = document.getElementById('console');
15 if (i < console.childNodes.length) {
18 listItem = console.childNodes[i++];
19 text = listItem.innerText;
20 } while (text.indexOf('OPTIONAL:') >= 0 && expected(text) != event.type && i < console.childNodes.length);
24 var listItem = document.createElement('li');
25 listItem.appendChild(document.createTextNode('FAIL: ' + event.type + ' but didn\'t expect to fire'));
26 console.appendChild(listItem);
27 i = console.childNodes.length;
31 if (expected(listItem.innerText) == event.type)
32 listItem.innerHTML = 'PASS: ' + event.type;
34 listItem.innerHTML = 'FAIL: ' + event.type + ' but expected ' + expected(listItem.innerText);
39 <body onselectionchange="logger(event)">
40 <p>To test this manually, click on "hello", and extend selection to right by pressing right arrow keys with shift twice.
41 Then click again on "world" and extend selection twice the same way.</p>
42 <div id="hello" contenteditable>hello</div>
43 <div id="world" contenteditable>world</div>
45 ><li>EXPECT: mousedown</li
46 ><li>EXPECT: selectionchange</li
47 ><li>EXPECT: mouseup</li
48 ><li>EXPECT: click</li
49 ><li>EXPECT: keydown</li
50 ><li>EXPECT: keyup</li
51 ><li>EXPECT: selectionchange</li
52 ><li>EXPECT: keydown</li
53 ><li>EXPECT: keyup</li
54 ><li>EXPECT: selectionchange</li
55 ><li>EXPECT: mousedown</li
56 ><li>EXPECT: selectionchange</li
57 ><li>OPTIONAL: selectionchange</li
58 ><li>EXPECT: mouseup</li
59 ><li>EXPECT: click</li
60 ><li>EXPECT: keydown</li
61 ><li>EXPECT: keyup</li
62 ><li>EXPECT: selectionchange</li
63 ><li>EXPECT: keydown</li
64 ><li>EXPECT: keyup</li
65 ><li>EXPECT: selectionchange</li
69 function attachLogger(element, name) {
70 element.addEventListener('mousedown', logger, false);
71 element.addEventListener('mouseup', logger, false);
72 element.addEventListener('click', logger, false);
73 element.addEventListener('keydown', logger, false);
74 element.addEventListener('keyup', logger, false);
77 var helloDiv = document.getElementById('hello');
78 var worldDiv = document.getElementById('world');
80 attachLogger(helloDiv);
81 attachLogger(worldDiv);
83 if (window.layoutTestController && window.eventSender) {
84 layoutTestController.dumpAsText();
85 layoutTestController.waitUntilDone();
88 function () { eventSender.mouseMoveTo(helloDiv.offsetLeft + 10, helloDiv.offsetTop + 2); },
89 function () { eventSender.mouseDown(); },
90 function () { eventSender.mouseUp(); },
91 function () { eventSender.keyDown("leftArrow", ['shiftKey']); },
92 function () { eventSender.keyDown("rightArrow", ['shiftKey']); },
93 function () { eventSender.mouseMoveTo(worldDiv.offsetLeft + 10, worldDiv.offsetTop + 2); },
94 function () { eventSender.mouseDown(); },
95 function () { eventSender.mouseUp(); },
96 function () { eventSender.keyDown("leftArrow", ['shiftKey']); },
97 function () { eventSender.keyDown("rightArrow", ['shiftKey']); },
102 // Need to wait one more iteration for events to be processed
103 if (j >= events.length) {
104 layoutTestController.notifyDone();
109 setTimeout(timer, 0);