<!doctype html>
<html>
  <head>
    <title>allowTargetOrigin valid syntax</title>
    <style type="text/css">
div { float: left; height: 100px; width: 100px; margin-right: 10px; background: orange; }
iframe { height: 100px; width: 100px; border: none; }
.note { float: right; color: silver; }
    </style>
    <script type="text/javascript" src="../resources/crossorigin.sub.js"></script>
    <script type="text/javascript">
function addNote(el,str) {
  var par = document.createElement(el);
  par.textContent = str;
  document.body.appendChild(par);
}
function testFrame(text,frameorigin,framepath) {
  var persist = arguments;
  addNote('p',(done++)+'. '+text);
  var div = document.createElement('div');
  var frame = document.createElement('iframe');
  frame.src = frameorigin+framepath;
  div.draggable = true;
  div.ondragstart = function (e) {
    e.dataTransfer.effectAllowed = 'copy';
    e.dataTransfer.setData('text','dummy text');
    for( var i = 3; i < persist.length; i++ ) {
      e.dataTransfer.allowTargetOrigin(persist[i]);
    }
  };
  var par = document.createElement('p');
  par.className = 'note';
  par.appendChild(document.createTextNode('Target: '+frameorigin));
  par.appendChild(document.createElement('br'));
  par.appendChild(document.createTextNode('Allowing: '+([]).slice.call(persist,3).join(' and ')));
  if( framepath.match(/\?domain\b/) ) {
    par.appendChild(document.createElement('br'));
    par.appendChild(document.createTextNode('document.domain set to parent domain'));
  }
  document.body.appendChild(par);
  document.body.appendChild(div);
  document.body.appendChild(frame);
}
var done = 1;
window.onload = function () {
  var allowText = 'Drag the orange box below over the blue box the right, and release it. Fail if nothing happens in the blue box.';
  var blockText = 'Drag the orange box below over the pink box the right, and release it. Pass if nothing happens in the pink box.';
  var allowHelper = location.pathname.replace(/[^\/]*$/,'HELPER-mustallow.html');
  var blockHelper = location.pathname.replace(/[^\/]*$/,'HELPER-mustblock.html');
  if( location.hostname != httpHostMain || location.host != httpHostMain ) {
    addNote('p','This test must be loaded over http:\/\/'+httpHostMain+'\/');
  } else {
    /* 01 */ testFrame(allowText,'http://'+httpHostMain,allowHelper);
    /* 02 */ testFrame(allowText,'http://'+httpHostAlias,allowHelper);
    /* 03 */ testFrame(allowText,'http://'+httpHostMain,allowHelper,'*');
    /* 04 */ testFrame(allowText,'http://'+httpHostAlias,allowHelper,'*');
    /* 05 */ testFrame(allowText,'http://'+httpHostMain,allowHelper,'/');
    /* 06 */ testFrame(blockText,'http://'+httpHostAlias,blockHelper,'/');
    /* 07 */ testFrame(allowText,'http://'+httpHostMain,allowHelper,'http://'+httpHostMain);
    /* 08 */ testFrame(blockText,'http://'+httpHostMain+':'+httpPortAlias,blockHelper,'http://'+httpHostMain);
    /* 09 */ testFrame(blockText,'http://'+httpHostAlias,blockHelper,'http://'+httpHostMain);
    /* 10 */ testFrame(blockText,'http://'+httpHostAlias,blockHelper,'http://'+httpHostMain);
    /* 11 */ testFrame(allowText,'http://'+httpHostMain,allowHelper,'http://'+httpHostMain+':80');
    /* 12 */ testFrame(blockText,'http://'+httpHostMain+':'+httpPortAlias,blockHelper,'http://'+httpHostMain+':80');
    /* 13 */ testFrame(allowText,'http://'+httpHostMain+':'+httpPortAlias,allowHelper,'http://'+httpHostMain+':'+httpPortAlias);
    /* 14 */ testFrame(blockText,'http://'+httpHostMain,blockHelper,'http://'+httpHostMain+':'+httpPortAlias);
    /* 15 */ testFrame(blockText,'https://'+httpsHostAlias,blockHelper,'http://'+httpsHostAlias);
    /* 16 */ testFrame(allowText,'https://'+httpsHostAlias,allowHelper,'https://'+httpsHostAlias);
    /* 17 */ testFrame(allowText,'http://'+httpHostMain,allowHelper,'http://foo:bar@'+httpHostMain+'/baz');
    /* 18 */ testFrame(allowText,'http://foo:bar@'+httpHostMain,allowHelper,'http://'+httpHostMain);
    /* 19 */ testFrame(allowText,'http://'+httpHostMain,allowHelper,'http://'+httpHostAlias,'/');
    /* 20 */ testFrame(allowText,'http://'+httpHostMain,allowHelper,'/','http://'+httpHostAlias);
    /* 21 */ testFrame(allowText,'http://'+httpHostMain,allowHelper,'http://'+httpHostAlias,'*');
    /* 22 */ testFrame(allowText,'http://'+httpHostMain,allowHelper,'http://'+httpHostAlias,'http://'+httpHostMain);
    /* 23 */ testFrame(allowText,'http://'+httpHostAlias,allowHelper,'http://'+httpHostAlias,'http://'+httpHostMain);
    /* 24 */ testFrame(blockText,'http://'+httpHostAlias,blockHelper,'http://dummy','http://'+httpHostMain);
    /* 25 */ testFrame(blockText,'https://'+httpsHostAlias,blockHelper,'https://'+httpsHostAlias+':'+httpsPortAlias);
    /* 26 */ testFrame(blockText,'https://'+httpsHostAlias+':'+httpsPortAlias,blockHelper,'https://'+httpsHostAlias);
    /* 27 */ testFrame(allowText,'https://'+httpsHostAlias+':'+httpsPortAlias,allowHelper,'https://'+httpsHostAlias+':'+httpsPortAlias);
    window.xhr = new XMLHttpRequest();
    xhr.open('GET',allowHelper,false);
    xhr.send(null);
    /* 28 */ testFrame(allowText,'data:text/html,',escape(xhr.responseText),'http://'+httpHostMain);
    /* 29 */ testFrame(allowText,'javascript:','parent.xhr.responseText','http://'+httpHostMain);
    /* 30 */ testFrame(blockText,'http://'+httpHostAlias,blockHelper,'http://'+httpHostAlias.replace(/^[^.]+\./,''));
    /* 31 */ testFrame(allowText,'http://'+httpHostAlias,allowHelper+'?domain','http://'+httpHostAlias);
    /* 32 */ testFrame(blockText,'http://'+httpHostAlias,blockHelper+'?domain','http://'+httpHostAlias.replace(/^[^.]+\./,''));
  }
};
    </script>
  </head>
  <body>
    <noscript><p>Enable JavaScript and reload</p></noscript>
  </body>
</html>
