Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!doctype html>
<html>
<head>
<title>allowTargetOrigin with fake dataTransfer should block dragenter, dragover, dragleave and drop synthetic events</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<div draggable="true"></div>
<div></div>
<noscript><p>Enable JavaScript and reload</p></noscript>
<div id="log"></div>
<script type="text/javascript">
test(function () {
var dragsource = document.getElementsByTagName('div')[0], targ = document.getElementsByTagName('div')[1], evtdone = {};
dragsource.ondragstart = function (e) {
var evt;
evtdone.initial = true;
e.dataTransfer.effectAllowed = 'copy';
e.dataTransfer.setData('text','dummy text');
e.dataTransfer.allowTargetOrigin('http://example.com');
evt = new DragEvent('dragstart', {dataTransfer:e.dataTransfer});
targ.dispatchEvent(evt);
evt = new DragEvent('drag', {dataTransfer:e.dataTransfer});
targ.dispatchEvent(evt);
evt = new DragEvent('dragenter', {dataTransfer:e.dataTransfer});
targ.dispatchEvent(evt);
evt = new DragEvent('dragover', {dataTransfer:e.dataTransfer});
targ.dispatchEvent(evt);
evt = new DragEvent('dragleave', {dataTransfer:e.dataTransfer});
targ.dispatchEvent(evt);
evt = new DragEvent('drop', {dataTransfer:e.dataTransfer});
targ.dispatchEvent(evt);
evt = new DragEvent('dragend', {dataTransfer:e.dataTransfer});
targ.dispatchEvent(evt);
};
targ.ondragstart = function (e) {
evtdone[e.type] = true;
};
targ.ondragenter = targ.ondragover = targ.ondrop = function (e) {
e.preventDefault();
evtdone[e.type] = true;
};
targ.ondrag = targ.ondragleave = function (e) {
evtdone[e.type] = true;
};
targ.ondragend = function (e) {
evtdone[e.type] = true;
};
var creatorevent = document.createEvent('DragEvent');
creatorevent.initDragEvent('dragstart', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 1, document.body, {});
dragsource.dispatchEvent(creatorevent);
assert_true(evtdone.dragstart, 'dragstart must fire');
assert_true(evtdone.drag, 'drag must fire');
assert_true(evtdone.dragend, 'dragend must fire');
assert_false(evtdone.dragenter, 'dragenter must not fire');
assert_false(evtdone.dragover, 'dragover must not fire');
assert_false(evtdone.dragleave, 'dragleave must not fire');
assert_false(evtdone.drop, 'drop must not fire');
}, "allowTargetOrigin with fake dataTransfer should block events");
</script>
</body>
</html>