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

Unified Diff: third_party/WebKit/Source/core/layout/LayoutGrid.cpp

Issue 2913093002: Revert of [css-align] Don't resolve 'auto' values for computed style. (Closed)
Patch Set: Created 3 years, 7 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: third_party/WebKit/Source/core/layout/LayoutGrid.cpp
diff --git a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
index b4b82fb03e0b3883c3d476a5e3105d67cc38cb20..a3d2251f604ddcf99a55b211e97605c555f5ae2a 100644
--- a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
@@ -97,66 +97,11 @@
DirtyGrid();
}
-StyleSelfAlignmentData LayoutGrid::SelfAlignmentForChild(
- GridAxis axis,
- const LayoutBox& child,
- const ComputedStyle* style) const {
- return axis == kGridRowAxis ? JustifySelfForChild(child, style)
- : AlignSelfForChild(child, style);
-}
-
-bool LayoutGrid::SelfAlignmentChangedToStretch(GridAxis axis,
- const ComputedStyle& old_style,
- const ComputedStyle& new_style,
- const LayoutBox& child) const {
- return SelfAlignmentForChild(axis, child, &old_style).GetPosition() !=
- kItemPositionStretch &&
- SelfAlignmentForChild(axis, child, &new_style).GetPosition() ==
- kItemPositionStretch;
-}
-
-bool LayoutGrid::SelfAlignmentChangedFromStretch(GridAxis axis,
- const ComputedStyle& old_style,
- const ComputedStyle& new_style,
- const LayoutBox& child) const {
- return SelfAlignmentForChild(axis, child, &old_style).GetPosition() ==
- kItemPositionStretch &&
- SelfAlignmentForChild(axis, child, &new_style).GetPosition() !=
- kItemPositionStretch;
-}
-
void LayoutGrid::StyleDidChange(StyleDifference diff,
const ComputedStyle* old_style) {
LayoutBlock::StyleDidChange(diff, old_style);
if (!old_style)
return;
-
- const ComputedStyle& new_style = StyleRef();
- if (old_style &&
- old_style->ResolvedAlignItems(SelfAlignmentNormalBehavior(this))
- .GetPosition() == kItemPositionStretch &&
- diff.NeedsFullLayout()) {
- // Style changes on the grid container implying stretching (to-stretch) or
- // shrinking (from-stretch) require the affected items to be laid out again.
- // These logic only applies to 'stretch' since the rest of the alignment
- // values don't change the size of the box.
- // In any case, the items' overrideSize will be cleared and recomputed (if
- // necessary) as part of the Grid layout logic, triggered by this style
- // change.
- for (LayoutBox* child = FirstInFlowChildBox(); child;
- child = child->NextInFlowSiblingBox()) {
- if (SelfAlignmentChangedToStretch(kGridRowAxis, *old_style, new_style,
- *child) ||
- SelfAlignmentChangedFromStretch(kGridRowAxis, *old_style, new_style,
- *child) ||
- SelfAlignmentChangedToStretch(kGridColumnAxis, *old_style, new_style,
- *child) ||
- SelfAlignmentChangedFromStretch(kGridColumnAxis, *old_style,
- new_style, *child)) {
- child->SetNeedsLayout(LayoutInvalidationReason::kGridChanged);
- }
- }
- }
// FIXME: The following checks could be narrowed down if we kept track of
// which type of grid items we have:
@@ -1582,21 +1527,29 @@
}
StyleSelfAlignmentData LayoutGrid::AlignSelfForChild(
- const LayoutBox& child,
- const ComputedStyle* style) const {
- if (!style)
- style = Style();
+ const LayoutBox& child) const {
+ if (!child.IsAnonymous()) {
+ return child.StyleRef().ResolvedAlignSelf(
+ SelfAlignmentNormalBehavior(&child));
+ }
+ // All the 'auto' values has been solved by the StyleAdjuster, but it's
+ // possible that some grid items generate Anonymous boxes, which need to be
+ // solved during layout.
return child.StyleRef().ResolvedAlignSelf(SelfAlignmentNormalBehavior(&child),
- style);
+ Style());
}
StyleSelfAlignmentData LayoutGrid::JustifySelfForChild(
- const LayoutBox& child,
- const ComputedStyle* style) const {
- if (!style)
- style = Style();
+ const LayoutBox& child) const {
+ if (!child.IsAnonymous()) {
+ return child.StyleRef().ResolvedJustifySelf(
+ SelfAlignmentNormalBehavior(&child));
+ }
+ // All the 'auto' values has been solved by the StyleAdjuster, but it's
+ // possible that some grid items generate Anonymous boxes, which need to be
+ // solved during layout.
return child.StyleRef().ResolvedJustifySelf(
- SelfAlignmentNormalBehavior(&child), style);
+ SelfAlignmentNormalBehavior(&child), Style());
}
GridTrackSizingDirection LayoutGrid::FlowAwareDirectionForChild(
@@ -1824,9 +1777,11 @@
bool LayoutGrid::IsBaselineAlignmentForChild(const LayoutBox& child,
GridAxis baseline_axis) const {
- ItemPosition align =
- SelfAlignmentForChild(baseline_axis, child).GetPosition();
- bool has_auto_margins = baseline_axis == kGridColumnAxis
+ bool is_column_axis_baseline = baseline_axis == kGridColumnAxis;
+ ItemPosition align = is_column_axis_baseline
+ ? AlignSelfForChild(child).GetPosition()
+ : JustifySelfForChild(child).GetPosition();
+ bool has_auto_margins = is_column_axis_baseline
? HasAutoMarginsInColumnAxis(child)
: HasAutoMarginsInRowAxis(child);
return IsBaselinePosition(align) && !has_auto_margins;
@@ -1846,8 +1801,9 @@
: col_axis_alignment_context_;
auto* context = contexts_map.at(span.StartLine());
DCHECK(context);
- ItemPosition align =
- SelfAlignmentForChild(baseline_axis, child).GetPosition();
+ ItemPosition align = is_column_axis_baseline
+ ? AlignSelfForChild(child).GetPosition()
+ : JustifySelfForChild(child).GetPosition();
return context->GetSharedGroup(child, align);
}
@@ -1965,8 +1921,9 @@
auto add_result = contexts_map.insert(span.StartLine(), nullptr);
// Looking for a compatible baseline-sharing group.
- ItemPosition align =
- SelfAlignmentForChild(baseline_axis, child).GetPosition();
+ ItemPosition align = is_column_axis_baseline
+ ? AlignSelfForChild(child).GetPosition()
+ : JustifySelfForChild(child).GetPosition();
if (add_result.is_new_entry) {
add_result.stored_value->value =
WTF::MakeUnique<BaselineContext>(child, align, ascent, descent);
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutGrid.h ('k') | third_party/WebKit/Source/core/style/ComputedStyle.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698