Wed, 31 Dec 2014 06:09:35 +0100
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> |