[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.

TBR=dgrogan@chromium.org

(cherry picked from commit 26531bbaff4aac1b026b4f908085d5d5014d9ec0)

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}
Reviewed-on: https://chromium-review.googlesource.com/879347
Reviewed-by: David Grogan <dgrogan@chromium.org>
Cr-Commit-Position: refs/branch-heads/3282@{#570}
Cr-Branched-From: 5fdc0fab22ce7efd32532ee989b223fa12f8171e-refs/heads/master@{#520840}
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index a209e28..b3cb3f4e 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -365,6 +365,30 @@
 crbug.com/711807 external/wpt/css/CSS2/normal-flow/replaced-intrinsic-002.xht [ Skip ]
 crbug.com/711807 external/wpt/css/CSS2/normal-flow/width-inherit-001.xht [ Skip ]
 
+#### external/wpt/css/css-position
+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 ]
 crbug.com/724701 overflow/overflow-basic-004.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 14fb4321..e2b52b7 100644
--- a/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp
+++ b/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp
@@ -329,6 +329,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 36cb4b6..5fb59ee3 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"
@@ -828,9 +827,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())