| Index: third_party/WebKit/Source/core/layout/LayoutBox.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutBox.cpp b/third_party/WebKit/Source/core/layout/LayoutBox.cpp
|
| index dbf533cd0cb10eed0c1323ae9409b1a2c23b8edd..0e772a526583e616f31b0891b075391ebb458cdd 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutBox.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutBox.cpp
|
| @@ -75,9 +75,6 @@ namespace blink {
|
| // Used by flexible boxes when flexing this element and by table cells.
|
| typedef WTF::HashMap<const LayoutBox*, LayoutUnit> OverrideSizeMap;
|
|
|
| -static OverrideSizeMap* g_extra_inline_offset_map = nullptr;
|
| -static OverrideSizeMap* g_extra_block_offset_map = nullptr;
|
| -
|
| // Size of border belt for autoscroll. When mouse pointer in border belt,
|
| // autoscroll is started.
|
| static const int kAutoscrollBeltSize = 20;
|
| @@ -124,7 +121,6 @@ PaintLayerType LayoutBox::LayerTypeRequired() const {
|
| void LayoutBox::WillBeDestroyed() {
|
| ClearOverrideSize();
|
| ClearContainingBlockOverrideSize();
|
| - ClearExtraInlineAndBlockOffests();
|
|
|
| if (IsOutOfFlowPositioned())
|
| LayoutBlock::RemovePositionedObject(this);
|
| @@ -1445,35 +1441,6 @@ void LayoutBox::ClearOverrideContainingBlockContentLogicalHeight() {
|
| false;
|
| }
|
|
|
| -LayoutUnit LayoutBox::ExtraInlineOffset() const {
|
| - return g_extra_inline_offset_map ? g_extra_inline_offset_map->at(this)
|
| - : LayoutUnit();
|
| -}
|
| -
|
| -LayoutUnit LayoutBox::ExtraBlockOffset() const {
|
| - return g_extra_block_offset_map ? g_extra_block_offset_map->at(this)
|
| - : LayoutUnit();
|
| -}
|
| -
|
| -void LayoutBox::SetExtraInlineOffset(LayoutUnit inline_offest) {
|
| - if (!g_extra_inline_offset_map)
|
| - g_extra_inline_offset_map = new OverrideSizeMap;
|
| - g_extra_inline_offset_map->Set(this, inline_offest);
|
| -}
|
| -
|
| -void LayoutBox::SetExtraBlockOffset(LayoutUnit block_offest) {
|
| - if (!g_extra_block_offset_map)
|
| - g_extra_block_offset_map = new OverrideSizeMap;
|
| - g_extra_block_offset_map->Set(this, block_offest);
|
| -}
|
| -
|
| -void LayoutBox::ClearExtraInlineAndBlockOffests() {
|
| - if (g_extra_inline_offset_map)
|
| - g_extra_inline_offset_map->erase(this);
|
| - if (g_extra_block_offset_map)
|
| - g_extra_block_offset_map->erase(this);
|
| -}
|
| -
|
| LayoutUnit LayoutBox::AdjustBorderBoxLogicalWidthForBoxSizing(
|
| float width) const {
|
| LayoutUnit borders_plus_padding = CollapsedBorderAndCSSPaddingLogicalWidth();
|
| @@ -3896,13 +3863,28 @@ void LayoutBox::ComputeInlineStaticDistance(
|
| if (!logical_left.IsAuto() || !logical_right.IsAuto())
|
| return;
|
|
|
| + LayoutObject* parent = child->Parent();
|
| + TextDirection parent_direction = parent->Style()->Direction();
|
| +
|
| + // This method is using EnclosingBox() which is wrong for absolutely
|
| + // positioned grid items, as they rely on the grid area. So for grid items if
|
| + // both "left" and "right" properties are "auto", we can consider that one of
|
| + // them (depending on the direction) is simply "0".
|
| + if (parent->IsLayoutGrid() && parent == child->ContainingBlock()) {
|
| + if (parent_direction == TextDirection::kLtr)
|
| + logical_left.SetValue(kFixed, 0);
|
| + else
|
| + logical_right.SetValue(kFixed, 0);
|
| + return;
|
| + }
|
| +
|
| // For multicol we also need to keep track of the block position, since that
|
| // determines which column we're in and thus affects the inline position.
|
| LayoutUnit static_block_position = child->Layer()->StaticBlockPosition();
|
|
|
| // FIXME: The static distance computation has not been patched for mixed
|
| // writing modes yet.
|
| - if (child->Parent()->Style()->Direction() == TextDirection::kLtr) {
|
| + if (parent_direction == TextDirection::kLtr) {
|
| LayoutUnit static_position = child->Layer()->StaticInlinePosition() -
|
| container_block->BorderLogicalLeft();
|
| for (LayoutObject* curr = child->Parent(); curr && curr != container_block;
|
| @@ -4078,9 +4060,6 @@ void LayoutBox::ComputePositionedLogicalWidth(
|
| }
|
| }
|
|
|
| - if (!Style()->HasStaticInlinePosition(is_horizontal))
|
| - computed_values.position_ += ExtraInlineOffset();
|
| -
|
| computed_values.extent_ += borders_plus_padding;
|
| }
|
|
|
| @@ -4486,9 +4465,6 @@ void LayoutBox::ComputePositionedLogicalHeight(
|
| }
|
| }
|
|
|
| - if (!Style()->HasStaticBlockPosition(IsHorizontalWritingMode()))
|
| - computed_values.position_ += ExtraBlockOffset();
|
| -
|
| // Set final height value.
|
| computed_values.extent_ += borders_plus_padding;
|
| }
|
|
|