Bug 1384658 - Correctly account for openers that are the same as the parent window; r=qdot

This commit is contained in:
Ehsan Akhgari 2017-07-31 22:29:57 -04:00
Родитель 3ab0f8b30f
Коммит 35184e2a47
5 изменённых файлов: 83 добавлений и 1 удалений

Просмотреть файл

@ -1696,7 +1696,10 @@ WebSocketImpl::Init(JSContext* aCx,
return NS_ERROR_DOM_SECURITY_ERR;
}
MOZ_ASSERT(currentInnerWindow != innerWindow);
if (currentInnerWindow == innerWindow) {
// The opener may be the same outer window as the parent.
break;
}
}
innerWindow = currentInnerWindow;

Просмотреть файл

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html>
<script>
onload = function() {
function done(success) {
var bc = new BroadcastChannel("test_channel");
bc.postMessage({success:success});
bc.close();
}
try {
new WebSocket("ws://mochi.test:8888/tests/dom/base/test/file_websocket_basic");
done(true); // no hang!
} catch (e) {
done(false);
}
}
</script>
</html>

Просмотреть файл

@ -65,6 +65,7 @@ support-files =
file_bug1091883_frame.html
file_bug1091883_subframe.html
file_bug1091883_target.html
file_bug1384658.html
file_bug28293.sjs
file_bug326337.xml
file_bug326337_inner.html
@ -251,6 +252,7 @@ support-files =
file3_setting_opener.html
file4_setting_opener.html
PASS.html
window_bug1384658.html
[test_anchor_area_referrer.html]
[test_anchor_area_referrer_changing.html]
@ -621,6 +623,8 @@ skip-if = toolkit == 'android'
[test_bug1314032.html]
[test_bug1318303.html]
[test_bug1375050.html]
[test_bug1384658.html]
skip-if = toolkit == 'android'
[test_caretPositionFromPoint.html]
[test_change_policy.html]
[test_clearTimeoutIntervalNoArg.html]

Просмотреть файл

@ -0,0 +1,37 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1384658
-->
<head>
<meta charset="utf-8">
<title>Test for Bug 1384658</title>
<script type="application/javascript" 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 **/
SimpleTest.waitForExplicitFinish();
var win = window.open("http://example.com/tests/dom/base/test/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();
};
</script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1384658">Mozilla Bug 1384658</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
</pre>
</body>
</html>

Просмотреть файл

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html>
<head>
<script>
onload = function() {
if (window.location.search == "") {
window.open("window_bug1384658.html?opened", "_top", "");
} else {
var iframeURL = "http://mochi.test:8888/tests/dom/base/test/file_bug1384658.html";
var iframe = document.createElement("iframe");
iframe.src = iframeURL;
document.body.appendChild(iframe);
}
};
</script>
</head>
<body>
</body>
</html>