blob: c0efb32b5d21c9a018669fc1dba48a599a367c9f [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
<script src="file:///gen/third_party/blink/public/mojom/presentation/presentation.mojom.js"></script>
<script src="resources/presentation-service-mock.js"></script>
<button>click me</button>
<script>
var button = document.querySelector('button');
var receiverConnectionClosed = false;
var connection = null;
async_test(t => {
// This is receiving the user gesture and runs the callback.
waitForClick(() => {
new PresentationRequest("https://example.com/").start().then(
theConnection => {
connection = theConnection;
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.
w = window.open("resources/presentation-receiver-close-connection.html");
w.controllerConnectionPtr = presentationServiceMock.getControllerConnectionPtr();
w.receiverConnectionRequest = presentationServiceMock.getReceiverConnectionRequest();
w.shouldCallClose = false;
});
}, button);
window.addEventListener("message", t.step_func(e => {
if (e.data == "receiver connection closed") {
receiverConnectionClosed = true;
t.done();
} else if (e.data == "receiver connection ready") {
assert_not_equals(connection, null);
connection.close();
assert_equals(connection.state, "closed");
}
}));
}, "controller connection.close() should fire both controller's and receiver's onclose event handler");
</script>
</body>
</html>