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 }