202.html (2584B)
1 <!doctype html> 2 <html> 3 <head> 4 <title>allowTargetOrigin with fake dataTransfer should block dragenter, dragover, dragleave and drop synthetic events</title> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 </head> 8 <body> 9 <div draggable="true"></div> 10 <div></div> 11 <noscript><p>Enable JavaScript and reload</p></noscript> 12 <div id="log"></div> 13 14 <script type="text/javascript"> 15 test(function () { 16 var dragsource = document.getElementsByTagName('div')[0], targ = document.getElementsByTagName('div')[1], evtdone = {}; 17 dragsource.ondragstart = function (e) { 18 var evt; 19 evtdone.initial = true; 20 e.dataTransfer.effectAllowed = 'copy'; 21 e.dataTransfer.setData('text','dummy text'); 22 e.dataTransfer.allowTargetOrigin('http://example.com'); 23 evt = new DragEvent('dragstart', {dataTransfer:e.dataTransfer}); 24 targ.dispatchEvent(evt); 25 evt = new DragEvent('drag', {dataTransfer:e.dataTransfer}); 26 targ.dispatchEvent(evt); 27 evt = new DragEvent('dragenter', {dataTransfer:e.dataTransfer}); 28 targ.dispatchEvent(evt); 29 evt = new DragEvent('dragover', {dataTransfer:e.dataTransfer}); 30 targ.dispatchEvent(evt); 31 evt = new DragEvent('dragleave', {dataTransfer:e.dataTransfer}); 32 targ.dispatchEvent(evt); 33 evt = new DragEvent('drop', {dataTransfer:e.dataTransfer}); 34 targ.dispatchEvent(evt); 35 evt = new DragEvent('dragend', {dataTransfer:e.dataTransfer}); 36 targ.dispatchEvent(evt); 37 }; 38 targ.ondragstart = function (e) { 39 evtdone[e.type] = true; 40 }; 41 targ.ondragenter = targ.ondragover = targ.ondrop = function (e) { 42 e.preventDefault(); 43 evtdone[e.type] = true; 44 }; 45 targ.ondrag = targ.ondragleave = function (e) { 46 evtdone[e.type] = true; 47 }; 48 targ.ondragend = function (e) { 49 evtdone[e.type] = true; 50 }; 51 var creatorevent = document.createEvent('DragEvent'); 52 creatorevent.initDragEvent('dragstart', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 1, document.body, {}); 53 dragsource.dispatchEvent(creatorevent); 54 assert_true(evtdone.dragstart, 'dragstart must fire'); 55 assert_true(evtdone.drag, 'drag must fire'); 56 assert_true(evtdone.dragend, 'dragend must fire'); 57 assert_false(evtdone.dragenter, 'dragenter must not fire'); 58 assert_false(evtdone.dragover, 'dragover must not fire'); 59 assert_false(evtdone.dragleave, 'dragleave must not fire'); 60 assert_false(evtdone.drop, 'drop must not fire'); 61 }, "allowTargetOrigin with fake dataTransfer should block events"); 62 </script> 63 </body> 64 </html>