tor-browser

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

001.html (5531B)


      1 <!doctype html>
      2 <html>
      3  <head>
      4    <title>Synthetic drag events</title>
      5    <script type="text/javascript" src="/resources/testharness.js"></script>
      6    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
      7  </head>
      8  <body>
      9    <div id="log"></div>
     10    <script type="text/javascript">
     11 test(function() {
     12  assert_own_property(window,'DragEvent');
     13 }, 'window.DragEvent should be exposed' );
     14 test(function() {
     15  var evt = new DragEvent('dragstart');
     16  assert_false( !!evt.initDragEvent, 'initDragEvent' );
     17  assert_true( !!evt.initMouseEvent, 'initMouseEvent' );
     18  assert_true( !!evt.initUIEvent, 'initUIEvent' );
     19  assert_true( !!evt.initEvent, 'initEvent' );
     20 }, 'DragEvent should have all of the inherited init*Event methods' );
     21 
     22 //cannot test non-synthetic dataTransfer objects as the param here because that needs a real DragEvent to create a proper one with global storage
     23 //will be tested in another file
     24 test(function() {
     25  var evt = new DragEvent('dragstart');
     26  evt.initMouseEvent('dragstart', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 1, document.body);
     27 }, 'initMouseEvent should not throw' );
     28 test(function() {
     29  var evt = new DragEvent('dragstart');
     30  evt.initUIEvent('dragstart', true, true, window, 1);
     31 }, 'initUIEvent should not throw' );
     32 test(function() {
     33  var evt = new DragEvent('dragstart');
     34  evt.initEvent('dragstart', true, true);
     35 }, 'initEvent should not throw' );
     36 
     37 test(function() {
     38  var evt = new DragEvent('dragstart', {dataTransfer:null}), div = document.createElement('div'), ranlistener = false;
     39  div.ondragstart = function () { ranlistener = true; };
     40  div.dispatchEvent(evt);
     41  assert_true(ranlistener);
     42 }, 'DragEvent constructor with null as the dataTransfer parameter should be able to fire the event' );
     43 test(function() {
     44  var evt = new DragEvent('dragstart', {dataTransfer:undefined}), div = document.createElement('div'), ranlistener = false;
     45  div.ondragstart = function () { ranlistener = true; };
     46  div.dispatchEvent(evt);
     47  assert_true(ranlistener);
     48 }, 'DragEvent constructor with undefined as the dataTransfer parameter should be able to fire the event' );
     49 test(function() {
     50  assert_throws_js(TypeError, function() {
     51    var evt = new DragEvent('dragstart', {dataTransfer:{}});
     52  });
     53 }, 'DragEvent constructor with custom object as the dataTransfer parameter should throw TypeError' );
     54 test(function() {
     55  var evt = new DragEvent('dragstart'), div = document.createElement('div'), ranlistener = false;
     56  div.ondragstart = function () { ranlistener = true; };
     57  evt.initMouseEvent('dragstart', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 1, document.body);
     58  div.dispatchEvent(evt);
     59  assert_true(ranlistener);
     60 }, 'initMouseEvent should be able to fire the event' );
     61 test(function() {
     62  var evt = new DragEvent('dragstart'), div = document.createElement('div'), ranlistener = false;
     63  div.ondragstart = function () { ranlistener = true; };
     64  evt.initUIEvent('dragstart', true, true, window, 1);
     65  div.dispatchEvent(evt);
     66  assert_true(ranlistener);
     67 }, 'initUIEvent should be able to fire the event' );
     68 test(function() {
     69  var evt = new DragEvent('dragstart'), div = document.createElement('div'), ranlistener = false;
     70  div.ondragstart = function () { ranlistener = true; };
     71  evt.initEvent('dragstart', true, true);
     72  div.dispatchEvent(evt);
     73  assert_true(ranlistener);
     74 }, 'initEvent should be able to fire the event' );
     75 
     76 test(function() {
     77  var evt = new DragEvent('dragstart', {dataTransfer:null}), div = document.createElement('div'), dTrans = 'fail';
     78  div.ondragstart = function (e) { dTrans = e.dataTransfer };
     79  div.dispatchEvent(evt);
     80  assert_equals(dTrans,null);
     81 }, 'DragEvent constructor with null as the dataTransfer parameter should give null as the dataTransfer' );
     82 test(function() {
     83  var evt = new DragEvent('dragstart', {dataTransfer:undefined}), div = document.createElement('div'), dTrans = 'fail';
     84  div.ondragstart = function (e) { dTrans = e.dataTransfer };
     85  div.dispatchEvent(evt);
     86  assert_equals(dTrans,null);
     87 }, 'DragEvent constructor with undefined as the dataTransfer parameter should give null as the dataTransfer' );
     88 test(function() {
     89  var evt = new DragEvent('dragstart'), div = document.createElement('div'), dTrans = 'fail';
     90  div.ondragstart = function (e) { dTrans = e.dataTransfer };
     91  evt.initMouseEvent('dragstart', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 1, document.body);
     92  div.dispatchEvent(evt);
     93  assert_equals(dTrans,null);
     94 }, 'initMouseEvent should give null as the dataTransfer' );
     95 test(function() {
     96  var evt = new DragEvent('dragstart'), div = document.createElement('div'), dTrans = 'fail';
     97  div.ondragstart = function (e) { dTrans = e.dataTransfer };
     98  evt.initUIEvent('dragstart', true, true, window, 1);
     99  div.dispatchEvent(evt);
    100  assert_equals(dTrans,null);
    101 }, 'initUIEvent should give null as the dataTransfer' );
    102 test(function() {
    103  var evt = new DragEvent('dragstart'), div = document.createElement('div'), dTrans = 'fail';
    104  div.ondragstart = function (e) { dTrans = e.dataTransfer };
    105  evt.initEvent('dragstart', true, true);
    106  div.dispatchEvent(evt);
    107  assert_equals(dTrans,null);
    108 }, 'initEvent should give null as the dataTransfer' );
    109 
    110 //cannot test that synthetic event does not use the same data store as non-synthetic event because that needs a real DragEvent to create a proper one with global storage
    111 //will be tested in another file
    112    </script>
    113    <noscript><p>Enable JavaScript and reload</p></noscript>
    114  </body>
    115 </html>