diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /dom/presentation/tests/mochitest/PresentationDeviceInfoChromeScript.js | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/presentation/tests/mochitest/PresentationDeviceInfoChromeScript.js')
-rw-r--r-- | dom/presentation/tests/mochitest/PresentationDeviceInfoChromeScript.js | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/dom/presentation/tests/mochitest/PresentationDeviceInfoChromeScript.js b/dom/presentation/tests/mochitest/PresentationDeviceInfoChromeScript.js new file mode 100644 index 0000000000..83f8965b03 --- /dev/null +++ b/dom/presentation/tests/mochitest/PresentationDeviceInfoChromeScript.js @@ -0,0 +1,150 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ +"use strict"; + +/* eslint-env mozilla/frame-script */ + +const { XPCOMUtils } = ChromeUtils.import( + "resource://gre/modules/XPCOMUtils.jsm" +); + +const manager = Cc["@mozilla.org/presentation-device/manager;1"].getService( + Ci.nsIPresentationDeviceManager +); + +var testProvider = { + QueryInterface: ChromeUtils.generateQI(["nsIPresentationDeviceProvider"]), + forceDiscovery() { + sendAsyncMessage("force-discovery"); + }, + listener: null, +}; + +var testDevice = { + QueryInterface: ChromeUtils.generateQI(["nsIPresentationDevice"]), + establishControlChannel() { + return null; + }, + disconnect() {}, + isRequestedUrlSupported(requestedUrl) { + return true; + }, + id: null, + name: null, + type: null, + listener: null, +}; + +var testDevice1 = { + QueryInterface: ChromeUtils.generateQI(["nsIPresentationDevice"]), + id: "dummyid", + name: "dummyName", + type: "dummyType", + establishControlChannel(url, presentationId) { + return null; + }, + disconnect() {}, + isRequestedUrlSupported(requestedUrl) { + return true; + }, +}; + +var testDevice2 = { + QueryInterface: ChromeUtils.generateQI(["nsIPresentationDevice"]), + id: "dummyid", + name: "dummyName", + type: "dummyType", + establishControlChannel(url, presentationId) { + return null; + }, + disconnect() {}, + isRequestedUrlSupported(requestedUrl) { + return true; + }, +}; + +var mockedDeviceWithoutSupportedURL = { + QueryInterface: ChromeUtils.generateQI(["nsIPresentationDevice"]), + id: "dummyid", + name: "dummyName", + type: "dummyType", + establishControlChannel(url, presentationId) { + return null; + }, + disconnect() {}, + isRequestedUrlSupported(requestedUrl) { + return false; + }, +}; + +var mockedDeviceSupportHttpsURL = { + QueryInterface: ChromeUtils.generateQI(["nsIPresentationDevice"]), + id: "dummyid", + name: "dummyName", + type: "dummyType", + establishControlChannel(url, presentationId) { + return null; + }, + disconnect() {}, + isRequestedUrlSupported(requestedUrl) { + if (requestedUrl.includes("https://")) { + return true; + } + return false; + }, +}; + +addMessageListener("setup", function() { + manager.addDeviceProvider(testProvider); + + sendAsyncMessage("setup-complete"); +}); + +addMessageListener("trigger-device-add", function(device) { + testDevice.id = device.id; + testDevice.name = device.name; + testDevice.type = device.type; + manager.addDevice(testDevice); +}); + +addMessageListener("trigger-add-unsupport-url-device", function() { + manager.addDevice(mockedDeviceWithoutSupportedURL); +}); + +addMessageListener("trigger-add-multiple-devices", function() { + manager.addDevice(testDevice1); + manager.addDevice(testDevice2); +}); + +addMessageListener("trigger-add-https-devices", function() { + manager.addDevice(mockedDeviceSupportHttpsURL); +}); + +addMessageListener("trigger-device-update", function(device) { + testDevice.id = device.id; + testDevice.name = device.name; + testDevice.type = device.type; + manager.updateDevice(testDevice); +}); + +addMessageListener("trigger-device-remove", function() { + manager.removeDevice(testDevice); +}); + +addMessageListener("trigger-remove-unsupported-device", function() { + manager.removeDevice(mockedDeviceWithoutSupportedURL); +}); + +addMessageListener("trigger-remove-multiple-devices", function() { + manager.removeDevice(testDevice1); + manager.removeDevice(testDevice2); +}); + +addMessageListener("trigger-remove-https-devices", function() { + manager.removeDevice(mockedDeviceSupportHttpsURL); +}); + +addMessageListener("teardown", function() { + manager.removeDeviceProvider(testProvider); +}); |