tor-browser

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

propagate-user-activation-from-opener.https.html (3698B)


      1 <!DOCTYPE html>
      2 <title>Test that a user activation in window that owns a document picture-in-picture window is usable in the
      3  document picture-in-picture window</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="/resources/testdriver.js"></script>
      7 <script src="/resources/testdriver-vendor.js"></script>
      8 <iframe id="cross-origin-iframe" src="https://{{hosts[alt][www]}}:{{ports[https][0]}}/common/blank.html"></iframe>
      9 <body>
     10 <script>
     11 promise_test(async (t) => {
     12  await test_driver.bless('request PiP window');
     13  const pipWindow = await documentPictureInPicture.requestWindow();
     14 
     15  assert_false(navigator.userActivation.isActive, 'the opener should initially not have user activation');
     16  assert_false(pipWindow.navigator.userActivation.isActive, 'the PiP window should initially not have user activation');
     17 
     18  // Activating this window should also activate the picture-in-picture window.
     19  await test_driver.bless('activate opener window');
     20  assert_true(navigator.userActivation.isActive, 'the opener should be activated');
     21  assert_true(pipWindow.navigator.userActivation.isActive, 'the PiP window should be activated when the opener is activated');
     22 
     23  // Consuming activation in the opener should also consume it in the picture-in-picture window.
     24  window.open().close();
     25  assert_false(navigator.userActivation.isActive, 'the opener should no longer be active once it consumes activation');
     26  assert_false(pipWindow.navigator.userActivation.isActive, 'the PiP window should no longer be active once the opener consumes activation');
     27 }, 'user activation propagates from opener to PiP');
     28 
     29 promise_test(async (t) => {
     30  await test_driver.bless('request PiP window');
     31  const pipWindow = await documentPictureInPicture.requestWindow();
     32 
     33  assert_false(navigator.userActivation.isActive, 'opener initially not active');
     34  assert_false(pipWindow.navigator.userActivation.isActive, 'PiP initially not active');
     35 
     36  const ifr = document.getElementById("cross-origin-iframe");
     37  await test_driver.bless('activate cross-origin iframe', null, ifr.contentWindow);
     38 
     39  assert_true(pipWindow.navigator.userActivation.isActive, 'activation propagated to PiP');
     40 
     41  window.open().close();
     42 
     43  assert_false(navigator.userActivation.isActive, 'activation was consumed in opener');
     44  assert_false(pipWindow.navigator.userActivation.isActive, 'activation was consumed in PiP');
     45 
     46 }, 'user activation propagates from cross-origin iframe in opener to PiP');
     47 
     48 promise_test(async (t) => {
     49  await test_driver.bless('request PiP window');
     50  const pipWindow = await documentPictureInPicture.requestWindow();
     51 
     52  const ifr = pipWindow.document.createElement("iframe");
     53  pipWindow.document.body.append(ifr);
     54 
     55  assert_false(navigator.userActivation.isActive, 'opener initially not active');
     56  assert_false(pipWindow.navigator.userActivation.isActive, 'PiP initially not active');
     57  assert_false(ifr.contentWindow.navigator.userActivation.isActive, 'iframe in PiP initially not active');
     58 
     59  await test_driver.bless('activate opener window');
     60 
     61  assert_true(pipWindow.navigator.userActivation.isActive, 'activation propagated to PiP');
     62  assert_true(ifr.contentWindow.navigator.userActivation.isActive, 'activation propagated to iframe in PiP');
     63 
     64  ifr.contentWindow.open().close();
     65 
     66  assert_false(navigator.userActivation.isActive, 'activation was consumed in opener');
     67  assert_false(pipWindow.navigator.userActivation.isActive, 'activation was consumed in PiP');
     68  assert_false(ifr.contentWindow.navigator.userActivation.isActive, 'activation was consumed in iframe in PiP');
     69 }, 'user activation propagates from opener to iframe PiP');
     70 </script>