| <!DOCTYPE html> |
| <title>DataTransfer.prototype.setDragImage type checking of image argument</title> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <div id="dragger" draggable="true">Drag to run test</div> |
| <script> |
| async_test(function () { |
| var dragger = document.getElementById("dragger"); |
| dragger.addEventListener("dragstart", this.step_func_done(function(event) { |
| assert_throws(new TypeError(), function() { |
| event.dataTransfer.setDragImage(null, 0, 0); |
| }, "throw if image argument is null"); |
| assert_throws(new TypeError(), function() { |
| event.dataTransfer.setDragImage(dragger.firstChild, 0, 0); |
| }, "throw if image argument is a Text node"); |
| // A generic non-HTML/SVG Element should not throw. |
| event.dataTransfer.setDragImage(document.createElementNS(null, "x"), 0, 0); |
| // Remove dragger to hide the manual instructions in expectations. |
| dragger.remove(); |
| })); |
| |
| if (!window.eventSender) |
| return; |
| |
| var x = dragger.offsetLeft + dragger.offsetWidth / 2; |
| var y = dragger.offsetTop + dragger.offsetHeight / 2; |
| |
| eventSender.mouseMoveTo(x, y); |
| eventSender.mouseDown(); |
| eventSender.leapForward(100); |
| eventSender.mouseMoveTo(x + 100, y + 100); |
| eventSender.mouseUp(); |
| }); |
| </script> |