tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

async-unsanitized-plaintext-formats-write-read.tentative.https.html (2213B)


      1 <!doctype html>
      2 <meta charset="utf-8">
      3 <title>Async Clipboard unsanitized write -> Async Clipboard unsanitized read test</title>
      4 <link rel="help" href="https://w3c.github.io/clipboard-apis/#async-clipboard-api">
      5 <body>Body needed for test_driver.click()</body>
      6 <script src="/resources/testharness.js"></script>
      7 <script src="/resources/testharnessreport.js"></script>
      8 <script src="/resources/testdriver.js"></script>
      9 <script src="/resources/testdriver-vendor.js"></script>
     10 <script src="resources/user-activation.js"></script>
     11 <script>
     12 'use strict';
     13 
     14 // Writes a payload with custom content and checks to ensure the correct data
     15 // was written successfully.
     16 promise_test(async t => {
     17  await tryGrantReadPermission();
     18  await tryGrantWritePermission();
     19 
     20  const dataToWrite = 'Test text.';
     21  const format1 = 'web text/plain';
     22  const format2 = 'text/plain';
     23 
     24  const blobInput1 = new Blob([dataToWrite], {type: format1});
     25  const blobInput2 = new Blob([dataToWrite], {type: format2});
     26  // Blob types are automatically converted to lower-case.
     27  assert_equals(blobInput1.type, format1.toLowerCase());
     28  assert_equals(blobInput2.type, format2.toLowerCase());
     29  const clipboardItemInput = new ClipboardItem(
     30      {[format1]: blobInput1, [format2]: blobInput2});
     31  await waitForUserActivation();
     32  await navigator.clipboard.write([clipboardItemInput]);
     33 
     34  // Items should be readable on a system clipboard after custom format write.
     35  await waitForUserActivation();
     36  const clipboardItems = await navigator.clipboard.read();
     37  assert_equals(clipboardItems.length, 1);
     38  const clipboardItem = clipboardItems[0];
     39  assert_true(clipboardItem instanceof ClipboardItem);
     40 
     41  const blobOutput1 = await clipboardItem.getType(format1);
     42  assert_equals(blobOutput1.type, format1);
     43  const data1 = await (new Response(blobOutput1)).text();
     44  assert_equals(data1, dataToWrite);
     45 
     46  // These examples use native text formats, so these formats should be
     47  // accessible as text.
     48  await waitForUserActivation();
     49  const textOutput = await navigator.clipboard.readText();
     50  assert_equals(textOutput, dataToWrite);
     51 }, 'Verify write and read unsanitized content to the clipboard given standard and custom formats as input');
     52 </script>