WebKit Bugzilla
Attachment 338881 Details for
Bug 185032
: [LFC] Formatting contexts should create floating states.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-185032-20180426095057.patch (text/plain), 21.00 KB, created by
zalan
on 2018-04-26 09:50:58 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
zalan
Created:
2018-04-26 09:50:58 PDT
Size:
21.00 KB
patch
obsolete
>Subversion Revision: 231038 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index af46292fc656ab02433503336226c32a680599eb..3dff51b079be543753d82ec36b5e24e1c5a32107 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,55 @@ >+2018-04-26 Zalan Bujtas <zalan@apple.com> >+ >+ [LFC] Formatting contexts should create floating states. >+ https://bugs.webkit.org/show_bug.cgi?id=185032 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ This patch implements the logic for sharing floating states across multiple formatting contexts. >+ At this point this is mostly about inline formatting contexts. They either create a new floating state >+ or inherit it from the parent formatting context. >+ >+ * layout/FloatingState.cpp: >+ (WebCore::Layout::FloatingState::FloatingState): >+ * layout/FloatingState.h: >+ (WebCore::Layout::FloatingState::create): >+ * layout/FormattingContext.cpp: >+ (WebCore::Layout::FormattingContext::FormattingContext): >+ * layout/FormattingContext.h: >+ (WebCore::Layout::FormattingContext::layoutContext const): >+ * layout/FormattingState.cpp: >+ (WebCore::Layout::FormattingState::FormattingState): >+ * layout/FormattingState.h: >+ (WebCore::Layout::FormattingState::floatingState const): >+ * layout/LayoutContext.cpp: >+ (WebCore::Layout::LayoutContext::updateLayout): >+ (WebCore::Layout::LayoutContext::formattingStateForBox const): >+ (WebCore::Layout::LayoutContext::establishedFormattingState): >+ (WebCore::Layout::LayoutContext::formattingContext): >+ (WebCore::Layout::LayoutContext::formattingState): Deleted. >+ * layout/LayoutContext.h: >+ * layout/blockformatting/BlockFormattingContext.cpp: >+ (WebCore::Layout::BlockFormattingContext::BlockFormattingContext): >+ (WebCore::Layout::BlockFormattingContext::createFormattingState const): >+ (WebCore::Layout::BlockFormattingContext::createOrFindFloatingState const): >+ (WebCore::Layout::BlockFormattingContext::formattingState const): Deleted. >+ * layout/blockformatting/BlockFormattingContext.h: >+ * layout/blockformatting/BlockFormattingState.cpp: >+ (WebCore::Layout::BlockFormattingState::BlockFormattingState): >+ * layout/blockformatting/BlockFormattingState.h: >+ * layout/inlineformatting/InlineFormattingContext.cpp: >+ (WebCore::Layout::InlineFormattingContext::InlineFormattingContext): >+ (WebCore::Layout::InlineFormattingContext::createFormattingState const): >+ (WebCore::Layout::InlineFormattingContext::createOrFindFloatingState const): >+ (WebCore::Layout::InlineFormattingContext::formattingState const): Deleted. >+ * layout/inlineformatting/InlineFormattingContext.h: >+ * layout/inlineformatting/InlineFormattingState.cpp: >+ (WebCore::Layout::InlineFormattingState::InlineFormattingState): >+ * layout/inlineformatting/InlineFormattingState.h: >+ * layout/layouttree/LayoutBox.cpp: >+ (WebCore::Layout::Box::formattingContextRoot const): >+ * layout/layouttree/LayoutBox.h: >+ > 2018-04-25 Zalan Bujtas <zalan@apple.com> > > [LFC] Add support for is<> and downcast<> >diff --git a/Source/WebCore/layout/FloatingState.cpp b/Source/WebCore/layout/FloatingState.cpp >index 5e00ba70b9a5f57b85387ba7b0c0da053acaec36..50519a9dc89b6de534a7aeacbf400e75b18eb441 100644 >--- a/Source/WebCore/layout/FloatingState.cpp >+++ b/Source/WebCore/layout/FloatingState.cpp >@@ -25,3 +25,20 @@ > > #include "config.h" > #include "FloatingState.h" >+ >+#if ENABLE(LAYOUT_FORMATTING_CONTEXT) >+ >+#include <wtf/IsoMallocInlines.h> >+ >+namespace WebCore { >+namespace Layout { >+ >+WTF_MAKE_ISO_ALLOCATED_IMPL(FloatingState); >+ >+FloatingState::FloatingState() >+{ >+} >+ >+} >+} >+#endif >diff --git a/Source/WebCore/layout/FloatingState.h b/Source/WebCore/layout/FloatingState.h >index cb1781b8c67fe6f3cb6d4cfdeb49f86e2533504e..6fe7e22570ffb0de26bfa02d08d2e738c9700e52 100644 >--- a/Source/WebCore/layout/FloatingState.h >+++ b/Source/WebCore/layout/FloatingState.h >@@ -28,6 +28,7 @@ > #if ENABLE(LAYOUT_FORMATTING_CONTEXT) > > #include <wtf/IsoMalloc.h> >+#include <wtf/Ref.h> > > namespace WebCore { > >@@ -36,10 +37,13 @@ namespace Layout { > class FormattingState; > > // FloatingState holds the floating boxes per formatting context. >-class FloatingState { >+class FloatingState : public RefCounted<FloatingState> { > WTF_MAKE_ISO_ALLOCATED(FloatingState); > public: >- FloatingState(FormattingState& parentFormattingState); >+ static Ref<FloatingState> create() { return adoptRef(*new FloatingState()); } >+ >+private: >+ FloatingState(); > }; > > } >diff --git a/Source/WebCore/layout/FormattingContext.cpp b/Source/WebCore/layout/FormattingContext.cpp >index 9855bad4295e7a9b5c8bdf5f2c87d3f41b14d4ec..b58a1f9ab91421e99246d32f6b5f6493aaef5145 100644 >--- a/Source/WebCore/layout/FormattingContext.cpp >+++ b/Source/WebCore/layout/FormattingContext.cpp >@@ -35,8 +35,9 @@ namespace Layout { > > WTF_MAKE_ISO_ALLOCATED_IMPL(FormattingContext); > >-FormattingContext::FormattingContext(Box& formattingContextRoot) >+FormattingContext::FormattingContext(Box& formattingContextRoot, LayoutContext& layoutContext) > : m_root(makeWeakPtr(formattingContextRoot)) >+ , m_layoutContext(layoutContext) > { > } > >diff --git a/Source/WebCore/layout/FormattingContext.h b/Source/WebCore/layout/FormattingContext.h >index e86cff92d2775a3057774837b294f04ee7f81d51..431d3958a2f821c1b5d9be5707f416d965a94ac2 100644 >--- a/Source/WebCore/layout/FormattingContext.h >+++ b/Source/WebCore/layout/FormattingContext.h >@@ -27,6 +27,7 @@ > > #if ENABLE(LAYOUT_FORMATTING_CONTEXT) > >+#include "FloatingState.h" > #include "LayoutUnit.h" > #include <wtf/IsoMalloc.h> > #include <wtf/WeakPtr.h> >@@ -35,21 +36,24 @@ namespace WebCore { > > namespace Layout { > >-class FormattingState; > class Box; >+class FormattingState; >+class LayoutContext; > > class FormattingContext { > WTF_MAKE_ISO_ALLOCATED(FormattingContext); > public: >- FormattingContext(Box& formattingContextRoot); >+ FormattingContext(Box& formattingContextRoot, LayoutContext&); > virtual ~FormattingContext(); > > virtual void layout(FormattingState&) = 0; >- virtual std::unique_ptr<FormattingState> formattingState() const = 0; >+ virtual std::unique_ptr<FormattingState> createFormattingState(Ref<FloatingState>&&) const = 0; >+ virtual Ref<FloatingState> createOrFindFloatingState() const = 0; > >+protected: > const Box& root() const { return *m_root; } >+ const LayoutContext& layoutContext() const { return m_layoutContext; } > >-protected: > virtual void computeStaticPosition(const Box&) const; > virtual void computeInFlowPositionedPosition(const Box&) const; > virtual void computeOutOfFlowPosition(const Box&) const; >@@ -64,6 +68,7 @@ protected: > > private: > WeakPtr<Box> m_root; >+ LayoutContext& m_layoutContext; > }; > > } >diff --git a/Source/WebCore/layout/FormattingState.cpp b/Source/WebCore/layout/FormattingState.cpp >index 8fa0d438ccf7c53096a38db4c44afc12e410c93f..0e28e8569a949e775f5adcbcfee54f4c2f08f82a 100644 >--- a/Source/WebCore/layout/FormattingState.cpp >+++ b/Source/WebCore/layout/FormattingState.cpp >@@ -35,7 +35,8 @@ namespace Layout { > > WTF_MAKE_ISO_ALLOCATED_IMPL(FormattingState); > >-FormattingState::FormattingState() >+FormattingState::FormattingState(Ref<FloatingState>&& floatingState) >+ : m_floatingState(WTFMove(floatingState)) > { > } > >diff --git a/Source/WebCore/layout/FormattingState.h b/Source/WebCore/layout/FormattingState.h >index e34c009c3c0631f42baa5b6f2f61c705efba219d..698b3c7f2cbc51dc502dfaa548a6b6d6db71ee5e 100644 >--- a/Source/WebCore/layout/FormattingState.h >+++ b/Source/WebCore/layout/FormattingState.h >@@ -27,6 +27,7 @@ > > #if ENABLE(LAYOUT_FORMATTING_CONTEXT) > >+#include "FloatingState.h" > #include <wtf/IsoMalloc.h> > > namespace WebCore { >@@ -34,18 +35,20 @@ namespace WebCore { > namespace Layout { > > class Box; >-class FloatingState; > class StyleDiff; > > class FormattingState { > WTF_MAKE_ISO_ALLOCATED(FormattingState); > public: >- FormattingState(); >+ FormattingState(Ref<FloatingState>&&); > >- FloatingState& floatingState(); >+ FloatingState& floatingState() const { return m_floatingState; } > > void markNeedsLayout(const Box&, StyleDiff); > bool needsLayout(const Box&); >+ >+private: >+ Ref<FloatingState> m_floatingState; > }; > > } >diff --git a/Source/WebCore/layout/LayoutContext.cpp b/Source/WebCore/layout/LayoutContext.cpp >index 938dd2b085dce73fefb960dd2d911f2e52a35791..32f35c44e572e584abdfb49a1e6f291b2f48cda7 100644 >--- a/Source/WebCore/layout/LayoutContext.cpp >+++ b/Source/WebCore/layout/LayoutContext.cpp >@@ -33,6 +33,7 @@ > #include "InlineFormattingContext.h" > #include "InlineFormattingState.h" > #include "LayoutBox.h" >+#include "LayoutContainer.h" > #include <wtf/IsoMallocInlines.h> > > namespace WebCore { >@@ -48,24 +49,31 @@ LayoutContext::LayoutContext(Box& root) > void LayoutContext::updateLayout() > { > auto context = formattingContext(*m_root); >- auto state = formattingState(*context); >+ auto& state = establishedFormattingState(*m_root, *context); > context->layout(state); > } > >-FormattingState& LayoutContext::formattingState(const FormattingContext& context) >+FormattingState& LayoutContext::formattingStateForBox(const Box& layoutBox) const > { >- return *m_formattingStates.ensure(&context.root(), [&context] { >- return context.formattingState(); >+ auto* root = layoutBox.formattingContextRoot(); >+ RELEASE_ASSERT(m_formattingStates.contains(root)); >+ return *m_formattingStates.get(root); >+} >+ >+FormattingState& LayoutContext::establishedFormattingState(Box& formattingContextRoot, const FormattingContext& context) >+{ >+ return *m_formattingStates.ensure(&formattingContextRoot, [this, &context] { >+ return context.createFormattingState(context.createOrFindFloatingState()); > }).iterator->value; > } > > std::unique_ptr<FormattingContext> LayoutContext::formattingContext(Box& formattingContextRoot) > { > if (formattingContextRoot.establishesBlockFormattingContext()) >- return std::make_unique<BlockFormattingContext>(formattingContextRoot); >+ return std::make_unique<BlockFormattingContext>(formattingContextRoot, *this); > > if (formattingContextRoot.establishesInlineFormattingContext()) >- return std::make_unique<InlineFormattingContext>(formattingContextRoot); >+ return std::make_unique<InlineFormattingContext>(formattingContextRoot, *this); > > ASSERT_NOT_REACHED(); > return nullptr; >diff --git a/Source/WebCore/layout/LayoutContext.h b/Source/WebCore/layout/LayoutContext.h >index 15007d60a621aa64a0aa9ab4b3d3885f6945a5de..a95d596ad5717369bf3b0c2c9218e8bb6332626e 100644 >--- a/Source/WebCore/layout/LayoutContext.h >+++ b/Source/WebCore/layout/LayoutContext.h >@@ -60,8 +60,10 @@ public: > void markNeedsLayout(const Box&, StyleDiff); > bool needsLayout(const Box&) const; > >+ FormattingState& formattingStateForBox(const Box&) const; >+ > private: >- FormattingState& formattingState(const FormattingContext&); >+ FormattingState& establishedFormattingState(Box& formattingContextRoot, const FormattingContext&); > std::unique_ptr<FormattingContext> formattingContext(Box& formattingContextRoot); > > WeakPtr<Box> m_root; >diff --git a/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp b/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp >index d37e1814bbede6d7737dbd0115fccd75f61d1ced..2ec7d27f390f9ae3e41056f0542562793a5a83cb 100644 >--- a/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp >+++ b/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp >@@ -29,6 +29,7 @@ > #if ENABLE(LAYOUT_FORMATTING_CONTEXT) > > #include "BlockFormattingState.h" >+#include "FloatingState.h" > #include <wtf/IsoMallocInlines.h> > > namespace WebCore { >@@ -36,8 +37,8 @@ namespace Layout { > > WTF_MAKE_ISO_ALLOCATED_IMPL(BlockFormattingContext); > >-BlockFormattingContext::BlockFormattingContext(Box& formattingContextRoot) >- : FormattingContext(formattingContextRoot) >+BlockFormattingContext::BlockFormattingContext(Box& formattingContextRoot, LayoutContext& layoutContext) >+ : FormattingContext(formattingContextRoot, layoutContext) > { > } > >@@ -45,9 +46,15 @@ void BlockFormattingContext::layout(FormattingState&) > { > } > >-std::unique_ptr<FormattingState> BlockFormattingContext::formattingState() const >+std::unique_ptr<FormattingState> BlockFormattingContext::createFormattingState(Ref<FloatingState>&& floatingState) const > { >- return std::make_unique<BlockFormattingState>(); >+ return std::make_unique<BlockFormattingState>(WTFMove(floatingState)); >+} >+ >+Ref<FloatingState> BlockFormattingContext::createOrFindFloatingState() const >+{ >+ // Block formatting context always establishes a new floating state. >+ return FloatingState::create(); > } > > void BlockFormattingContext::computeStaticPosition(const Box&) const >diff --git a/Source/WebCore/layout/blockformatting/BlockFormattingContext.h b/Source/WebCore/layout/blockformatting/BlockFormattingContext.h >index f12e7e762d53341ea26ccde7a1d81be9c9fdbbfa..9821f50ccf07182266210f5bb4fb363e8dfaafb4 100644 >--- a/Source/WebCore/layout/blockformatting/BlockFormattingContext.h >+++ b/Source/WebCore/layout/blockformatting/BlockFormattingContext.h >@@ -43,10 +43,11 @@ class Box; > class BlockFormattingContext : public FormattingContext { > WTF_MAKE_ISO_ALLOCATED(BlockFormattingContext); > public: >- BlockFormattingContext(Box& formattingContextRoot); >+ BlockFormattingContext(Box& formattingContextRoot, LayoutContext&); > > void layout(FormattingState&) override; >- std::unique_ptr<FormattingState> formattingState() const override; >+ std::unique_ptr<FormattingState> createFormattingState(Ref<FloatingState>&&) const override; >+ Ref<FloatingState> createOrFindFloatingState() const override; > > protected: > void computeStaticPosition(const Box&) const override; >diff --git a/Source/WebCore/layout/blockformatting/BlockFormattingState.cpp b/Source/WebCore/layout/blockformatting/BlockFormattingState.cpp >index 244d8254acef7f1c3291de976204af82de57fe2c..95a8a0bd3f4aafc44193075a3c853ce18ac33749 100644 >--- a/Source/WebCore/layout/blockformatting/BlockFormattingState.cpp >+++ b/Source/WebCore/layout/blockformatting/BlockFormattingState.cpp >@@ -35,8 +35,8 @@ namespace Layout { > > WTF_MAKE_ISO_ALLOCATED_IMPL(BlockFormattingState); > >-BlockFormattingState::BlockFormattingState() >- : FormattingState() >+BlockFormattingState::BlockFormattingState(Ref<FloatingState>&& floatingState) >+ : FormattingState(WTFMove(floatingState)) > { > } > >diff --git a/Source/WebCore/layout/blockformatting/BlockFormattingState.h b/Source/WebCore/layout/blockformatting/BlockFormattingState.h >index 5485bda2f68ddeacc14e28bd5c95f1bc74c5633f..6202310888461f38c704e60a959d855e54813232 100644 >--- a/Source/WebCore/layout/blockformatting/BlockFormattingState.h >+++ b/Source/WebCore/layout/blockformatting/BlockFormattingState.h >@@ -38,7 +38,7 @@ namespace Layout { > class BlockFormattingState : public FormattingState { > WTF_MAKE_ISO_ALLOCATED(BlockFormattingState); > public: >- BlockFormattingState(); >+ BlockFormattingState(Ref<FloatingState>&&); > }; > > } >diff --git a/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp b/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp >index 7d1b76403d9cb43977f35d917bc718d244bb5af6..bd1759e8fb9c7fecb3a4d9f4383bd00cc54ff8cf 100644 >--- a/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp >+++ b/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp >@@ -28,7 +28,10 @@ > > #if ENABLE(LAYOUT_FORMATTING_CONTEXT) > >+#include "FloatingState.h" > #include "InlineFormattingState.h" >+#include "LayoutBox.h" >+#include "LayoutContext.h" > #include <wtf/IsoMallocInlines.h> > > namespace WebCore { >@@ -36,8 +39,8 @@ namespace Layout { > > WTF_MAKE_ISO_ALLOCATED_IMPL(InlineFormattingContext); > >-InlineFormattingContext::InlineFormattingContext(Box& formattingContextRoot) >- : FormattingContext(formattingContextRoot) >+InlineFormattingContext::InlineFormattingContext(Box& formattingContextRoot, LayoutContext& layoutContext) >+ : FormattingContext(formattingContextRoot, layoutContext) > { > } > >@@ -45,9 +48,22 @@ void InlineFormattingContext::layout(FormattingState&) > { > } > >-std::unique_ptr<FormattingState> InlineFormattingContext::formattingState() const >+std::unique_ptr<FormattingState> InlineFormattingContext::createFormattingState(Ref<FloatingState>&& floatingState) const > { >- return std::make_unique<InlineFormattingState>(); >+ return std::make_unique<InlineFormattingState>(WTFMove(floatingState)); >+} >+ >+Ref<FloatingState> InlineFormattingContext::createOrFindFloatingState() const >+{ >+ // If the block container box that initiates this inline formatting context also establishes a block context, the floats outside of the formatting root >+ // should not interfere with the content inside. >+ // <div style="float: left"></div><div style="overflow: hidden"> <- is a non-intrusive float, because overflow: hidden triggers new block formatting context.</div> >+ if (root().establishesBlockFormattingContext()) >+ return FloatingState::create(); >+ // Otherwise, the formatting context inherits the floats from the parent formatting context. >+ // Find the formatting state in which this formatting root lives, not the one it creates (this) and use its floating state. >+ auto& formattingState = layoutContext().formattingStateForBox(root()); >+ return formattingState.floatingState(); > } > > } >diff --git a/Source/WebCore/layout/inlineformatting/InlineFormattingContext.h b/Source/WebCore/layout/inlineformatting/InlineFormattingContext.h >index 6026060e9ec4e787f230501649a2dbe898d27125..b3fa4dffe6c95b7926b0d332ed67bbdf710aaf6a 100644 >--- a/Source/WebCore/layout/inlineformatting/InlineFormattingContext.h >+++ b/Source/WebCore/layout/inlineformatting/InlineFormattingContext.h >@@ -41,10 +41,11 @@ class InlineFormattingState; > class InlineFormattingContext : public FormattingContext { > WTF_MAKE_ISO_ALLOCATED(InlineFormattingContext); > public: >- InlineFormattingContext(Box& formattingContextRoot); >+ InlineFormattingContext(Box& formattingContextRoot, LayoutContext&); > > void layout(FormattingState&) override; >- std::unique_ptr<FormattingState> formattingState() const override; >+ std::unique_ptr<FormattingState> createFormattingState(Ref<FloatingState>&&) const override; >+ Ref<FloatingState> createOrFindFloatingState() const override; > }; > > } >diff --git a/Source/WebCore/layout/inlineformatting/InlineFormattingState.cpp b/Source/WebCore/layout/inlineformatting/InlineFormattingState.cpp >index 930a88504192b2f75ac52fd6ec1a8c8a26065640..99970d1d8ca85cbb58c10a1bcc6f4562365666bb 100644 >--- a/Source/WebCore/layout/inlineformatting/InlineFormattingState.cpp >+++ b/Source/WebCore/layout/inlineformatting/InlineFormattingState.cpp >@@ -35,8 +35,8 @@ namespace Layout { > > WTF_MAKE_ISO_ALLOCATED_IMPL(InlineFormattingState); > >-InlineFormattingState::InlineFormattingState() >- : FormattingState() >+InlineFormattingState::InlineFormattingState(Ref<FloatingState>&& floatingState) >+ : FormattingState(WTFMove(floatingState)) > { > } > >diff --git a/Source/WebCore/layout/inlineformatting/InlineFormattingState.h b/Source/WebCore/layout/inlineformatting/InlineFormattingState.h >index ed9bcdadc7844f17e0e7ea861734d05b31ee55bc..c7b5d7b3296f7b2b325ae481490ffc63e0ed25cd 100644 >--- a/Source/WebCore/layout/inlineformatting/InlineFormattingState.h >+++ b/Source/WebCore/layout/inlineformatting/InlineFormattingState.h >@@ -38,7 +38,7 @@ namespace Layout { > class InlineFormattingState : public FormattingState { > WTF_MAKE_ISO_ALLOCATED(InlineFormattingState); > public: >- InlineFormattingState(); >+ InlineFormattingState(Ref<FloatingState>&&); > }; > > } >diff --git a/Source/WebCore/layout/layouttree/LayoutBox.cpp b/Source/WebCore/layout/layouttree/LayoutBox.cpp >index dec0d3529cded90cc5b843a74586e36b52c90a68..b8acc028d8a5b12bfc2416f61ca41e36b00e813a 100644 >--- a/Source/WebCore/layout/layouttree/LayoutBox.cpp >+++ b/Source/WebCore/layout/layouttree/LayoutBox.cpp >@@ -128,6 +128,18 @@ const Container* Box::containingBlock() const > return nullptr; > } > >+const Container* Box::formattingContextRoot() const >+{ >+ for (auto* ancestor = containingBlock(); ancestor; ancestor = ancestor->containingBlock()) { >+ if (ancestor->establishesFormattingContext()) >+ return ancestor; >+ } >+ >+ // Initial containing block always establishes a formatting context. >+ ASSERT_NOT_REACHED(); >+ return nullptr; >+} >+ > bool Box::isDescendantOf(Container& container) const > { > auto* ancestor = parent(); >diff --git a/Source/WebCore/layout/layouttree/LayoutBox.h b/Source/WebCore/layout/layouttree/LayoutBox.h >index d3124a5747e95db00390ed63adfd06151d9e3cb7..561d4246f90e96342a59d93c365a31aac3def6c5 100644 >--- a/Source/WebCore/layout/layouttree/LayoutBox.h >+++ b/Source/WebCore/layout/layouttree/LayoutBox.h >@@ -64,6 +64,7 @@ public: > bool isFloatingOrOutOfFlowPositioned() const { return isFloatingPositioned() || isOutOfFlowPositioned(); } > > const Container* containingBlock() const; >+ const Container* formattingContextRoot() const; > bool isDescendantOf(Container&) const; > > bool isAnonymous() const { return m_isAnonymous; }
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
Flags:
koivisto
:
review+
ews-watchlist
:
commit-queue-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 185032
: 338881 |
338950