Backed out changeset 2450366cf7ca (bug 1891629) for causing win msix mochitest failures
[gecko.git] / widget / tests / test_bug466599.xhtml
blob95b3593437bd7e97ebb7e2acd9d38afbe96282f1
1 <?xml version="1.0"?>
2 <?xml-stylesheet type="text/css" href="chrome://global/skin"?>
3 <?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
4 <!--
5 https://bugzilla.mozilla.org/show_bug.cgi?id=466599
6 -->
7 <window title="Mozilla Bug 466599"
8 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
9 onload="initAndRunTests()">
10 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
12 <!-- test results are displayed in the html:body -->
13 <body xmlns="http://www.w3.org/1999/xhtml">
14 <p id="display"></p>
15 <div id="content" style="display: none"></div>
16 <pre id="test"></pre>
17 </body>
19 <!-- test code goes here -->
20 <script class="testbody" type="application/javascript">
21 <![CDATA[
23 /** Test for Bug 466599 */
25 function getLoadContext() {
26 return window.docShell.QueryInterface(Ci.nsILoadContext);
29 function copyToClipboard(txt)
31 var clipid = Ci.nsIClipboard;
32 var clip =
33 Cc['@mozilla.org/widget/clipboard;1'].createInstance(clipid);
34 if (!clip)
35 return false;
36 var trans =
37 Cc['@mozilla.org/widget/transferable;1'].createInstance(Ci.nsITransferable);
38 if (!trans)
39 return false;
40 trans.init(getLoadContext());
41 trans.addDataFlavor('text/html');
42 var str =
43 Cc['@mozilla.org/supports-string;1'].createInstance(Ci.nsISupportsString);
44 var copytext = txt;
45 str.data = copytext;
46 trans.setTransferData("text/html",str);
47 if (!clip)
48 return false;
49 clip.setData(trans,null,clipid.kGlobalClipboard);
50 return true;
53 function readFromClipboard()
55 var clipid = Ci.nsIClipboard;
56 var clip =
57 Cc['@mozilla.org/widget/clipboard;1'].createInstance(clipid);
58 if (!clip)
59 return "";
60 var trans =
61 Cc['@mozilla.org/widget/transferable;1'].createInstance(Ci.nsITransferable);
62 if (!trans)
63 return "";
64 trans.init(getLoadContext());
65 trans.addDataFlavor('text/html');
66 clip.getData(trans, clipid.kGlobalClipboard, SpecialPowers.wrap(window).browsingContext.currentWindowContext);
67 var str = {};
68 trans.getTransferData("text/html",str);
69 if (str)
70 str = str.value.QueryInterface(Ci.nsISupportsString);
71 return str?.data;
74 function encodeHtmlEntities(s)
76 var result = '';
77 for (var i = 0; i < s.length; i++) {
78 var c = s.charAt(i);
79 result += {'<':'&lt;', '>':'&gt;', '&':'&amp;', '"':'&quot;'}[c] || c;
81 return result;
84 function initAndRunTests()
86 var source = '<p>Lorem ipsum</p>';
87 var expect = new RegExp('<html>.*charset=utf-8.*' + source + '.*</html>', 'im');
89 var result = copyToClipboard(source);
90 ok(result, "copied HTML data to system pasteboard");
92 result = readFromClipboard();
93 ok(expect.test(result), "data on system pasteboard is wrapped with charset metadata");
95 $("display").innerHTML =
96 '<em>source:</em> <pre>' + encodeHtmlEntities(source) + '</pre><br/>' +
97 '<em>result:</em> <pre>' + encodeHtmlEntities(result) + '</pre>';
101 </script>
102 </window>