tor-browser

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

page-visibility.https.html (1655B)


      1 <!DOCTYPE html>
      2 <html>
      3 <body>
      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 <script src="/page-visibility/resources/window_state_context.js"></script>
      9 <script src="../resources/orientation-event-helpers.js"></script>
     10 <script>
     11 'use strict';
     12 
     13 promise_test(async (t) => {
     14  const helper = new SensorTestHelper(t, 'devicemotion');
     15  await helper.grantSensorsPermissions();
     16  await helper.initializeSensors();
     17 
     18  const motionData = generateMotionData(0, 0, 0,
     19                                        0, 0, 0,
     20                                        0, 0, 0);
     21 
     22  await helper.setData(motionData);
     23  const event = getExpectedMotionEvent(motionData);
     24  await waitForEvent(event);
     25 
     26  const {minimize, restore} = window_state_context(t);
     27  await minimize();
     28  assert_true(document.hidden);
     29 
     30  let hiddenEventPromise = new Promise((resolve, reject) => {
     31    window.addEventListener(
     32      'devicemotion',
     33      event => {
     34        if (document.hidden) {
     35          reject();
     36        } else {
     37          resolve();
     38        }
     39      },
     40      { once: true });
     41  });
     42 
     43  // devicemotion events fire every 16ms when active, so we sleep for a while
     44  // here to make sure we're not actually getting any events.
     45  await new Promise(resolve => { t.step_timeout(resolve, 100); });
     46  await restore();
     47  assert_false(document.hidden);
     48  return Promise.all([hiddenEventPromise, waitForEvent(event)]);
     49 }, 'Tests to check that devicemotion events are not fired when the page is not visible.');
     50 </script>
     51 </body>
     52 </html>