Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1361)

Unified Diff: Source/core/rendering/RenderObject.h

Issue 18601002: Add infrastructure for partial layouts (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Address reviewer comments. Add PartialLayoutState and PartialLayoutDisabler Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/RenderObject.h
diff --git a/Source/core/rendering/RenderObject.h b/Source/core/rendering/RenderObject.h
index 9429d0733ceee41eca0c9abf7a3989e86103c3f2..fd9cf7b116e9a607a6cab6d64cd2cdd6a41014dd 100644
--- a/Source/core/rendering/RenderObject.h
+++ b/Source/core/rendering/RenderObject.h
@@ -67,6 +67,7 @@ class RenderNamedFlowThread;
class RenderSVGResourceContainer;
class RenderTable;
class RenderTheme;
+class RenderView;
class TransformState;
struct PaintInfo;
@@ -589,6 +590,7 @@ public:
virtual void updateDragState(bool dragOn);
RenderView* view() const { return document()->renderView(); };
+ FrameView* frameView() const;
// Returns true if this renderer is rooted, and optionally returns the hosting view (the root of the hierarchy).
bool isRooted(RenderView** = 0) const;
@@ -674,6 +676,9 @@ public:
void forceLayout();
void forceChildLayout();
+ // True if we can abort layout, leaving a partially laid out tree.
+ virtual bool supportsPartialLayout() const { return false; }
+
// used for element state updates that cannot be fixed with a
// repaint and do not need a relayout
virtual void updateFromElement() { }
@@ -1074,6 +1079,7 @@ private:
#ifndef NDEBUG
void checkBlockPositionedObjectsNeedLayout();
+ void checkNotInPartialLayout();
#endif
RefPtr<RenderStyle> m_style;
@@ -1244,6 +1250,9 @@ inline bool RenderObject::isBeforeOrAfterContent() const
inline void RenderObject::setNeedsLayout(MarkingBehavior markParents, SubtreeLayoutScope* layouter)
{
+#ifndef NDEBUG
+ checkNotInPartialLayout();
+#endif
ASSERT(!isSetNeedsLayoutForbidden());
bool alreadyNeededLayout = m_bitfields.selfNeedsLayout();
setSelfNeedsLayout(true);
@@ -1257,6 +1266,9 @@ inline void RenderObject::setNeedsLayout(MarkingBehavior markParents, SubtreeLay
inline void RenderObject::clearNeedsLayout()
{
+#ifndef NDEBUG
+ checkNotInPartialLayout();
+#endif
setSelfNeedsLayout(false);
setEverHadLayout(true);
setPosChildNeedsLayout(false);

Powered by Google App Engine
This is Rietveld 408576698