2 <?xml-stylesheet type=
"text/css" href=
"chrome://global/skin"?>
3 <?xml-stylesheet type=
"text/css" href=
"chrome://mochikit/content/tests/SimpleTest/test.css"?>
5 https://bugzilla.mozilla.org/show_bug.cgi?id=466599
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">
15 <div id=
"content" style=
"display: none"></div>
19 <!-- test code goes here -->
20 <script class=
"testbody" type=
"application/javascript">
23 /** Test for Bug
466599 */
25 function getLoadContext() {
26 return window.docShell.QueryInterface(Ci.nsILoadContext);
29 function copyToClipboard(txt)
31 var clipid = Ci.nsIClipboard;
33 Cc['@mozilla.org/widget/clipboard;
1'].createInstance(clipid);
37 Cc['@mozilla.org/widget/transferable;
1'].createInstance(Ci.nsITransferable);
40 trans.init(getLoadContext());
41 trans.addDataFlavor('text/html');
43 Cc['@mozilla.org/supports-string;
1'].createInstance(Ci.nsISupportsString);
46 trans.setTransferData(
"text/html",str);
49 clip.setData(trans,null,clipid.kGlobalClipboard);
53 function readFromClipboard()
55 var clipid = Ci.nsIClipboard;
57 Cc['@mozilla.org/widget/clipboard;
1'].createInstance(clipid);
61 Cc['@mozilla.org/widget/transferable;
1'].createInstance(Ci.nsITransferable);
64 trans.init(getLoadContext());
65 trans.addDataFlavor('text/html');
66 clip.getData(trans, clipid.kGlobalClipboard, SpecialPowers.wrap(window).browsingContext.currentWindowContext);
68 trans.getTransferData(
"text/html",str);
70 str = str.value.QueryInterface(Ci.nsISupportsString);
74 function encodeHtmlEntities(s)
77 for (var i =
0; i < s.length; i++) {
79 result += {'<':'
<', '
>':'
>', '&':'
&', '
"':'"'}[c] || c;
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>';