76 lines
2.5 KiB
HTML
76 lines
2.5 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=1812078
|
|
-->
|
|
<head>
|
|
<title>Test for Bug 1812078</title>
|
|
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
|
|
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script src="clipboard_helper.js"></script>
|
|
</head>
|
|
<body>
|
|
<p id="display"></p>
|
|
<div id="content" style="display: none"></div>
|
|
<pre id="test"></pre>
|
|
<script class="testbody" type="application/javascript">
|
|
|
|
function testClipboardOwner(aClipboardType, aAsync) {
|
|
let losingOwnership = false;
|
|
const clipboardOwner = {
|
|
QueryInterface: ChromeUtils.generateQI(["nsIClipboardOwner"]),
|
|
// nsIClipboardOwner
|
|
LosingOwnership() {
|
|
losingOwnership = true;
|
|
},
|
|
};
|
|
|
|
add_task(function test_clipboard_owner() {
|
|
info(`Test clipboard owner for type ${aClipboardType} ${aAsync ? "async" : ""}`);
|
|
|
|
// Setup clipboard owner.
|
|
writeRandomStringToClipboard("text/plain", aClipboardType, clipboardOwner, aAsync);
|
|
|
|
// Test should not lose ownership.
|
|
clipboardTypes.forEach(function(otherType) {
|
|
losingOwnership = false;
|
|
if (aClipboardType != otherType && clipboard.isClipboardTypeSupported(otherType)) {
|
|
// Test setting clipboard data.
|
|
writeRandomStringToClipboard("text/plain", otherType);
|
|
ok(!losingOwnership, `Should not lose ownership while setting data to type ${otherType}`);
|
|
|
|
// Test async setting clipboard data.
|
|
writeRandomStringToClipboard("text/plain", otherType, null, true);
|
|
ok(!losingOwnership, `Should not lose ownership while async setting data to type ${otherType}`);
|
|
}
|
|
});
|
|
|
|
// Test whether should lose ownership.
|
|
losingOwnership = false;
|
|
writeRandomStringToClipboard("text/plain", aClipboardType, clipboardOwner);
|
|
ok(losingOwnership, `Should lose ownership while setting data to type ${aClipboardType}`);
|
|
|
|
losingOwnership = false;
|
|
writeRandomStringToClipboard("text/plain", aClipboardType, null, true);
|
|
ok(losingOwnership, `Should lose ownership while async setting data to type ${aClipboardType}`);
|
|
|
|
// Clean clipboard data.
|
|
cleanupAllClipboard();
|
|
});
|
|
}
|
|
|
|
/** Test for Bug 1812078 */
|
|
clipboardTypes.forEach(function(testType) {
|
|
if (clipboard.isClipboardTypeSupported(testType)) {
|
|
// Test sync set clipboard data.
|
|
testClipboardOwner(testType, false);
|
|
|
|
// Test async set clipboard data.
|
|
testClipboardOwner(testType, true);
|
|
}
|
|
});
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|