blob: c6fb518309589bc8392377eab68f754d5fe623c0 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<button>click me</button>
<script type="module">
import {PresentationServiceMock, waitForClick} from './resources/presentation-service-mock.js';
const mock = new PresentationServiceMock();
const button = document.querySelector('button');
promise_test(async _ => {
let receiverConnectionClosed = false;
await waitForClick(button);
const connection =
await new PresentationRequest("https://example.com/").start();
connection.onclose = closeEvent => {
assert_equals(closeEvent.reason, "closed");
assert_equals(closeEvent.message, "");
assert_equals(connection.state, "closed");
};
// Open a receiver page and pass controller connection's
// controllerConnectionPtr and receiverConnectionRequest to it.
const w =
window.open("resources/presentation-receiver-close-connection.html");
w.controllerConnectionPtr = mock.getControllerConnectionPtr();
w.receiverConnectionRequest = mock.getReceiverConnectionRequest();
w.shouldCallClose = false;
return new Promise(resolve => {
window.addEventListener("message", e => {
if (e.data == "receiver connection closed") {
receiverConnectionClosed = true;
resolve();
} else if (e.data == "receiver connection ready") {
connection.close();
assert_equals(connection.state, "closed");
}
});
});
}, "controller connection.close() should fire both controller's and receiver's onclose event handler");
</script>
</body>
</html>