tor-browser

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

browser_screen_orientation_override.js (3709B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const PAGE_URL =
      7  "https://example.com/document-builder.sjs?html=<h1>Test orientation simulation</h1>";
      8 
      9 add_task(async function test_set_orientation_override() {
     10  const tab = BrowserTestUtils.addTab(gBrowser, PAGE_URL);
     11  const browser = gBrowser.getBrowserForTab(tab);
     12 
     13  await BrowserTestUtils.browserLoaded(browser);
     14 
     15  info("Get default orientation values");
     16  const defaultOrientationAngle = await getOrientationAngle(browser);
     17  const defaultOrientationType = await getOrientationType(browser);
     18 
     19  info("Set orientation override");
     20  const orientationAngleOverride1 = 180;
     21  const orientationTypeOverride1 = "portrait-primary";
     22  browser.browsingContext.setOrientationOverride(
     23    orientationTypeOverride1,
     24    orientationAngleOverride1
     25  );
     26 
     27  await assertOrientationOverride(
     28    browser,
     29    orientationAngleOverride1,
     30    orientationTypeOverride1
     31  );
     32 
     33  info("Set another orientation override");
     34  const orientationAngleOverride2 = 90;
     35  const orientationTypeOverride2 = "landscape-secondary";
     36  browser.browsingContext.setOrientationOverride(
     37    orientationTypeOverride2,
     38    orientationAngleOverride2
     39  );
     40 
     41  await assertOrientationOverride(
     42    browser,
     43    orientationAngleOverride2,
     44    orientationTypeOverride2
     45  );
     46 
     47  info("Reset orientation override");
     48  browser.browsingContext.resetOrientationOverride();
     49 
     50  await assertOrientationOverride(
     51    browser,
     52    defaultOrientationAngle,
     53    defaultOrientationType
     54  );
     55 
     56  BrowserTestUtils.removeTab(tab);
     57 });
     58 
     59 add_task(async function test_set_orientation_override_in_different_contexts() {
     60  const tab1 = BrowserTestUtils.addTab(gBrowser, PAGE_URL);
     61  const browser1 = gBrowser.getBrowserForTab(tab1);
     62 
     63  await BrowserTestUtils.browserLoaded(browser1);
     64 
     65  const tab2 = BrowserTestUtils.addTab(gBrowser, PAGE_URL);
     66  const browser2 = gBrowser.getBrowserForTab(tab2);
     67 
     68  await BrowserTestUtils.browserLoaded(browser2);
     69 
     70  info("Get default orientation values");
     71  const defaultOrientationAngle = await getOrientationAngle(browser1);
     72  const defaultOrientationType = await getOrientationType(browser1);
     73 
     74  info("Set orientation override to the first tab");
     75  const orientationAngleOverride = 180;
     76  const orientationTypeOverride = "portrait-primary";
     77  browser1.browsingContext.setOrientationOverride(
     78    orientationTypeOverride,
     79    orientationAngleOverride
     80  );
     81 
     82  await assertOrientationOverride(
     83    browser1,
     84    orientationAngleOverride,
     85    orientationTypeOverride
     86  );
     87 
     88  info("Make sure that in the second tab orientation is not overridden");
     89  await assertOrientationOverride(
     90    browser2,
     91    defaultOrientationAngle,
     92    defaultOrientationType
     93  );
     94 
     95  info("Reset orientation override in the first tab");
     96  browser1.browsingContext.resetOrientationOverride();
     97  await assertOrientationOverride(
     98    browser1,
     99    defaultOrientationAngle,
    100    defaultOrientationType
    101  );
    102 
    103  BrowserTestUtils.removeTab(tab1);
    104  BrowserTestUtils.removeTab(tab2);
    105 });
    106 
    107 async function assertOrientationOverride(
    108  browser,
    109  expectedAngleValue,
    110  expectedTypeValue
    111 ) {
    112  is(
    113    await getOrientationAngle(browser),
    114    expectedAngleValue,
    115    "screen.orientation.angle has expected value"
    116  );
    117  is(
    118    await getOrientationType(browser),
    119    expectedTypeValue,
    120    "screen.orientation.type has expected value"
    121  );
    122 }
    123 
    124 async function getOrientationAngle(browser) {
    125  return await SpecialPowers.spawn(
    126    browser,
    127    [],
    128    () => content.screen.orientation.angle
    129  );
    130 }
    131 
    132 async function getOrientationType(browser) {
    133  return await SpecialPowers.spawn(
    134    browser,
    135    [],
    136    () => content.screen.orientation.type
    137  );
    138 }