tor-browser

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

minimize.html (2378B)


      1 <!DOCTYPE HTML>
      2 <title>Test different scenarios of how browser interactions are reflected by page visibility</title>
      3 <link rel="author" title="Noam Rosenthal"  href="mailto:noam@webkit.org">
      4 <link rel="help" href="https://www.w3.org/TR/page-visibility-2/">
      5 <meta name="timeout" content="long">
      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/window_state_context.js"></script>
     11 <script>
     12 
     13 const iframePath = 'resources/blank_page_green.html'
     14 
     15 promise_test(async t => {
     16    const {minimize, restore} = window_state_context(t);
     17    assert_equals(document.visibilityState, "visible");
     18    assert_equals(document.hidden, false);
     19    await minimize();
     20    assert_equals(document.visibilityState, "hidden");
     21    assert_equals(document.hidden, true);
     22    await restore()
     23    assert_equals(document.visibilityState, "visible");
     24    assert_equals(document.hidden, false);
     25 }, "visibilityState & hidden should be affected by window being minimized/restored");
     26 
     27 promise_test(async t => {
     28    const {minimize, restore} = window_state_context(t);
     29    const events = [];
     30    const callback = () => events.push(document.visibilityState);
     31    document.addEventListener('visibilitychange', callback);
     32    t.add_cleanup(() => document.removeEventListener('visibilitychange', callback));
     33    await minimize();
     34    await restore();
     35    assert_array_equals(events, ['hidden', 'visible']);
     36 }, "visibilitychange event should be fired when minimized/restored")
     37 
     38 promise_test(async t => {
     39    const {minimize, restore} = window_state_context(t);
     40    const events = [];
     41    const iframe = document.createElement('iframe');
     42    iframe.src = iframePath;
     43    document.body.appendChild(iframe);
     44    t.add_cleanup(() => iframe.remove());
     45    await new Promise(resolve => iframe.onload = resolve);
     46    const callback = () => events.push(iframe.contentWindow.document.visibilityState);
     47    iframe.contentWindow.addEventListener('visibilitychange', callback);
     48    await minimize();
     49    await restore();
     50    iframe.contentWindow.removeEventListener('visibilitychange', callback);
     51    assert_array_equals(events, ['hidden', 'visible']);
     52 }, "iframe should receive visibility events when top level window is shown/hidden");
     53 </script>