<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=518249 https://bugzilla.mozilla.org/show_bug.cgi?id=952456 --> <head> <title>Test for copy image</title> <script type="text/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=518249">Mozilla Bug 518249</a> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=952456">Mozilla Bug 952456</a> <p id="display"></p> <div id="content" style="display: none"> </div> <pre id="test"> <script class="testbody" type="text/javascript"> function testCopyImage () { var Ci = SpecialPowers.Ci; var Cc = SpecialPowers.Cc; var clipboard = SpecialPowers.Services.clipboard; function getClipboardData(mime) { var transferable = Cc['@mozilla.org/widget/transferable;1'] .createInstance(Ci.nsITransferable); var loadingContext = SpecialPowers.wrap(window).QueryInterface(Ci.nsIInterfaceRequestor) .getInterface(Ci.nsIWebNavigation) .QueryInterface(Ci.nsILoadContext); transferable.init(loadingContext); transferable.addDataFlavor(mime); clipboard.getData(transferable, 1); var data = SpecialPowers.createBlankObject(); transferable.getTransferData(mime, data, {}); return data; } function testClipboardValue(mime, expected) { var data = SpecialPowers.wrap(getClipboardData(mime)); var str = data.value == null ? data.value : data.value.QueryInterface(Ci.nsISupportsString).data; is(str, expected, "clipboard has correct [" + mime + "] content") } //--------- Prepare data and copy it. // Select the node. var node = document.getElementById('logo'); // Set node and copy image. var webnav = SpecialPowers.wrap(window) .QueryInterface(Ci.nsIInterfaceRequestor) .getInterface(Ci.nsIWebNavigation) var docShell = webnav.QueryInterface(Ci.nsIDocShell); var documentViewer = docShell.contentViewer .QueryInterface(Ci.nsIContentViewerEdit); documentViewer.setCommandNode(node); documentViewer.copyImage(documentViewer.COPY_IMAGE_ALL); //--------- Let's check the content of the clipboard now. // Does the clipboard contain text/unicode data ? ok(clipboard.hasDataMatchingFlavors(["text/unicode"], 1, clipboard.kGlobalClipboard), "clipboard contains unicode text"); // Does the clipboard contain text/html data ? ok(clipboard.hasDataMatchingFlavors(["text/html"], 1, clipboard.kGlobalClipboard), "clipboard contains html text"); // Does the clipboard contain image data ? ok(clipboard.hasDataMatchingFlavors(["image/png"], 1, clipboard.kGlobalClipboard), "clipboard contains image"); // Is the text/uncodie data correct ? testClipboardValue('text/unicode', 'about:logo'); // Is the text/html data correct ? var expected = '<img id="logo" src="about:logo">'; if (navigator.platform.indexOf("Win") >= 0) { expected = "<html><body>\n<!--StartFragment-->" + expected + "<!--EndFragment-->\n</body>\n</html>"; } testClipboardValue('text/html', expected); SimpleTest.finish(); } SimpleTest.waitForExplicitFinish(); addLoadEvent(function() { SpecialPowers.pushPrefEnv({"set": [["clipboard.plainTextOnly", false]]}, testCopyImage); }); </script> </pre> <div> <img id="logo" src="about:logo"> </div> </body> </html>