fune/testing/web-platform/tests/clipboard-apis/detached-iframe/writeText-readText-on-detached-iframe.https.html
Kagami Sascha Rosylight 52f9697770 Bug 1875837 - Make clipboard-read/write permission optional in clipboard WPT r=webdriver-reviewers,dom-core,edgar,whimboo
Blink is the only engine supporting it, and thus it should not be the WPT requirement.

Some tests still need the testing pref, and for now this patch gives the pref for such failing tests without modifying them, for simplicity sake. Modification can happen separately.

Differential Revision: https://phabricator.services.mozilla.com/D201999
2024-03-27 17:38:18 +00:00

40 lines
1.7 KiB
HTML

<!doctype html>
<meta charset=utf-8>
<title>navigator.clipboard readText and writeText on detached iframe</title>
<link rel='help' href='https://w3c.github.io/clipboard-apis/#async-clipboard-api'>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="../resources/user-activation.js"></script>
<iframe id="iframe"></iframe>
<script>
'use strict';
promise_test(async t => {
await tryGrantReadPermission();
await tryGrantWritePermission();
const iframe = document.getElementById('iframe');
await waitForUserActivation();
// Clipboard API must only be available in focused documents.
// reference: https://www.w3.org/TR/clipboard-apis/#privacy-async
iframe.focus();
const iframeClipboard = iframe.contentWindow.navigator.clipboard;
// Writing and reading should succeed on same-origin iframes.
const attachedWriteText = 'attached write text'
await iframeClipboard.writeText(attachedWriteText);
const attachedWriteResult = await iframeClipboard.readText();
assert_equals(attachedWriteResult, attachedWriteText,
'attached iframes should be able to readText and writeText normally');
iframe.parentNode.removeChild(iframe);
// Writing onto a detached iframe's clipboard should fail, but not crash.
const detachedWriteText = 'detached write text';
await iframeClipboard.writeText(detachedWriteText);
const readResultDetached = await iframeClipboard.readText();
assert_equals(readResultDetached, undefined,
'reading from detached iframes should output undefined');
}, 'Verify readText and writeText fails on detached iframe');
</script>