mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 795520. Don't fail to return a computed CSS declaration just because the style change that will give us a presshell has not been processed yet. r=dbaron
Another, more risky, option would be to always return a declaration from getComputedStyle, even if we have no presshell, then just throw (after flushing, as needed) if people try to get style info for it just like we already do for declarations whose document loses a presshell. This might cause compat issues on sites that can deal with null but not exceptions, though. :(
This commit is contained in:
parent
7df123b830
commit
6a79d7f055
@ -8285,7 +8285,26 @@ nsGlobalWindow::GetComputedStyle(nsIDOMElement* aElt,
|
||||
mDocShell->GetPresShell(getter_AddRefs(presShell));
|
||||
|
||||
if (!presShell) {
|
||||
return NS_OK;
|
||||
// Try flushing frames on our parent in case there's a pending
|
||||
// style change that will create the presshell.
|
||||
nsGlobalWindow *parent =
|
||||
static_cast<nsGlobalWindow *>(GetPrivateParent());
|
||||
if (!parent) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
parent->FlushPendingNotifications(Flush_Frames);
|
||||
|
||||
// Might have killed mDocShell
|
||||
if (!mDocShell) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
mDocShell->GetPresShell(getter_AddRefs(presShell));
|
||||
|
||||
if (!presShell) {
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
nsCOMPtr<dom::Element> element = do_QueryInterface(aElt);
|
||||
|
@ -188,6 +188,7 @@ MOCHITEST_FILES = test_acid3_test46.html \
|
||||
test_bug732153.html \
|
||||
test_bug732209.html \
|
||||
bug732209-css.sjs \
|
||||
test_bug795520.html \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_FLEXBOX
|
||||
|
39
layout/style/test/test_bug795520.html
Normal file
39
layout/style/test/test_bug795520.html
Normal file
@ -0,0 +1,39 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=795520
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for Bug 795520</title>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.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=795520">Mozilla Bug 795520</a>
|
||||
<p id="display">
|
||||
<iframe id="f" style="display:none"></iframe>
|
||||
</p>
|
||||
<div id="content" style="display: none">
|
||||
|
||||
</div>
|
||||
<pre id="test">
|
||||
<script type="application/javascript">
|
||||
|
||||
/** Test for Bug 795520 **/
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
addLoadEvent(function() {
|
||||
doc = $("f").contentDocument;
|
||||
$("f").style.display = "";
|
||||
isnot(doc.defaultView.getComputedStyle(doc.body), null,
|
||||
"Should have computed style here");
|
||||
SimpleTest.finish();
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user