mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-27 10:07:15 +02:00
We only supported headless clipboard management in test-web. So when WPT tests the clipboard APIs, we would blindly try to access the Qt app, which does not exist. Note that the AppKit UI has no such restriction, as the NSPasteboard is accessible even without a GUI.
45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
// In order to use this function, please import testdriver.js and
|
|
// testdriver-vendor.js, and include a <body> element.
|
|
async function waitForUserActivation() {
|
|
if (window.opener) {
|
|
throw new Error(
|
|
"waitForUserActivation() only works in the top-level frame");
|
|
}
|
|
const loadedPromise = new Promise(resolve => {
|
|
if(document.readyState == 'complete') {
|
|
resolve();
|
|
return;
|
|
}
|
|
window.addEventListener('load', resolve, {once: true});
|
|
});
|
|
await loadedPromise;
|
|
|
|
const clickedPromise = new Promise(resolve => {
|
|
document.body.addEventListener('click', resolve, {once: true});
|
|
});
|
|
|
|
test_driver.click(document.body);
|
|
await clickedPromise;
|
|
}
|
|
|
|
async function trySetPermission(perm, state) {
|
|
try {
|
|
await test_driver.set_permission({ name: perm }, state)
|
|
} catch {
|
|
// This is expected, as clipboard permissions are not supported by every engine
|
|
// and also the set_permission. The permission is not required by such engines as
|
|
// they require user activation instead.
|
|
}
|
|
}
|
|
|
|
async function tryGrantReadPermission() {
|
|
await trySetPermission("clipboard-read", "granted");
|
|
}
|
|
|
|
async function tryGrantWritePermission() {
|
|
await trySetPermission("clipboard-write", "granted");
|
|
}
|
|
|