dom/events/test/test_bug508479.html

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

michael@0 1 <html>
michael@0 2 <head>
michael@0 3 <title>Tests for the dragstart event</title>
michael@0 4 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
michael@0 5 <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
michael@0 6 <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
michael@0 7
michael@0 8 <script>
michael@0 9
michael@0 10 var gGotHandlingDrop = false;
michael@0 11 var gGotNotHandlingDrop = false;
michael@0 12
michael@0 13 SimpleTest.waitForExplicitFinish();
michael@0 14
michael@0 15 function fireEvent(target, event) {
michael@0 16 SpecialPowers.DOMWindowUtils.dispatchDOMEventViaPresShell(target, event, true);
michael@0 17 }
michael@0 18
michael@0 19 function fireDrop(element, shouldAllowDrop, shouldAllowOnlyChromeDrop) {
michael@0 20 var ds = SpecialPowers.Cc["@mozilla.org/widget/dragservice;1"].
michael@0 21 getService(SpecialPowers.Ci.nsIDragService);
michael@0 22
michael@0 23 var dataTransfer;
michael@0 24 var trapDrag = function(event) {
michael@0 25 dataTransfer = event.dataTransfer;
michael@0 26 dataTransfer.setData("text/plain", "Hello");;
michael@0 27 dataTransfer.dropEffect = "move";
michael@0 28 event.preventDefault();
michael@0 29 event.stopPropagation();
michael@0 30 }
michael@0 31
michael@0 32 // need to use real mouse action
michael@0 33 window.addEventListener("dragstart", trapDrag, true);
michael@0 34 synthesizeMouse(element, 2, 2, { type: "mousedown" });
michael@0 35 synthesizeMouse(element, 11, 11, { type: "mousemove" });
michael@0 36 synthesizeMouse(element, 20, 20, { type: "mousemove" });
michael@0 37 window.removeEventListener("dragstart", trapDrag, true);
michael@0 38 synthesizeMouse(element, 20, 20, { type: "mouseup" });
michael@0 39
michael@0 40 ds.startDragSession();
michael@0 41
michael@0 42 var event = document.createEvent("DragEvents");
michael@0 43 event.initDragEvent("dragover", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null, dataTransfer);
michael@0 44 fireEvent(element, event);
michael@0 45
michael@0 46 is(ds.getCurrentSession().canDrop, shouldAllowDrop, "Unexpected .canDrop");
michael@0 47 is(ds.getCurrentSession().onlyChromeDrop, shouldAllowOnlyChromeDrop,
michael@0 48 "Unexpected .onlyChromeDrop");
michael@0 49
michael@0 50 event = document.createEvent("DragEvents");
michael@0 51 event.initDragEvent("drop", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null, dataTransfer);
michael@0 52 fireEvent(element, event);
michael@0 53
michael@0 54 ds.endDragSession(false);
michael@0 55 ok(!ds.getCurrentSession(), "There shouldn't be a drag session anymore!");
michael@0 56 }
michael@0 57
michael@0 58 var chromeGotEvent = false;
michael@0 59 function chromeListener(e) {
michael@0 60 chromeGotEvent = true;
michael@0 61 }
michael@0 62
michael@0 63 function runTests()
michael@0 64 {
michael@0 65 var targetHandling = document.getElementById("handling_target");
michael@0 66 fireDrop(targetHandling, true, false);
michael@0 67
michael@0 68 is(gGotHandlingDrop, true, "Got drop on accepting element (1)");
michael@0 69 is(gGotNotHandlingDrop, false, "Didn't get drop on unaccepting element (1)");
michael@0 70
michael@0 71 // reset
michael@0 72 gGotHandlingDrop = false;
michael@0 73 gGotNotHandlingDrop = false;
michael@0 74
michael@0 75 SpecialPowers.addChromeEventListener("drop", chromeListener, true, false);
michael@0 76 var targetNotHandling = document.getElementById("nothandling_target");
michael@0 77 fireDrop(targetNotHandling, true, true);
michael@0 78 SpecialPowers.removeChromeEventListener("drop", chromeListener, true);
michael@0 79 ok(chromeGotEvent, "Chrome should have got drop event!");
michael@0 80 is(gGotHandlingDrop, false, "Didn't get drop on accepting element (2)");
michael@0 81 is(gGotNotHandlingDrop, false, "Didn't get drop on unaccepting element (2)");
michael@0 82
michael@0 83 SimpleTest.finish();
michael@0 84 }
michael@0 85
michael@0 86 </script>
michael@0 87
michael@0 88 <body onload="window.setTimeout(runTests, 0);">
michael@0 89
michael@0 90 <img style="width: 100px; height: 100px;"
michael@0 91 src="data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%18%00%00%00%18%02%03%00%00%00%9D%19%D5k%00%00%00%04gAMA%00%00%B1%8F%0B%FCa%05%00%00%00%0CPLTE%FF%FF%FF%FF%FF%FF%F7%DC%13%00%00%00%03%80%01X%00%00%00%01tRNS%08N%3DPT%00%00%00%01bKGD%00%88%05%1DH%00%00%00%09pHYs%00%00%0B%11%00%00%0B%11%01%7Fd_%91%00%00%00%07tIME%07%D2%05%0C%14%0C%0D%D8%3F%1FQ%00%00%00%5CIDATx%9C%7D%8E%CB%09%C0%20%10D%07r%B7%20%2F%E9wV0%15h%EA%D9%12D4%BB%C1x%CC%5C%1E%0C%CC%07%C0%9C0%9Dd7()%C0A%D3%8D%E0%B8%10%1DiCHM%D0%AC%D2d%C3M%F1%B4%E7%FF%10%0BY%AC%25%93%CD%CBF%B5%B2%C0%3Alh%CD%AE%13%DF%A5%F7%E0%03byW%09A%B4%F3%E2%00%00%00%00IEND%AEB%60%82"
michael@0 92 id="handling_target"
michael@0 93 ondragenter="event.preventDefault()"
michael@0 94 ondragover="event.preventDefault()"
michael@0 95 ondrop="gGotHandlingDrop = true;">
michael@0 96
michael@0 97 <img style="width: 100px; height: 100px;"
michael@0 98 src="data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%18%00%00%00%18%02%03%00%00%00%9D%19%D5k%00%00%00%04gAMA%00%00%B1%8F%0B%FCa%05%00%00%00%0CPLTE%FF%FF%FF%FF%FF%FF%F7%DC%13%00%00%00%03%80%01X%00%00%00%01tRNS%08N%3DPT%00%00%00%01bKGD%00%88%05%1DH%00%00%00%09pHYs%00%00%0B%11%00%00%0B%11%01%7Fd_%91%00%00%00%07tIME%07%D2%05%0C%14%0C%0D%D8%3F%1FQ%00%00%00%5CIDATx%9C%7D%8E%CB%09%C0%20%10D%07r%B7%20%2F%E9wV0%15h%EA%D9%12D4%BB%C1x%CC%5C%1E%0C%CC%07%C0%9C0%9Dd7()%C0A%D3%8D%E0%B8%10%1DiCHM%D0%AC%D2d%C3M%F1%B4%E7%FF%10%0BY%AC%25%93%CD%CBF%B5%B2%C0%3Alh%CD%AE%13%DF%A5%F7%E0%03byW%09A%B4%F3%E2%00%00%00%00IEND%AEB%60%82"
michael@0 99 id="nothandling_target"
michael@0 100 ondrop="gGotNotHandlingDrop = true;">
michael@0 101
michael@0 102 </body>
michael@0 103 </html>

mercurial