Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<?xml version="1.0"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
type="text/css"?>
<window title="Test EventUtils functions"
<script type="text/javascript">
var start = new Date();
</script>
<script type="text/javascript">
var loadTime = new Date();
</script>
<script type="application/javascript">
<![CDATA[
info("\nProfile::EventUtilsLoadTime: " + (loadTime - start) + "\n");
var testFile = Services.dirsvc.get("CurWorkD", Ci.nsIFile);
var regularDtForDrag1 = null;
var gSetDropEffect = true;
var gData;
var gEnter = false;
var gOver = false;
var dragDrop = [[
{ type : "text/plain",
data : "This is a test" }
]];
// this is the expected data arrays
// for testing drag of 2 items create 2 inner arrays
var drag1 = [[
{ type : "text/uri-list",
]];
var drag2items = [[
{ type : "text/uri-list",
],[
{ type : "text/uri-list",
]];
var drag1WrongFlavor = [[
{ type : "text/plain",
data : "this is text/plain" }
]];
var drag2 = [[
{ type : "text/plain",
data : "this is text/plain" },
{ type : "text/uri-list",
]];
var drag2WrongOrder = [[
{ type : "text/uri-list",
{ type : "text/plain",
data : "this is text/plain" }
]];
var dragfile = [[
{ type : "application/x-moz-file",
data : testFile,
eqTest(actualData, expectedData) {return expectedData.equals(actualData);} },
{ type : "Files",
data : null }
]];
function doOnDrop(aEvent) {
gData = aEvent.dataTransfer.getData(dragDrop[0][0].type);
aEvent.preventDefault(); // cancels event and keeps dropEffect
// as was before event.
}
function doOnDragStart(aEvent) {
var dt = aEvent.dataTransfer;
switch (aEvent.currentTarget.id) {
case "drag2" :
dt.setData("text/plain", "this is text/plain");
// fallthrough
case "drag1" :
regularDtForDrag1 = dt;
dt.setData("text/uri-list", "http://www.mozilla.org/");
break;
case "dragfile" :
dt.mozSetDataAt("application/x-moz-file", testFile, 0);
break;
}
dt.effectAllowed = "all";
}
function doOnDragEnter(aEvent) {
gEnter = true;
aEvent.dataTransfer.effectAllowed = "all";
aEvent.preventDefault(); // sets target this element
}
function doOnDragOver(aEvent) {
gOver = true;
if (gSetDropEffect)
aEvent.dataTransfer.dropEffect = "copy";
aEvent.preventDefault();
}
SimpleTest.waitForExplicitFinish();
async function test() {
var startTime = new Date();
var result;
/* test synthesizeDrop */
result = synthesizeDrop($("dragDrop"), $("dragDrop"), dragDrop, null, window);
ok(gEnter, "Fired dragenter");
ok(gOver, "Fired dragover");
is(result, "copy", "copy is dropEffect");
is(gData, dragDrop[0][0].data, "Received valid drop data");
gSetDropEffect = false;
result = synthesizeDrop($("dragDrop"), $("dragDrop"), dragDrop, "link", window);
is(result, "link", "link is dropEffect");
gSetDropEffect = true;
$("textB").focus();
var content = synthesizeQueryTextContent(0, 100);
ok(content, "synthesizeQueryTextContent should not be null");
ok(content.succeeded, "synthesizeQueryTextContent should succeed");
is(content.text, "I haz a content", "synthesizeQueryTextContent should be 'I haz a content': " + content.text);
content = synthesizeQueryCaretRect(0);
ok(content, "synthesizeQueryCaretRect should not be null");
ok(content.succeeded, "synthesizeQueryCaretRect should succeed");
content = synthesizeQueryTextRect(0, 100);
ok(content, "synthesizeQueryTextRect should not be null");
ok(content.succeeded, "synthesizeQueryTextRect should succeed");
content = synthesizeQueryEditorRect();
ok(content, "synthesizeQueryEditorRect should not be null");
ok(content.succeeded, "synthesizeQueryEditorRect should succeed");
content = synthesizeCharAtPoint(0, 0);
ok(content, "synthesizeCharAtPoint should not be null");
ok(content.succeeded, "synthesizeCharAtPoint should succeed");
content = await synthesizeSelectionSet(0, 100);
ok(content, "synthesizeSelectionSet should not be null");
is(content, true, "synthesizeSelectionSet should succeed");
var endTime = new Date();
info("\nProfile::EventUtilsRunTime: " + (endTime-startTime) + "\n");
SimpleTest.finish();
};
]]>
</script>
<body xmlns="http://www.w3.org/1999/xhtml" onload="setTimeout(test, 0)">
<input id="textB" value="I haz a content"/>
<p id="display"></p>
<div id="content" style="display:none;"></div>
<pre id="test"></pre>
<div id="drag1" ondragstart="doOnDragStart(event);">Need some space here</div>
<p id="display"></p>
<div id="content" style="display:none;"></div>
<pre id="test"></pre>
<div id="dragDrop" ondragover ="doOnDragOver(event);"
ondragenter ="doOnDragEnter(event);"
ondragleave ="doOnDragLeave(event);"
ondrop ="doOnDrop(event);">
Need some depth and height to drag here
</div>
<div id="drag2" ondragstart="doOnDragStart(event);">Need more space</div>
<div id="dragfile" ondragstart="doOnDragStart(event);">Sure why not here too</div>
</body>
</window>