widget/tests/test_bug444800.xul

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

michael@0 1 <?xml version="1.0"?>
michael@0 2 <?xml-stylesheet href="chrome://global/skin"
michael@0 3 type="text/css"?>
michael@0 4 <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
michael@0 5 type="text/css"?>
michael@0 6 <!--
michael@0 7 https://bugzilla.mozilla.org/show_bug.cgi?id=444800
michael@0 8 -->
michael@0 9 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
michael@0 10 title="Mozilla Bug 444800" onload="initAndRunTests()">
michael@0 11 <script type="application/javascript"
michael@0 12 src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
michael@0 13
michael@0 14 <body xmlns="http://www.w3.org/1999/xhtml">
michael@0 15 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=444800"
michael@0 16 target="_blank">Mozilla Bug 444800</a>
michael@0 17 <p/>
michael@0 18 <img id="bitmapImage" src="data:image/bmp;base64,Qk2KAwAAAAAAAIoAAAB8AAAADwAAABAAAAABABgAAAAAAAADAAASCwAAEgsAAAAAAAAAAAAAAAD%2FAAD%2FAAD%2FAAAAAAAA%2FwEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F0vf%2FAABc8tKY%2F%2F%2F%2FyNfq3Mi9%2F%2F%2F70vf%2FAABP8s2R%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2Fzff%2FAABB8s2R5f%2F%2FAAB5LgAA%2F%2B7Czff%2FAABB7s2R%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2Fzff%2FAABB99KRpdz%2FAAAAAAAA4Ktm0vv%2FAABB7s2R%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2Fzff%2FAABB7teYQZHNkS4AebfImAAA1%2FfyAABP7s2R%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2Fzff%2FAABByMiYAAB5159P0v%2F%2FAABBwtKrAABc7s2R%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2Fzff%2FAABPcIJwAAAA%2B%2BW3%2F%2F%2F%2FAHC3gnBBAABP7s2R%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2Fzff%2FAABcAAAAmE8A%2F%2F%2Fy%2F%2F%2F%2Fn9LyAAAAAAAA7s2Y%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FzfL%2FAABcAAAA4LFw%2F%2F%2F%2F%2F%2F%2F%2F4P%2F%2FAAB5AAAA7s2R%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F0vf%2FAABmXAAA%2F%2B7I%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FXJ%2FSAAAA8s2Y%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FAAAA"/>
michael@0 19 <p/>
michael@0 20 <pre id="test">
michael@0 21 </pre>
michael@0 22 </body>
michael@0 23
michael@0 24 <script class="testbody" type="application/javascript">
michael@0 25 <![CDATA[
michael@0 26 const knsIClipboard = Components.interfaces.nsIClipboard;
michael@0 27
michael@0 28 function copyImageToClipboard()
michael@0 29 {
michael@0 30 var tmpNode = document.popupNode;
michael@0 31 document.popupNode = document.getElementById("bitmapImage");
michael@0 32
michael@0 33 const kCmd = "cmd_copyImageContents";
michael@0 34 var controller = top.document.commandDispatcher
michael@0 35 .getControllerForCommand(kCmd);
michael@0 36 ok((controller && controller.isCommandEnabled(kCmd)), "have copy command");
michael@0 37 controller.doCommand(kCmd);
michael@0 38
michael@0 39 document.popupNode = tmpNode;
michael@0 40 }
michael@0 41
michael@0 42 function getLoadContext() {
michael@0 43 const Ci = Components.interfaces;
michael@0 44 return window.QueryInterface(Ci.nsIInterfaceRequestor)
michael@0 45 .getInterface(Ci.nsIWebNavigation)
michael@0 46 .QueryInterface(Ci.nsILoadContext);
michael@0 47 }
michael@0 48
michael@0 49 function runImageClipboardTests(aCBSvc, aImageType)
michael@0 50 {
michael@0 51 // Verify that hasDataMatchingFlavors() is working correctly.
michael@0 52 var typeArray = [ aImageType ];
michael@0 53 var hasImage = aCBSvc.hasDataMatchingFlavors(typeArray, typeArray.length,
michael@0 54 knsIClipboard.kGlobalClipboard);
michael@0 55 ok(hasImage, aImageType + " - hasDataMatchingFlavors()");
michael@0 56
michael@0 57 // Verify that getData() is working correctly.
michael@0 58 var xfer = Components.classes["@mozilla.org/widget/transferable;1"]
michael@0 59 .createInstance(Components.interfaces.nsITransferable);
michael@0 60 xfer.init(getLoadContext());
michael@0 61 xfer.addDataFlavor(aImageType);
michael@0 62 aCBSvc.getData(xfer, knsIClipboard.kGlobalClipboard);
michael@0 63
michael@0 64 var typeObj = {}, dataObj = {}, lenObj = {};
michael@0 65 xfer.getAnyTransferData(typeObj, dataObj, lenObj);
michael@0 66 var gotValue = (null != dataObj.value);
michael@0 67 ok(gotValue, aImageType + " - getData() returned a value");
michael@0 68 if (gotValue)
michael@0 69 {
michael@0 70 const knsIInputStream = Components.interfaces.nsIInputStream;
michael@0 71 var imgStream = dataObj.value.QueryInterface(knsIInputStream);
michael@0 72 ok((null != imgStream), aImageType + " - got an nsIInputStream");
michael@0 73 var bytesAvailable = imgStream.available();
michael@0 74 ok((bytesAvailable > 10), aImageType + " - got some data");
michael@0 75 }
michael@0 76 }
michael@0 77
michael@0 78 function initAndRunTests()
michael@0 79 {
michael@0 80 SimpleTest.waitForExplicitFinish();
michael@0 81
michael@0 82 copyImageToClipboard();
michael@0 83
michael@0 84 var cbSvc = Components.classes["@mozilla.org/widget/clipboard;1"]
michael@0 85 .getService(knsIClipboard);
michael@0 86
michael@0 87 // Work around a problem on Windows where clipboard is not ready after copy.
michael@0 88 setTimeout(function() { runTests(cbSvc); }, 0);
michael@0 89 }
michael@0 90
michael@0 91 function runTests(aCBSvc)
michael@0 92 {
michael@0 93 runImageClipboardTests(aCBSvc, "image/png");
michael@0 94 runImageClipboardTests(aCBSvc, "image/jpg");
michael@0 95 runImageClipboardTests(aCBSvc, "image/jpeg");
michael@0 96
michael@0 97 SimpleTest.finish();
michael@0 98 }
michael@0 99
michael@0 100 ]]>
michael@0 101 </script>
michael@0 102 </window>

mercurial