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:
Boris Zbarsky 2011-03-02 14:45:13 -05:00
Родитель 5724fb0d38
Коммит 62372c8bce
4 изменённых файлов: 120 добавлений и 0 удалений

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

@ -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);
}
} }
} }