forked from mirrors/gecko-dev
96 lines
2.8 KiB
JavaScript
96 lines
2.8 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/**
|
|
* Tests gBrowser#updateBrowserSharing
|
|
*/
|
|
add_task(async function testBrowserSharingStateSetter() {
|
|
const WEBRTC_TEST_STATE = {
|
|
camera: 0,
|
|
microphone: 1,
|
|
paused: false,
|
|
sharing: "microphone",
|
|
showMicrophoneIndicator: true,
|
|
showScreenSharingIndicator: "",
|
|
windowId: 0,
|
|
};
|
|
|
|
const WEBRTC_TEST_STATE2 = {
|
|
camera: 1,
|
|
microphone: 1,
|
|
paused: false,
|
|
sharing: "camera",
|
|
showCameraIndicator: true,
|
|
showMicrophoneIndicator: true,
|
|
showScreenSharingIndicator: "",
|
|
windowId: 1,
|
|
};
|
|
|
|
await BrowserTestUtils.withNewTab("https://example.com", async browser => {
|
|
let tab = gBrowser.selectedTab;
|
|
is(tab._sharingState, undefined, "No sharing state initially.");
|
|
ok(!tab.hasAttribute("sharing"), "No tab sharing attribute initially.");
|
|
|
|
// Set an active sharing state for webrtc
|
|
gBrowser.updateBrowserSharing(browser, { webRTC: WEBRTC_TEST_STATE });
|
|
Assert.deepEqual(
|
|
tab._sharingState,
|
|
{ webRTC: WEBRTC_TEST_STATE },
|
|
"Should have correct webRTC sharing state."
|
|
);
|
|
is(
|
|
tab.getAttribute("sharing"),
|
|
WEBRTC_TEST_STATE.sharing,
|
|
"Tab sharing attribute reflects webRTC sharing state."
|
|
);
|
|
|
|
// Set sharing state for geolocation
|
|
gBrowser.updateBrowserSharing(browser, { geo: true });
|
|
Assert.deepEqual(
|
|
tab._sharingState,
|
|
{
|
|
webRTC: WEBRTC_TEST_STATE,
|
|
geo: true,
|
|
},
|
|
"Should have sharing state for both webRTC and geolocation."
|
|
);
|
|
is(
|
|
tab.getAttribute("sharing"),
|
|
WEBRTC_TEST_STATE.sharing,
|
|
"Geolocation sharing doesn't update the tab sharing attribute."
|
|
);
|
|
|
|
// Update webRTC sharing state
|
|
gBrowser.updateBrowserSharing(browser, { webRTC: WEBRTC_TEST_STATE2 });
|
|
Assert.deepEqual(
|
|
tab._sharingState,
|
|
{ geo: true, webRTC: WEBRTC_TEST_STATE2 },
|
|
"Should have updated webRTC sharing state while maintaining geolocation state."
|
|
);
|
|
is(
|
|
tab.getAttribute("sharing"),
|
|
WEBRTC_TEST_STATE2.sharing,
|
|
"Tab sharing attribute reflects webRTC sharing state."
|
|
);
|
|
|
|
// Clear webRTC sharing state
|
|
gBrowser.updateBrowserSharing(browser, { webRTC: null });
|
|
Assert.deepEqual(
|
|
tab._sharingState,
|
|
{ geo: true, webRTC: null },
|
|
"Should only have sharing state for geolocation."
|
|
);
|
|
ok(
|
|
!tab.hasAttribute("sharing"),
|
|
"Ending webRTC sharing should remove tab sharing attribute."
|
|
);
|
|
|
|
// Clear geolocation sharing state
|
|
gBrowser.updateBrowserSharing(browser, { geo: null });
|
|
Assert.deepEqual(tab._sharingState, { geo: null, webRTC: null });
|
|
ok(
|
|
!tab.hasAttribute("sharing"),
|
|
"Tab sharing attribute should not be set."
|
|
);
|
|
});
|
|
});
|