summaryrefslogtreecommitdiffstats
path: root/dom/presentation/tests/mochitest/file_presentation_terminate.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/presentation/tests/mochitest/file_presentation_terminate.html')
-rw-r--r--dom/presentation/tests/mochitest/file_presentation_terminate.html104
1 files changed, 104 insertions, 0 deletions
diff --git a/dom/presentation/tests/mochitest/file_presentation_terminate.html b/dom/presentation/tests/mochitest/file_presentation_terminate.html
new file mode 100644
index 000000000..a26a44b90
--- /dev/null
+++ b/dom/presentation/tests/mochitest/file_presentation_terminate.html
@@ -0,0 +1,104 @@
+<!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>