tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>