<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1384658
-->
<head>
  <meta charset="utf-8">
  <title>Test for Bug 1384658</title>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
  <script type="application/javascript">

  /** Test for Bug 1384658 **/

function test_frameset() {
  var bc = new BroadcastChannel("test_channel");
  bc.postMessage("go");
  bc.onmessage = ev => {
    ok(ev.data.success, "We didn't hang");
    bc.close();
    test_window();
  };
}

function test_window() {
  var win = window.open("http://example.com/tests/dom/websocket/tests/window_bug1384658.html",
                        "_blank", "width=100,height=100");
  var bc = new BroadcastChannel("test_channel");
  bc.onmessage = ev => {
    ok(ev.data.success, "We didn't hang");
    bc.close();
    win.close();
    SimpleTest.finish();
  };
}

SimpleTest.waitForExplicitFinish();
// Use nsICookieService.BEHAVIOR_REJECT_TRACKER to not partition BroadcastChannel
// by extra first-party domain information.
SpecialPowers.pushPrefEnv({
  set: [
    ["network.cookie.cookieBehavior", 4],
    // disable third-party storage isolation so the test works as expected
    ["privacy.partition.always_partition_third_party_non_cookie_storage", false],
    ["dom.security.https_first", false]
  ],
}, test_frameset);

  </script>
</head>
<frameset id="frame_set" cols="25%,75%" frameborder="yes" border="5" bordercolor="#008800">
  <frame id="test_frame" name="test_frame" src="frame_bug1384658.html" marginwidth="20" marginheight="20">
</frameset>
</html>
