зеркало из https://github.com/mozilla/gecko-dev.git
148 строки
4.2 KiB
HTML
148 строки
4.2 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Test for B2G PresentationReceiver at receiver side (OOP)</title>
|
|
</head>
|
|
<body>
|
|
<div id="content"></div>
|
|
<script type="application/javascript;version=1.7">
|
|
|
|
"use strict";
|
|
|
|
function is(a, b, msg) {
|
|
alert((a === b ? 'OK ' : 'KO ') + msg);
|
|
}
|
|
|
|
function ok(a, msg) {
|
|
alert((a ? 'OK ' : 'KO ') + msg);
|
|
}
|
|
|
|
function info(msg) {
|
|
alert('INFO ' + msg);
|
|
}
|
|
|
|
function command(msg) {
|
|
alert('COMMAND ' + JSON.stringify(msg));
|
|
}
|
|
|
|
function finish() {
|
|
alert('DONE');
|
|
}
|
|
|
|
var connection;
|
|
|
|
function testConnectionAvailable() {
|
|
return new Promise(function(aResolve, aReject) {
|
|
ok(navigator.presentation, "navigator.presentation should be available in OOP receiving pages.");
|
|
ok(navigator.presentation.receiver, "navigator.presentation.receiver should be available in OOP receiving pages.");
|
|
|
|
navigator.presentation.receiver.connectionList.then(
|
|
function(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();
|
|
},
|
|
function(aError) {
|
|
ok(false, "Error occurred when getting the connection list: " + aError);
|
|
finish();
|
|
aReject();
|
|
}
|
|
);
|
|
command({ name: 'trigger-incoming-offer' });
|
|
});
|
|
}
|
|
|
|
function testDefauleRequestIsNull() {
|
|
return new Promise(function(aResolve, aReject) {
|
|
navigator.presentation.defaultRequest = new PresentationRequest("http://example.com");
|
|
if (navigator.presentation.defaultRequest === null) {
|
|
ok(true, "defaultRequest should be null.");
|
|
aResolve();
|
|
}
|
|
else {
|
|
ok(false, "defaultRequest should be null.");
|
|
aReject();
|
|
}
|
|
});
|
|
}
|
|
|
|
function testConnectionAvailableSameOriginInnerIframe() {
|
|
return new Promise(function(aResolve, aReject) {
|
|
var iframe = document.createElement('iframe');
|
|
iframe.setAttribute('src', './file_presentation_receiver_inner_iframe.html');
|
|
document.body.appendChild(iframe);
|
|
|
|
aResolve();
|
|
});
|
|
}
|
|
|
|
function testConnectionUnavailableDiffOriginInnerIframe() {
|
|
return new Promise(function(aResolve, aReject) {
|
|
var iframe = document.createElement('iframe');
|
|
iframe.setAttribute('src', 'http://example.com/tests/dom/presentation/tests/mochitest/file_presentation_non_receiver_inner_iframe.html');
|
|
document.body.appendChild(iframe);
|
|
|
|
aResolve();
|
|
});
|
|
}
|
|
|
|
function testConnectionListSameObject() {
|
|
return new Promise(function(aResolve, aReject) {
|
|
is(navigator.presentation.receiver.connectionList, navigator.presentation.receiver.connectionList, "The promise should be the same object.");
|
|
var promise = navigator.presentation.receiver.connectionList.then(
|
|
function(aList) {
|
|
is(connection, aList.connections[0], "The connection from list and the one from |connectionavailable| event should be the same.");
|
|
aResolve();
|
|
},
|
|
function(aError) {
|
|
ok(false, "Error occurred when getting the connection list: " + aError);
|
|
finish();
|
|
aReject();
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function testIncomingMessage() {
|
|
return new Promise(function(aResolve, aReject) {
|
|
const incomingMessage = "test incoming message";
|
|
|
|
connection.addEventListener('message', function messageHandler(aEvent) {
|
|
connection.removeEventListener('message', messageHandler);
|
|
is(aEvent.data, incomingMessage, "An incoming message should be received.");
|
|
aResolve();
|
|
});
|
|
|
|
command({ name: 'trigger-incoming-message',
|
|
data: incomingMessage });
|
|
});
|
|
}
|
|
|
|
function testCloseConnection() {
|
|
return new Promise(function(aResolve, aReject) {
|
|
connection.onclose = function() {
|
|
connection.onclose = null;
|
|
is(connection.state, "closed", "Connection should be closed.");
|
|
aResolve();
|
|
};
|
|
|
|
connection.close();
|
|
});
|
|
}
|
|
|
|
testConnectionAvailable().
|
|
then(testDefauleRequestIsNull).
|
|
then(testConnectionAvailableSameOriginInnerIframe).
|
|
then(testConnectionUnavailableDiffOriginInnerIframe).
|
|
then(testConnectionListSameObject).
|
|
then(testIncomingMessage).
|
|
then(testCloseConnection).
|
|
then(finish);
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|