Chromium Code Reviews| Index: Source/core/rendering/LayoutState.h |
| diff --git a/Source/core/rendering/LayoutState.h b/Source/core/rendering/LayoutState.h |
| index b873b3fbd075880cd11ca21b3f815fd39b4776a4..dce1b1be56283178e37d8a1fef038c475712acd2 100644 |
| --- a/Source/core/rendering/LayoutState.h |
| +++ b/Source/core/rendering/LayoutState.h |
| @@ -33,38 +33,24 @@ |
| namespace WebCore { |
| +class ForceHorriblySlowRectMapping; |
| class RenderBlockFlow; |
| class RenderBox; |
| class RenderObject; |
| class RenderFlowThread; |
| +class RenderView; |
| class LayoutState { |
| WTF_MAKE_NONCOPYABLE(LayoutState); |
| public: |
| // Constructor for root LayoutState created by RenderView |
| - LayoutState(LayoutUnit pageLogicalHeight, bool pageLogicalHeightChanged) |
| - : m_clipped(false) |
| - , m_isPaginated(pageLogicalHeight) |
| - , m_pageLogicalHeightChanged(pageLogicalHeightChanged) |
| -#if ASSERT_ENABLED |
| - , m_layoutDeltaXSaturated(false) |
| - , m_layoutDeltaYSaturated(false) |
| -#endif |
| - , m_columnInfo(0) |
| - , m_next(0) |
| - , m_pageLogicalHeight(pageLogicalHeight) |
| -#ifndef NDEBUG |
| - , m_renderer(0) |
| -#endif |
| - { |
| - } |
| + LayoutState(LayoutUnit pageLogicalHeight, bool pageLogicalHeightChanged, RenderView&); |
| + // Constructor for sub-tree Layout and RenderTableSections |
| + explicit LayoutState(RenderObject& root); |
| - LayoutState(LayoutState*, RenderBox&, const LayoutSize& offset, LayoutUnit pageLogicalHeight, bool pageHeightLogicalChanged, ColumnInfo*); |
| - explicit LayoutState(RenderObject&); |
| + LayoutState(RenderBox&, const LayoutSize& offset, LayoutUnit pageLogicalHeight = 0, bool pageHeightLogicalChanged = false, ColumnInfo* = 0); |
| - // LayoutState is allocated out of the rendering partition. |
| - void* operator new(size_t); |
| - void operator delete(void*); |
| + ~LayoutState(); |
| void clearPaginationInformation(); |
| bool isPaginatingColumns() const { return m_columnInfo; } |
| @@ -100,23 +86,37 @@ public: |
| ColumnInfo* columnInfo() const { return m_columnInfo; } |
| - const LayoutRect& clipRect() const { return m_clipRect; } |
| - const LayoutSize& paintOffset() const { return m_paintOffset; } |
| + bool cachedOffsetsEnabled() const { return m_cachedOffsetsEnabled; } |
| + |
| + const LayoutRect& clipRect() const |
| + { |
| + ASSERT(m_cachedOffsetsEnabled); |
| + return m_clipRect; |
| + } |
| + const LayoutSize& paintOffset() const |
| + { |
| + ASSERT(m_cachedOffsetsEnabled); |
| + return m_paintOffset; |
| + } |
| + |
| + |
| + RenderObject& renderer() const { return m_renderer; } |
| -#ifndef NDEBUG |
| - RenderObject* renderer() const { return m_renderer; } |
| -#endif |
| #if ASSERT_ENABLED |
| bool layoutDeltaXSaturated() const { return m_layoutDeltaXSaturated; } |
| bool layoutDeltaYSaturated() const { return m_layoutDeltaYSaturated; } |
| #endif |
| private: |
| + friend class ForceHorriblySlowRectMapping; |
| + |
| // Do not add anything apart from bitfields until after m_columnInfo. See https://bugs.webkit.org/show_bug.cgi?id=100173 |
| bool m_clipped:1; |
| bool m_isPaginated:1; |
| // If our page height has changed, this will force all blocks to relayout. |
| bool m_pageLogicalHeightChanged:1; |
| + |
| + bool m_cachedOffsetsEnabled:1; |
| #if ASSERT_ENABLED |
| bool m_layoutDeltaXSaturated:1; |
| bool m_layoutDeltaYSaturated:1; |
|
esprehn
2014/06/14 03:08:27
We should switch all these back to real bools inst
|
| @@ -143,9 +143,7 @@ private: |
| // The offset of the start of the first page in the nearest enclosing pagination model. |
| LayoutSize m_pageOffset; |
| -#ifndef NDEBUG |
| - RenderObject* m_renderer; |
| -#endif |
| + RenderObject& m_renderer; |
| }; |
| } // namespace WebCore |