tor-browser

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

wakelock-document-hidden.https.html (1971B)


      1 <!DOCTYPE html>
      2 <html>
      3 <title>Screen wake locks respect page visibility changes</title>
      4 <link rel="help" href="https://w3c.github.io/screen-wake-lock/#handling-document-loss-of-visibility">
      5 <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="/page-visibility/resources/window_state_context.js"></script>
     11 <script>
     12 'use strict';
     13 
     14 promise_test(async t => {
     15  await test_driver.set_permission({ name: 'screen-wake-lock' }, 'granted');
     16 
     17  const {minimize, restore} = window_state_context(t);
     18  await minimize();
     19 
     20  assert_true(document.hidden);
     21  await promise_rejects_dom(t, "NotAllowedError", navigator.wakeLock.request('screen'),
     22      "new screen locks are not allowed when the page is not visible");
     23 }, "navigator.wakeLock.request('screen') fails when the document is hidden");
     24 
     25 promise_test(async t => {
     26  await test_driver.set_permission({ name: 'screen-wake-lock' }, 'granted');
     27 
     28  const { minimize, restore } = window_state_context(t);
     29 
     30  const screenLock1 = await navigator.wakeLock.request('screen');
     31  const screenLock2 = await navigator.wakeLock.request('screen');
     32 
     33  assert_false(screenLock1.released, "The released attribute is initially false");
     34  assert_false(screenLock2.released, "The released attribute is initially false");
     35 
     36  const wait1 = new EventWatcher(t, screenLock1, 'release').wait_for('release');
     37  const wait2 = new EventWatcher(t, screenLock2, 'release').wait_for('release');
     38 
     39  await minimize();
     40  assert_true(document.hidden);
     41 
     42  await Promise.all([wait1, wait2]);
     43 
     44  assert_true(screenLock1.released, "The released attribute is true after the lock is released");
     45  assert_true(screenLock2.released, "The released attribute is true after the lock is released");
     46 }, "Screen wake locks are released when the document the page is hidden");
     47 </script>
     48 </body>
     49 </html>