<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=565392 --> <head> <title>Test for Bug 565392</title> <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=565392">Mozilla Bug 565392</a> <p id="display"></p> <div id="content" style="display: none"> </div> <pre id="test"> <script type="application/javascript"> /** Test for Bug 565392 **/ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); const Cc = SpecialPowers.Cc; const Ci = SpecialPowers.Ci; var ds = Cc["@mozilla.org/file/directory_service;1"] .getService(Ci.nsIProperties); var dir1 = ds.get("ProfD", Ci.nsIFile); var clipboard = Cc["@mozilla.org/widget/clipboard;1"] .getService(Ci.nsIClipboard); function getLoadContext() { return SpecialPowers.wrap(window).QueryInterface(Ci.nsIInterfaceRequestor) .getInterface(Ci.nsIWebNavigation) .QueryInterface(Ci.nsILoadContext); } function getTransferableFile(file) { var transferable = Cc['@mozilla.org/widget/transferable;1'] .createInstance(Ci.nsITransferable); transferable.init(getLoadContext()); transferable.setTransferData("application/x-moz-file", file, 0); return transferable; } function setClipboardData(transferable) { clipboard.setData(transferable, null, 1); } function getClipboardData(mime) { var transferable = Cc['@mozilla.org/widget/transferable;1'] .createInstance(Ci.nsITransferable); transferable.init(getLoadContext()); transferable.addDataFlavor(mime); clipboard.getData(transferable, 1); var data = {}; transferable.getTransferData(mime, data, {}) ; return data; } setClipboardData(getTransferableFile(dir1)) is(clipboard.hasDataMatchingFlavors(["application/x-moz-file"], 1,1), true); var data = getClipboardData("application/x-moz-file"); var file = data.value.QueryInterface(Ci.nsIFile); ok(file.isDirectory(), true); is(file.target, dir1.target, true); </script> </pre> </body> </html>