mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-09 17:31:47 +09:00
Only disallow lazy frame construction for direct children of display: contents elements
This commit is contained in:
parent
2d005c9781
commit
fb9d5b9d39
4 changed files with 34 additions and 6 deletions
|
|
@ -7021,8 +7021,11 @@ nsCSSFrameConstructor::MaybeConstructLazily(Operation aOperation,
|
|||
nsIContent* aContainer,
|
||||
nsIContent* aChild)
|
||||
{
|
||||
// XXXmats no lazy frames for display:contents direct descendants yet
|
||||
// (Mozilla bug 979782).
|
||||
if (mPresShell->GetPresContext()->IsChrome() || !aContainer ||
|
||||
aContainer->IsInNativeAnonymousSubtree() || aContainer->IsXULElement()) {
|
||||
aContainer->IsInNativeAnonymousSubtree() || aContainer->IsXULElement() ||
|
||||
GetDisplayContentsStyleFor(aContainer)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -7056,6 +7059,10 @@ nsCSSFrameConstructor::MaybeConstructLazily(Operation aOperation,
|
|||
// ignore anonymous children (eg framesets) make this complicated. So we set
|
||||
// these two booleans if we encounter these situations and unset them if we
|
||||
// hit a node with a leaf frame.
|
||||
//
|
||||
// Also, it's fine if one of the nodes without primary frame is a display:
|
||||
// contents node except if it's the direct ancestor of the children we're
|
||||
// recreating frames for.
|
||||
bool noPrimaryFrame = false;
|
||||
bool needsFrameBitSet = false;
|
||||
#endif
|
||||
|
|
@ -7065,17 +7072,14 @@ nsCSSFrameConstructor::MaybeConstructLazily(Operation aOperation,
|
|||
if (content->GetPrimaryFrame() && content->GetPrimaryFrame()->IsLeaf()) {
|
||||
noPrimaryFrame = needsFrameBitSet = false;
|
||||
}
|
||||
if (!noPrimaryFrame && !content->GetPrimaryFrame()) {
|
||||
if (!noPrimaryFrame && !content->GetPrimaryFrame() &&
|
||||
!GetDisplayContentsStyleFor(content)) {
|
||||
noPrimaryFrame = true;
|
||||
}
|
||||
if (!needsFrameBitSet && content->HasFlag(NODE_NEEDS_FRAME)) {
|
||||
needsFrameBitSet = true;
|
||||
}
|
||||
#endif
|
||||
// XXXmats no lazy frames for display:contents descendants yet (bug 979782).
|
||||
if (GetDisplayContentsStyleFor(content)) {
|
||||
return false;
|
||||
}
|
||||
content->SetFlags(NODE_DESCENDANTS_NEED_FRAMES);
|
||||
content = content->GetFlattenedTreeParent();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
|
||||
<title>CSS Test reference - Bug 1338678</title>
|
||||
<div style="display: contents">
|
||||
<div id="element">PASS</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<link rel="author" title="Markus Stange" href="mailto:mstange@themasta.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-display/#box-generation">
|
||||
<title>Bug 1338678 - display:contents makes textContent disappear</title>
|
||||
<div style="display: contents">
|
||||
<div id="element"></div>
|
||||
</div>
|
||||
<script>
|
||||
window.onload = function() {
|
||||
document.body.offsetTop;
|
||||
var element = document.getElementById('element');
|
||||
element.textContent = "FAIL";
|
||||
element.textContent = "PASS";
|
||||
}
|
||||
</script>
|
||||
|
|
@ -24,5 +24,6 @@ skip pref(layout.css.display-contents.enabled,true) == display-contents-xbl-4.xu
|
|||
asserts(0-1) fuzzy-if(Android,8,3216) pref(layout.css.display-contents.enabled,true) == display-contents-fieldset.html display-contents-fieldset-ref.html # bug 1089223
|
||||
asserts(1) pref(layout.css.display-contents.enabled,true) == display-contents-xbl-5.xul display-contents-xbl-3-ref.xul # bug 1089223
|
||||
pref(layout.css.display-contents.enabled,true) == display-contents-list-item-child.html display-contents-list-item-child-ref.html
|
||||
pref(layout.css.display-contents.enabled,true) == display-contents-dyn-insert-text.html display-contents-dyn-insert-text-ref.html
|
||||
pref(layout.css.display-contents.enabled,true) == display-contents-writing-mode-1.html display-contents-writing-mode-1-ref.html
|
||||
pref(layout.css.display-contents.enabled,true) == display-contents-writing-mode-2.html display-contents-writing-mode-2-ref.html
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue