1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
<!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>
|