[css] Revert relpos and sticky table elements
This reverts the logic, but not tests, from:
7f7beb7dc8691f39a273aaa3f0915fabe3ceee50
ca3ed70409f9945d3f215fb296fd3628e1989a7c
842ea8f45240e700e448ae9bcd4ca65dc9596079
The bottom caused netflix to render wrong, the top 2 were built on the
bottom.
Bug: 417223,702927,798164
Change-Id: Icb350aa0ea385937294040ce681345e3314da0e2
Reviewed-on: https://chromium-review.googlesource.com/875015
Reviewed-by: Morten Stenshorne <mstensho@chromium.org>
Commit-Queue: David Grogan <dgrogan@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#530620}(cherry picked from commit 26531bbaff4aac1b026b4f908085d5d5014d9ec0)
Reviewed-on: https://chromium-review.googlesource.com/879381
Reviewed-by: David Grogan <dgrogan@chromium.org>
Cr-Commit-Position: refs/branch-heads/3325@{#20}
Cr-Branched-From: bc084a8b5afa3744a74927344e304c02ae54189f-refs/heads/master@{#530369}
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 137eb5d..0cf6d50 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -308,6 +308,28 @@
#### external/wpt/css/css-position
crbug.com/752022 external/wpt/css/css-position/position-sticky-offset-overflow.html [ Failure ]
+crbug.com/702927 external/wpt/css/css-position/position-sticky-table-tr-top.html [ Failure ]
+crbug.com/702927 external/wpt/css/css-position/position-sticky-table-tr-bottom.html [ Failure ]
+crbug.com/702927 external/wpt/css/css-position/position-sticky-table-tfoot-bottom.html [ Failure ]
+crbug.com/702927 external/wpt/css/css-position/position-sticky-table-thead-top.html [ Failure ]
+crbug.com/702927 external/wpt/css/css-position/position-sticky-parsing.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-tbody-left-absolute-child.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-tbody-left.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-tbody-top-absolute-child.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-tbody-top.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-tfoot-left-absolute-child.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-tfoot-left.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-tfoot-top-absolute-child.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-tfoot-top.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-thead-left-absolute-child.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-thead-left.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-thead-top-absolute-child.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-thead-top.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-tr-left-absolute-child.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-tr-left.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-tr-top-absolute-child.html [ Failure ]
+crbug.com/417223 external/wpt/css/css-position/position-relative-table-tr-top.html [ Failure ]
+
#### crbug.com/783229 overflow
crbug.com/724697 overflow/overflow-basic-002.html [ Failure ]
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp b/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp
index 76af20a..ff449d3 100644
--- a/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp
+++ b/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp
@@ -350,6 +350,18 @@
style.GetWritingMode() != layout_parent_style.GetWritingMode())
style.SetDisplay(EDisplay::kInlineBlock);
+ // We do not honor position: relative or sticky for table rows, headers, and
+ // footers. This is correct for position: relative in CSS2.1 (and caused a
+ // crash in containingBlock() on some sites) and position: sticky is defined
+ // as following position: relative behavior for table elements. It is
+ // incorrect for CSS3.
+ if ((style.Display() == EDisplay::kTableHeaderGroup ||
+ style.Display() == EDisplay::kTableRowGroup ||
+ style.Display() == EDisplay::kTableFooterGroup ||
+ style.Display() == EDisplay::kTableRow) &&
+ style.HasInFlowPosition())
+ style.SetPosition(EPosition::kStatic);
+
// Cannot support position: sticky for table columns and column groups because
// current code is only doing background painting through columns / column
// groups.
diff --git a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp
index 6a9162d..c6e1d4a 100644
--- a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp
@@ -32,7 +32,6 @@
#include "core/layout/LayoutFlexibleBox.h"
#include "core/layout/LayoutGeometryMap.h"
#include "core/layout/LayoutInline.h"
-#include "core/layout/LayoutTableCell.h"
#include "core/layout/LayoutView.h"
#include "core/paint/ObjectPaintInvalidator.h"
#include "core/paint/PaintLayer.h"
@@ -807,9 +806,7 @@
LayoutBlock* containing_block = ContainingBlock();
// The location container for boxes is not always the containing block.
LayoutObject* location_container =
- IsLayoutInline() || IsTableCell()
- ? Container()
- : ToLayoutBox(this)->LocationContainer();
+ IsLayoutInline() ? Container() : ToLayoutBox(this)->LocationContainer();
// Skip anonymous containing blocks.
while (containing_block->IsAnonymous()) {
containing_block = containing_block->ContainingBlock();
diff --git a/third_party/WebKit/Source/core/layout/LayoutTableRow.h b/third_party/WebKit/Source/core/layout/LayoutTableRow.h
index 201e457a..e6cfb7e 100644
--- a/third_party/WebKit/Source/core/layout/LayoutTableRow.h
+++ b/third_party/WebKit/Source/core/layout/LayoutTableRow.h
@@ -139,7 +139,7 @@
PaintLayerType LayerTypeRequired() const override {
if (HasTransformRelatedProperty() || HasHiddenBackface() || HasClipPath() ||
CreatesGroup() || Style()->ShouldCompositeForCurrentAnimations() ||
- IsInFlowPositioned())
+ IsStickyPositioned())
return kNormalPaintLayer;
if (HasOverflowClip())