chromium/third_party/blink/web_tests/http/tests/websocket/close-on-unload-reference-in-parent.html

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="/js-test-resources/js-test.js"></script>
</head>
<body>
<div id="description"></div>
<div id="console"></div>
<script type="text/javascript">
description("Test that WebSocket opened in iframe is closed when the iframe is unloaded even if the WebSocket is referred by the parent frame.");

window.jsTestIsAsync = true;

var frameDiv;
var closedSocket;
var closeCode;
document.childWebSocket = null;

document.wsUrl = "ws://127.0.0.1:8880/close-on-unload?p=close-on-unload-reference-in-parent.html";
var ws = new WebSocket(document.wsUrl);
ws.onopen = function()
{
    debug("PASS ws on main document is ready.");
    frameDiv = document.createElement("iframe");
    frameDiv.src = "resources/close-on-unload-iframe-reference-in-parent.html";
    document.body.appendChild(frameDiv);
    debug("PASS insert a iframe, where open ws called 'socket1'");
};
ws.onmessage = function(evt)
{
    var messageData = JSON.parse(evt.data);
    closedSocket = messageData.message;
    closeCode = messageData.closeCode;
    ws.close();
};
ws.onclose = function()
{
    shouldBe("closedSocket", '"socket1"');
    shouldBe("closeCode", '"1001"');
    shouldBe("document.childWebSocket.readyState", "3");
    finishJSTest();
};

document.iframeReady = function()
{
    shouldBeNonNull("document.childWebSocket");
    debug("PASS 'socket1' is sent to the server. unload the iframe. expect receiving 'socket1' on ws...");
    document.body.removeChild(frameDiv);
};

</script>
</body>
</html>