tor-browser

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

user-activation.js (1572B)


      1 'use strict';
      2 
      3 // In order to use this function, please import testdriver.js and
      4 // testdriver-vendor.js, and include a <body> element.
      5 async function waitForUserActivation() {
      6  if (window.opener) {
      7    throw new Error(
      8        "waitForUserActivation() only works in the top-level frame");
      9  }
     10  const loadedPromise = new Promise(resolve => {
     11    if(document.readyState == 'complete') {
     12      resolve();
     13      return;
     14    }
     15    window.addEventListener('load', resolve, {once: true});
     16  });
     17  await loadedPromise;
     18 
     19  const clickedPromise = new Promise(resolve => {
     20    document.body.addEventListener('click', resolve, {once: true});
     21  });
     22 
     23  test_driver.click(document.body);
     24  await clickedPromise;
     25 }
     26 
     27 async function trySetPermission(perm, state) {
     28  try {
     29    await test_driver.set_permission({ name: perm }, state)
     30  } catch {
     31    // This is expected, as clipboard permissions are not supported by every engine
     32    // and also the set_permission. The permission is not required by such engines as
     33    // they require user activation instead.
     34  }
     35 }
     36 
     37 async function tryGrantReadPermission() {
     38  await trySetPermission("clipboard-read", "granted");
     39 }
     40 
     41 async function tryGrantWritePermission() {
     42  await trySetPermission("clipboard-write", "granted");
     43 }
     44 
     45 async function sendPasteShortcutKey() {
     46  const modifier = navigator.platform.includes("Mac") ? "\uE03d" // META
     47                                                      : "\uE009"; // CONTROL
     48  await new test_driver.Actions()
     49    .keyDown(modifier)
     50    .keyDown("v")
     51    .keyUp("v")
     52    .keyUp(modifier)
     53    .send();
     54 }