| Index: third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.cpp b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| index a53c64682040896e7433533b73de6f314ee71f60..d2e24e4e01205053c8298274bbd44b0e7bfa362f 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| @@ -756,10 +756,24 @@ static inline bool objectIsRelayoutBoundary(const LayoutObject* object)
|
| return true;
|
| }
|
|
|
| +void LayoutObject::markContainerChainForLayout(bool scheduleRelayout)
|
| +{
|
| + markContainerChainForLayout(scheduleRelayout, nullptr);
|
| +}
|
| +
|
| +void LayoutObject::markContainerChainForLayout(SubtreeLayoutScope* layouter)
|
| +{
|
| + // When we have a layouter, it means that we're in layout and we're marking
|
| + // a descendant as needing layout with the intention of visiting it during
|
| + // this layout. We shouldn't be scheduling it to be laid out later.
|
| + markContainerChainForLayout(!layouter, layouter);
|
| +}
|
| +
|
| void LayoutObject::markContainerChainForLayout(bool scheduleRelayout, SubtreeLayoutScope* layouter)
|
| {
|
| ASSERT(!isSetNeedsLayoutForbidden());
|
| ASSERT(!layouter || this != layouter->root());
|
| + ASSERT(!scheduleRelayout || !layouter);
|
|
|
| LayoutObject* object = container();
|
| LayoutObject* last = this;
|
|
|