| <style> |
| .box { width: 100px; height: 90px; margin-bottom: 10px; background-color: lightblue; } |
| .drag-element { -webkit-user-drag: element; } |
| .drag-none { -webkit-user-drag: none; } |
| a { display: block; width: 80px; height: 80px; background-color: yellow; font-family: ahem; font-size: 25px; } |
| a span { color: orange; } |
| a img { vertical-align: bottom; } |
| </style> |
| <div id="container" style="position: relative;"> |
| <div class="box" expect="IMG nil"> |
| <img src="resources/greenbox.png"> |
| </div> |
| |
| <div class="box" expect="nil nil"> |
| <img class="drag-none" src="resources/greenbox.png"> |
| </div> |
| |
| <div class="box drag-element" expect="DIV DIV"> |
| <img class="drag-none" src="resources/greenbox.png"> |
| </div> |
| |
| <div class="box" expect="IMG A A A nil"> |
| <a href="#"><img src="resources/greenbox.png">x<br><span>y</span></a> |
| </div> |
| |
| <div class="box" expect="IMG A A A nil"> |
| <a href="#" class="drag-element"><img src="resources/greenbox.png">x<br><span>y</span></a> |
| </div> |
| |
| <div class="box" expect="IMG nil nil nil nil"> |
| <a href="#" class="drag-none"><img src="resources/greenbox.png">x<br><span>y</span></a> |
| </div> |
| |
| <div class="box" expect="A A A A nil"> |
| <a href="#"><img class="drag-none" src="resources/greenbox.png">x<br><span>y</span></a> |
| </div> |
| |
| <div class="box" expect="A A A A nil"> |
| <a href="#" class="drag-element"><img class="drag-none" src="resources/greenbox.png">x<br><span>y</span></a> |
| </div> |
| |
| <div class="box drag-element" expect="IMG DIV DIV DIV DIV"> |
| <a href="#" class="drag-none"><img src="resources/greenbox.png">x<br><span>y</span></a> |
| </div> |
| |
| <div class="box drag-element" expect="A A A A DIV"> |
| <a href="#"><img class="drag-none" src="resources/greenbox.png">x<br><span>y</span></a> |
| </div> |
| |
| <div class="box drag-element" expect="A A A A DIV"> |
| <a href="#" class="drag-element"><img class="drag-none" src="resources/greenbox.png">x<br><span>y</span></a> |
| </div> |
| </div> |
| <pre id="console"></pre> |
| <script> |
| function log(message) |
| { |
| document.getElementById("console").appendChild(document.createTextNode(message + "\n")); |
| } |
| |
| onload = window.testRunner ? function() |
| { |
| testRunner.dumpAsText(); |
| |
| var container = document.getElementById("container"); |
| var y = container.getBoundingClientRect().top; |
| for (var i = 0; i < container.childElementCount; ++i) { |
| var listener = function(event) |
| { |
| result = event.target.nodeType === Node.TEXT_NODE ? "text" : event.target.tagName; |
| }; |
| |
| container.addEventListener("dragstart", listener); |
| |
| var child = container.children[i]; |
| log("Test #" + i); |
| |
| var expectedResults = child.getAttribute("expect").split(" "); |
| var result; |
| |
| function test(h, v) |
| { |
| if (expectedResults.length) { |
| getSelection().empty(); |
| result = "nil"; |
| eventSender.mouseMoveTo(h, y - scrollY + v); |
| eventSender.mouseDown(); |
| eventSender.mouseMoveTo(220, y - scrollY + v); |
| eventSender.mouseUp(); |
| var expected = expectedResults.shift(); |
| log(result === expected ? "PASS" : "FAIL: expected " + expected + " but got " + result); |
| } |
| } |
| |
| test(20, 20); |
| test(45, 20); |
| test(20, 45); |
| test(45, 45); |
| test(95, 85); |
| |
| container.removeEventListener("dragstart", listener); |
| y += 100; |
| scrollBy(0, 100); |
| } |
| } : undefined; |
| </script> |