зеркало из https://github.com/mozilla/gecko-dev.git
Bug 637644. Start layout on the new document we just created in nsGlobalWindow::SetOpenerScriptPrincipal, since if we don't do it here no one ever will. r=jst
This commit is contained in:
Родитель
5724fb0d38
Коммит
62372c8bce
|
@ -93,8 +93,10 @@ _TEST_FILES = \
|
||||||
test_bug590573.html \
|
test_bug590573.html \
|
||||||
file_bug590573_1.html \
|
file_bug590573_1.html \
|
||||||
file_bug590573_2.html \
|
file_bug590573_2.html \
|
||||||
|
test_bug598895.html \
|
||||||
test_bug634834.html \
|
test_bug634834.html \
|
||||||
file_bug634834.html \
|
file_bug634834.html \
|
||||||
|
test_bug637644.html \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
|
ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<!--
|
||||||
|
https://bugzilla.mozilla.org/show_bug.cgi?id=598895
|
||||||
|
-->
|
||||||
|
<head>
|
||||||
|
<title>Test for Bug 598895</title>
|
||||||
|
<script type="application/javascript" src="/MochiKit/packed.js"></script>
|
||||||
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||||
|
<script type="text/javascript" src="/tests/SimpleTest/WindowSnapshot.js"></script>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=598895">Mozilla Bug 598895</a>
|
||||||
|
<p id="display"></p>
|
||||||
|
<div id="content" style="display: none">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<pre id="test">
|
||||||
|
<script type="application/javascript">
|
||||||
|
|
||||||
|
/** Test for Bug 598895 **/
|
||||||
|
SimpleTest.waitForExplicitFinish();
|
||||||
|
|
||||||
|
addLoadEvent(function() {
|
||||||
|
var win1 = window.open();
|
||||||
|
win1.document.body.textContent = "Should show";
|
||||||
|
|
||||||
|
var windowsLoaded = 0;
|
||||||
|
|
||||||
|
window.onmessage = function (ev) {
|
||||||
|
is(ev.data, "loaded", "Message should be 'loaded'");
|
||||||
|
if (++windowsLoaded == 2) {
|
||||||
|
var one = snapshotWindow(win1);
|
||||||
|
var two = snapshotWindow(win2);
|
||||||
|
var three = snapshotWindow(win3);
|
||||||
|
win1.close();
|
||||||
|
win2.close();
|
||||||
|
win3.close();
|
||||||
|
ok(compareSnapshots(one, two, true)[0], "Popups should look identical");
|
||||||
|
ok(compareSnapshots(one, three, false)[0], "Popups should not look identical");
|
||||||
|
|
||||||
|
SimpleTest.finish();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var win2 = window.open("data:text/html,<script>window.onload = function() { opener.postMessage('loaded', '*'); }</" + "script><body>Should show</body>");
|
||||||
|
|
||||||
|
var win3 = window.open("data:text/html,<script>window.onload = function() { opener.postMessage('loaded', '*'); }</" + "script><body></body>");
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</pre>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,54 @@
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<!--
|
||||||
|
https://bugzilla.mozilla.org/show_bug.cgi?id=637644
|
||||||
|
-->
|
||||||
|
<head>
|
||||||
|
<title>Test for Bug 637644</title>
|
||||||
|
<script type="application/javascript" src="/MochiKit/packed.js"></script>
|
||||||
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||||
|
<script type="text/javascript" src="/tests/SimpleTest/WindowSnapshot.js"></script>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=637644">Mozilla Bug 637644</a>
|
||||||
|
<p id="display"></p>
|
||||||
|
<div id="content" style="display: none">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<pre id="test">
|
||||||
|
<script type="application/javascript">
|
||||||
|
|
||||||
|
/** Test for Bug 637644 **/
|
||||||
|
SimpleTest.waitForExplicitFinish();
|
||||||
|
|
||||||
|
addLoadEvent(function() {
|
||||||
|
var win1 = window.open("", "", "height=500,width=500");
|
||||||
|
win1.document.body.textContent = "Should show";
|
||||||
|
|
||||||
|
var windowsLoaded = 0;
|
||||||
|
|
||||||
|
window.onmessage = function (ev) {
|
||||||
|
is(ev.data, "loaded", "Message should be 'loaded'");
|
||||||
|
if (++windowsLoaded == 2) {
|
||||||
|
var one = snapshotWindow(win1);
|
||||||
|
var two = snapshotWindow(win2);
|
||||||
|
var three = snapshotWindow(win3);
|
||||||
|
win1.close();
|
||||||
|
win2.close();
|
||||||
|
win3.close();
|
||||||
|
ok(compareSnapshots(one, two, true)[0], "Popups should look identical");
|
||||||
|
ok(compareSnapshots(one, three, false)[0], "Popups should not look identical");
|
||||||
|
|
||||||
|
SimpleTest.finish();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var win2 = window.open("data:text/html,<script>window.onload = function() { opener.postMessage('loaded', '*'); }</" + "script><body>Should show</body>", "", "height=500,width=500");
|
||||||
|
|
||||||
|
var win3 = window.open("data:text/html,<script>window.onload = function() { opener.postMessage('loaded', '*'); }</" + "script><body></body>", "", "height=500,width=500");
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</pre>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1612,6 +1612,16 @@ nsGlobalWindow::SetOpenerScriptPrincipal(nsIPrincipal* aPrincipal)
|
||||||
nsCOMPtr<nsIDocShell_MOZILLA_2_0_BRANCH> ds(do_QueryInterface(GetDocShell()));
|
nsCOMPtr<nsIDocShell_MOZILLA_2_0_BRANCH> ds(do_QueryInterface(GetDocShell()));
|
||||||
ds->CreateAboutBlankContentViewer(aPrincipal);
|
ds->CreateAboutBlankContentViewer(aPrincipal);
|
||||||
mDoc->SetIsInitialDocument(PR_TRUE);
|
mDoc->SetIsInitialDocument(PR_TRUE);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIPresShell> shell;
|
||||||
|
GetDocShell()->GetPresShell(getter_AddRefs(shell));
|
||||||
|
|
||||||
|
if (shell && !shell->DidInitialReflow()) {
|
||||||
|
// Ensure that if someone plays with this document they will get
|
||||||
|
// layout happening.
|
||||||
|
nsRect r = shell->GetPresContext()->GetVisibleArea();
|
||||||
|
shell->InitialReflow(r.width, r.height);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче