1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const clipboard = SpecialPowers.Services.clipboard;
const clipboardTypes = [
clipboard.kGlobalClipboard,
clipboard.kSelectionClipboard,
clipboard.kFindClipboard,
clipboard.kSelectionCache,
];
function cleanupAllClipboard() {
clipboardTypes.forEach(function (type) {
if (clipboard.isClipboardTypeSupported(type)) {
info(`cleanup clipboard ${type}`);
clipboard.emptyClipboard(type);
}
});
}
function generateRandomString() {
return "random number: " + Math.random();
}
function writeStringToClipboard(
aStr,
aFlavor,
aClipboardType,
aClipboardOwner = null,
aAsync = false
) {
let trans = Cc["@mozilla.org/widget/transferable;1"].createInstance(
Ci.nsITransferable
);
trans.init(null);
trans.addDataFlavor(aFlavor);
let supportsStr = Cc["@mozilla.org/supports-string;1"].createInstance(
Ci.nsISupportsString
);
supportsStr.data = aStr;
trans.setTransferData(aFlavor, supportsStr);
if (aAsync) {
let request = clipboard.asyncSetData(aClipboardType);
request.setData(trans, aClipboardOwner);
return;
}
clipboard.setData(trans, aClipboardOwner, aClipboardType);
}
function writeRandomStringToClipboard(
aFlavor,
aClipboardType,
aClipboardOwner = null,
aAsync = false
) {
let randomString = generateRandomString();
writeStringToClipboard(
randomString,
aFlavor,
aClipboardType,
aClipboardOwner,
aAsync
);
return randomString;
}
function getClipboardData(aFlavor, aClipboardType) {
var trans = Cc["@mozilla.org/widget/transferable;1"].createInstance(
Ci.nsITransferable
);
trans.init(null);
trans.addDataFlavor(aFlavor);
clipboard.getData(trans, aClipboardType);
var data = {};
trans.getTransferData(aFlavor, data);
return data.value.QueryInterface(SpecialPowers.Ci.nsISupportsString).data;
}
|