Index: third_party/WebKit/Source/core/layout/LayoutGrid.h |
diff --git a/third_party/WebKit/Source/core/layout/LayoutGrid.h b/third_party/WebKit/Source/core/layout/LayoutGrid.h |
index d491a58eea490dda7508fbf8a25957f1c3546162..7d446beb2d433a6f80be068278e319448794dc61 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutGrid.h |
+++ b/third_party/WebKit/Source/core/layout/LayoutGrid.h |
@@ -26,6 +26,7 @@ |
#ifndef LayoutGrid_h |
#define LayoutGrid_h |
+#include "core/layout/BaselineAlignment.h" |
#include "core/layout/LayoutBlock.h" |
#include "core/layout/OrderIterator.h" |
#include "core/style/GridPositionsResolver.h" |
@@ -47,6 +48,7 @@ enum TrackSizeComputationPhase { |
MaximizeTracks, |
}; |
enum GridAxisPosition { GridAxisStart, GridAxisEnd, GridAxisCenter }; |
+enum GridAxis { GridRowAxis, GridColumnAxis }; |
class LayoutGrid final : public LayoutBlock { |
public: |
@@ -318,7 +320,34 @@ class LayoutGrid final : public LayoutBlock { |
LinePositionMode = PositionOnContainingLine) const override; |
int firstLineBoxBaseline() const override; |
int inlineBlockBaseline(LineDirectionMode) const override; |
- bool isInlineBaselineAlignedChild(const LayoutBox* child) const; |
+ |
+ bool isHorizontalGridAxis(GridAxis) const; |
+ bool isParallelToBlockAxisForChild(const LayoutBox&, GridAxis) const; |
+ bool isDescentBaselineForChild(const LayoutBox&, GridAxis) const; |
+ bool isBaselineAlignmentForChild(const LayoutBox&, |
+ GridAxis = GridColumnAxis) const; |
+ const BaselineGroup& getBaselineGroupForChild(const LayoutBox&, |
+ const GridSizingData&, |
+ GridAxis) const; |
+ |
+ LayoutUnit marginOverForChild(const LayoutBox&, GridAxis) const; |
+ LayoutUnit logicalAscentForChild(const LayoutBox&, GridAxis) const; |
+ LayoutUnit ascentForChild(const LayoutBox&, GridAxis) const; |
+ LayoutUnit descentForChild(const LayoutBox&, |
+ LayoutUnit ascent, |
+ GridAxis) const; |
+ |
+ bool isBaselineContextComputed(GridAxis) const; |
+ bool baselineMayAffectIntrinsicWidth() const; |
+ void computeBaselineAlignmentContext(GridSizingData&); |
+ void updateBaselineAlignmentContextIfNeeded(LayoutBox&, |
+ GridSizingData&, |
+ GridAxis); |
+ |
+ LayoutUnit columnAxisBaselineOffsetForChild(const LayoutBox&, |
+ const GridSizingData&) const; |
+ LayoutUnit rowAxisBaselineOffsetForChild(const LayoutBox&, |
+ const GridSizingData&) const; |
#if ENABLE(ASSERT) |
bool tracksAreWiderThanMinTrackBreadth(GridTrackSizingDirection, |
@@ -347,6 +376,15 @@ class LayoutGrid final : public LayoutBlock { |
size_t numTracks(GridTrackSizingDirection, const Grid&) const; |
+ typedef HashMap<unsigned, |
+ std::unique_ptr<BaselineContext>, |
+ DefaultHash<unsigned>::Hash, |
+ WTF::UnsignedWithZeroKeyHashTraits<unsigned>> |
+ BaselineContextsMap; |
+ |
+ BaselineContextsMap m_rowAxisAlignmentContext; |
+ BaselineContextsMap m_colAxisAlignmentContext; |
+ |
// TODO(svillar): move into this class once GridIterator is added. |
typedef Vector<Vector<GridCell>> GridAsMatrix; |
class Grid final { |