Bug 1381017 - Set NODE_DESCENDANTS_NEED_FRAMES from flatten tree parent. r=emilio,tnikkel

MozReview-Commit-ID: 3CBP8vc6OxB

--HG--
extra : rebase_source : edefbf78c564dc328b265496044171a71c77fb2f
This commit is contained in:
Ting-Yu Lin 2017-07-17 11:31:31 +08:00
parent c62cf1bde1
commit b87b2c1649
3 changed files with 16 additions and 12 deletions

View File

@ -7201,7 +7201,7 @@ nsCSSFrameConstructor::MaybeConstructLazily(Operation aOperation,
// tree.
// Walk up the tree setting the NODE_DESCENDANTS_NEED_FRAMES bit as we go.
nsIContent* content = aContainer;
nsIContent* content = aChild->GetFlattenedTreeParent();
#ifdef DEBUG
// If we hit a node with no primary frame, or the NODE_NEEDS_FRAME bit set
@ -7210,6 +7210,9 @@ nsCSSFrameConstructor::MaybeConstructLazily(Operation aOperation,
// these two booleans if we encounter these situations and unset them if we
// hit a node with a leaf frame.
//
// It's fine if one of node without primary frame is in a display:none
// subtree.
//
// 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.
@ -7222,9 +7225,10 @@ nsCSSFrameConstructor::MaybeConstructLazily(Operation aOperation,
if (content->GetPrimaryFrame() && content->GetPrimaryFrame()->IsLeaf()) {
noPrimaryFrame = needsFrameBitSet = false;
}
if (!noPrimaryFrame && !content->GetPrimaryFrame() &&
!GetDisplayContentsStyleFor(content)) {
noPrimaryFrame = true;
if (!noPrimaryFrame && !content->GetPrimaryFrame()) {
nsStyleContext* sc = GetUndisplayedContent(content);
noPrimaryFrame = !GetDisplayContentsStyleFor(content) &&
(sc && !sc->IsInDisplayNoneSubtree());
}
if (!needsFrameBitSet && content->HasFlag(NODE_NEEDS_FRAME)) {
needsFrameBitSet = true;

View File

@ -466,7 +466,7 @@ fuzzy-if(skiaContent,4,2) == 346774-1c.html 346774-1-ref.html
== 347348-1.xhtml 347348-1-ref.xhtml
== 347496-1.xhtml 347496-1-ref.xhtml
== 347912-1.html 347912-1-ref.html
fails-if(styloVsGecko||stylo) == 348049-1.xhtml 348049-1-ref.xhtml
== 348049-1.xhtml 348049-1-ref.xhtml
== 348516-1.html 348516-1-ref.html
== 348516-2.html 348516-2-ref.html
!= 348516-2.html 348516-2-notref.html
@ -1245,7 +1245,7 @@ fuzzy-if(skiaContent,1,12000) == 461512-1.html 461512-1-ref.html
== 467444-1.html 467444-1-ref.html
== 467460-1.html 467460-1-ref.html
== 468473-1.xul 468473-1-ref.xul
fails-if(styloVsGecko||stylo) == 468546-1.xhtml 468546-1-ref.xhtml
fails-if(styloVsGecko) == 468546-1.xhtml 468546-1-ref.xhtml
== 471356-1.html 471356-1-ref.html
== 471594-1.xhtml 471594-1-ref.html
fuzzy(255,15) == 472020-1a.xul 472020-1-ref.xul
@ -1321,8 +1321,8 @@ fails-if(Android) == 481024-1c.html 481024-1-ref.html
!= 481948-2.html 481948-2-ref.html
fails-if(Android) random-if(winWidget) fails-if(gtkWidget&&!styloVsGecko) == 481948-3.html 481948-3-ref.html # questionable test, see bug 488364
== 482398-1.html 482398-1-ref.html
random-if(d2d) fails-if(styloVsGecko||stylo) == 482592-1a.xhtml 482592-1-ref.html # bug 586771
random-if(d2d) fails-if(styloVsGecko||stylo) == 482592-1b.xhtml 482592-1-ref.html # bug 586771
random-if(d2d) == 482592-1a.xhtml 482592-1-ref.html # bug 586771
random-if(d2d) == 482592-1b.xhtml 482592-1-ref.html # bug 586771
random-if(winWidget) fuzzy-if(skiaContent,1,5) == 482659-1a.html 482659-1-ref.html
fuzzy-if(skiaContent,1,5) == 482659-1b.html 482659-1-ref.html
fuzzy-if(skiaContent,1,5) == 482659-1c.html 482659-1-ref.html
@ -1364,8 +1364,8 @@ pref(browser.display.focus_ring_width,1) == 491180-2.html 491180-2-ref.html
== 494667-1.html 494667-1-ref.html
== 494667-2.html 494667-2-ref.html
== 495274-1.html 495274-1-ref.html
fails-if(styloVsGecko||stylo) == 495354-1a.xhtml 495354-1-ref.xhtml
fails-if(styloVsGecko||stylo) == 495354-1b.xhtml 495354-1-ref.xhtml
== 495354-1a.xhtml 495354-1-ref.xhtml
== 495354-1b.xhtml 495354-1-ref.xhtml
== 495385-1a.html 495385-1-ref.html
== 495385-1b.html 495385-1-ref.html
== 495385-1c.html 495385-1-ref.html

View File

@ -19,10 +19,10 @@ fuzzy-if(winWidget,12,100) skip-if(styloVsGecko||stylo) pref(layout.css.scoped-s
fuzzy-if(Android,7,3935) == display-contents-xbl.xhtml display-contents-xbl-ref.html
fuzzy-if(Android,7,1186) fails-if(stylo||styloVsGecko) pref(dom.webcomponents.enabled,true) pref(layout.css.scoped-style.enabled,true) == display-contents-shadow-dom-1.html display-contents-shadow-dom-1-ref.html
== display-contents-xbl-2.xul display-contents-xbl-2-ref.xul
asserts(1) asserts-if(styloVsGecko,2) == display-contents-xbl-3.xul display-contents-xbl-3-ref.xul # bug 1089223
== display-contents-xbl-3.xul display-contents-xbl-3-ref.xul
skip == display-contents-xbl-4.xul display-contents-xbl-4-ref.xul # fails (not just asserts) due to bug 1089223
asserts(0-1) fuzzy-if(Android,8,3216) == display-contents-fieldset.html display-contents-fieldset-ref.html # bug 1089223
asserts(1) asserts-if(styloVsGecko,2) == display-contents-xbl-5.xul display-contents-xbl-3-ref.xul # bug 1089223
== display-contents-xbl-5.xul display-contents-xbl-3-ref.xul
fails-if(!stylo) == display-contents-xbl-6.xhtml display-contents-xbl-6-ref.html # bug 1345809
== display-contents-xbl-7.xhtml display-contents-xbl-7-ref.html
== display-contents-list-item-child.html display-contents-list-item-child-ref.html