mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-09 17:31:47 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
|
|
@ -0,0 +1,244 @@
|
|||
/* -*- 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';
|
||||
|
||||
const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
|
||||
|
||||
Cu.import('resource://gre/modules/XPCOMUtils.jsm');
|
||||
Cu.import('resource://gre/modules/Services.jsm');
|
||||
|
||||
const manager = Cc['@mozilla.org/presentation-device/manager;1']
|
||||
.getService(Ci.nsIPresentationDeviceManager);
|
||||
|
||||
function TestPresentationDevice() {}
|
||||
|
||||
|
||||
function TestPresentationControlChannel() {}
|
||||
|
||||
TestPresentationControlChannel.prototype = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIPresentationControlChannel]),
|
||||
sendOffer: function(offer) {},
|
||||
sendAnswer: function(answer) {},
|
||||
disconnect: function() {},
|
||||
launch: function() {},
|
||||
terminate: function() {},
|
||||
reconnect: function() {},
|
||||
set listener(listener) {},
|
||||
get listener() {},
|
||||
};
|
||||
|
||||
var testProvider = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIPresentationDeviceProvider]),
|
||||
|
||||
forceDiscovery: function() {
|
||||
},
|
||||
set listener(listener) {
|
||||
},
|
||||
get listener() {
|
||||
},
|
||||
};
|
||||
|
||||
const forbiddenRequestedUrl = 'http://example.com';
|
||||
var testDevice = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIPresentationDevice]),
|
||||
id: 'id',
|
||||
name: 'name',
|
||||
type: 'type',
|
||||
establishControlChannel: function(url, presentationId) {
|
||||
return null;
|
||||
},
|
||||
disconnect: function() {},
|
||||
isRequestedUrlSupported: function(requestedUrl) {
|
||||
return forbiddenRequestedUrl !== requestedUrl;
|
||||
},
|
||||
};
|
||||
|
||||
function addProvider() {
|
||||
Object.defineProperty(testProvider, 'listener', {
|
||||
configurable: true,
|
||||
set: function(listener) {
|
||||
Assert.strictEqual(listener, manager, 'listener setter is invoked by PresentationDeviceManager');
|
||||
delete testProvider.listener;
|
||||
run_next_test();
|
||||
},
|
||||
});
|
||||
manager.addDeviceProvider(testProvider);
|
||||
}
|
||||
|
||||
function forceDiscovery() {
|
||||
testProvider.forceDiscovery = function() {
|
||||
testProvider.forceDiscovery = function() {};
|
||||
Assert.ok(true, 'forceDiscovery is invoked by PresentationDeviceManager');
|
||||
run_next_test();
|
||||
};
|
||||
manager.forceDiscovery();
|
||||
}
|
||||
|
||||
function addDevice() {
|
||||
Services.obs.addObserver(function observer(subject, topic, data) {
|
||||
Services.obs.removeObserver(observer, topic);
|
||||
|
||||
let updatedDevice = subject.QueryInterface(Ci.nsIPresentationDevice);
|
||||
Assert.equal(updatedDevice.id, testDevice.id, 'expected device id');
|
||||
Assert.equal(updatedDevice.name, testDevice.name, 'expected device name');
|
||||
Assert.equal(updatedDevice.type, testDevice.type, 'expected device type');
|
||||
Assert.equal(data, 'add', 'expected update type');
|
||||
|
||||
Assert.ok(manager.deviceAvailable, 'device is available');
|
||||
|
||||
let devices = manager.getAvailableDevices();
|
||||
Assert.equal(devices.length, 1, 'expect 1 available device');
|
||||
|
||||
let device = devices.queryElementAt(0, Ci.nsIPresentationDevice);
|
||||
Assert.equal(device.id, testDevice.id, 'expected device id');
|
||||
Assert.equal(device.name, testDevice.name, 'expected device name');
|
||||
Assert.equal(device.type, testDevice.type, 'expected device type');
|
||||
|
||||
run_next_test();
|
||||
}, 'presentation-device-change', false);
|
||||
manager.QueryInterface(Ci.nsIPresentationDeviceListener).addDevice(testDevice);
|
||||
}
|
||||
|
||||
function updateDevice() {
|
||||
Services.obs.addObserver(function observer(subject, topic, data) {
|
||||
Services.obs.removeObserver(observer, topic);
|
||||
|
||||
let updatedDevice = subject.QueryInterface(Ci.nsIPresentationDevice);
|
||||
Assert.equal(updatedDevice.id, testDevice.id, 'expected device id');
|
||||
Assert.equal(updatedDevice.name, testDevice.name, 'expected device name');
|
||||
Assert.equal(updatedDevice.type, testDevice.type, 'expected device type');
|
||||
Assert.equal(data, 'update', 'expected update type');
|
||||
|
||||
Assert.ok(manager.deviceAvailable, 'device is available');
|
||||
|
||||
let devices = manager.getAvailableDevices();
|
||||
Assert.equal(devices.length, 1, 'expect 1 available device');
|
||||
|
||||
let device = devices.queryElementAt(0, Ci.nsIPresentationDevice);
|
||||
Assert.equal(device.id, testDevice.id, 'expected device id');
|
||||
Assert.equal(device.name, testDevice.name, 'expected name after device update');
|
||||
Assert.equal(device.type, testDevice.type, 'expected device type');
|
||||
|
||||
run_next_test();
|
||||
}, 'presentation-device-change', false);
|
||||
testDevice.name = 'updated-name';
|
||||
manager.QueryInterface(Ci.nsIPresentationDeviceListener).updateDevice(testDevice);
|
||||
}
|
||||
|
||||
function filterDevice() {
|
||||
let presentationUrls = Cc['@mozilla.org/array;1'].createInstance(Ci.nsIMutableArray);
|
||||
let url = Cc['@mozilla.org/supports-string;1'].createInstance(Ci.nsISupportsString);
|
||||
url.data = forbiddenRequestedUrl;
|
||||
presentationUrls.appendElement(url, false);
|
||||
let devices = manager.getAvailableDevices(presentationUrls);
|
||||
Assert.equal(devices.length, 0, 'expect 0 available device for example.com');
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
function sessionRequest() {
|
||||
let testUrl = 'http://www.example.org/';
|
||||
let testPresentationId = 'test-presentation-id';
|
||||
let testControlChannel = new TestPresentationControlChannel();
|
||||
Services.obs.addObserver(function observer(subject, topic, data) {
|
||||
Services.obs.removeObserver(observer, topic);
|
||||
|
||||
let request = subject.QueryInterface(Ci.nsIPresentationSessionRequest);
|
||||
|
||||
Assert.equal(request.device.id, testDevice.id, 'expected device');
|
||||
Assert.equal(request.url, testUrl, 'expected requesting URL');
|
||||
Assert.equal(request.presentationId, testPresentationId, 'expected presentation Id');
|
||||
|
||||
run_next_test();
|
||||
}, 'presentation-session-request', false);
|
||||
manager.QueryInterface(Ci.nsIPresentationDeviceListener)
|
||||
.onSessionRequest(testDevice, testUrl, testPresentationId, testControlChannel);
|
||||
}
|
||||
|
||||
function terminateRequest() {
|
||||
let testUrl = 'http://www.example.org/';
|
||||
let testPresentationId = 'test-presentation-id';
|
||||
let testControlChannel = new TestPresentationControlChannel();
|
||||
let testIsFromReceiver = true;
|
||||
Services.obs.addObserver(function observer(subject, topic, data) {
|
||||
Services.obs.removeObserver(observer, topic);
|
||||
|
||||
let request = subject.QueryInterface(Ci.nsIPresentationTerminateRequest);
|
||||
|
||||
Assert.equal(request.device.id, testDevice.id, 'expected device');
|
||||
Assert.equal(request.presentationId, testPresentationId, 'expected presentation Id');
|
||||
Assert.equal(request.isFromReceiver, testIsFromReceiver, 'expected isFromReceiver');
|
||||
|
||||
run_next_test();
|
||||
}, 'presentation-terminate-request', false);
|
||||
manager.QueryInterface(Ci.nsIPresentationDeviceListener)
|
||||
.onTerminateRequest(testDevice, testPresentationId,
|
||||
testControlChannel, testIsFromReceiver);
|
||||
}
|
||||
|
||||
function reconnectRequest() {
|
||||
let testUrl = 'http://www.example.org/';
|
||||
let testPresentationId = 'test-presentation-id';
|
||||
let testControlChannel = new TestPresentationControlChannel();
|
||||
Services.obs.addObserver(function observer(subject, topic, data) {
|
||||
Services.obs.removeObserver(observer, topic);
|
||||
|
||||
let request = subject.QueryInterface(Ci.nsIPresentationSessionRequest);
|
||||
|
||||
Assert.equal(request.device.id, testDevice.id, 'expected device');
|
||||
Assert.equal(request.url, testUrl, 'expected requesting URL');
|
||||
Assert.equal(request.presentationId, testPresentationId, 'expected presentation Id');
|
||||
|
||||
run_next_test();
|
||||
}, 'presentation-reconnect-request', false);
|
||||
manager.QueryInterface(Ci.nsIPresentationDeviceListener)
|
||||
.onReconnectRequest(testDevice, testUrl, testPresentationId, testControlChannel);
|
||||
}
|
||||
|
||||
function removeDevice() {
|
||||
Services.obs.addObserver(function observer(subject, topic, data) {
|
||||
Services.obs.removeObserver(observer, topic);
|
||||
|
||||
let updatedDevice = subject.QueryInterface(Ci.nsIPresentationDevice);
|
||||
Assert.equal(updatedDevice.id, testDevice.id, 'expected device id');
|
||||
Assert.equal(updatedDevice.name, testDevice.name, 'expected device name');
|
||||
Assert.equal(updatedDevice.type, testDevice.type, 'expected device type');
|
||||
Assert.equal(data, 'remove', 'expected update type');
|
||||
|
||||
Assert.ok(!manager.deviceAvailable, 'device is not available');
|
||||
|
||||
let devices = manager.getAvailableDevices();
|
||||
Assert.equal(devices.length, 0, 'expect 0 available device');
|
||||
|
||||
run_next_test();
|
||||
}, 'presentation-device-change', false);
|
||||
manager.QueryInterface(Ci.nsIPresentationDeviceListener).removeDevice(testDevice);
|
||||
}
|
||||
|
||||
function removeProvider() {
|
||||
Object.defineProperty(testProvider, 'listener', {
|
||||
configurable: true,
|
||||
set: function(listener) {
|
||||
Assert.strictEqual(listener, null, 'unsetListener is invoked by PresentationDeviceManager');
|
||||
delete testProvider.listener;
|
||||
run_next_test();
|
||||
},
|
||||
});
|
||||
manager.removeDeviceProvider(testProvider);
|
||||
}
|
||||
|
||||
add_test(addProvider);
|
||||
add_test(forceDiscovery);
|
||||
add_test(addDevice);
|
||||
add_test(updateDevice);
|
||||
add_test(filterDevice);
|
||||
add_test(sessionRequest);
|
||||
add_test(terminateRequest);
|
||||
add_test(reconnectRequest);
|
||||
add_test(removeDevice);
|
||||
add_test(removeProvider);
|
||||
|
||||
function run_test() {
|
||||
run_next_test();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue