mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-29 18:58:40 +09:00
104 lines
2.8 KiB
HTML
104 lines
2.8 KiB
HTML
<!DOCTYPE HTML>
|
|
<!-- vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: -->
|
|
<html>
|
|
<head>
|
|
<meta charset='utf-8'>
|
|
<title>Test for B2G PresentationReceiver at receiver side</title>
|
|
</head>
|
|
<body>
|
|
<div id='content'></div>
|
|
<script type='application/javascript;version=1.7'>
|
|
|
|
'use strict';
|
|
|
|
function is(a, b, msg) {
|
|
if (a === b) {
|
|
alert('OK ' + msg);
|
|
} else {
|
|
alert('KO ' + msg + ' | reason: ' + a + ' != ' + b);
|
|
}
|
|
}
|
|
|
|
function ok(a, msg) {
|
|
alert((a ? 'OK ' : 'KO ') + msg);
|
|
}
|
|
|
|
function info(msg) {
|
|
alert('INFO ' + msg);
|
|
}
|
|
|
|
function command(name, data) {
|
|
alert('COMMAND ' + JSON.stringify({name: name, data: data}));
|
|
}
|
|
|
|
function finish() {
|
|
alert('DONE');
|
|
}
|
|
|
|
var connection;
|
|
|
|
function testConnectionAvailable() {
|
|
return new Promise(function(aResolve, aReject) {
|
|
info('Receiver: --- testConnectionAvailable ---');
|
|
ok(navigator.presentation, 'Receiver: navigator.presentation should be available.');
|
|
ok(navigator.presentation.receiver, 'Receiver: navigator.presentation.receiver should be available.');
|
|
|
|
navigator.presentation.receiver.connectionList
|
|
.then((aList) => {
|
|
is(aList.connections.length, 1, 'Should get one conncetion.');
|
|
connection = aList.connections[0];
|
|
ok(connection.id, 'Connection ID should be set: ' + connection.id);
|
|
is(connection.state, 'connected', 'Connection state at receiver side should be connected.');
|
|
aResolve();
|
|
})
|
|
.catch((aError) => {
|
|
ok(false, 'Receiver: Error occurred when getting the connection: ' + aError);
|
|
finish();
|
|
aReject();
|
|
});
|
|
});
|
|
}
|
|
|
|
function testConnectionReady() {
|
|
return new Promise(function(aResolve, aReject) {
|
|
info('Receiver: --- testConnectionReady ---');
|
|
connection.onconnect = function() {
|
|
connection.onconnect = null;
|
|
ok(false, 'Should not get |onconnect| event.')
|
|
aReject();
|
|
};
|
|
if (connection.state === 'connected') {
|
|
connection.onconnect = null;
|
|
is(connection.state, 'connected', 'Receiver: Connection state should become connected.');
|
|
aResolve();
|
|
}
|
|
});
|
|
}
|
|
|
|
function testConnectionTerminate() {
|
|
return new Promise(function(aResolve, aReject) {
|
|
info('Receiver: --- testConnectionTerminate ---');
|
|
connection.onterminate = function() {
|
|
connection.onterminate = null;
|
|
// Using window.alert at this stage will cause window.close() fail.
|
|
// Only trigger it if verdict fail.
|
|
if (connection.state !== 'terminated') {
|
|
is(connection.state, 'terminated', 'Receiver: Connection should be terminated.');
|
|
}
|
|
aResolve();
|
|
};
|
|
command('forward-command', JSON.stringify({ name: 'ready-to-terminate' }));
|
|
});
|
|
}
|
|
|
|
function runTests() {
|
|
testConnectionAvailable()
|
|
.then(testConnectionReady)
|
|
.then(testConnectionTerminate)
|
|
}
|
|
|
|
runTests();
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|