<?xml version="1.0"?> <?xml-stylesheet type="text/css" href="chrome://global/skin"?> <?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=948065 --> <window title="Mozilla Bug 948065" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/> <script type="application/javascript" src="clipboard_helper.js"/> <!-- test results are displayed in the html:body --> <body xmlns="http://www.w3.org/1999/xhtml"> <p id="display"></p> <div id="content" style="display: none"></div> <pre id="test"></pre> </body> <!-- test code goes here --> <script class="testbody" type="application/javascript"> <![CDATA[ function getLoadContext() { return window.docShell.QueryInterface(Ci.nsILoadContext); } // Get clipboard data to paste. function paste(clipboard) { let trans = Cc['@mozilla.org/widget/transferable;1'] .createInstance(Ci.nsITransferable); trans.init(getLoadContext()); trans.addDataFlavor("text/plain"); clipboard.getData(trans, Ci.nsIClipboard.kGlobalClipboard); let str = {}; try { trans.getTransferData('text/plain', str); } catch (e) { str = ''; } if (str) { str = str.value.QueryInterface(Ci.nsISupportsString); if (str) { str = str.data; } } return str; } add_setup(function init() { cleanupAllClipboard(); }); /* Test for bug 948065 */ add_task(function test_copy() { // Test copy. const data = "random number: " + Math.random(); let helper = Cc['@mozilla.org/widget/clipboardhelper;1'] .getService(Ci.nsIClipboardHelper); helper.copyString(data); is(paste(Services.clipboard), data, 'Data was successfully copied.'); Services.clipboard.emptyClipboard(Ci.nsIClipboard.kGlobalClipboard); is(paste(Services.clipboard), '', 'Data was successfully cleared.'); cleanupAllClipboard(); }); /* Tests for bug 1834073 */ clipboardTypes.forEach(function(clipboardType) { if (clipboard.isClipboardTypeSupported(clipboardType)) { add_task(function test_clipboard_apis() { info(`Test clipboard apis for type ${clipboardType}`); // Set clipboard data let str; try { str = writeRandomStringToClipboard('text/plain', clipboardType) } catch(e) { ok(false, `setData should not throw error for clipboard type ${clipboardType}`); } // Test hasDataMatchingFlavors try { // We only support the set operation on kSelectionCache type, see // bug 1835059. is(clipboard.hasDataMatchingFlavors(['text/plain'], clipboardType), clipboardType != clipboard.kSelectionCache, `Test hasDataMatchingFlavors for clipboard type ${clipboardType}`); } catch(e) { ok(false, `hasDataMatchingFlavors should not throw error for clipboard type ${clipboardType}`); } // Test getData let isThrow = false; try { is(getClipboardData('text/plain', clipboardType), str, `Test getData for clipboard type ${clipboardType}`); } catch(e) { isThrow = true; } // We only support the set operation on kSelectionCache type, see // bug 1835059. is(isThrow, clipboardType == clipboard.kSelectionCache, `Test if getData throw an error for clipboard type ${clipboardType}`); }); } }); ]]> </script> </window>