| <!DOCTYPE html> |
| <html> |
| <body> |
| <style> |
| #container > div { width: 100px; height: 50px; margin: 0px; } |
| </style> |
| <p id="description"></p> |
| <div id="container"> |
| <div draggable="true" id="source" style="background: #9cf">Drag this</div> |
| <div id="passover" style="background: #ff9">Drag over here</div> |
| <div id="destination" style="background: #fc9">And drop here</div> |
| </div> |
| <div id="console"></div> |
| <script src="../../resources/js-test-pre.js"></script> |
| <script> |
| |
| var jsTestIsAsync = true; |
| |
| source.addEventListener("dragstart", (event) => { |
| ev = event; |
| shouldBe("ev.__proto__", "DragEvent.prototype"); |
| event.dataTransfer.effectAllowed = 'copy'; |
| event.dataTransfer.setData('text', 'hello, world'); |
| dataTransferMap.clear(); |
| testUniquenessAndAdd(event.dataTransfer, 'source', 'dragstart'); |
| }); |
| |
| const dataTransferMap = new Map; |
| function testUniquenessAndAdd(dataTransfer, label, eventType) { |
| const existingEntry = dataTransferMap.get(dataTransfer); |
| if (existingEntry) { |
| testFailed(`${eventType} for ${label} had the same dataTransfer object as ${existingEntry.eventType} for ${existingEntry.label}`); |
| return; |
| } |
| testPassed(`${eventType} for ${label} had an unique dataTransfer object`); |
| dataTransferMap.set(dataTransfer, {label, eventType}); |
| } |
| |
| passover.addEventListener("dragenter", (event) => { |
| ev = event; |
| shouldBe("ev.__proto__", "DragEvent.prototype"); |
| testUniquenessAndAdd(event.dataTransfer, 'passover', 'dragenter'); |
| }); |
| passover.addEventListener("dragleave", (event) => { |
| ev = event; |
| shouldBe("ev.__proto__", "DragEvent.prototype"); |
| testUniquenessAndAdd(event.dataTransfer, 'passover', 'dragleave'); |
| }); |
| destination.addEventListener("dragenter", (event) => { |
| ev = event; |
| shouldBe("ev.__proto__", "DragEvent.prototype"); |
| testUniquenessAndAdd(event.dataTransfer, 'destination', 'dragenter'); |
| }); |
| destination.addEventListener("dragleave", (event) => { |
| ev = event; |
| shouldBe("ev.__proto__", "DragEvent.prototype"); |
| testUniquenessAndAdd(event.dataTransfer, 'destination', 'dragleave'); |
| }); |
| destination.addEventListener("dragover", (event) => { |
| ev = event; |
| shouldBe("ev.__proto__", "DragEvent.prototype"); |
| testUniquenessAndAdd(event.dataTransfer, 'destination', 'dragover'); |
| event.preventDefault(); |
| }); |
| destination.addEventListener("drop", (event) => { |
| ev = event; |
| shouldBe("ev.__proto__", "DragEvent.prototype"); |
| testUniquenessAndAdd(event.dataTransfer, 'destination', 'drop'); |
| finishJSTest(); |
| }); |
| |
| if (window.eventSender) { |
| eventSender.mouseMoveTo(source.offsetLeft + 10, source.offsetTop + 10); |
| eventSender.mouseDown(); |
| eventSender.leapForward(500); |
| eventSender.mouseMoveTo(passover.offsetLeft + 10, passover.offsetTop + 10); |
| eventSender.leapForward(100); |
| eventSender.mouseMoveTo(destination.offsetLeft + 10, destination.offsetTop + 10); |
| eventSender.mouseUp(); |
| document.getElementById('container').remove(); |
| } |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |