WebKit Bugzilla
Attachment 358369 Details for
Bug 189608
: [iOS] ERROR: post-layout: dirty renderer(s) in WebCore::RenderTreeNeedsLayoutChecker::~RenderTreeNeedsLayoutChecker()
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-189608-20190104142239.patch (text/plain), 2.76 KB, created by
zalan
on 2019-01-04 14:22:40 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
zalan
Created:
2019-01-04 14:22:40 PST
Size:
2.76 KB
patch
obsolete
>Subversion Revision: 239568 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 97a0991c7a404612ffb4f3e467652ca7a3fff60b..582a461d286252aa2b37d46083ab8d27e82290fe 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,20 @@ >+2019-01-04 Zalan Bujtas <zalan@apple.com> >+ >+ [iOS] ERROR: post-layout: dirty renderer(s) in WebCore::RenderTreeNeedsLayoutChecker::~RenderTreeNeedsLayoutChecker() >+ https://bugs.webkit.org/show_bug.cgi?id=189608 >+ <rdar://problem/44473299> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ When a frameset/iframe is hidden and we skip layout, clear the dirty flag on its subtree as well. >+ >+ Covered by fast/frames/invalid-frameset.html. >+ >+ * rendering/RenderFrameSet.cpp: >+ (WebCore::clearSiblingSubtrees): >+ (WebCore::RenderFrameSet::positionFrames): >+ (WebCore::RenderFrameSet::positionFramesWithFlattening): >+ > 2019-01-01 Jeff Miller <jeffm@apple.com> > > Update user-visible copyright strings to include 2019 >diff --git a/Source/WebCore/rendering/RenderFrameSet.cpp b/Source/WebCore/rendering/RenderFrameSet.cpp >index 2d413b6104d39593d7fe08b06e87fab1a67f3987..cb8055f4772d901941bdcecb491486e02d9ab9ad 100644 >--- a/Source/WebCore/rendering/RenderFrameSet.cpp >+++ b/Source/WebCore/rendering/RenderFrameSet.cpp >@@ -494,6 +494,18 @@ void RenderFrameSet::layout() > clearNeedsLayout(); > } > >+static void clearSiblingSubtrees(RenderBox* sibling, RenderFrameSet& frameSet) >+{ >+ if (!sibling) >+ return; >+ >+ for (auto* descendant = sibling; descendant; descendant = downcast<RenderBox>(RenderObjectTraversal::next(*descendant, &frameSet))) { >+ descendant->setWidth(0); >+ descendant->setHeight(0); >+ descendant->clearNeedsLayout(); >+ } >+} >+ > void RenderFrameSet::positionFrames() > { > RenderBox* child = firstChildBox(); >@@ -535,11 +547,7 @@ void RenderFrameSet::positionFrames() > } > > // all the remaining frames are hidden to avoid ugly spurious unflowed frames >- for (auto* descendant = child; descendant; descendant = downcast<RenderBox>(RenderObjectTraversal::next(*descendant, this))) { >- descendant->setWidth(0); >- descendant->setHeight(0); >- descendant->clearNeedsLayout(); >- } >+ clearSiblingSubtrees(child, *this); > } > > void RenderFrameSet::positionFramesWithFlattening() >@@ -643,11 +651,7 @@ void RenderFrameSet::positionFramesWithFlattening() > repaint(); > > // all the remaining frames are hidden to avoid ugly spurious unflowed frames >- for (; child; child = child->nextSiblingBox()) { >- child->setWidth(0); >- child->setHeight(0); >- child->clearNeedsLayout(); >- } >+ clearSiblingSubtrees(child, *this); > } > > bool RenderFrameSet::flattenFrameSet() const
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 189608
:
358369
|
358373