Dactyloidae/dom/presentation/tests/mochitest/file_presentation_terminate.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>