<!DOCTYPE html>
<title>"A WebSocket message has been received", with multiple globals in play</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/comms.html#feedback-from-the-protocol">
<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../websocket.sub.js"></script>

<!-- This is the entry global -->

<iframe src="support/incumbent.sub.html"></iframe>

<script>
"use strict";
setup({ explicit_done: true });

window.onload = function() {
    async_test(function(t) {
        frames[0].setupWebSocket("arraybuffer", t.step_func_done(function(relevantWindow, event) {
            assert_equals(event.constructor, relevantWindow.MessageEvent);
            assert_equals(event.data.constructor, relevantWindow.ArrayBuffer);
        }));
    }, "ArrayBuffer should be created in the relevant realm of the WebSocket");

    async_test(function(t) {
        frames[0].setupWebSocket("blob", t.step_func_done(function(relevantWindow, event) {
            assert_equals(event.constructor, relevantWindow.MessageEvent);
            assert_equals(event.data.constructor, relevantWindow.Blob);
        }));
    }, "Blob should be created in the relevant realm of the WebSocket");

    done();
};
</script>
