WebKit Bugzilla
Attachment 348072 Details for
Bug 188941
: [LFC][Floating] FloatBox -> FloatAvoider
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
Patch.txt (text/plain), 11.85 KB, created by
zalan
on 2018-08-24 21:09:00 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
zalan
Created:
2018-08-24 21:09:00 PDT
Size:
11.85 KB
patch
obsolete
>diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 1c7d8646dc8..4bd893f0379 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,38 @@ >+2018-08-24 Zalan Bujtas <zalan@apple.com> >+ >+ [LFC][Floating] FloatBox -> FloatAvoider >+ https://bugs.webkit.org/show_bug.cgi?id=188941 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ This is in preparation for the float avoidance feature where formatting context root boxes avoid existing floats. >+ >+ * Sources.txt: >+ * WebCore.xcodeproj/project.pbxproj: >+ * layout/displaytree/DisplayBox.h: >+ * layout/floats/FloatAvoider.cpp: Renamed from Source/WebCore/layout/floats/FloatBox.cpp. >+ (WebCore::Layout::FloatAvoider::FloatAvoider): >+ (WebCore::Layout::FloatAvoider::initializePosition): >+ (WebCore::Layout::FloatAvoider::isLeftAligned const): >+ (WebCore::Layout::FloatAvoider::setLeft): >+ (WebCore::Layout::FloatAvoider::setTopLeft): >+ (WebCore::Layout::FloatAvoider::resetVertically): >+ (WebCore::Layout::FloatAvoider::resetHorizontally): >+ (WebCore::Layout::FloatAvoider::topLeftInContainingBlock const): >+ * layout/floats/FloatAvoider.h: Renamed from Source/WebCore/layout/floats/FloatBox.h. >+ (WebCore::Layout::FloatAvoider::top const): >+ (WebCore::Layout::FloatAvoider::left const): >+ (WebCore::Layout::FloatAvoider::marginTop const): >+ (WebCore::Layout::FloatAvoider::marginLeft const): >+ (WebCore::Layout::FloatAvoider::marginBottom const): >+ (WebCore::Layout::FloatAvoider::marginRight const): >+ (WebCore::Layout::FloatAvoider::rectWithMargin const): >+ (WebCore::Layout::FloatAvoider::setTop): >+ * layout/floats/FloatingContext.cpp: >+ (WebCore::Layout::FloatingContext::positionForFloat const): >+ (WebCore::Layout::FloatingContext::floatingPosition const): >+ * layout/floats/FloatingContext.h: >+ > 2018-08-23 Zalan Bujtas <zalan@apple.com> > > [LFC][Floating] Simplify FloatingState::FloatItem class >diff --git a/Source/WebCore/Sources.txt b/Source/WebCore/Sources.txt >index a512eba4576..4ae1caa2565 100644 >--- a/Source/WebCore/Sources.txt >+++ b/Source/WebCore/Sources.txt >@@ -1229,7 +1229,7 @@ layout/blockformatting/BlockFormattingState.cpp > layout/blockformatting/BlockMarginCollapse.cpp > layout/blockformatting/BlockInvalidation.cpp > layout/displaytree/DisplayBox.cpp >-layout/floats/FloatBox.cpp >+layout/floats/FloatAvoider.cpp > layout/floats/FloatingContext.cpp > layout/floats/FloatingState.cpp > layout/inlineformatting/InlineFormattingContext.cpp >diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >index 2b841154e76..29a6f31e8a1 100644 >--- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj >+++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >@@ -1989,7 +1989,7 @@ > 6F995A381A70833700A735F4 /* JSWebGLTransformFeedback.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F995A2E1A70833700A735F4 /* JSWebGLTransformFeedback.h */; }; > 6F995A3A1A70833700A735F4 /* JSWebGLVertexArrayObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F995A301A70833700A735F4 /* JSWebGLVertexArrayObject.h */; }; > 6FA4454E898F2FC168BC38C1 /* JSBeforeUnloadEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 29E04A27BED2F81F98E9022B /* JSBeforeUnloadEvent.h */; }; >- 6FFDC442212EFF1700A9CA91 /* FloatBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FFDC440212EFF1600A9CA91 /* FloatBox.h */; settings = {ATTRIBUTES = (Private, ); }; }; >+ 6FFDC442212EFF1700A9CA91 /* FloatAvoider.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FFDC440212EFF1600A9CA91 /* FloatAvoider.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 709A01FE1E3D0BDD006B0D4C /* ModuleFetchFailureKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 709A01FD1E3D0BCC006B0D4C /* ModuleFetchFailureKind.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 71025ECD1F99F0CE004A250C /* AnimationTimeline.h in Headers */ = {isa = PBXBuildFile; fileRef = 71025EC71F99F096004A250C /* AnimationTimeline.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 71025ED01F99F0CE004A250C /* DocumentTimeline.h in Headers */ = {isa = PBXBuildFile; fileRef = 71025EC51F99F096004A250C /* DocumentTimeline.h */; settings = {ATTRIBUTES = (Private, ); }; }; >@@ -8967,8 +8967,8 @@ > 6FCD19C120F9727A00FD4529 /* TextContentProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextContentProvider.h; sourceTree = "<group>"; }; > 6FCD19C720F9727D00FD4529 /* TextContentProvider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TextContentProvider.cpp; sourceTree = "<group>"; }; > 6FCF975220F02B3500214960 /* Runs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Runs.h; sourceTree = "<group>"; }; >- 6FFDC43E212EFF1600A9CA91 /* FloatBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FloatBox.cpp; sourceTree = "<group>"; }; >- 6FFDC440212EFF1600A9CA91 /* FloatBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FloatBox.h; sourceTree = "<group>"; }; >+ 6FFDC43E212EFF1600A9CA91 /* FloatAvoider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FloatAvoider.cpp; sourceTree = "<group>"; }; >+ 6FFDC440212EFF1600A9CA91 /* FloatAvoider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FloatAvoider.h; sourceTree = "<group>"; }; > 709A01FD1E3D0BCC006B0D4C /* ModuleFetchFailureKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModuleFetchFailureKind.h; sourceTree = "<group>"; }; > 71004B9D1DC1398800A52A38 /* playback-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "playback-support.js"; sourceTree = "<group>"; }; > 71025EC21F99F096004A250C /* WebAnimation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebAnimation.h; sourceTree = "<group>"; }; >@@ -19477,8 +19477,8 @@ > 6FCFC055212DACC2007695D2 /* floats */ = { > isa = PBXGroup; > children = ( >- 6FFDC43E212EFF1600A9CA91 /* FloatBox.cpp */, >- 6FFDC440212EFF1600A9CA91 /* FloatBox.h */, >+ 6FFDC43E212EFF1600A9CA91 /* FloatAvoider.cpp */, >+ 6FFDC440212EFF1600A9CA91 /* FloatAvoider.h */, > 115CFA85208B9066001E6991 /* FloatingContext.cpp */, > 115CFA84208B9066001E6991 /* FloatingContext.h */, > 115CFA81208B8EDA001E6991 /* FloatingState.cpp */, >@@ -27867,7 +27867,7 @@ > 49ECEB701499790D00CDD3A4 /* FilterOperations.h in Headers */, > 372C00D9129619F8005C9575 /* FindOptions.h in Headers */, > A8CFF04F0A154F09000A4234 /* FixedTableLayout.h in Headers */, >- 6FFDC442212EFF1700A9CA91 /* FloatBox.h in Headers */, >+ 6FFDC442212EFF1700A9CA91 /* FloatAvoider.h in Headers */, > BC073BAA0C399B1F000F5979 /* FloatConversion.h in Headers */, > 115CFA86208B9066001E6991 /* FloatingContext.h in Headers */, > 9A528E8417D7F52F00AA9518 /* FloatingObjects.h in Headers */, >diff --git a/Source/WebCore/layout/displaytree/DisplayBox.h b/Source/WebCore/layout/displaytree/DisplayBox.h >index 22851f7646f..c945b4450b6 100644 >--- a/Source/WebCore/layout/displaytree/DisplayBox.h >+++ b/Source/WebCore/layout/displaytree/DisplayBox.h >@@ -36,7 +36,7 @@ namespace WebCore { > class RenderStyle; > > namespace Layout { >-class FloatBox; >+class FloatAvoider; > class BlockFormattingContext; > class FormattingContext; > class FloatingContext; >@@ -48,7 +48,7 @@ namespace Display { > class Box { > WTF_MAKE_ISO_ALLOCATED(Box); > public: >- friend class Layout::FloatBox; >+ friend class Layout::FloatAvoider; > friend class Layout::BlockFormattingContext; > friend class Layout::FormattingContext; > friend class Layout::FloatingContext; >diff --git a/Source/WebCore/layout/floats/FloatingContext.cpp b/Source/WebCore/layout/floats/FloatingContext.cpp >index e6d584718e9..72f9d7712e3 100644 >--- a/Source/WebCore/layout/floats/FloatingContext.cpp >+++ b/Source/WebCore/layout/floats/FloatingContext.cpp >@@ -29,7 +29,7 @@ > #if ENABLE(LAYOUT_FORMATTING_CONTEXT) > > #include "DisplayBox.h" >-#include "FloatBox.h" >+#include "FloatAvoider.h" > #include "LayoutBox.h" > #include "LayoutContainer.h" > #include "LayoutContext.h" >@@ -137,7 +137,7 @@ PointInContainingBlock FloatingContext::positionForFloat(const Box& layoutBox) c > } > > // Find the top most position where the float box fits. >- FloatBox alignedBox = { layoutBox, m_floatingState, layoutContext() }; >+ FloatAvoider alignedBox = { layoutBox, m_floatingState, layoutContext() }; > floatingPosition(alignedBox); > return alignedBox.topLeftInContainingBlock(); > } >@@ -213,28 +213,28 @@ std::optional<PositionInContainingBlock> FloatingContext::verticalPositionWithCl > return { }; > } > >-void FloatingContext::floatingPosition(FloatBox& floatBox) const >+void FloatingContext::floatingPosition(FloatAvoider& floatAvoider) const > { > std::optional<PositionInContextRoot> bottomMost; >- auto initialLeft = floatBox.left(); >+ auto initialLeft = floatAvoider.left(); > auto end = Layout::end(m_floatingState); >- for (auto iterator = begin(m_floatingState, floatBox.rectWithMargin().top()); iterator != end; ++iterator) { >+ for (auto iterator = begin(m_floatingState, floatAvoider.rectWithMargin().top()); iterator != end; ++iterator) { > ASSERT(!(*iterator).isEmpty()); > auto floats = *iterator; > >- floatBox.setTop(floats.verticalPosition() + floatBox.marginTop()); >+ floatAvoider.setTop(floats.verticalPosition() + floatAvoider.marginTop()); > // Move the box horizontally so that it either > // 1. aligns with the current floating pair > // 2. or with the containing block's content box if there's no float to align with at this vertical position. >- if (auto horiztonalPosition = floats.horiztonalPosition(floatBox.isLeftAligned() ? Float::Left : Float::Right)) { >- if (!floatBox.isLeftAligned()) >- horiztonalPosition = *horiztonalPosition - floatBox.rectWithMargin().width(); >- floatBox.setLeft(*horiztonalPosition + floatBox.marginLeft()); >+ if (auto horiztonalPosition = floats.horiztonalPosition(floatAvoider.isLeftAligned() ? Float::Left : Float::Right)) { >+ if (!floatAvoider.isLeftAligned()) >+ horiztonalPosition = *horiztonalPosition - floatAvoider.rectWithMargin().width(); >+ floatAvoider.setLeft(*horiztonalPosition + floatAvoider.marginLeft()); > } else >- floatBox.resetHorizontally(); >+ floatAvoider.resetHorizontally(); > > // Check if the box fits at this position. >- if (!floats.intersects(floatBox.rectWithMargin())) >+ if (!floats.intersects(floatAvoider.rectWithMargin())) > return; > > bottomMost = floats.bottom(); >@@ -246,7 +246,7 @@ void FloatingContext::floatingPosition(FloatBox& floatBox) const > return; > > // Passed all the floats and still does not fit? Push it below the last float. >- floatBox.setTopLeft({ initialLeft, *bottomMost + floatBox.marginTop() }); >+ floatAvoider.setTopLeft({ initialLeft, *bottomMost + floatAvoider.marginTop() }); > } > > FloatingPair::FloatingPair(const FloatingState::FloatList& floats) >diff --git a/Source/WebCore/layout/floats/FloatingContext.h b/Source/WebCore/layout/floats/FloatingContext.h >index 9988e5bae54..d28df594eae 100644 >--- a/Source/WebCore/layout/floats/FloatingContext.h >+++ b/Source/WebCore/layout/floats/FloatingContext.h >@@ -35,7 +35,7 @@ namespace WebCore { > > namespace Layout { > >-class FloatBox; >+class FloatAvoider; > class Box; > class Container; > class FloatingPair; >@@ -56,7 +56,7 @@ public: > private: > LayoutContext& layoutContext() const { return m_floatingState.layoutContext(); } > >- void floatingPosition(FloatBox&) const; >+ void floatingPosition(FloatAvoider&) const; > > FloatingState& m_floatingState; > };
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+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 188941
: 348072