<!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>