<!doctype html>
<html>
  <head>
    <title>allowTargetOrigin events</title>
    <style type="text/css">
blockquote { height: 100px; width: 100px; background: orange; margin: 0; padding: 0; float: left; }
blockquote + blockquote { background: blue; }
blockquote + blockquote + blockquote { background: fuchsia; }
blockquote + div { clear: left; }
    </style>
    <script type="text/javascript" src="/resources/testharness.js"></script>
    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
    <script type="text/javascript">
setup(function () {},{explicit_done:true});
window.onload = function () {
  var orange  = document.getElementsByTagName('blockquote')[0],
      blue    = document.getElementsByTagName('blockquote')[1],
      fuchsia = document.getElementsByTagName('blockquote')[2],
      evtdone = {};
  orange.ondragstart = function (e) {
    e.dataTransfer.effectAllowed = 'copy';
    e.dataTransfer.setData('text','dummy text');
    if( evtdone[e.type] ) { return; }
    evtdone[e.type] = true;
    test(function() {
      assert_true( !!e.dataTransfer.allowTargetOrigin );
    }, 'allowTargetOrigin should exist in '+e.type );
    test(function() {
      e.dataTransfer.allowTargetOrigin('*');
    }, 'allowTargetOrigin should work in '+e.type );
  };
  blue.ondragenter = blue.ondragover = function (e) {
    e.preventDefault();
  };
  orange.ondrag = blue.ondragleave = function (e) {
    if( evtdone[e.type] ) { return; }
    evtdone[e.type] = true;
    test(function() {
      assert_true( !!e.dataTransfer.allowTargetOrigin );
    }, 'allowTargetOrigin should exist in '+e.type );
    test(function() {
      assert_throws_dom( 'SECURITY_ERR', function () { e.dataTransfer.allowTargetOrigin('*'); } );
    }, 'allowTargetOrigin should throw a SECURITY_ERR in '+e.type );
  };
  fuchsia.ondragenter = fuchsia.ondragover = fuchsia.ondrop = function (e) {
    e.preventDefault();
    if( evtdone[e.type] ) { return; }
    evtdone[e.type] = true;
    test(function() {
      assert_true( !!e.dataTransfer.allowTargetOrigin );
    }, 'allowTargetOrigin should exist in '+e.type );
    test(function() {
      assert_throws_dom( 'SECURITY_ERR', function () { e.dataTransfer.allowTargetOrigin('*'); } );
    }, 'allowTargetOrigin should throw a SECURITY_ERR in '+e.type );
  };
  orange.ondragend = function (e) {
    if( evtdone[e.type] ) { return; }
    evtdone[e.type] = true;
    test(function() {
      assert_true( !!e.dataTransfer.allowTargetOrigin );
    }, 'allowTargetOrigin should exist in '+e.type );
    test(function() {
      assert_throws_dom( 'SECURITY_ERR', function () { e.dataTransfer.allowTargetOrigin('*'); } );
    }, 'allowTargetOrigin should throw a SECURITY_ERR in '+e.type );
    test(function() {
      var failtxt = '- Reload and try again';
      assert_true( evtdone.dragstart, 'dragstart event was not tested'+failtxt );
      assert_true( evtdone.drag, 'drag event was not tested'+failtxt );
      assert_true( evtdone.dragenter, 'dragenter event was not tested'+failtxt );
      assert_true( evtdone.dragleave, 'dragleave event was not tested'+failtxt );
      assert_true( evtdone.dragover, 'dragover event was not tested'+failtxt );
      assert_true( evtdone.drop, 'drop event was not tested'+failtxt );
      assert_true( evtdone.dragend, 'dragend event was not tested'+failtxt );
    }, 'all event types must now have been tested' );
    done();
  };
};
    </script>
  </head>
  <body>
    <blockquote draggable="true"></blockquote>
    <blockquote></blockquote>
    <blockquote></blockquote>
    <div id="log">Drag the orange square over the blue square then the fuchsia square, then release it.</div>
    <noscript><p>Enable JavaScript and reload</p></noscript>
  </body>
</html>
