Auto-rebaseline for r402292

https://chromium.googlesource.com/chromium/src/+/0e20bd123

BUG=619630
TBR=wangxianzhu@chromium.org

Review URL: https://codereview.chromium.org/2108503002 .

Cr-Commit-Position: refs/heads/master@{#402343}
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 4e1fc27..df60e16 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -888,136 +888,6 @@
 crbug.com/400829 media/video-object-fit.html [ Failure ]
 crbug.com/400829 virtual/stable/media/stable/video-object-fit-stable.html [ Failure ]
 
-crbug.com/619630 fast/repaint/vertical-align-length1.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/quotes.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/line-flow-with-floats-8.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/invisible-objects.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/overflow-delete-line.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/use-setAttribute-crash.svg [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/control-clip.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/crbug-371640.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/crbug-371640-4.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/text-repaint-including-stroke.svg [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/stacked-diacritics.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/selection-after-remove.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/subtree-root-skipped.html [ NeedsRebaseline ]
-crbug.com/619630 compositing/squashing/remove-squashed-layer-plus-move.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/gradients-em-stops-repaint.html [ NeedsRebaseline ]
-crbug.com/619630 svg/repaint/text-mask-update.svg [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/text-xy-updates-SVGList.xhtml [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/remove-inline-layer-after-layout.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/relative-sized-image.xhtml [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/list-marker-2.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/relative-sized-use-on-symbol.xhtml [ NeedsRebaseline ]
-crbug.com/619630 fast/table/border-collapsing/cached-change-cell-sl-border-color.html [ NeedsRebaseline ]
-crbug.com/619630 svg/text/tspan-dynamic-positioning.svg [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/line-flow-with-floats-4.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/line-in-scrolled-clipped-block.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/transform-layout-repaint.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/js-late-gradient-creation.svg [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/layout-state-scrolloffset.html [ NeedsRebaseline ]
-crbug.com/619630 fast/table/resize-table-repaint-vertical-align-cell.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/line-flow-with-floats-6.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/inline-relative-positioned.html [ NeedsRebaseline ]
-crbug.com/619630 svg/as-object/deep-nested-embedded-svg-size-changes-no-layout-triggers-1.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/line-flow-with-floats-10.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/positioned-document-element.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/inline-block-resize.html [ NeedsRebaseline ]
-crbug.com/619630 svg/text/modify-text-node-in-tspan.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/shift-relative-positioned-container-with-image-removal.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/window-resize-centered-inline-under-fixed-pos.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/line-flow-with-floats-7.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/overflow-scroll-delete.html [ NeedsRebaseline ]
-crbug.com/619630 fast/table/resize-table-repaint-percent-size-cell.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/text-append-dirty-lines.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/change-text-content-and-background-color.html [ NeedsRebaseline ]
-crbug.com/619630 svg/as-image/svg-image-change-content-size.xhtml [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/vertical-align-length2.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/layout-state-relative.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/relative-sized-shadow-tree-content-with-symbol.xhtml [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/vertical-align1.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/inline-reflow.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/js-late-clipPath-creation.svg [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/window-resize-vertical-writing-mode.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/relative-sized-content.xhtml [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/text-match-document-change.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/layoutstate-invalid-invalidation-inline-relative-positioned.html [ NeedsRebaseline ]
-crbug.com/619630 svg/repaint/outline-offset-text.html [ NeedsRebaseline ]
-crbug.com/619630 svg/as-object/deep-nested-embedded-svg-size-changes-no-layout-triggers-2.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/relative-inline-positioned-movement-repaint.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/reflection-repaint-test.html [ NeedsRebaseline ]
-crbug.com/619630 svg/text/append-text-node-to-tspan.html [ NeedsRebaseline ]
-crbug.com/619630 svg/carto.net/tabgroup.svg [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/remove-block-after-layout.html [ NeedsRebaseline ]
-crbug.com/619630 fast/table/resize-table-row-repaint.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/layout-state-scrolloffset3.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/line-flow-with-floats-1.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/table-collapsed-border.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/line-overflow.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/relative-sized-deep-shadow-tree-content.xhtml [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/multicol-with-text.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/box-inline-resize.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/relative-sized-use-without-attributes-on-symbol.xhtml [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/resize-scrollable-iframe.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/remove-inline-block-descendant-of-flex.html [ NeedsRebaseline ]
-crbug.com/619630 svg/repaint/add-outline-property-on-root.html [ NeedsRebaseline ]
-crbug.com/619630 css3/flexbox/repaint.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/relative-sized-shadow-tree-content.xhtml [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/outline-continuations.html [ NeedsRebaseline ]
-crbug.com/619630 svg/repaint/transform-text-element.html [ NeedsRebaseline ]
-crbug.com/619630 svg/repaint/repaint-non-scaling-stroke-text-decoration.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/selection-after-delete.html [ NeedsRebaseline ]
-crbug.com/619630 css3/flexbox/repaint-on-layout.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/text-dom-removal.svg [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/absolute-sized-content-with-resources.xhtml [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/clipped-relative.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/scrolling-embedded-svg-file-image-repaint-problem.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/outline-change-invalidation.html [ NeedsRebaseline ]
-crbug.com/619630 svg/transforms/animated-path-inside-transformed-html.xhtml [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/bugzilla-5699.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/bugzilla-6278.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/bugzilla-7235.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/remove-inline-after-layout.html [ NeedsRebaseline ]
-crbug.com/619630 css3/flexbox/scrollbars-changed.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/delete-into-nested-block.html [ NeedsRebaseline ]
-crbug.com/619630 svg/repaint/inner-svg-change-viewPort-relative.svg [ NeedsRebaseline ]
-crbug.com/619630 svg/text/remove-tspan-from-text.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/line-flow-with-floats-3.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/js-late-clipPath-and-object-creation.svg [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/multi-layout-one-frame.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/selection-clear.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/layout-state-scrolloffset2.html [ NeedsRebaseline ]
-crbug.com/619630 svg/as-object/embedded-svg-size-changes-no-layout-triggers.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/relative-sized-inner-svg.xhtml [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/offset-change-wrong-invalidation-with-float.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/line-flow-with-floats-5.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/positioned-list-offset-change-repaint.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/overflow-scroll-body-appear.html [ NeedsRebaseline ]
-crbug.com/619630 svg/as-object/nested-embedded-svg-size-changes-no-layout-triggers-1.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/bugzilla-3509.html [ NeedsRebaseline ]
-crbug.com/619630 svg/text/remove-text-node-from-tspan.html [ NeedsRebaseline ]
-crbug.com/619630 svg/as-object/nested-embedded-svg-size-changes-no-layout-triggers-2.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/use-clipped-hit.svg [ NeedsRebaseline ]
-crbug.com/619630 svg/text/text-rescale.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/vertical-align2.html [ NeedsRebaseline ]
-crbug.com/619630 svg/repaint/repaint-non-scaling-stroke-text.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/lines-with-layout-delta.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/multicol-repaint.html [ NeedsRebaseline ]
-crbug.com/619630 compositing/squashing/iframe-inside-squashed-layer.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/relative-sized-content-with-resources.xhtml [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/inline-focus.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/line-flow-with-floats-2.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/block-no-inflow-children.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/make-children-non-inline.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/clip-with-layout-delta.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/text-in-relative-positioned-inline.html [ NeedsRebaseline ]
-crbug.com/619630 svg/repaint/modify-transferred-listitem-different-attr.html [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/inline-outline-repaint.html [ NeedsRebaseline ]
-crbug.com/619630 svg/repaint/remove-outline-property-on-root.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/use-detach.svg [ NeedsRebaseline ]
-crbug.com/619630 fast/repaint/line-flow-with-floats-9.html [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/object-sizing-no-width-height-change-content-box-size.xhtml [ NeedsRebaseline ]
-crbug.com/619630 svg/custom/js-late-pattern-creation.svg [ NeedsRebaseline ]
 crbug.com/619630 svg/text/text-viewbox-rescale.html [ NeedsManualRebaseline ]
 
 # We only want to run one of the web-animations-api tests in stable mode.
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/squashing/remove-squashed-layer-plus-move-expected.txt b/third_party/WebKit/LayoutTests/compositing/squashing/remove-squashed-layer-plus-move-expected.txt
similarity index 82%
rename from third_party/WebKit/LayoutTests/platform/mac/compositing/squashing/remove-squashed-layer-plus-move-expected.txt
rename to third_party/WebKit/LayoutTests/compositing/squashing/remove-squashed-layer-plus-move-expected.txt
index 08df4921..89d8df4e 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/compositing/squashing/remove-squashed-layer-plus-move-expected.txt
+++ b/third_party/WebKit/LayoutTests/compositing/squashing/remove-squashed-layer-plus-move-expected.txt
@@ -11,7 +11,7 @@
         {
           "object": "LayoutBlockFlow DIV id='container'",
           "rect": [8, 8, 769, 108],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (anonymous)",
@@ -22,11 +22,6 @@
           "object": "LayoutBlockFlow (anonymous)",
           "rect": [8, 62, 769, 54],
           "reason": "bounds change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='container'",
-          "rect": [8, 62, 769, 54],
-          "reason": "incremental"
         }
       ],
       "children": [
@@ -63,7 +58,7 @@
                 {
                   "object": "LayoutBlockFlow (relative positioned) DIV class='mv-tile'",
                   "rect": [0, 0, 100, 50],
-                  "reason": "compositing update"
+                  "reason": "forced by layout"
                 },
                 {
                   "object": "LayoutBlockFlow (relative positioned) DIV id='foo' class='mv-tile'",
@@ -83,22 +78,6 @@
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (relative positioned) DIV class='mv-tile'",
       "reason": "subtree"
     },
@@ -108,19 +87,15 @@
     },
     {
       "object": "LayoutBlockFlow DIV id='container'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='container'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow (relative positioned) DIV class='mv-tile'",
-      "reason": "compositing update"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow (anonymous)",
diff --git a/third_party/WebKit/LayoutTests/css3/flexbox/repaint-on-layout-expected.txt b/third_party/WebKit/LayoutTests/css3/flexbox/repaint-on-layout-expected.txt
index 5adeaa65..25c2c0f 100644
--- a/third_party/WebKit/LayoutTests/css3/flexbox/repaint-on-layout-expected.txt
+++ b/third_party/WebKit/LayoutTests/css3/flexbox/repaint-on-layout-expected.txt
@@ -27,14 +27,6 @@
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (floating) DIV class='state'",
       "reason": "forced by layout"
     },
diff --git a/third_party/WebKit/LayoutTests/css3/flexbox/scrollbars-changed-expected.txt b/third_party/WebKit/LayoutTests/css3/flexbox/scrollbars-changed-expected.txt
index 68157a4..fcd89a27 100644
--- a/third_party/WebKit/LayoutTests/css3/flexbox/scrollbars-changed-expected.txt
+++ b/third_party/WebKit/LayoutTests/css3/flexbox/scrollbars-changed-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV id='dynamic' class='content'",
-          "rect": [0, 0, 185, 20],
-          "reason": "invalidate paint rectangle"
+          "rect": [0, 0, 185, 30],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='scroller'",
@@ -28,20 +28,16 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "VerticalScrollbar",
       "reason": "scroll"
     },
     {
       "object": "LayoutBlockFlow DIV id='dynamic' class='content'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/clipped-relative-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/clipped-relative-expected.txt
index d7b9b9cb..c7aa7930 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/clipped-relative-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/clipped-relative-expected.txt
@@ -16,21 +16,13 @@
         {
           "object": "LayoutImage IMG",
           "rect": [8, 70, 204, 232],
-          "reason": "location change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (positioned) DIV id='inner'",
       "reason": "forced by layout"
     },
@@ -40,7 +32,7 @@
     },
     {
       "object": "LayoutImage IMG",
-      "reason": "location change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/inline-block-resize-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/inline-block-resize-expected.txt
index a1e1dc3..88f702a6 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/inline-block-resize-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/inline-block-resize-expected.txt
@@ -11,21 +11,13 @@
         {
           "object": "LayoutBlockFlow DIV id='target'",
           "rect": [8, 8, 100, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (positioned) DIV",
       "reason": "forced by layout"
     },
@@ -35,7 +27,7 @@
     },
     {
       "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/inline-reflow-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/inline-reflow-expected.txt
index 601c1b2..d05aff4 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/inline-reflow-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/inline-reflow-expected.txt
@@ -14,6 +14,11 @@
           "reason": "forced by layout"
         },
         {
+          "object": "LayoutText #text",
+          "rect": [0, 0, 300, 200],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutBlockFlow (positioned) DIV id='div2' class='container'",
           "rect": [0, 300, 300, 20],
           "reason": "forced by layout"
@@ -25,147 +30,19 @@
         },
         {
           "object": "LayoutText #text",
-          "rect": [0, 200, 200, 100],
-          "reason": "incremental"
+          "rect": [0, 0, 200, 300],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
-          "rect": [200, 0, 100, 200],
-          "reason": "incremental"
+          "rect": [0, 300, 180, 20],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'A A A A A'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AA AA AA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AA AAA AAA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAA AAAA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAAA AAAAA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAAAA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAAAAA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAAAAAA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAAAAA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAAAA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAAAA AAAA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAAA AAA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAA AAA AA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AA AA AA A'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'A A A A'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'A A A A A'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (positioned) DIV id='div1' class='container'",
       "reason": "forced by layout"
     },
@@ -175,47 +52,47 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'A A A A A AA AA'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'AA AA AAA AAA'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'AAA AAAA AAAA'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'AAAAA AAAAA'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'AAAAAA AAAAAAA'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'AAAAAA AAAAA'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'AAAAA AAAA AAAA'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'AAA AAA AAA AA'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'AA AA AA A A A'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'A A'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow (positioned) DIV id='div2' class='container'",
@@ -224,6 +101,14 @@
     {
       "object": "RootInlineBox",
       "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'A A A A A'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/inline-relative-positioned-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/inline-relative-positioned-expected.txt
index 683b555..76c7b86 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/inline-relative-positioned-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/inline-relative-positioned-expected.txt
@@ -11,7 +11,7 @@
         {
           "object": "LayoutBlockFlow DIV id='target'",
           "rect": [8, 88, 100, 100],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -23,16 +23,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/invisible-objects-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/invisible-objects-expected.txt
index a39a85f..efc88b4 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/invisible-objects-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/invisible-objects-expected.txt
@@ -11,12 +11,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow (relative positioned) DIV",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/multicol-with-text-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/multicol-with-text-expected.txt
index 2998ca8..de9a85e7 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/multicol-with-text-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/multicol-with-text-expected.txt
@@ -23,30 +23,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutMultiColumnFlowThread (anonymous)",
       "reason": "forced by layout"
     },
@@ -55,6 +31,30 @@
       "reason": "forced by layout"
     },
     {
+      "object": "LayoutBR BR",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\n'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBR BR",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\n'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBR BR",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\n'",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutText #text",
       "reason": "layoutObject insertion"
     },
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/overflow-delete-line-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/overflow-delete-line-expected.txt
index 22e23bc..35e619c 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/overflow-delete-line-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/overflow-delete-line-expected.txt
@@ -11,7 +11,7 @@
         {
           "object": "LayoutBlockFlow DIV id='dv'",
           "rect": [8, 70, 80, 36],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -28,28 +28,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV id='dv'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/overflow-scroll-delete-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/overflow-scroll-delete-expected.txt
index af68e36..084fc44 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/overflow-scroll-delete-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/overflow-scroll-delete-expected.txt
@@ -9,11 +9,6 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='t'",
-          "rect": [8, 112, 80, 35],
-          "reason": "invalidate paint rectangle"
-        },
-        {
           "object": "LayoutText #text",
           "rect": [8, 112, 44, 35],
           "reason": "full"
@@ -23,26 +18,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='t'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "full"
     },
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/positioned-list-offset-change-repaint-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/positioned-list-offset-change-repaint-expected.txt
index 8c5105a..2f2d6fa 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/positioned-list-offset-change-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/positioned-list-offset-change-repaint-expected.txt
@@ -16,25 +16,13 @@
         {
           "object": "LayoutImage IMG",
           "rect": [8, 60, 214, 232],
-          "reason": "location change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutListItem (positioned) LI",
       "reason": "forced by layout"
     },
@@ -44,11 +32,11 @@
     },
     {
       "object": "LayoutListMarker (anonymous)",
-      "reason": "none"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutImage IMG",
-      "reason": "location change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/reflection-repaint-test-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/reflection-repaint-test-expected.txt
index 2786e99..96b51bd 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/reflection-repaint-test-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/reflection-repaint-test-expected.txt
@@ -10,13 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [22, 50, 226, 166],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [22, 50, 226, 166],
-          "reason": "invalidate paint rectangle"
+          "rect": [22, 50, 226, 167],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -28,20 +23,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
@@ -50,6 +37,10 @@
     {
       "object": "InlineTextBox 'PASS'",
       "reason": "full"
+    },
+    {
+      "object": "LayoutReplica (anonymous)",
+      "reason": "none"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/remove-block-after-layout-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/remove-block-after-layout-expected.txt
index 8fab7cb..c705d2d 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/remove-block-after-layout-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/remove-block-after-layout-expected.txt
@@ -23,26 +23,10 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'This div should'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'disappear.'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (positioned) DIV id='target'",
       "reason": "layoutObject removal"
     }
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/remove-inline-block-descendant-of-flex-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/remove-inline-block-descendant-of-flex-expected.txt
index e5e2c3a..11e3cfc 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/remove-inline-block-descendant-of-flex-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/remove-inline-block-descendant-of-flex-expected.txt
@@ -9,14 +9,14 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='inline-block-2' class='item'",
-          "rect": [0, 200, 100, 100],
-          "reason": "bounds change"
+          "object": "LayoutBlockFlow DIV",
+          "rect": [0, 100, 100, 300],
+          "reason": "forced by layout"
         },
         {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [0, 100, 100, 100],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutBlockFlow DIV id='inline-block-2' class='item'",
+          "rect": [0, 200, 100, 100],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='inline-block-1' class='item'",
@@ -26,63 +26,35 @@
         {
           "object": "LayoutBlockFlow DIV id='inline-block-2' class='item'",
           "rect": [0, 100, 100, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBR BR",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV id='inline-block-1' class='item'",
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV id='inline-block-2' class='item'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBR BR",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/resize-scrollable-iframe-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/resize-scrollable-iframe-expected.txt
similarity index 69%
rename from third_party/WebKit/LayoutTests/platform/mac/fast/repaint/resize-scrollable-iframe-expected.txt
rename to third_party/WebKit/LayoutTests/fast/repaint/resize-scrollable-iframe-expected.txt
index 77beff1..90ee9d19 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/resize-scrollable-iframe-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/resize-scrollable-iframe-expected.txt
@@ -11,17 +11,12 @@
         {
           "object": "LayoutBlockFlow (anonymous)",
           "rect": [8, 108, 784, 304],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 212, 784, 200],
-          "reason": "incremental"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutIFrame IFRAME id='iframe'",
-          "rect": [8, 208, 300, 200],
-          "reason": "incremental"
+          "rect": [8, 108, 300, 300],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutView #document",
@@ -34,11 +29,6 @@
           "reason": "scroll"
         },
         {
-          "object": "LayoutIFrame IFRAME id='iframe'",
-          "rect": [108, 108, 200, 300],
-          "reason": "incremental"
-        },
-        {
           "object": "LayoutView #document",
           "rect": [93, 108, 200, 285],
           "reason": "incremental"
@@ -73,28 +63,16 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow (anonymous)",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutIFrame IFRAME id='iframe'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/shift-relative-positioned-container-with-image-removal-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/shift-relative-positioned-container-with-image-removal-expected.txt
index 6069b23..7b7fb06 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/shift-relative-positioned-container-with-image-removal-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/shift-relative-positioned-container-with-image-removal-expected.txt
@@ -67,18 +67,10 @@
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (anonymous)",
       "reason": "layoutObject removal"
     },
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/text-in-relative-positioned-inline-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/text-in-relative-positioned-inline-expected.txt
index ec74291..6beb047b 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/text-in-relative-positioned-inline-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/text-in-relative-positioned-inline-expected.txt
@@ -11,7 +11,7 @@
         {
           "object": "LayoutBlockFlow DIV",
           "rect": [108, 8, 684, 100],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutInline (relative positioned) SPAN id='target'",
@@ -28,28 +28,16 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'ab'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutInline (relative positioned) SPAN id='target'",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/vertical-align-length1-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/vertical-align-length1-expected.txt
new file mode 100644
index 0000000..87dc1ace
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/repaint/vertical-align-length1-expected.txt
@@ -0,0 +1,67 @@
+{
+  "name": "Content Root Layer",
+  "bounds": [800, 600],
+  "children": [
+    {
+      "name": "LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "drawsContent": true,
+      "paintInvalidations": [
+        {
+          "object": "LayoutBlockFlow BODY",
+          "rect": [0, 0, 800, 154],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV id='target'",
+          "rect": [20, 0, 100, 100],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [120, 130, 20, 20],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [120, 100, 20, 20],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [0, 130, 20, 20],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [0, 100, 20, 20],
+          "reason": "forced by layout"
+        }
+      ]
+    }
+  ],
+  "objectPaintInvalidations": [
+    {
+      "object": "LayoutBlockFlow BODY",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV class='other'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV class='other'",
+      "reason": "forced by layout"
+    }
+  ]
+}
+
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/vertical-align-length2-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/vertical-align-length2-expected.txt
new file mode 100644
index 0000000..f6b9a58
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/repaint/vertical-align-length2-expected.txt
@@ -0,0 +1,62 @@
+{
+  "name": "Content Root Layer",
+  "bounds": [800, 600],
+  "children": [
+    {
+      "name": "LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "drawsContent": true,
+      "paintInvalidations": [
+        {
+          "object": "LayoutBlockFlow BODY",
+          "rect": [0, 0, 800, 204],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [300, 0, 200, 200],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [0, 0, 200, 200],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV id='target'",
+          "rect": [200, 80, 100, 100],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV id='target'",
+          "rect": [200, 50, 100, 100],
+          "reason": "forced by layout"
+        }
+      ]
+    }
+  ],
+  "objectPaintInvalidations": [
+    {
+      "object": "LayoutBlockFlow BODY",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV class='other'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV class='other'",
+      "reason": "forced by layout"
+    }
+  ]
+}
+
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/vertical-align1-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/vertical-align1-expected.txt
new file mode 100644
index 0000000..096a57f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/repaint/vertical-align1-expected.txt
@@ -0,0 +1,67 @@
+{
+  "name": "Content Root Layer",
+  "bounds": [800, 600],
+  "children": [
+    {
+      "name": "LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "drawsContent": true,
+      "paintInvalidations": [
+        {
+          "object": "LayoutBlockFlow BODY",
+          "rect": [0, 0, 800, 104],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV id='target'",
+          "rect": [20, 0, 100, 100],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [120, 80, 20, 20],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [120, 34, 20, 20],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [0, 80, 20, 20],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [0, 34, 20, 20],
+          "reason": "forced by layout"
+        }
+      ]
+    }
+  ],
+  "objectPaintInvalidations": [
+    {
+      "object": "LayoutBlockFlow BODY",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV class='other'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV class='other'",
+      "reason": "forced by layout"
+    }
+  ]
+}
+
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/vertical-align2-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/vertical-align2-expected.txt
index e76b66c..f082f85 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/vertical-align2-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/vertical-align2-expected.txt
@@ -11,58 +11,51 @@
         {
           "object": "LayoutBlockFlow BODY",
           "rect": [0, 0, 800, 246],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 204, 800, 42],
-          "reason": "incremental"
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [300, 0, 200, 200],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [0, 0, 200, 200],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='target'",
           "rect": [200, 146, 100, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='target'",
           "rect": [200, 100, 100, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow BODY",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
+      "reason": "forced by layout"
     },
     {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "incremental"
+      "object": "LayoutBlockFlow DIV class='other'",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV class='other'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/repaint/window-resize-centered-inline-under-fixed-pos-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/window-resize-centered-inline-under-fixed-pos-expected.txt
similarity index 67%
rename from third_party/WebKit/LayoutTests/platform/win/fast/repaint/window-resize-centered-inline-under-fixed-pos-expected.txt
rename to third_party/WebKit/LayoutTests/fast/repaint/window-resize-centered-inline-under-fixed-pos-expected.txt
index ad49ffe..ed4e430a 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/repaint/window-resize-centered-inline-under-fixed-pos-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/repaint/window-resize-centered-inline-under-fixed-pos-expected.txt
@@ -25,45 +25,24 @@
         },
         {
           "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 250, 6, 250],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 0, 6, 33],
-          "reason": "invalidate paint rectangle"
+          "rect": [0, 0, 6, 500],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
           "rect": [0, 250, 6, 30],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
           "rect": [0, 125, 6, 30],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutView #document",
       "reason": "incremental"
     },
@@ -77,19 +56,15 @@
     },
     {
       "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
@@ -120,30 +95,19 @@
         },
         {
           "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 0, 6, 33],
-          "reason": "invalidate paint rectangle"
+          "rect": [0, 0, 6, 250],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
+          "rect": [0, 125, 6, 30],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutView #document",
       "reason": "incremental"
     },
@@ -157,7 +121,15 @@
     },
     {
       "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
+      "reason": "forced by layout"
     }
   ]
 }
@@ -188,61 +160,24 @@
         },
         {
           "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 250, 6, 350],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 0, 6, 33],
-          "reason": "invalidate paint rectangle"
+          "rect": [0, 0, 6, 600],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
           "rect": [0, 300, 6, 30],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
           "rect": [0, 125, 6, 30],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutView #document",
       "reason": "incremental"
     },
@@ -256,19 +191,15 @@
     },
     {
       "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
@@ -299,46 +230,19 @@
         },
         {
           "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 0, 6, 33],
-          "reason": "invalidate paint rectangle"
+          "rect": [0, 0, 6, 600],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
+          "rect": [0, 300, 6, 30],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutView #document",
       "reason": "incremental"
     },
@@ -352,7 +256,15 @@
     },
     {
       "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/android/css3/flexbox/scrollbars-changed-expected.txt b/third_party/WebKit/LayoutTests/platform/android/css3/flexbox/scrollbars-changed-expected.txt
new file mode 100644
index 0000000..68157a4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/android/css3/flexbox/scrollbars-changed-expected.txt
@@ -0,0 +1,56 @@
+{
+  "name": "Content Root Layer",
+  "bounds": [800, 600],
+  "children": [
+    {
+      "name": "LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "drawsContent": true,
+      "paintInvalidations": [
+        {
+          "object": "LayoutBlockFlow DIV id='dynamic' class='content'",
+          "rect": [0, 0, 185, 20],
+          "reason": "invalidate paint rectangle"
+        },
+        {
+          "object": "LayoutBlockFlow DIV id='scroller'",
+          "rect": [185, 0, 15, 100],
+          "reason": "scroll"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [0, 5, 15, 15],
+          "reason": "full"
+        }
+      ]
+    }
+  ],
+  "objectPaintInvalidations": [
+    {
+      "object": "InlineTextBox ''",
+      "reason": "full"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "full"
+    },
+    {
+      "object": "VerticalScrollbar",
+      "reason": "scroll"
+    },
+    {
+      "object": "LayoutBlockFlow DIV id='dynamic' class='content'",
+      "reason": "invalidate paint rectangle"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "full"
+    },
+    {
+      "object": "InlineTextBox 'z'",
+      "reason": "full"
+    }
+  ]
+}
+
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/squashing/iframe-inside-squashed-layer-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/compositing/squashing/iframe-inside-squashed-layer-expected.txt
index 3abfbf75..3bb2ced 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/compositing/squashing/iframe-inside-squashed-layer-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/squashing/iframe-inside-squashed-layer-expected.txt
@@ -52,6 +52,11 @@
                   "reason": "forced by layout"
                 },
                 {
+                  "object": "LayoutText #text",
+                  "rect": [8, 508, 29, 19],
+                  "reason": "forced by layout"
+                },
+                {
                   "object": "LayoutView #document",
                   "rect": [285, 500, 15, 150],
                   "reason": "scroll"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/squashing/remove-squashed-layer-plus-move-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/compositing/squashing/remove-squashed-layer-plus-move-expected.txt
index fc16cca..e1c106d 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/compositing/squashing/remove-squashed-layer-plus-move-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/squashing/remove-squashed-layer-plus-move-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV id='container'",
-          "rect": [8, 8, 769, 109],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 8, 769, 110],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (anonymous)",
@@ -22,11 +22,6 @@
           "object": "LayoutBlockFlow (anonymous)",
           "rect": [8, 63, 769, 55],
           "reason": "bounds change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='container'",
-          "rect": [8, 63, 769, 55],
-          "reason": "incremental"
         }
       ],
       "children": [
@@ -63,7 +58,7 @@
                 {
                   "object": "LayoutBlockFlow (relative positioned) DIV class='mv-tile'",
                   "rect": [0, 0, 100, 50],
-                  "reason": "compositing update"
+                  "reason": "forced by layout"
                 },
                 {
                   "object": "LayoutBlockFlow (relative positioned) DIV id='foo' class='mv-tile'",
@@ -83,22 +78,6 @@
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (relative positioned) DIV class='mv-tile'",
       "reason": "subtree"
     },
@@ -108,19 +87,15 @@
     },
     {
       "object": "LayoutBlockFlow DIV id='container'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='container'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow (relative positioned) DIV class='mv-tile'",
-      "reason": "compositing update"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow (anonymous)",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css3/flexbox/repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/css3/flexbox/repaint-expected.txt
index e886faa..526d087 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/css3/flexbox/repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/css3/flexbox/repaint-expected.txt
@@ -21,7 +21,7 @@
         {
           "object": "LayoutText #text",
           "rect": [138, 128, 651, 99],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='content'",
@@ -36,7 +36,7 @@
         {
           "object": "LayoutText #text",
           "rect": [148, 128, 640, 99],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='content'",
@@ -56,7 +56,7 @@
         {
           "object": "LayoutText #text",
           "rect": [400, 128, 389, 159],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='left'",
@@ -73,68 +73,44 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='left'",
+      "reason": "incremental"
+    },
+    {
+      "object": "LayoutBlockFlow DIV id='content'",
+      "reason": "style change"
+    },
+    {
+      "object": "LayoutBlockFlow P",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
+      "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
+      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet dolor id urna eleifend aliquet. Nulla'",
+      "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
+      "object": "InlineTextBox 'vel dolor ipsum. Aliquam ut turpis nisl, in vulputate sapien. Cum sociis natoque penatibus et magnis dis'",
+      "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
+      "object": "InlineTextBox 'parturient montes, nascetur ridiculus mus. Sed congue magna vitae dolor feugiat vehicula. Sed volutpat,'",
+      "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
+      "object": "InlineTextBox 'tellus vel varius vestibulum, purus quam mollis sapien, in condimentum leo neque sed nulla. Nunc quis porta'",
+      "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'laoreet dolor id urna eleifend aliquet. Nulla vel dolor ipsum.'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Aliquam ut turpis nisl, in vulputate sapien. Cum sociis natoque'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'penatibus et magnis dis parturient montes, nascetur ridiculus mus.'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Sed congue magna vitae dolor feugiat vehicula. Sed volutpat,'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'tellus vel varius vestibulum, purus quam mollis sapien, in'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'condimentum leo neque sed nulla. Nunc quis porta elit.'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Pellentesque erat lectus, ultricies a lobortis id, faucibus id quam.'",
-      "reason": "full"
+      "object": "InlineTextBox 'elit. Pellentesque erat lectus, ultricies a lobortis id, faucibus id quam.'",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV id='left'",
@@ -154,107 +130,27 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet dolor id urna eleifend aliquet. Nulla'",
-      "reason": "bounds change"
-    },
-    {
-      "object": "InlineTextBox 'vel dolor ipsum. Aliquam ut turpis nisl, in vulputate sapien. Cum sociis natoque penatibus et magnis dis'",
-      "reason": "bounds change"
-    },
-    {
-      "object": "InlineTextBox 'parturient montes, nascetur ridiculus mus. Sed congue magna vitae dolor feugiat vehicula. Sed volutpat,'",
-      "reason": "bounds change"
-    },
-    {
-      "object": "InlineTextBox 'tellus vel varius vestibulum, purus quam mollis sapien, in condimentum leo neque sed nulla. Nunc quis porta'",
-      "reason": "bounds change"
-    },
-    {
-      "object": "InlineTextBox 'elit. Pellentesque erat lectus, ultricies a lobortis id, faucibus id quam.'",
-      "reason": "bounds change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet dolor id urna eleifend aliquet. Nulla'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'vel dolor ipsum. Aliquam ut turpis nisl, in vulputate sapien. Cum sociis natoque penatibus et magnis dis'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'parturient montes, nascetur ridiculus mus. Sed congue magna vitae dolor feugiat vehicula. Sed volutpat,'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'tellus vel varius vestibulum, purus quam mollis sapien, in condimentum leo neque sed nulla. Nunc quis porta'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'elit. Pellentesque erat lectus, ultricies a lobortis id, faucibus id quam.'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='left'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='content'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow P",
       "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
+      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet dolor id urna eleifend aliquet. Nulla'",
       "reason": "forced by layout"
     },
     {
-      "object": "LayoutText #text",
-      "reason": "bounds change"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet dolor id urna eleifend aliquet. Nulla'",
-      "reason": "bounds change"
-    },
-    {
       "object": "InlineTextBox 'vel dolor ipsum. Aliquam ut turpis nisl, in vulputate sapien. Cum sociis natoque penatibus et magnis dis'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'parturient montes, nascetur ridiculus mus. Sed congue magna vitae dolor feugiat vehicula. Sed volutpat, tellus'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'vel varius vestibulum, purus quam mollis sapien, in condimentum leo neque sed nulla. Nunc quis porta elit.'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Pellentesque erat lectus, ultricies a lobortis id, faucibus id quam.'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/block-no-inflow-children-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/block-no-inflow-children-expected.txt
index d1c3a0e..6765147 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/block-no-inflow-children-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/block-no-inflow-children-expected.txt
@@ -23,14 +23,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV id='target'",
       "reason": "forced by layout"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/box-inline-resize-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/box-inline-resize-expected.txt
index 409b2c4..0e08207 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/box-inline-resize-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/box-inline-resize-expected.txt
@@ -43,22 +43,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (anonymous)",
       "reason": "forced by layout"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-3509-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-3509-expected.txt
index e9f2ec1..f4e0e75 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-3509-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-3509-expected.txt
@@ -12,26 +12,31 @@
           "object": "LayoutBlockFlow DIV id='im'",
           "rect": [11, 131, 100, 100],
           "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [11, 131, 4, 19],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV id='im'",
       "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
       "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\u00A0'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-5699-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-5699-expected.txt
index 5cb5209..0df1e37 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-5699-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-5699-expected.txt
@@ -10,23 +10,18 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow P",
-          "rect": [8, 136, 784, 67],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 176, 784, 28],
-          "reason": "incremental"
+          "rect": [8, 136, 784, 68],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 184, 32, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 156, 32, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutInline SPAN id='d'",
@@ -48,28 +43,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
+      "object": "LayoutBlockFlow P",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutInline SPAN id='d'",
@@ -89,27 +68,27 @@
     },
     {
       "object": "LayoutBR BR",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox '\n'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Hello'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBR BR",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox '\n'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-6278-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-6278-expected.txt
index 2fcf128..51e2b10f 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-6278-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-6278-expected.txt
@@ -19,6 +19,11 @@
           "reason": "bounds change"
         },
         {
+          "object": "LayoutText #text",
+          "rect": [10, 138, 289, 159],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutBlockFlow DIV",
           "rect": [10, 138, 242, 180],
           "reason": "forced by layout"
@@ -35,8 +40,8 @@
         },
         {
           "object": "LayoutText #text",
-          "rect": [10, 297, 240, 20],
-          "reason": "incremental"
+          "rect": [10, 138, 240, 179],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutTableCell TD id='target'",
@@ -47,81 +52,12 @@
           "object": "LayoutTableCell TD id='col1'",
           "rect": [252, 138, 50, 215],
           "reason": "incremental"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [250, 138, 49, 159],
-          "reason": "incremental"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Curabitur pretium, quam quis semper'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'malesuada, est libero feugiat libero, vel fringilla'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'orci nibh sed neque. Quisque eu nulla non nisi'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'molestie accumsan. Etiam tellus urna, laoreet ac,'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'laoreet non, suscipit sed, sapien. Phasellus'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'vehicula, sem at posuere vehicula, augue nibh'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'molestie nisl, nec ullamcorper lacus ante'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'vulputate pede.'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutTableCell TD id='col1'",
       "reason": "incremental"
     },
@@ -135,43 +71,43 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Curabitur pretium, quam quis semper'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'malesuada, est libero feugiat libero, vel'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'fringilla orci nibh sed neque. Quisque eu'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'nulla non nisi molestie accumsan. Etiam'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'tellus urna, laoreet ac, laoreet non,'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'suscipit sed, sapien. Phasellus vehicula,'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'sem at posuere vehicula, augue nibh'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'molestie nisl, nec ullamcorper lacus ante'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'vulputate pede.'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-7235-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-7235-expected.txt
index 500c84a..8a91a6a 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-7235-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/bugzilla-7235-expected.txt
@@ -10,37 +10,51 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 156, 784, 19],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 156, 784, 20],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (positioned) DIV id='t'",
           "rect": [8, 176, 100, 100],
           "reason": "layoutObject insertion"
+        },
+        {
+          "object": "LayoutInline (relative positioned) SPAN id='p'",
+          "rect": [8, 156, 4, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [8, 156, 4, 19],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow (anonymous)",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
+      "reason": "forced by layout"
     },
     {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutInline (relative positioned) SPAN id='p'",
+      "reason": "forced by layout"
     },
     {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\u00A0'",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow (positioned) DIV id='t'",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/change-text-content-and-background-color-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/change-text-content-and-background-color-expected.txt
index 380ae49..9d1a17ac 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/change-text-content-and-background-color-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/change-text-content-and-background-color-expected.txt
@@ -15,8 +15,8 @@
         },
         {
           "object": "LayoutBlockFlow DIV id='inner-editor'",
-          "rect": [30, 30, 200, 23],
-          "reason": "invalidate paint rectangle"
+          "rect": [30, 30, 200, 24],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -28,20 +28,16 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutTextControl (positioned) INPUT id='input'",
       "reason": "style change"
     },
     {
       "object": "LayoutBlockFlow DIV id='inner-editor'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/clip-with-layout-delta-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/clip-with-layout-delta-expected.txt
index c0677cb..e4ce001 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/clip-with-layout-delta-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/clip-with-layout-delta-expected.txt
@@ -31,34 +31,18 @@
         {
           "object": "LayoutText #text",
           "rect": [108, 8, 4, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 8, 4, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV",
       "reason": "background obscuration change"
     },
@@ -72,11 +56,11 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox '\u00A0'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow (relative positioned) DIV",
@@ -92,11 +76,11 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox '\u00A0'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/clipped-relative-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/clipped-relative-expected.txt
index 862a227..f2e20ea 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/clipped-relative-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/clipped-relative-expected.txt
@@ -16,21 +16,13 @@
         {
           "object": "LayoutImage IMG",
           "rect": [8, 74, 204, 232],
-          "reason": "location change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (positioned) DIV id='inner'",
       "reason": "forced by layout"
     },
@@ -40,7 +32,7 @@
     },
     {
       "object": "LayoutImage IMG",
-      "reason": "location change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/control-clip-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/control-clip-expected.txt
index acb2758..72d26b2 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/control-clip-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/control-clip-expected.txt
@@ -11,12 +11,12 @@
         {
           "object": "LayoutBlockFlow (anonymous)",
           "rect": [9, 87, 198, 16],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (anonymous)",
           "rect": [16, 117, 184, 16],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -33,24 +33,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText (anonymous)",
@@ -62,7 +50,11 @@
     },
     {
       "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/crbug-371640-4-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/crbug-371640-4-expected.txt
index 7bf5dc7..45be6af 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/crbug-371640-4-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/crbug-371640-4-expected.txt
@@ -43,18 +43,10 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV id='to_remove' class='item'",
       "reason": "layoutObject removal"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/crbug-371640-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/crbug-371640-expected.txt
index 40b8e2e6..c24e41b 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/crbug-371640-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/crbug-371640-expected.txt
@@ -43,18 +43,10 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV id='to_remove' class='item'",
       "reason": "layoutObject removal"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/delete-into-nested-block-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/delete-into-nested-block-expected.txt
index 8a4eb44..81bb05f 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/delete-into-nested-block-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/delete-into-nested-block-expected.txt
@@ -31,7 +31,7 @@
         {
           "object": "LayoutBlockFlow DIV id='one'",
           "rect": [8, 127, 784, 21],
-          "reason": "forced by layout"
+          "reason": "full"
         },
         {
           "object": "LayoutText #text",
@@ -63,58 +63,26 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'one'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'two'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV",
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineTextBox 'three'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBR BR",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV",
       "reason": "layoutObject removal"
     },
@@ -123,34 +91,10 @@
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBR BR",
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineTextBox 'three'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'three'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
@@ -159,20 +103,16 @@
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV",
       "reason": "outline"
     },
     {
       "object": "LayoutBlockFlow DIV id='one'",
-      "reason": "forced by layout"
+      "reason": "full"
     },
     {
       "object": "RootInlineBox",
-      "reason": "forced by layout"
+      "reason": "full"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/gradients-em-stops-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/gradients-em-stops-repaint-expected.txt
index 9951446..4460036 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/gradients-em-stops-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/gradients-em-stops-repaint-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV class='em-units'",
-          "rect": [8, 8, 784, 146],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 8, 784, 147],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='box4' class='box'",
@@ -19,33 +19,43 @@
           "reason": "style change"
         },
         {
+          "object": "LayoutBlockFlow DIV id='box3' class='box'",
+          "rect": [18, 18, 302, 122],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutBlockFlow DIV class='indicator'",
           "rect": [345, 19, 240, 20],
           "reason": "style change"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [330, 135, 4, 19],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV class='em-units'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
+      "reason": "forced by layout"
     },
     {
-      "object": "LayoutBlockFlow DIV class='em-units'",
-      "reason": "invalidate paint rectangle"
+      "object": "LayoutBlockFlow DIV id='box3' class='box'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\n'",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV id='box4' class='box'",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/inline-focus-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/inline-focus-expected.txt
index 4178cba..c98e818 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/inline-focus-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/inline-focus-expected.txt
@@ -14,46 +14,41 @@
           "reason": "style change"
         },
         {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [-1, -1, 801, 21],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutBlockFlow P",
+          "rect": [0, 36, 800, 20],
+          "reason": "forced by layout"
         },
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [0, 36, 800, 19],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutBlockFlow (anonymous)",
+          "rect": [0, 0, 800, 20],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [0, 36, 395, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutInline A",
+          "rect": [0, 0, 40, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [0, 7, 40, 10],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Home'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'crbug.com/424078: ensure inline elements get their outline painted'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutInline A id='link'",
@@ -64,8 +59,36 @@
       "reason": "style change"
     },
     {
+      "object": "LayoutInline A",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'Home'",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutBlockFlow P",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'crbug.com/424078: ensure inline elements get their outline painted'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/inline-outline-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/inline-outline-repaint-expected.txt
index 30593d6..a4664f62 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/inline-outline-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/inline-outline-repaint-expected.txt
@@ -10,13 +10,13 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV",
-          "rect": [5, 153, 103, 45],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 156, 100, 40],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutInline SPAN id='test'",
           "rect": [5, 153, 92, 45],
-          "reason": "outline"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -37,328 +37,24 @@
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'dolor sit'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'dolor'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutInline SPAN id='test'",
-      "reason": "outline"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineFlowBox",
-      "reason": "outline"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineFlowBox",
-      "reason": "outline"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-relative-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-relative-expected.txt
index d1d40a8..9e1392f 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-relative-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-relative-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow (relative positioned) DIV id='target'",
-          "rect": [8, 152, 784, 19],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 152, 784, 20],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -23,16 +23,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow (relative positioned) DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='target'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset-expected.txt
index 1f58561a..48af238 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [100, 120, 50, 19],
-          "reason": "invalidate paint rectangle"
+          "rect": [100, 120, 50, 50],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -23,16 +23,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset2-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset2-expected.txt
index 99589ad7..b6a013b 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset2-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset2-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [102, 122, 50, 19],
-          "reason": "invalidate paint rectangle"
+          "rect": [102, 122, 50, 50],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -23,16 +23,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset3-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset3-expected.txt
index 0c45487..9fd89d5 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset3-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset3-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [100, 120, 34, 19],
-          "reason": "invalidate paint rectangle"
+          "rect": [100, 120, 34, 50],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -23,16 +23,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt
index 69bbd32..fd35501 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt
@@ -10,23 +10,28 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 40, 784, 104],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 40, 784, 105],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutInline (relative positioned) SPAN id='target'",
           "rect": [8, 220, 100, 104],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutInline (relative positioned) SPAN id='target'",
           "rect": [8, 200, 100, 104],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutInline (relative positioned) SPAN",
+          "rect": [8, 120, 100, 104],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV",
           "rect": [8, 220, 100, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -36,7 +41,7 @@
         {
           "object": "LayoutBlockFlow DIV",
           "rect": [8, 200, 100, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -48,32 +53,28 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow (anonymous)",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
+      "reason": "forced by layout"
     },
     {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutInline (relative positioned) SPAN id='target'",
-      "reason": "bounds change"
+      "object": "LayoutInline (relative positioned) SPAN",
+      "reason": "forced by layout"
     },
     {
       "object": "InlineFlowBox",
-      "reason": "bounds change"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutInline (relative positioned) SPAN id='target'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
@@ -81,11 +82,11 @@
     },
     {
       "object": "LayoutBlockFlow DIV",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-1-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-1-expected.txt
index c8332c6..08c3676 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-1-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-1-expected.txt
@@ -9,39 +9,54 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 120, 418, 479],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [14, 240, 407, 139],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
-          "rect": [14, 359, 407, 20],
-          "reason": "incremental"
+          "rect": [14, 80, 407, 119],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
-          "rect": [14, 239, 406, 20],
-          "reason": "incremental"
+          "rect": [14, 500, 407, 99],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 180, 407, 59],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 180, 406, 79],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 420, 355, 79],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 380, 355, 59],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 380, 287, 19],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [134, 360, 131, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 360, 131, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) DIV id='pinkFloat'",
@@ -51,17 +66,12 @@
         {
           "object": "LayoutText #text",
           "rect": [303, 420, 67, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [244, 420, 65, 19],
-          "reason": "bounds change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [369, 80, 52, 119],
-          "reason": "incremental"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
@@ -76,17 +86,12 @@
         {
           "object": "LayoutText #text",
           "rect": [151, 180, 40, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [84, 180, 40, 19],
-          "reason": "bounds change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [420, 180, 1, 59],
-          "reason": "incremental"
+          "reason": "forced by layout"
         }
       ]
     }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-10-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-10-expected.txt
index efa7e97..8915325 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-10-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-10-expected.txt
@@ -9,9 +9,39 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 320, 418, 279],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [14, 240, 407, 139],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 500, 407, 99],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 440, 356, 59],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 380, 304, 59],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 380, 287, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [134, 360, 131, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [303, 420, 67, 19],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
@@ -22,11 +52,6 @@
           "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
           "rect": [14, 374, 48, 64],
           "reason": "bounds change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [368, 440, 2, 59],
-          "reason": "incremental"
         }
       ]
     }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-2-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-2-expected.txt
index 5a4cdda..bddaa33 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-2-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-2-expected.txt
@@ -14,94 +14,89 @@
           "reason": "forced by layout"
         },
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 160, 418, 440],
-          "reason": "invalidate paint rectangle"
-        },
-        {
           "object": "LayoutText #text",
           "rect": [14, 241, 407, 139],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 240, 407, 139],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 501, 407, 99],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 500, 407, 99],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 181, 406, 79],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 180, 406, 79],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 80, 355, 120],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 441, 355, 59],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 440, 355, 59],
-          "reason": "bounds change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 199, 355, 1],
-          "reason": "incremental"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 381, 304, 59],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 380, 304, 59],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 381, 287, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 380, 287, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [134, 361, 131, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [134, 360, 131, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [303, 421, 67, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [303, 420, 67, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-3-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-3-expected.txt
index dd0e977..436aff4 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-3-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-3-expected.txt
@@ -9,39 +9,49 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 340, 418, 259],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [14, 240, 407, 139],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 500, 407, 99],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 440, 355, 59],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 420, 339, 39],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 380, 304, 59],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 380, 289, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [134, 360, 131, 19],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [303, 420, 67, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
           "rect": [356, 383, 64, 81],
           "reason": "bounds change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [353, 440, 16, 59],
-          "reason": "incremental"
         }
       ]
     }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-4-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-4-expected.txt
index e40eb5ed..fa1a6a3 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-4-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-4-expected.txt
@@ -9,14 +9,39 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 340, 418, 259],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [14, 240, 407, 139],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
-          "rect": [368, 440, 53, 59],
-          "reason": "incremental"
+          "rect": [14, 500, 407, 99],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 440, 407, 59],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 380, 304, 59],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 380, 287, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [134, 360, 131, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [303, 420, 67, 19],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-5-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-5-expected.txt
index fabaa02..c534941a 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-5-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-5-expected.txt
@@ -9,44 +9,49 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 320, 418, 279],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [14, 240, 407, 139],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 500, 407, 99],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 420, 355, 79],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [49, 380, 320, 59],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [49, 380, 303, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [134, 360, 131, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [118, 360, 131, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [303, 420, 67, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [275, 420, 65, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-6-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-6-expected.txt
index 45f74c7..5b474a2 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-6-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-6-expected.txt
@@ -9,9 +9,24 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 320, 418, 79],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [14, 240, 407, 139],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 380, 304, 59],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 380, 287, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [134, 360, 131, 19],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-7-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-7-expected.txt
index a55cbc1..f9bee306 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-7-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-7-expected.txt
@@ -9,9 +9,9 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 400, 418, 39],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [65, 380, 304, 59],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-8-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-8-expected.txt
index 9f25518..70c2359c 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-8-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-8-expected.txt
@@ -15,78 +15,83 @@
         },
         {
           "object": "LayoutBlockFlow P",
-          "rect": [8, 80, 418, 519],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 74, 418, 526],
+          "reason": "forced by layout"
         },
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 583, 418, 17],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 586, 418, 14],
-          "reason": "incremental"
+          "object": "LayoutText #text",
+          "rect": [14, 240, 407, 139],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 500, 407, 99],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 480, 407, 99],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 180, 406, 79],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 80, 355, 119],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 440, 355, 59],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 420, 355, 59],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 380, 354, 59],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 380, 304, 59],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 380, 298, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 380, 287, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [134, 360, 131, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [83, 360, 131, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [303, 420, 67, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [143, 420, 65, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
@@ -94,6 +99,11 @@
           "reason": "layoutObject removal"
         },
         {
+          "object": "LayoutText #text",
+          "rect": [151, 180, 40, 19],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutView #document",
           "rect": [485, 0, 15, 600],
           "reason": "scroll"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-9-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-9-expected.txt
index 7a5b3b3..585c241 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-9-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-9-expected.txt
@@ -9,19 +9,49 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 200, 418, 399],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [14, 240, 407, 139],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 500, 407, 99],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 180, 406, 79],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 440, 355, 59],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 380, 304, 59],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 380, 287, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [134, 360, 131, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [303, 420, 67, 19],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='yellowFloat'",
           "rect": [372, 243, 48, 49],
           "reason": "layoutObject insertion"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [420, 240, 1, 139],
-          "reason": "incremental"
         }
       ]
     }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-in-scrolled-clipped-block-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-in-scrolled-clipped-block-expected.txt
index 5fbc25d..bc33a07 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-in-scrolled-clipped-block-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-in-scrolled-clipped-block-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 8, 100, 19],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 8, 100, 100],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -23,16 +23,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-overflow-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-overflow-expected.txt
index 2e2e5b9..09f9d2e 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-overflow-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-overflow-expected.txt
@@ -9,9 +9,14 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 92, 200, 109],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [8, 122, 196, 79],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [8, 82, 190, 59],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutInline SPAN id='t'",
@@ -26,77 +31,32 @@
         {
           "object": "LayoutText #text",
           "rect": [77, 122, 33, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [47, 122, 33, 19],
-          "reason": "bounds change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [184, 122, 20, 79],
-          "reason": "incremental"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'enim in scelerisque convallis,'",
-      "reason": "full"
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
+      "object": "InlineTextBox 'Cras faucibus. Nunc adipiscing,'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'enim in scelerisque convallis,'",
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'augue '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'purus'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' eleifend'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'lacus, at sagittis eros leo pulvinar'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'velit. Integer sollicitudin nisi ut'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'urna blandit convallis.'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutInline SPAN id='t'",
@@ -108,31 +68,31 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'purus'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox ' eleifend lacus, at'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'sagittis eros leo pulvinar velit.'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Integer sollicitudin nisi ut urna'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'blandit convallis.'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/lines-with-layout-delta-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/lines-with-layout-delta-expected.txt
index d8ccb0f..c53c5cf 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/lines-with-layout-delta-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/lines-with-layout-delta-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow (floating) DIV id='target'",
-          "rect": [8, 58, 200, 19],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 58, 200, 20],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -23,16 +23,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow (floating) DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='target'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/list-marker-2-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/list-marker-2-expected.txt
index 381e6d7..c5ab693 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/list-marker-2-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/list-marker-2-expected.txt
@@ -10,13 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutListItem LI",
-          "rect": [30, 100, 762, 104],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutListItem LI",
-          "rect": [48, 155, 744, 50],
-          "reason": "incremental"
+          "rect": [48, 100, 744, 105],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutImage IMG id='target'",
@@ -26,44 +21,28 @@
         {
           "object": "LayoutListMarker (anonymous)",
           "rect": [30, 185, 7, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutListMarker (anonymous)",
           "rect": [30, 135, 7, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutListItem LI",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutListItem LI",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutListItem LI",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutListMarker (anonymous)",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutImage IMG id='target'",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/make-children-non-inline-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/make-children-non-inline-expected.txt
index eccef9f9..279a441 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/make-children-non-inline-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/make-children-non-inline-expected.txt
@@ -26,67 +26,67 @@
         {
           "object": "LayoutText #text",
           "rect": [8, 264, 105, 19],
-          "reason": "layoutObject insertion"
+          "reason": "style change"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 164, 105, 19],
-          "reason": "layoutObject insertion"
+          "reason": "style change"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 144, 77, 19],
-          "reason": "layoutObject insertion"
+          "reason": "style change"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 104, 77, 19],
-          "reason": "layoutObject insertion"
+          "reason": "style change"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 284, 65, 19],
-          "reason": "layoutObject insertion"
+          "reason": "style change"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 184, 65, 19],
-          "reason": "layoutObject insertion"
+          "reason": "style change"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 324, 61, 19],
-          "reason": "layoutObject insertion"
+          "reason": "style change"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 224, 61, 19],
-          "reason": "layoutObject insertion"
+          "reason": "style change"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 124, 42, 19],
-          "reason": "layoutObject insertion"
+          "reason": "style change"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 84, 42, 19],
-          "reason": "layoutObject insertion"
+          "reason": "style change"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 64, 39, 19],
-          "reason": "layoutObject insertion"
+          "reason": "style change"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 304, 27, 19],
-          "reason": "layoutObject insertion"
+          "reason": "style change"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 204, 27, 19],
-          "reason": "layoutObject insertion"
+          "reason": "style change"
         },
         {
           "object": "LayoutBlockFlow DIV id='target'",
@@ -98,110 +98,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'Word,'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'words,'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'more words.'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'I could'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'write a book'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'about all the stuff'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'that comes'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'after'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'the break.'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV",
       "reason": "style change"
     },
@@ -215,83 +111,83 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox 'Word,'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutBR BR",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox '\n'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutText #text",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox 'words,'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutBR BR",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox '\n'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutText #text",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox 'more words.'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutBR BR",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox '\n'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutText #text",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox 'I could'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutBR BR",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox '\n'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutText #text",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox 'write a book'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutBR BR",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox '\n'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutBlockFlow DIV id='target'",
@@ -307,59 +203,59 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox 'about all the stuff'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutBR BR",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox '\n'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutText #text",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox 'that comes'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutBR BR",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox '\n'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutText #text",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox 'after'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutBR BR",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox '\n'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "LayoutText #text",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     },
     {
       "object": "InlineTextBox 'the break.'",
-      "reason": "layoutObject insertion"
+      "reason": "style change"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/multi-layout-one-frame-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/multi-layout-one-frame-expected.txt
index c58a7fa..ca7be39 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/multi-layout-one-frame-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/multi-layout-one-frame-expected.txt
@@ -11,12 +11,12 @@
         {
           "object": "LayoutBlockFlow DIV id='inner-editor'",
           "rect": [168, 11, 150, 16],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='inner-editor'",
           "rect": [10, 11, 150, 16],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -33,24 +33,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV id='inner-editor'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
@@ -62,7 +50,11 @@
     },
     {
       "object": "LayoutBlockFlow DIV id='inner-editor'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/multicol-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/multicol-repaint-expected.txt
similarity index 64%
copy from third_party/WebKit/LayoutTests/fast/repaint/multicol-repaint-expected.txt
copy to third_party/WebKit/LayoutTests/platform/linux/fast/repaint/multicol-repaint-expected.txt
index 0770211..9ca0353 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/multicol-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/multicol-repaint-expected.txt
@@ -14,39 +14,25 @@
           "reason": "forced by layout"
         },
         {
+          "object": "LayoutInline SPAN id='a'",
+          "rect": [234, 10, 300, 57],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutText #text",
           "rect": [234, 15, 300, 50],
           "reason": "full"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [9, 10, 13, 57],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
       "object": "LayoutMultiColumnFlowThread (anonymous)",
       "reason": "forced by layout"
     },
@@ -56,6 +42,30 @@
     },
     {
       "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\u00A0'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBR BR",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\n'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutInline SPAN id='a'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
       "reason": "full"
     },
     {
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt
index d16032b..fd56293 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/offset-change-wrong-invalidation-with-float-expected.txt
@@ -49,13 +49,24 @@
           "name": "LayoutListItem (relative positioned) (floating) LI id='menu'",
           "position": [30, 44],
           "bounds": [18, 19],
-          "drawsContent": true
+          "drawsContent": true,
+          "paintInvalidations": [
+            {
+              "object": "LayoutListMarker (anonymous)",
+              "rect": [0, 0, 7, 19],
+              "reason": "forced by layout"
+            }
+          ]
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
+      "object": "LayoutListMarker (anonymous)",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutBlockFlow (positioned) UL id='submenu'",
       "reason": "bounds change"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/outline-change-invalidation-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/outline-change-invalidation-expected.txt
index e1aaa2a..097311f 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/outline-change-invalidation-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/outline-change-invalidation-expected.txt
@@ -12,6 +12,11 @@
           "object": "LayoutBlockFlow A id='link'",
           "rect": [43, 83, 754, 30],
           "reason": "style change"
+        },
+        {
+          "object": "LayoutListMarker (anonymous)",
+          "rect": [30, 88, 7, 19],
+          "reason": "style change"
         }
       ]
     }
@@ -24,6 +29,10 @@
     {
       "object": "RootInlineBox",
       "reason": "style change"
+    },
+    {
+      "object": "LayoutListMarker (anonymous)",
+      "reason": "style change"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/outline-continuations-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/outline-continuations-expected.txt
index af46fc1..a7c9956e 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/outline-continuations-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/outline-continuations-expected.txt
@@ -10,13 +10,13 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow (anonymous)",
-          "rect": [16, 148, 202, 23],
-          "reason": "invalidate paint rectangle"
+          "rect": [18, 150, 200, 20],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (anonymous)",
-          "rect": [16, 108, 202, 23],
-          "reason": "invalidate paint rectangle"
+          "rect": [18, 110, 200, 20],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutInline SPAN id='outer'",
@@ -27,30 +27,28 @@
           "object": "LayoutInline SPAN id='outer'",
           "rect": [16, 148, 87, 23],
           "reason": "style change"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [18, 150, 83, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [18, 110, 83, 19],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'CONTENTS'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'CONTENTS'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutInline SPAN id='outer'",
@@ -61,8 +59,20 @@
       "reason": "style change"
     },
     {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'CONTENTS'",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutInline SPAN id='outer'",
@@ -73,6 +83,14 @@
       "reason": "style change"
     },
     {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'CONTENTS'",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutBlockFlow (anonymous)",
       "reason": "forced by layout"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/overflow-delete-line-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/overflow-delete-line-expected.txt
index 98245a4..766164c 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/overflow-delete-line-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/overflow-delete-line-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV id='dv'",
-          "rect": [8, 74, 80, 19],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 74, 80, 36],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -23,20 +23,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='dv'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='dv'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/overflow-scroll-body-appear-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/overflow-scroll-body-appear-expected.txt
index aba564e..0d733d16 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/overflow-scroll-body-appear-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/overflow-scroll-body-appear-expected.txt
@@ -34,6 +34,21 @@
           "reason": "forced by layout"
         },
         {
+          "object": "LayoutText #text",
+          "rect": [118, 52, 370, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [8, 16, 324, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [8, 52, 110, 19],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutView #document",
           "rect": [785, 0, 15, 585],
           "reason": "scroll"
@@ -42,36 +57,17 @@
           "object": "LayoutView #document",
           "rect": [785, 585, 15, 15],
           "reason": "scroll"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [488, 52, 4, 19],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'You should see both vertical and horizontal scrollbars.'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'This is the test for '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Bug 36461 - No vertical scrollbar after the CSS class change'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '.'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutView #document",
       "reason": "style change"
     },
@@ -88,6 +84,14 @@
       "reason": "forced by layout"
     },
     {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'You should see both vertical and horizontal scrollbars.'",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutBlockFlow P",
       "reason": "forced by layout"
     },
@@ -96,6 +100,30 @@
       "reason": "forced by layout"
     },
     {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'This is the test for '",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'Bug 36461 - No vertical scrollbar after the CSS class change'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '.'",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutView #document",
       "reason": "scroll"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/overflow-scroll-delete-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/overflow-scroll-delete-expected.txt
index 24b32bb..47b84b3 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/overflow-scroll-delete-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/overflow-scroll-delete-expected.txt
@@ -9,11 +9,6 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='t'",
-          "rect": [8, 136, 80, 17],
-          "reason": "invalidate paint rectangle"
-        },
-        {
           "object": "LayoutText #text",
           "rect": [8, 136, 43, 17],
           "reason": "full"
@@ -23,26 +18,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='t'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "full"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/positioned-document-element-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/positioned-document-element-expected.txt
index e226131..813cf30 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/positioned-document-element-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/positioned-document-element-expected.txt
@@ -47,26 +47,18 @@
         {
           "object": "LayoutText #text",
           "rect": [108, 116, 402, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 16, 402, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Tests that the entire viewport is painted with a floated html element.'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutView #document",
       "reason": "style change"
     },
@@ -88,11 +80,11 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Tests that the entire viewport is painted with a floated html element.'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/positioned-list-offset-change-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/positioned-list-offset-change-repaint-expected.txt
index b106f49..093e481 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/positioned-list-offset-change-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/positioned-list-offset-change-repaint-expected.txt
@@ -16,25 +16,13 @@
         {
           "object": "LayoutImage IMG",
           "rect": [8, 64, 214, 232],
-          "reason": "location change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutListItem (positioned) LI",
       "reason": "forced by layout"
     },
@@ -44,11 +32,11 @@
     },
     {
       "object": "LayoutListMarker (anonymous)",
-      "reason": "none"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutImage IMG",
-      "reason": "location change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/quotes-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/quotes-expected.txt
index 552f094..13afcda4 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/quotes-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/quotes-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV",
-          "rect": [8, 28, 784, 19],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 28, 784, 20],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -43,24 +43,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutInline Q id='q2' class='q-changed'",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt
index b17c9428..de027bb2 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/relative-inline-positioned-movement-repaint-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow BODY",
-          "rect": [8, 7, 784, 21],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 8, 784, 20],
+          "reason": "forced by layout"
         }
       ],
       "children": [
@@ -20,27 +20,47 @@
           "position": [68, 7],
           "bounds": [348, 21],
           "drawsContent": true,
-          "backfaceVisibility": "hidden"
+          "backfaceVisibility": "hidden",
+          "paintInvalidations": [
+            {
+              "object": "LayoutInline (relative positioned) DIV id='block'",
+              "rect": [0, 0, 348, 21],
+              "reason": "forced by layout"
+            },
+            {
+              "object": "LayoutText #text",
+              "rect": [1, 1, 346, 19],
+              "reason": "forced by layout"
+            }
+          ]
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'When this layer moves it shouldn't generate a repaint rect.'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow BODY",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
+      "reason": "forced by layout"
     },
     {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "invalidate paint rectangle"
+      "object": "LayoutInline (relative positioned) DIV id='block'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'When this layer moves it shouldn't generate a repaint rect.'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/remove-block-after-layout-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/remove-block-after-layout-expected.txt
index 840a8d7..dec9edf 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/remove-block-after-layout-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/remove-block-after-layout-expected.txt
@@ -23,26 +23,10 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'This div should'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'disappear.'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (positioned) DIV id='target'",
       "reason": "layoutObject removal"
     }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/remove-inline-after-layout-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/remove-inline-after-layout-expected.txt
index 82765052..60df25d 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/remove-inline-after-layout-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/remove-inline-after-layout-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 108, 784, 104],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 108, 784, 105],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -21,76 +21,58 @@
         {
           "object": "LayoutBlockFlow DIV",
           "rect": [282, 108, 101, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV",
           "rect": [112, 108, 100, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV",
+          "rect": [8, 108, 100, 100],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [108, 193, 4, 19],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'This span should disappear.\n'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'This span should disappear.\n'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutInline SPAN id='target'",
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow (anonymous)",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV",
-      "reason": "bounds change"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\n'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/remove-inline-layer-after-layout-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/remove-inline-layer-after-layout-expected.txt
index e469c92..2a8f4fac 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/remove-inline-layer-after-layout-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/remove-inline-layer-after-layout-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 108, 784, 104],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 108, 784, 105],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutInline SPAN id='target'",
@@ -26,80 +26,58 @@
         {
           "object": "LayoutBlockFlow DIV",
           "rect": [282, 108, 101, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV",
           "rect": [112, 108, 100, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV",
+          "rect": [8, 108, 100, 100],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [108, 193, 4, 19],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'This span should disappear.\n'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'This span should disappear.\n'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutInline SPAN id='target'",
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow (anonymous)",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV",
-      "reason": "bounds change"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\n'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/resize-scrollable-iframe-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/resize-scrollable-iframe-expected.txt
index c835274..783157d 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/resize-scrollable-iframe-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/resize-scrollable-iframe-expected.txt
@@ -10,18 +10,13 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 108, 784, 304],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 213, 784, 200],
-          "reason": "incremental"
+          "rect": [8, 108, 784, 305],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutIFrame IFRAME id='iframe'",
-          "rect": [8, 208, 300, 200],
-          "reason": "incremental"
+          "rect": [8, 108, 300, 300],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutView #document",
@@ -34,11 +29,6 @@
           "reason": "scroll"
         },
         {
-          "object": "LayoutIFrame IFRAME id='iframe'",
-          "rect": [108, 108, 200, 300],
-          "reason": "incremental"
-        },
-        {
           "object": "LayoutView #document",
           "rect": [93, 108, 200, 285],
           "reason": "incremental"
@@ -73,28 +63,16 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow (anonymous)",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutIFrame IFRAME id='iframe'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selection-after-delete-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selection-after-delete-expected.txt
index bc0bff7..4defd54 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selection-after-delete-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selection-after-delete-expected.txt
@@ -10,18 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [38, 79, 152, 99],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [38, 99, 152, 81],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [38, 100, 152, 80],
-          "reason": "incremental"
+          "rect": [38, 78, 152, 102],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -38,88 +28,24 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'hello world hello world'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'hello world hello world'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'hello world hello world'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'hello world hello world'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'hello'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBR BR",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox '\n'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV id='test'",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selection-after-remove-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selection-after-remove-expected.txt
index 1bd591e..2dfc928 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selection-after-remove-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selection-after-remove-expected.txt
@@ -10,18 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [38, 79, 152, 99],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [38, 99, 152, 81],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [38, 100, 152, 80],
-          "reason": "incremental"
+          "rect": [38, 78, 152, 102],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -31,59 +21,23 @@
         {
           "object": "LayoutText #text",
           "rect": [67, 158, 39, 20],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [71, 79, 35, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [39, 79, 32, 19],
-          "reason": "selection"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'world hello world'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'hello world hello world'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'hello world hello world'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'hello world hello world'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'hello'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
@@ -92,38 +46,6 @@
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineTextBox 'hello '",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' world'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow HTML",
       "reason": "selection"
     },
@@ -137,15 +59,11 @@
     },
     {
       "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
@@ -157,6 +75,14 @@
     },
     {
       "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'hello '",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
       "reason": "selection"
     },
     {
@@ -165,19 +91,19 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'world'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBR BR",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox '\n'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selection-clear-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selection-clear-expected.txt
index bd42293..15e6690 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selection-clear-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/selection-clear-expected.txt
@@ -11,7 +11,7 @@
         {
           "object": "LayoutBlockFlow DIV id='firstLine'",
           "rect": [8, 8, 100, 200],
-          "reason": "forced by layout"
+          "reason": "full"
         },
         {
           "object": "LayoutBlockFlow (anonymous)",
@@ -38,26 +38,10 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'FAIL: Test did'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'not run'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow HTML",
       "reason": "selection"
     },
@@ -75,11 +59,11 @@
     },
     {
       "object": "LayoutBlockFlow DIV id='firstLine'",
-      "reason": "forced by layout"
+      "reason": "full"
     },
     {
       "object": "RootInlineBox",
-      "reason": "forced by layout"
+      "reason": "full"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/shift-relative-positioned-container-with-image-removal-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/shift-relative-positioned-container-with-image-removal-expected.txt
index df5861a..b7b347c 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/shift-relative-positioned-container-with-image-removal-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/shift-relative-positioned-container-with-image-removal-expected.txt
@@ -67,18 +67,10 @@
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (anonymous)",
       "reason": "layoutObject removal"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/stacked-diacritics-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/stacked-diacritics-expected.txt
index 8e1e293d..273519f 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/stacked-diacritics-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/stacked-diacritics-expected.txt
@@ -9,6 +9,11 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
+          "object": "LayoutBlockFlow DIV id='stacked'",
+          "rect": [19, 147, 200, 43],
+          "reason": "full"
+        },
+        {
           "object": "LayoutText #text",
           "rect": [19, 148, 126, 41],
           "reason": "layoutObject removal"
@@ -18,15 +23,11 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox '\u1EA6\u1EA4\u1EAA\u1EA8\u1EB0'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
+      "object": "LayoutBlockFlow DIV id='stacked'",
       "reason": "full"
     }
   ]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/subtree-root-skipped-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/subtree-root-skipped-expected.txt
index d67af47c..6077125 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/subtree-root-skipped-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/subtree-root-skipped-expected.txt
@@ -11,7 +11,7 @@
         {
           "object": "LayoutBlockFlow DIV id='inner-editor'",
           "rect": [10, 11, 150, 16],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -28,16 +28,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/table-collapsed-border-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/table-collapsed-border-expected.txt
index 6043b7d5..ecb5b157 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/table-collapsed-border-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/table-collapsed-border-expected.txt
@@ -80,6 +80,26 @@
         },
         {
           "object": "LayoutText #text",
+          "rect": [23, 339, 46, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [23, 155, 46, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [23, 295, 41, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [23, 111, 41, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
           "rect": [23, 225, 32, 19],
           "reason": "layoutObject removal"
         },
@@ -98,78 +118,22 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'ipsum dolor'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutTableCell TD id='d'",
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineTextBox 'dolor'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutTableCell TD id='d2'",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'sit amet'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'sit amet'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'ipsum dolor'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutTableCell TD",
       "reason": "style change"
     },
@@ -214,6 +178,14 @@
       "reason": "forced by layout"
     },
     {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'Lorem'",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutTableCell TD",
       "reason": "forced by layout"
     },
@@ -222,6 +194,14 @@
       "reason": "forced by layout"
     },
     {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'sit amet'",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutTable TABLE",
       "reason": "full"
     },
@@ -242,6 +222,14 @@
       "reason": "forced by layout"
     },
     {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'Lorem'",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutTableCell TD id='d3'",
       "reason": "forced by layout"
     },
@@ -264,6 +252,14 @@
     {
       "object": "RootInlineBox",
       "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'sit amet'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/text-append-dirty-lines-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/text-append-dirty-lines-expected.txt
index f9539bf..d8f095a 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/text-append-dirty-lines-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/text-append-dirty-lines-expected.txt
@@ -9,11 +9,6 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P id='target'",
-          "rect": [8, 124, 784, 39],
-          "reason": "invalidate paint rectangle"
-        },
-        {
           "object": "LayoutText #text",
           "rect": [8, 44, 782, 119],
           "reason": "full"
@@ -23,26 +18,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'Quisque enim metus, luctus tincidunt, vestibulum eu, vestibulum eu, libero. Mauris sagittis aliquam nunc. Nullam pharetra molestie'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'eros. Donec tempus purus ut ligula. Phasellus non nisl. Etiam eu mauris. Curabitur a velit'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow P id='target'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "full"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/text-match-document-change-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/text-match-document-change-expected.txt
index 19ae42f..a119d68 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/text-match-document-change-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/text-match-document-change-expected.txt
@@ -21,7 +21,7 @@
         {
           "object": "LayoutBlockFlow DIV id='to-be-changed'",
           "rect": [18, 130, 269, 40],
-          "reason": "forced by layout"
+          "reason": "full"
         },
         {
           "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/transform-layout-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/transform-layout-repaint-expected.txt
index 36eb200..dbbfee5d 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/transform-layout-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/transform-layout-repaint-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [51, 50, 197, 88],
-          "reason": "invalidate paint rectangle"
+          "rect": [40, 50, 208, 118],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -23,16 +23,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align-length1-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align-length1-expected.txt
index 6ea66bc1..e1b9bf6 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align-length1-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align-length1-expected.txt
@@ -10,73 +10,57 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 800, 154],
-          "reason": "invalidate paint rectangle"
+          "rect": [0, 0, 800, 155],
+          "reason": "forced by layout"
         },
         {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 125, 800, 30],
-          "reason": "incremental"
+          "object": "LayoutBlockFlow DIV id='target'",
+          "rect": [20, 0, 100, 100],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV class='other'",
           "rect": [120, 130, 20, 20],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV class='other'",
           "rect": [120, 100, 20, 20],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV class='other'",
           "rect": [0, 130, 20, 20],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV class='other'",
           "rect": [0, 100, 20, 20],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow BODY",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align-length2-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align-length2-expected.txt
index 0f7f6aa..3e7eea8 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align-length2-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align-length2-expected.txt
@@ -10,46 +10,52 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 800, 204],
-          "reason": "invalidate paint rectangle"
+          "rect": [0, 0, 800, 205],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [300, 0, 200, 200],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [0, 0, 200, 200],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='target'",
           "rect": [200, 80, 100, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='target'",
           "rect": [200, 50, 100, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow BODY",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
+      "reason": "forced by layout"
     },
     {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "invalidate paint rectangle"
+      "object": "LayoutBlockFlow DIV class='other'",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV class='other'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align1-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align1-expected.txt
index e31fc4a..87de424 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align1-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align1-expected.txt
@@ -10,73 +10,57 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 800, 104],
-          "reason": "invalidate paint rectangle"
+          "rect": [0, 0, 800, 105],
+          "reason": "forced by layout"
         },
         {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 100, 800, 5],
-          "reason": "incremental"
+          "object": "LayoutBlockFlow DIV id='target'",
+          "rect": [20, 0, 100, 100],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV class='other'",
           "rect": [120, 80, 20, 20],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV class='other'",
           "rect": [120, 33, 20, 20],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV class='other'",
           "rect": [0, 80, 20, 20],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV class='other'",
           "rect": [0, 33, 20, 20],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow BODY",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align2-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align2-expected.txt
index 6fa2096..bd9a4f0 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align2-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/vertical-align2-expected.txt
@@ -11,58 +11,51 @@
         {
           "object": "LayoutBlockFlow BODY",
           "rect": [0, 0, 800, 247],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 205, 800, 42],
-          "reason": "incremental"
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [300, 0, 200, 200],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow DIV class='other'",
+          "rect": [0, 0, 200, 200],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='target'",
           "rect": [200, 147, 100, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='target'",
           "rect": [200, 100, 100, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow BODY",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
+      "reason": "forced by layout"
     },
     {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "incremental"
+      "object": "LayoutBlockFlow DIV class='other'",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutBlockFlow DIV class='other'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/window-resize-centered-inline-under-fixed-pos-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/window-resize-centered-inline-under-fixed-pos-expected.txt
deleted file mode 100644
index 8d8002a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/window-resize-centered-inline-under-fixed-pos-expected.txt
+++ /dev/null
@@ -1,359 +0,0 @@
-{
-  "name": "Content Root Layer",
-  "bounds": [600, 250],
-  "children": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "contentsOpaque": true,
-      "drawsContent": true,
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='container'",
-          "rect": [0, 0, 600, 500],
-          "reason": "forced by layout"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 600, 250],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow HTML",
-          "rect": [0, 0, 600, 8],
-          "reason": "forced by layout"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 250, 6, 250],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 0, 6, 34],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-          "rect": [0, 250, 6, 30],
-          "reason": "bounds change"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-          "rect": [0, 125, 6, 30],
-          "reason": "bounds change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "forced by layout"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='container'",
-      "reason": "forced by layout"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-      "reason": "bounds change"
-    }
-  ]
-}
-{
-  "name": "Content Root Layer",
-  "bounds": [400, 250],
-  "children": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "contentsOpaque": true,
-      "drawsContent": true,
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='container'",
-          "rect": [0, 0, 600, 250],
-          "reason": "forced by layout"
-        },
-        {
-          "object": "LayoutBlockFlow HTML",
-          "rect": [0, 0, 600, 8],
-          "reason": "forced by layout"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [400, 0, 200, 250],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 0, 6, 34],
-          "reason": "invalidate paint rectangle"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "forced by layout"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='container'",
-      "reason": "forced by layout"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "invalidate paint rectangle"
-    }
-  ]
-}
-{
-  "name": "Content Root Layer",
-  "bounds": [400, 600],
-  "children": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "drawsContent": true,
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='container'",
-          "rect": [0, 0, 400, 600],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 400, 350],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow HTML",
-          "rect": [0, 0, 400, 8],
-          "reason": "forced by layout"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 250, 6, 350],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 0, 6, 34],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-          "rect": [0, 300, 6, 30],
-          "reason": "bounds change"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-          "rect": [0, 125, 6, 30],
-          "reason": "bounds change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "forced by layout"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='container'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-      "reason": "bounds change"
-    }
-  ]
-}
-{
-  "name": "Content Root Layer",
-  "bounds": [800, 600],
-  "children": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "drawsContent": true,
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='container'",
-          "rect": [0, 0, 800, 600],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow HTML",
-          "rect": [0, 0, 800, 8],
-          "reason": "forced by layout"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [400, 0, 400, 600],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 0, 6, 34],
-          "reason": "invalidate paint rectangle"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "forced by layout"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='container'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "invalidate paint rectangle"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/window-resize-vertical-writing-mode-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/window-resize-vertical-writing-mode-expected.txt
index f4dc0cb..21ae08a 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/window-resize-vertical-writing-mode-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/window-resize-vertical-writing-mode-expected.txt
@@ -22,7 +22,7 @@
         {
           "object": "LayoutText #text",
           "rect": [10, 7, 920, 213],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutView #document",
@@ -52,7 +52,7 @@
         {
           "object": "LayoutText #text",
           "rect": [507, 8, 423, 470],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutView #document",
@@ -64,158 +64,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAAA BBBB'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'CCCC DDDD'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'EEEE FFFF GGGG'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'HHHH IIII JJJJ'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'KKKK LLLL'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'MMMM NNNN'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAAA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'BBBB'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'CCCC'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'DDDD'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'EEEE'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'FFFF'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'GGGG'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'HHHH'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'IIII JJJJ'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'KKKK'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'LLLL'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'MMMM'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'NNNN'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutView #document",
       "reason": "incremental"
     },
@@ -233,59 +81,59 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'AAAA'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'BBBB'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'CCCC'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'DDDD'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'EEEE'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'FFFF'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'GGGG'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'HHHH'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'IIII JJJJ'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'KKKK'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'LLLL'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'MMMM'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'NNNN'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutView #document",
@@ -455,7 +303,7 @@
         {
           "object": "LayoutText #text",
           "rect": [-529, 7, 920, 213],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutView #document",
@@ -485,157 +333,13 @@
         {
           "object": "LayoutText #text",
           "rect": [39, 7, 352, 554],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAAA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'BBBB'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'CCCC'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'DDDD'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'EEEE'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'FFFF'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'GGGG'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'HHHH'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'IIII JJJJ'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'KKKK'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'LLLL'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'MMMM'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'NNNN'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAAA BBBB CCCC'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'DDDD EEEE FFFF'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'GGGG HHHH IIII JJJJ'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'KKKK LLLL MMMM'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'NNNN'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutView #document",
       "reason": "incremental"
     },
@@ -653,27 +357,27 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'AAAA BBBB CCCC'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'DDDD EEEE FFFF'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'GGGG HHHH IIII JJJJ'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'KKKK LLLL MMMM'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'NNNN'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutView #document",
@@ -719,98 +423,18 @@
         {
           "object": "LayoutText #text",
           "rect": [439, 7, 352, 554],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [39, 7, 352, 554],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAAA BBBB CCCC'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'DDDD EEEE FFFF'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'GGGG HHHH IIII JJJJ'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'KKKK LLLL MMMM'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'NNNN'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'AAAA BBBB CCCC'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'DDDD EEEE FFFF'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'GGGG HHHH IIII JJJJ'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'KKKK LLLL MMMM'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'NNNN'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutView #document",
       "reason": "incremental"
     },
@@ -828,27 +452,27 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'AAAA BBBB CCCC'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'DDDD EEEE FFFF'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'GGGG HHHH IIII JJJJ'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'KKKK LLLL MMMM'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'NNNN'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/cached-change-cell-sl-border-color-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/cached-change-cell-sl-border-color-expected.txt
index 348c61a03..a618350 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/cached-change-cell-sl-border-color-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/cached-change-cell-sl-border-color-expected.txt
@@ -14,6 +14,11 @@
           "reason": "style change"
         },
         {
+          "object": "LayoutBlockFlow (positioned) DIV id='blockDiv'",
+          "rect": [90, 30, 20, 20],
+          "reason": "full"
+        },
+        {
           "object": "LayoutText #text",
           "rect": [90, 30, 11, 19],
           "reason": "layoutObject removal"
@@ -23,18 +28,10 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'A'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutTableCell TD id='foo'",
       "reason": "style change"
     },
@@ -45,6 +42,10 @@
     {
       "object": "LayoutTableCell TD id='foo'",
       "reason": "style change"
+    },
+    {
+      "object": "LayoutBlockFlow (positioned) DIV id='blockDiv'",
+      "reason": "full"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/resize-table-repaint-percent-size-cell-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/table/resize-table-repaint-percent-size-cell-expected.txt
index c37b67b..b3aec9c 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/resize-table-repaint-percent-size-cell-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/resize-table-repaint-percent-size-cell-expected.txt
@@ -46,44 +46,28 @@
         {
           "object": "LayoutText #text",
           "rect": [3, 400, 45, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [3, 161, 45, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [3, 115, 45, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [3, 66, 45, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'ROW1'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'ROW2'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutTable (positioned) TABLE id='table'",
       "reason": "incremental"
     },
@@ -101,11 +85,11 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'ROW1'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutTableRow TR",
@@ -121,11 +105,11 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'ROW2'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/resize-table-repaint-vertical-align-cell-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/table/resize-table-repaint-vertical-align-cell-expected.txt
index 95b5183..d2fbc18 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/resize-table-repaint-vertical-align-cell-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/resize-table-repaint-vertical-align-cell-expected.txt
@@ -26,26 +26,18 @@
         {
           "object": "LayoutText #text",
           "rect": [3, 280, 59, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [3, 90, 59, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'MIDDLE'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutTable (positioned) TABLE id='table'",
       "reason": "incremental"
     },
@@ -63,11 +55,11 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'MIDDLE'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/resize-table-row-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/table/resize-table-row-repaint-expected.txt
index 6541495..88393e2 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/resize-table-row-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/resize-table-row-repaint-expected.txt
@@ -21,26 +21,18 @@
         {
           "object": "LayoutText #text",
           "rect": [3, 192, 59, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [3, 142, 59, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'MIDDLE'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutTableRow TR id='row'",
       "reason": "incremental"
     },
@@ -54,11 +46,11 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'MIDDLE'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/as-image/svg-image-change-content-size-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/as-image/svg-image-change-content-size-expected.txt
index 2b3d579..57e6cd0 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/as-image/svg-image-change-content-size-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/as-image/svg-image-change-content-size-expected.txt
@@ -12,26 +12,27 @@
           "object": "LayoutBlockFlow div id='contentBox'",
           "rect": [8, 52, 602, 422],
           "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutImage img",
+          "rect": [9, 53, 420, 420],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow div id='contentBox'",
       "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
       "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutImage img",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/absolute-sized-content-with-resources-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/absolute-sized-content-with-resources-expected.txt
index e28f187f..03f94819 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/absolute-sized-content-with-resources-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/absolute-sized-content-with-resources-expected.txt
@@ -16,26 +16,18 @@
         {
           "object": "LayoutSVGRoot svg",
           "rect": [42, 119, 334, 268],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGRoot svg",
           "rect": [17, 219, 84, 68],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow div id='contentBox'",
       "reason": "forced by layout"
     },
@@ -45,7 +37,7 @@
     },
     {
       "object": "LayoutSVGRoot svg",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-clipPath-and-object-creation-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-clipPath-and-object-creation-expected.txt
index 008bda0..7b5571d 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-clipPath-and-object-creation-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-clipPath-and-object-creation-expected.txt
@@ -21,6 +21,11 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [16, 42, 784, 170],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [16, 42, 784, 170],
           "reason": "layoutObject insertion"
         },
         {
@@ -39,11 +44,6 @@
           "reason": "layoutObject insertion"
         },
         {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [334, 42, 466, 170],
-          "reason": "incremental"
-        },
-        {
           "object": "LayoutSVGRoot svg id='svg-root'",
           "rect": [334, 42, 466, 170],
           "reason": "incremental"
@@ -82,14 +82,6 @@
       "reason": "layoutObject insertion"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Clipped. INVISIBLE.'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGRoot svg id='svg-root'",
       "reason": "incremental"
     },
@@ -107,11 +99,11 @@
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Clipped. INVISIBLE.'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGResourceClipper clipPath id='dynClip'",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-clipPath-creation-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-clipPath-creation-expected.txt
index a7276a69..f8a43aa 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-clipPath-creation-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-clipPath-creation-expected.txt
@@ -14,16 +14,16 @@
           "reason": "full"
         },
         {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [16, 42, 784, 170],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutSVGText text",
           "rect": [16, 42, 784, 170],
           "reason": "style change"
         },
         {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [334, 42, 466, 170],
-          "reason": "incremental"
-        },
-        {
           "object": "LayoutSVGRoot svg id='svg-root'",
           "rect": [334, 42, 466, 170],
           "reason": "incremental"
@@ -38,14 +38,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Clipped. INVISIBLE.'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGRoot svg id='svg-root'",
       "reason": "incremental"
     },
@@ -63,11 +55,11 @@
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Clipped. INVISIBLE.'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGResourceClipper clipPath id='dynClip'",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-gradient-creation-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-gradient-creation-expected.txt
index 6708e96..42cc00b4f 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-gradient-creation-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-gradient-creation-expected.txt
@@ -9,6 +9,11 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [33, 23, 697, 194],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutSVGText text",
           "rect": [33, 23, 697, 194],
           "reason": "style change"
@@ -18,14 +23,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Gradient on fill'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGText text",
       "reason": "style change"
     },
@@ -34,6 +31,14 @@
       "reason": "style change"
     },
     {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'Gradient on fill'",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutSVGResourceLinearGradient linearGradient id='dynGrad'",
       "reason": "layoutObject insertion"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-pattern-creation-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-pattern-creation-expected.txt
index c9a359f..3e3b605 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-pattern-creation-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/js-late-pattern-creation-expected.txt
@@ -9,6 +9,11 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [33, 23, 622, 194],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutSVGText text",
           "rect": [33, 23, 622, 194],
           "reason": "style change"
@@ -28,14 +33,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Pattern on fill'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGText text",
       "reason": "style change"
     },
@@ -44,6 +41,14 @@
       "reason": "style change"
     },
     {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'Pattern on fill'",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutSVGResourcePattern pattern id='dynPattern'",
       "reason": "layoutObject insertion"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-content-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-content-expected.txt
index 2c73e8c..b2cd1322 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-content-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-content-expected.txt
@@ -20,22 +20,14 @@
         },
         {
           "object": "LayoutSVGRoot svg",
-          "rect": [109, 73, 300, 400],
-          "reason": "incremental"
+          "rect": [9, 73, 400, 400],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow div id='contentBox'",
       "reason": "forced by layout"
     },
@@ -45,7 +37,7 @@
     },
     {
       "object": "LayoutSVGRoot svg",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGRect rect id='targetRect'",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-content-with-resources-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-content-with-resources-expected.txt
index 65fc10e9..eb79e05d 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-content-with-resources-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-content-with-resources-expected.txt
@@ -21,7 +21,7 @@
         {
           "object": "LayoutSVGRoot svg",
           "rect": [48, 112, 322, 322],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGEllipse circle",
@@ -31,21 +31,13 @@
         {
           "object": "LayoutSVGRoot svg",
           "rect": [9, 155, 100, 236],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow div id='contentBox'",
       "reason": "forced by layout"
     },
@@ -55,7 +47,7 @@
     },
     {
       "object": "LayoutSVGRoot svg",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGEllipse circle",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-deep-shadow-tree-content-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-deep-shadow-tree-content-expected.txt
index 89b276a..99e1379 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-deep-shadow-tree-content-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-deep-shadow-tree-content-expected.txt
@@ -31,7 +31,7 @@
         {
           "object": "LayoutSVGRoot svg",
           "rect": [209, 273, 200, 200],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGContainer use id='targetUse'",
@@ -66,7 +66,7 @@
         {
           "object": "LayoutSVGRoot svg",
           "rect": [59, 273, 50, 200],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGContainer use id='targetUse'",
@@ -83,14 +83,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow div id='contentBox'",
       "reason": "forced by layout"
     },
@@ -100,7 +92,7 @@
     },
     {
       "object": "LayoutSVGRoot svg",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGRect rect id='targetRect'",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-image-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-image-expected.txt
index 9db2fac..374432a 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-image-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-image-expected.txt
@@ -20,22 +20,14 @@
         },
         {
           "object": "LayoutSVGRoot svg",
-          "rect": [109, 73, 300, 400],
-          "reason": "incremental"
+          "rect": [9, 73, 400, 400],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow div id='contentBox'",
       "reason": "forced by layout"
     },
@@ -45,7 +37,7 @@
     },
     {
       "object": "LayoutSVGRoot svg",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGImage image",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-inner-svg-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-inner-svg-expected.txt
index 3801ed2..a330813 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-inner-svg-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-inner-svg-expected.txt
@@ -21,7 +21,7 @@
         {
           "object": "LayoutSVGRoot svg",
           "rect": [27, 69, 364, 364],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGViewportContainer svg",
@@ -36,7 +36,7 @@
         {
           "object": "LayoutSVGRoot svg",
           "rect": [13, 207, 92, 91],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGViewportContainer svg",
@@ -48,14 +48,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow div id='contentBox'",
       "reason": "forced by layout"
     },
@@ -65,7 +57,7 @@
     },
     {
       "object": "LayoutSVGRoot svg",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGViewportContainer svg",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-shadow-tree-content-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-shadow-tree-content-expected.txt
index 8520099..a96ab44 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-shadow-tree-content-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-shadow-tree-content-expected.txt
@@ -15,8 +15,8 @@
         },
         {
           "object": "LayoutSVGRoot svg",
-          "rect": [109, 73, 300, 400],
-          "reason": "incremental"
+          "rect": [9, 73, 400, 400],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGContainer use",
@@ -78,14 +78,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow div id='contentBox'",
       "reason": "forced by layout"
     },
@@ -95,7 +87,7 @@
     },
     {
       "object": "LayoutSVGRoot svg",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGRect rect id='targetRect'",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-shadow-tree-content-with-symbol-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-shadow-tree-content-with-symbol-expected.txt
index 0cf7868..e82b99f 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-shadow-tree-content-with-symbol-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-shadow-tree-content-with-symbol-expected.txt
@@ -21,7 +21,7 @@
         {
           "object": "LayoutSVGRoot svg",
           "rect": [9, 73, 400, 400],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGViewportContainer svg id='targetSymbol'",
@@ -48,14 +48,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow div id='contentBox'",
       "reason": "forced by layout"
     },
@@ -65,7 +57,7 @@
     },
     {
       "object": "LayoutSVGRoot svg",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGContainer use",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-use-on-symbol-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-use-on-symbol-expected.txt
index eb6ad3a..ffb6407 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-use-on-symbol-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-use-on-symbol-expected.txt
@@ -26,7 +26,7 @@
         {
           "object": "LayoutSVGRoot svg",
           "rect": [45, 87, 328, 328],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGViewportContainer svg id='gamesBorder'",
@@ -46,7 +46,7 @@
         {
           "object": "LayoutSVGRoot svg",
           "rect": [18, 211, 82, 83],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGViewportContainer svg id='gamesBorder'",
@@ -58,14 +58,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow div id='contentBox'",
       "reason": "forced by layout"
     },
@@ -75,7 +67,7 @@
     },
     {
       "object": "LayoutSVGRoot svg",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGContainer use",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-use-without-attributes-on-symbol-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-use-without-attributes-on-symbol-expected.txt
index 7c6ffeb..fb94f14 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-use-without-attributes-on-symbol-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/relative-sized-use-without-attributes-on-symbol-expected.txt
@@ -26,7 +26,7 @@
         {
           "object": "LayoutSVGRoot svg",
           "rect": [27, 69, 364, 364],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGViewportContainer svg id='gamesBorder'",
@@ -46,7 +46,7 @@
         {
           "object": "LayoutSVGRoot svg",
           "rect": [13, 207, 92, 91],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGViewportContainer svg id='gamesBorder'",
@@ -58,14 +58,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow div id='contentBox'",
       "reason": "forced by layout"
     },
@@ -75,7 +67,7 @@
     },
     {
       "object": "LayoutSVGRoot svg",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGContainer use",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/scrolling-embedded-svg-file-image-repaint-problem-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/scrolling-embedded-svg-file-image-repaint-problem-expected.txt
index a708149..361f7f7 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/scrolling-embedded-svg-file-image-repaint-problem-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/scrolling-embedded-svg-file-image-repaint-problem-expected.txt
@@ -11,44 +11,65 @@
         {
           "object": "LayoutBlockFlow P",
           "rect": [24, 1011, 737, 21],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [177, 1012, 203, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [435, 1012, 173, 19],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutInline A",
           "rect": [384, 1011, 47, 21],
           "reason": "style change"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [385, 1012, 45, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [429, 1012, 7, 19],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [379, 1012, 7, 19],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'pservers-pattern-01-b \u2190'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'index'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\u2192 script-handle-01-b'",
-      "reason": "full"
+      "object": "LayoutBlockFlow P",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
+      "reason": "forced by layout"
     },
     {
-      "object": "LayoutBlockFlow P",
-      "reason": "invalidate paint rectangle"
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'pservers-pattern-01-b \u2190'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\n'",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutInline A",
@@ -57,6 +78,30 @@
     {
       "object": "InlineFlowBox",
       "reason": "style change"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'index'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\n'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\u2192 script-handle-01-b'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/text-dom-removal-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/text-dom-removal-expected.txt
index 11b2ba6..b18b40e 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/text-dom-removal-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/text-dom-removal-expected.txt
@@ -37,18 +37,10 @@
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGInlineText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGText text",
       "reason": "layoutObject removal"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/text-repaint-including-stroke-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/text-repaint-including-stroke-expected.txt
index 3f303ae..f88f0154 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/text-repaint-including-stroke-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/text-repaint-including-stroke-expected.txt
@@ -43,14 +43,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Repaint me!'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGRoot svg",
       "reason": "bounds change"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/text-xy-updates-SVGList-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/text-xy-updates-SVGList-expected.txt
index 6849678d..45791aa 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/text-xy-updates-SVGList-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/text-xy-updates-SVGList-expected.txt
@@ -11,7 +11,7 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [208, 13, 161, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGRoot svg:svg",
@@ -26,7 +26,7 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [18, 193, 161, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGRoot svg:svg",
@@ -43,14 +43,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Passes, if text is at 200x20'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGRoot svg:svg",
       "reason": "bounds change"
     },
@@ -64,11 +56,11 @@
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Passes, if text is at 200x20'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-clipped-hit-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-clipped-hit-expected.txt
index cd60204..e596abc 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-clipped-hit-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-clipped-hit-expected.txt
@@ -37,18 +37,10 @@
       "reason": "invalidate paint rectangle"
     },
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGInlineText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGText text id='status'",
       "reason": "full"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-detach-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-detach-expected.txt
index 4a3ae18..57d13eb 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-detach-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-detach-expected.txt
@@ -178,18 +178,10 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGInlineText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGText text id='use_text'",
       "reason": "layoutObject removal"
     },
@@ -242,18 +234,10 @@
       "reason": "layoutObject insertion"
     },
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGInlineText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGText text id='use_text'",
       "reason": "layoutObject removal"
     },
@@ -306,18 +290,10 @@
       "reason": "layoutObject insertion"
     },
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGInlineText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGText text id='use_text'",
       "reason": "layoutObject removal"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-setAttribute-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-setAttribute-crash-expected.txt
index 7b8b129d..78f1be4 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-setAttribute-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-setAttribute-crash-expected.txt
@@ -10,13 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow body",
-          "rect": [8, 8, 784, 204],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutBlockFlow body",
-          "rect": [8, 113, 784, 100],
-          "reason": "incremental"
+          "rect": [8, 8, 784, 205],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGContainer svg:use id='use'",
@@ -66,24 +61,12 @@
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow body",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow body",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow body",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGRoot svg:svg id='svg'",
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/bugzilla-3509-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/add-outline-property-on-root-expected.txt
similarity index 60%
copy from third_party/WebKit/LayoutTests/fast/repaint/bugzilla-3509-expected.txt
copy to third_party/WebKit/LayoutTests/platform/linux/svg/repaint/add-outline-property-on-root-expected.txt
index b6fadc1..3a4f1fd 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/bugzilla-3509-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/add-outline-property-on-root-expected.txt
@@ -9,29 +9,30 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='im'",
-          "rect": [11, 125, 100, 100],
+          "object": "LayoutBlockFlow BODY",
+          "rect": [8, 8, 784, 105],
           "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGRoot svg",
+          "rect": [-2, -2, 120, 120],
+          "reason": "style change"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='im'",
+      "object": "LayoutBlockFlow BODY",
       "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
       "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGRoot svg",
+      "reason": "style change"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/inner-svg-change-viewPort-relative-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/inner-svg-change-viewPort-relative-expected.txt
index 264832e..8a3ba2a 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/inner-svg-change-viewPort-relative-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/inner-svg-change-viewPort-relative-expected.txt
@@ -26,7 +26,7 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [100, 85, 100, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGText text",
@@ -36,7 +36,7 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [0, 85, 100, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGText text",
@@ -78,14 +78,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'right-aligned text'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGRoot svg",
       "reason": "incremental"
     },
@@ -119,11 +111,11 @@
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'right-aligned text'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGContainer use",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/modify-transferred-listitem-different-attr-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/modify-transferred-listitem-different-attr-expected.txt
index d490e46..9190ea0 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/modify-transferred-listitem-different-attr-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/modify-transferred-listitem-different-attr-expected.txt
@@ -9,6 +9,11 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [23, 8, 85, 23],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutSVGText text id='target'",
           "rect": [23, 8, 85, 23],
           "reason": "full"
@@ -19,49 +24,20 @@
           "reason": "incremental"
         },
         {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [58, 45, 50, 26],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutSVGText text id='source'",
           "rect": [58, 45, 50, 26],
           "reason": "full"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [58, 61, 50, 10],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [103, 8, 5, 23],
-          "reason": "incremental"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'A'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' B C'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'X'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' Y Z'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGRoot svg",
       "reason": "incremental"
     },
@@ -75,15 +51,15 @@
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'A'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox ' B C'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGText text id='source'",
@@ -95,11 +71,11 @@
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'X Y Z'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/outline-offset-text-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/outline-offset-text-expected.txt
index de20fe4..843c5b9 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/outline-offset-text-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/outline-offset-text-expected.txt
@@ -11,7 +11,7 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [103, 26, 160, 113],
-          "reason": "outline"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGText text",
@@ -21,7 +21,7 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [63, 26, 160, 113],
-          "reason": "outline"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGText text",
@@ -43,14 +43,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Foo'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGRoot svg",
       "reason": "bounds change"
     },
@@ -64,11 +56,11 @@
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "outline"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Foo'",
-      "reason": "outline"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/bugzilla-3509-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/remove-outline-property-on-root-expected.txt
similarity index 60%
copy from third_party/WebKit/LayoutTests/fast/repaint/bugzilla-3509-expected.txt
copy to third_party/WebKit/LayoutTests/platform/linux/svg/repaint/remove-outline-property-on-root-expected.txt
index b6fadc1..3a4f1fd 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/bugzilla-3509-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/remove-outline-property-on-root-expected.txt
@@ -9,29 +9,30 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow DIV id='im'",
-          "rect": [11, 125, 100, 100],
+          "object": "LayoutBlockFlow BODY",
+          "rect": [8, 8, 784, 105],
           "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGRoot svg",
+          "rect": [-2, -2, 120, 120],
+          "reason": "style change"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='im'",
+      "object": "LayoutBlockFlow BODY",
       "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
       "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGRoot svg",
+      "reason": "style change"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/repaint-non-scaling-stroke-text-decoration-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/repaint-non-scaling-stroke-text-decoration-expected.txt
index b3f4930..72fea37 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/repaint-non-scaling-stroke-text-decoration-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/repaint-non-scaling-stroke-text-decoration-expected.txt
@@ -33,14 +33,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Hello'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGRoot svg",
       "reason": "bounds change"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/repaint-non-scaling-stroke-text-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/repaint-non-scaling-stroke-text-expected.txt
index b3f4930..72fea37 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/repaint-non-scaling-stroke-text-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/repaint-non-scaling-stroke-text-expected.txt
@@ -33,14 +33,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Hello'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGRoot svg",
       "reason": "bounds change"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/text-mask-update-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/text-mask-update-expected.txt
index b1364e5b..ec4c8df 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/text-mask-update-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/repaint/text-mask-update-expected.txt
@@ -53,18 +53,10 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGInlineText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGRoot svg",
       "reason": "bounds change"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/text/append-text-node-to-tspan-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/text/append-text-node-to-tspan-expected.txt
index a68bd7a..22d7c61 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/text/append-text-node-to-tspan-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/text/append-text-node-to-tspan-expected.txt
@@ -11,9 +11,49 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [10, 63, 307, 377],
           "reason": "layoutObject insertion"
         },
         {
+          "object": "LayoutSVGTSpan tspan",
+          "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGTSpan tspan",
+          "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGTSpan tspan id='modify'",
+          "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutSVGText text",
           "rect": [10, 63, 307, 377],
           "reason": "style change"
@@ -23,42 +63,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGText text",
       "reason": "style change"
     },
@@ -67,12 +71,76 @@
       "reason": "style change"
     },
     {
+      "object": "LayoutSVGTSpan tspan id='modify'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'PA'",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutSVGInlineText #text",
       "reason": "layoutObject insertion"
     },
     {
       "object": "InlineTextBox 'SS'",
       "reason": "layoutObject insertion"
+    },
+    {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox ' '",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGTSpan tspan",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'PASS'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox ' '",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGTSpan tspan",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'PASS'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/text/modify-text-node-in-tspan-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/text/modify-text-node-in-tspan-expected.txt
index 953277e..a7b4d80 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/text/modify-text-node-in-tspan-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/text/modify-text-node-in-tspan-expected.txt
@@ -14,6 +14,41 @@
           "reason": "full"
         },
         {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGTSpan tspan",
+          "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGTSpan tspan",
+          "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGTSpan tspan id='modify'",
+          "rect": [10, 63, 307, 377],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutSVGText text",
           "rect": [10, 63, 307, 377],
           "reason": "full"
@@ -23,42 +58,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PA'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGText text",
       "reason": "full"
     },
@@ -67,12 +66,68 @@
       "reason": "full"
     },
     {
+      "object": "LayoutSVGTSpan tspan id='modify'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutSVGInlineText #text",
       "reason": "full"
     },
     {
       "object": "InlineTextBox 'PASS'",
       "reason": "full"
+    },
+    {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox ' '",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGTSpan tspan",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'PASS'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox ' '",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGTSpan tspan",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'PASS'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/text/remove-text-node-from-tspan-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/text/remove-text-node-from-tspan-expected.txt
index 6a278cf..98cd185 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/text/remove-text-node-from-tspan-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/text/remove-text-node-from-tspan-expected.txt
@@ -11,22 +11,22 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [10, 63, 307, 377],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [10, 63, 307, 377],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [10, 63, 307, 377],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [10, 63, 307, 377],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGInlineText #text",
@@ -46,17 +46,17 @@
         {
           "object": "LayoutSVGTSpan tspan",
           "rect": [10, 63, 307, 377],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGTSpan tspan",
           "rect": [10, 63, 307, 377],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGTSpan tspan id='modify'",
           "rect": [10, 63, 307, 377],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGText text",
@@ -68,46 +68,10 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'FAIL'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGInlineText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGRoot (positioned) svg",
       "reason": "bounds change"
     },
@@ -121,51 +85,51 @@
     },
     {
       "object": "LayoutSVGTSpan tspan id='modify'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGTSpan tspan",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineFlowBox",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'PASS'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox ' '",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGTSpan tspan",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineFlowBox",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'PASS'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGInlineText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/text/remove-tspan-from-text-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/text/remove-tspan-from-text-expected.txt
index b0bdf82..4f42e020 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/text/remove-tspan-from-text-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/text/remove-tspan-from-text-expected.txt
@@ -11,9 +11,39 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [10, 63, 307, 257],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [10, 63, 307, 257],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [10, 63, 307, 257],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [10, 63, 307, 257],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGInlineText #text",
+          "rect": [10, 63, 307, 257],
           "reason": "layoutObject removal"
         },
         {
+          "object": "LayoutSVGTSpan tspan",
+          "rect": [10, 63, 307, 257],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutSVGTSpan tspan",
+          "rect": [10, 63, 307, 257],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutSVGTSpan tspan id='remove'",
           "rect": [10, 63, 307, 257],
           "reason": "layoutObject removal"
@@ -28,56 +58,64 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'FAIL'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGInlineText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGTSpan tspan id='remove'",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGText text id='text'",
       "reason": "full"
     },
     {
       "object": "RootInlineBox",
       "reason": "full"
+    },
+    {
+      "object": "LayoutSVGTSpan tspan",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'PASS'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox ' '",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGTSpan tspan",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutSVGInlineText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'PASS'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/text/text-rescale-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/text/text-rescale-expected.txt
index a5a2f3f..ae4c241 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/text/text-rescale-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/text/text-rescale-expected.txt
@@ -36,12 +36,12 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [0, 114, 193, 46],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [0, 114, 193, 46],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGInlineText #text",
@@ -51,7 +51,7 @@
         {
           "object": "LayoutSVGTSpan tspan",
           "rect": [0, 114, 193, 46],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGText text",
@@ -61,12 +61,12 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [0, 14, 193, 46],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [0, 14, 193, 46],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGInlineText #text",
@@ -76,7 +76,7 @@
         {
           "object": "LayoutSVGTSpan tspan",
           "rect": [0, 14, 193, 46],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGText text",
@@ -106,7 +106,7 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [310, 114, 92, 46],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGText text",
@@ -121,7 +121,7 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [310, 14, 92, 46],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGText text",
@@ -151,12 +151,12 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [0, 3, 7, 2],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [0, 3, 7, 2],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGInlineText #text",
@@ -166,7 +166,7 @@
         {
           "object": "LayoutSVGTSpan tspan",
           "rect": [0, 3, 7, 2],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGText text",
@@ -176,7 +176,7 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [9, 3, 5, 2],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGText text",
@@ -228,54 +228,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGRoot (positioned) svg",
       "reason": "bounds change"
     },
@@ -293,27 +245,27 @@
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'PASS '",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGTSpan tspan",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineFlowBox",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'PASS'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGInlineText #text",
@@ -353,11 +305,11 @@
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'PASS'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGContainer g id='text2g'",
@@ -441,27 +393,27 @@
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'PASS '",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGTSpan tspan",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineFlowBox",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'PASS'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGInlineText #text",
@@ -501,11 +453,11 @@
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'PASS'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/text/tspan-dynamic-positioning-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/text/tspan-dynamic-positioning-expected.txt
index 7c8ee04..3543f02 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/text/tspan-dynamic-positioning-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/text/tspan-dynamic-positioning-expected.txt
@@ -11,7 +11,7 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [200, 185, 240, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGRoot svg",
@@ -31,7 +31,7 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [20, 5, 240, 19],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGRoot svg",
@@ -53,18 +53,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'This text should be at visible at 200,200'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGRoot svg",
       "reason": "bounds change"
     },
@@ -86,11 +74,11 @@
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'This text should be at visible at 200,200'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/transforms/animated-path-inside-transformed-html-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/transforms/animated-path-inside-transformed-html-expected.txt
index 5716d53..c6e2951 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/svg/transforms/animated-path-inside-transformed-html-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/svg/transforms/animated-path-inside-transformed-html-expected.txt
@@ -22,7 +22,7 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [203, 336, 123, 44],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGText text id='text'",
@@ -32,7 +32,7 @@
         {
           "object": "LayoutSVGInlineText #text",
           "rect": [246, 106, 121, 28],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutSVGText text id='text'",
@@ -64,14 +64,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'This is some text'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutSVGRoot svg",
       "reason": "bounds change"
     },
@@ -89,11 +81,11 @@
     },
     {
       "object": "LayoutSVGInlineText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'This is some text'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutSVGImage image id='image'",
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/repaint/change-text-content-and-background-color-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/repaint/change-text-content-and-background-color-expected.txt
index c9b0978..36a069d 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/repaint/change-text-content-and-background-color-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/repaint/change-text-content-and-background-color-expected.txt
@@ -16,7 +16,7 @@
         {
           "object": "LayoutBlockFlow DIV id='inner-editor'",
           "rect": [30, 30, 200, 23],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -28,20 +28,16 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutTextControl (positioned) INPUT id='input'",
       "reason": "style change"
     },
     {
       "object": "LayoutBlockFlow DIV id='inner-editor'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/repaint/control-clip-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/repaint/control-clip-expected.txt
index 074677b..73f9eca 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/repaint/control-clip-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/repaint/control-clip-expected.txt
@@ -11,12 +11,12 @@
         {
           "object": "LayoutBlockFlow (anonymous)",
           "rect": [9, 84, 198, 14],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (anonymous)",
           "rect": [16, 114, 184, 13],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -33,24 +33,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText (anonymous)",
@@ -62,7 +50,11 @@
     },
     {
       "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/repaint/subtree-root-skipped-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/repaint/subtree-root-skipped-expected.txt
index e38821b..0ea59b2 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/repaint/subtree-root-skipped-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/repaint/subtree-root-skipped-expected.txt
@@ -11,7 +11,7 @@
         {
           "object": "LayoutBlockFlow DIV id='inner-editor'",
           "rect": [11, 11, 125, 13],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -28,16 +28,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/change-text-content-and-background-color-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/change-text-content-and-background-color-expected.txt
index 30509bb..3a39869 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/change-text-content-and-background-color-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/change-text-content-and-background-color-expected.txt
@@ -16,7 +16,7 @@
         {
           "object": "LayoutBlockFlow DIV id='inner-editor'",
           "rect": [30, 30, 200, 23],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -28,20 +28,16 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutTextControl (positioned) INPUT id='input'",
       "reason": "style change"
     },
     {
       "object": "LayoutBlockFlow DIV id='inner-editor'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/control-clip-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/control-clip-expected.txt
index 7616fa4..b5dadad 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/control-clip-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/control-clip-expected.txt
@@ -11,12 +11,12 @@
         {
           "object": "LayoutBlockFlow (anonymous)",
           "rect": [9, 84, 198, 14],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (anonymous)",
           "rect": [16, 114, 184, 13],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -33,24 +33,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText (anonymous)",
@@ -62,7 +50,11 @@
     },
     {
       "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/multi-layout-one-frame-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/multi-layout-one-frame-expected.txt
index 2ea08f7..da6035e 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/multi-layout-one-frame-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/multi-layout-one-frame-expected.txt
@@ -11,12 +11,12 @@
         {
           "object": "LayoutBlockFlow DIV id='inner-editor'",
           "rect": [138, 11, 117, 13],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='inner-editor'",
           "rect": [11, 11, 117, 13],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -33,24 +33,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV id='inner-editor'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
@@ -62,7 +50,11 @@
     },
     {
       "object": "LayoutBlockFlow DIV id='inner-editor'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/stacked-diacritics-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/stacked-diacritics-expected.txt
index 1707b73cd..05f793e 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/stacked-diacritics-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/stacked-diacritics-expected.txt
@@ -9,6 +9,11 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
+          "object": "LayoutBlockFlow DIV id='stacked'",
+          "rect": [19, 159, 200, 41],
+          "reason": "full"
+        },
+        {
           "object": "LayoutText #text",
           "rect": [19, 153, 131, 47],
           "reason": "layoutObject removal"
@@ -18,15 +23,11 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox '\u1EA6\u1EA4\u1EAA\u1EA8\u1EB0'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
+      "object": "LayoutBlockFlow DIV id='stacked'",
       "reason": "full"
     }
   ]
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/subtree-root-skipped-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/subtree-root-skipped-expected.txt
index fc56fda..7fa89a7 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/subtree-root-skipped-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/repaint/subtree-root-skipped-expected.txt
@@ -11,7 +11,7 @@
         {
           "object": "LayoutBlockFlow DIV id='inner-editor'",
           "rect": [11, 11, 117, 13],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -28,16 +28,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='inner-editor'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='inner-editor'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/squashing/iframe-inside-squashed-layer-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/compositing/squashing/iframe-inside-squashed-layer-expected.txt
index c548c7c..64cee45 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/compositing/squashing/iframe-inside-squashed-layer-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/squashing/iframe-inside-squashed-layer-expected.txt
@@ -52,6 +52,11 @@
                   "reason": "forced by layout"
                 },
                 {
+                  "object": "LayoutText #text",
+                  "rect": [8, 508, 31, 18],
+                  "reason": "forced by layout"
+                },
+                {
                   "object": "LayoutView #document",
                   "rect": [285, 500, 15, 150],
                   "reason": "scroll"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css3/flexbox/repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/css3/flexbox/repaint-expected.txt
index c061b15..b592a38 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/css3/flexbox/repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/css3/flexbox/repaint-expected.txt
@@ -21,7 +21,7 @@
         {
           "object": "LayoutText #text",
           "rect": [138, 116, 652, 90],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='content'",
@@ -46,12 +46,12 @@
         {
           "object": "LayoutText #text",
           "rect": [148, 116, 632, 108],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [148, 116, 632, 108],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='content'",
@@ -71,7 +71,7 @@
         {
           "object": "LayoutText #text",
           "rect": [400, 116, 391, 162],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='left'",
@@ -93,76 +93,48 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='left'",
+      "reason": "incremental"
+    },
+    {
+      "object": "LayoutBlockFlow DIV id='content'",
+      "reason": "style change"
+    },
+    {
+      "object": "LayoutBlockFlow P",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
+      "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
+      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet dolor id urna eleifend'",
+      "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
+      "object": "InlineTextBox 'aliquet. Nulla vel dolor ipsum. Aliquam ut turpis nisl, in vulputate sapien. Cum sociis natoque'",
+      "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
+      "object": "InlineTextBox 'penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed congue magna vitae dolor'",
+      "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
+      "object": "InlineTextBox 'feugiat vehicula. Sed volutpat, tellus vel varius vestibulum, purus quam mollis sapien, in'",
+      "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
+      "object": "InlineTextBox 'condimentum leo neque sed nulla. Nunc quis porta elit. Pellentesque erat lectus, ultricies a lobortis'",
+      "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Aenean laoreet dolor id urna eleifend aliquet. Nulla vel dolor'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'ipsum. Aliquam ut turpis nisl, in vulputate sapien. Cum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'sociis natoque penatibus et magnis dis parturient montes,'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'nascetur ridiculus mus. Sed congue magna vitae dolor'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'feugiat vehicula. Sed volutpat, tellus vel varius vestibulum,'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'purus quam mollis sapien, in condimentum leo neque sed'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'nulla. Nunc quis porta elit. Pellentesque erat lectus, ultricies'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'a lobortis id, faucibus id quam.'",
-      "reason": "full"
+      "object": "InlineTextBox 'id, faucibus id quam.'",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV id='left'",
@@ -182,119 +154,27 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet dolor id urna eleifend'",
-      "reason": "bounds change"
-    },
-    {
-      "object": "InlineTextBox 'aliquet. Nulla vel dolor ipsum. Aliquam ut turpis nisl, in vulputate sapien. Cum sociis natoque'",
-      "reason": "bounds change"
-    },
-    {
-      "object": "InlineTextBox 'penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed congue magna vitae dolor'",
-      "reason": "bounds change"
-    },
-    {
-      "object": "InlineTextBox 'feugiat vehicula. Sed volutpat, tellus vel varius vestibulum, purus quam mollis sapien, in'",
-      "reason": "bounds change"
-    },
-    {
-      "object": "InlineTextBox 'condimentum leo neque sed nulla. Nunc quis porta elit. Pellentesque erat lectus, ultricies a lobortis'",
-      "reason": "bounds change"
-    },
-    {
-      "object": "InlineTextBox 'id, faucibus id quam.'",
-      "reason": "bounds change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet dolor id urna eleifend'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'aliquet. Nulla vel dolor ipsum. Aliquam ut turpis nisl, in vulputate sapien. Cum sociis natoque'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed congue magna vitae dolor'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'feugiat vehicula. Sed volutpat, tellus vel varius vestibulum, purus quam mollis sapien, in'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'condimentum leo neque sed nulla. Nunc quis porta elit. Pellentesque erat lectus, ultricies a lobortis'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'id, faucibus id quam.'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='left'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='content'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow P",
       "reason": "forced by layout"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "forced by layout"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "bounds change"
-    },
-    {
       "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet dolor id urna eleifend aliquet.'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Nulla vel dolor ipsum. Aliquam ut turpis nisl, in vulputate sapien. Cum sociis natoque penatibus et'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'magnis dis parturient montes, nascetur ridiculus mus. Sed congue magna vitae dolor feugiat vehicula.'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Sed volutpat, tellus vel varius vestibulum, purus quam mollis sapien, in condimentum leo neque sed'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'nulla. Nunc quis porta elit. Pellentesque erat lectus, ultricies a lobortis id, faucibus id quam.'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/block-no-inflow-children-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/block-no-inflow-children-expected.txt
index d32d2ea..94b903f5 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/block-no-inflow-children-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/block-no-inflow-children-expected.txt
@@ -23,14 +23,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV id='target'",
       "reason": "forced by layout"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/box-inline-resize-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/box-inline-resize-expected.txt
index 724cc84..d1181b6 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/box-inline-resize-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/box-inline-resize-expected.txt
@@ -43,22 +43,6 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (anonymous)",
       "reason": "forced by layout"
     },
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/bugzilla-3509-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-3509-expected.txt
similarity index 73%
copy from third_party/WebKit/LayoutTests/fast/repaint/bugzilla-3509-expected.txt
copy to third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-3509-expected.txt
index b6fadc1..717e71c 100644
--- a/third_party/WebKit/LayoutTests/fast/repaint/bugzilla-3509-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-3509-expected.txt
@@ -12,26 +12,31 @@
           "object": "LayoutBlockFlow DIV id='im'",
           "rect": [11, 125, 100, 100],
           "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [11, 125, 4, 18],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV id='im'",
       "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
       "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\u00A0'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-5699-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-5699-expected.txt
index ccc09ea..84005b6 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-5699-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-5699-expected.txt
@@ -11,22 +11,17 @@
         {
           "object": "LayoutBlockFlow P",
           "rect": [8, 130, 784, 66],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 166, 784, 30],
-          "reason": "incremental"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 178, 36, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 148, 36, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutInline SPAN id='d'",
@@ -48,28 +43,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
+      "object": "LayoutBlockFlow P",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutInline SPAN id='d'",
@@ -89,27 +68,27 @@
     },
     {
       "object": "LayoutBR BR",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox '\n'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Hello'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBR BR",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox '\n'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-6278-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-6278-expected.txt
index 33a2ce0..38e3e59 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-6278-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-6278-expected.txt
@@ -19,6 +19,11 @@
           "reason": "bounds change"
         },
         {
+          "object": "LayoutText #text",
+          "rect": [10, 132, 276, 144],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutBlockFlow DIV",
           "rect": [10, 132, 242, 180],
           "reason": "forced by layout"
@@ -35,8 +40,8 @@
         },
         {
           "object": "LayoutText #text",
-          "rect": [10, 276, 240, 36],
-          "reason": "incremental"
+          "rect": [10, 132, 240, 180],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutTableCell TD id='target'",
@@ -47,81 +52,12 @@
           "object": "LayoutTableCell TD id='col1'",
           "rect": [252, 132, 50, 199],
           "reason": "incremental"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [249, 132, 37, 144],
-          "reason": "incremental"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Curabitur pretium, quam quis semper'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'malesuada, est libero feugiat libero, vel'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'fringilla orci nibh sed neque. Quisque eu'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'nulla non nisi molestie accumsan. Etiam'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'tellus urna, laoreet ac, laoreet non, suscipit'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'sed, sapien. Phasellus vehicula, sem at'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'posuere vehicula, augue nibh molestie nisl,'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'nec ullamcorper lacus ante vulputate pede.'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutTableCell TD id='col1'",
       "reason": "incremental"
     },
@@ -135,47 +71,47 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Curabitur pretium, quam quis semper'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'malesuada, est libero feugiat libero,'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'vel fringilla orci nibh sed neque.'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Quisque eu nulla non nisi molestie'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'accumsan. Etiam tellus urna, laoreet'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'ac, laoreet non, suscipit sed, sapien.'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'Phasellus vehicula, sem at posuere'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'vehicula, augue nibh molestie nisl,'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'nec ullamcorper lacus ante vulputate'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox 'pede.'",
-      "reason": "incremental"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-7235-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-7235-expected.txt
index 4eb10b1..d09d6a0 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-7235-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/bugzilla-7235-expected.txt
@@ -11,36 +11,50 @@
         {
           "object": "LayoutBlockFlow (anonymous)",
           "rect": [8, 148, 784, 18],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (positioned) DIV id='t'",
           "rect": [8, 166, 100, 100],
           "reason": "layoutObject insertion"
+        },
+        {
+          "object": "LayoutInline (relative positioned) SPAN id='p'",
+          "rect": [8, 148, 4, 18],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [8, 148, 4, 18],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow (anonymous)",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
+      "reason": "forced by layout"
     },
     {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutInline (relative positioned) SPAN id='p'",
+      "reason": "forced by layout"
     },
     {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\u00A0'",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow (positioned) DIV id='t'",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/change-text-content-and-background-color-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/change-text-content-and-background-color-expected.txt
index 0b8376d..79cceb7e 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/change-text-content-and-background-color-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/change-text-content-and-background-color-expected.txt
@@ -16,7 +16,7 @@
         {
           "object": "LayoutBlockFlow DIV id='inner-editor'",
           "rect": [30, 30, 200, 23],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -28,20 +28,16 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutTextControl (positioned) INPUT id='input'",
       "reason": "style change"
     },
     {
       "object": "LayoutBlockFlow DIV id='inner-editor'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/clip-with-layout-delta-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/clip-with-layout-delta-expected.txt
index 760ed07..ba6178a 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/clip-with-layout-delta-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/clip-with-layout-delta-expected.txt
@@ -31,34 +31,18 @@
         {
           "object": "LayoutText #text",
           "rect": [108, 8, 4, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [8, 8, 4, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV",
       "reason": "background obscuration change"
     },
@@ -72,11 +56,11 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox '\u00A0'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow (relative positioned) DIV",
@@ -92,11 +76,11 @@
     },
     {
       "object": "LayoutText #text",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineTextBox '\u00A0'",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/control-clip-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/control-clip-expected.txt
index 02dd358..5718085 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/control-clip-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/control-clip-expected.txt
@@ -11,12 +11,12 @@
         {
           "object": "LayoutBlockFlow (anonymous)",
           "rect": [9, 84, 198, 14],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (anonymous)",
           "rect": [16, 114, 184, 13],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText (anonymous)",
@@ -33,24 +33,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText (anonymous)",
@@ -62,7 +50,11 @@
     },
     {
       "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/crbug-371640-4-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/crbug-371640-4-expected.txt
index 6673b77e..695b040 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/crbug-371640-4-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/crbug-371640-4-expected.txt
@@ -43,18 +43,10 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV id='to_remove' class='item'",
       "reason": "layoutObject removal"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/crbug-371640-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/crbug-371640-expected.txt
index ddd39fc..077389f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/crbug-371640-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/crbug-371640-expected.txt
@@ -43,18 +43,10 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV id='to_remove' class='item'",
       "reason": "layoutObject removal"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/delete-into-nested-block-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/delete-into-nested-block-expected.txt
index b49fc87..ab8cc32 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/delete-into-nested-block-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/delete-into-nested-block-expected.txt
@@ -31,7 +31,7 @@
         {
           "object": "LayoutBlockFlow DIV id='one'",
           "rect": [8, 119, 784, 19],
-          "reason": "forced by layout"
+          "reason": "full"
         },
         {
           "object": "LayoutText #text",
@@ -63,58 +63,26 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox 'one'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'two'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV",
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineTextBox 'three'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBR BR",
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV",
       "reason": "layoutObject removal"
     },
@@ -123,34 +91,10 @@
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBR BR",
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineTextBox 'three'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'three'",
-      "reason": "full"
-    },
-    {
       "object": "LayoutText #text",
       "reason": "layoutObject removal"
     },
@@ -159,20 +103,16 @@
       "reason": "layoutObject removal"
     },
     {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV",
       "reason": "outline"
     },
     {
       "object": "LayoutBlockFlow DIV id='one'",
-      "reason": "forced by layout"
+      "reason": "full"
     },
     {
       "object": "RootInlineBox",
-      "reason": "forced by layout"
+      "reason": "full"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/gradients-em-stops-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/gradients-em-stops-repaint-expected.txt
index 9951446..66844d5 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/gradients-em-stops-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/gradients-em-stops-repaint-expected.txt
@@ -11,7 +11,7 @@
         {
           "object": "LayoutBlockFlow DIV class='em-units'",
           "rect": [8, 8, 784, 146],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV id='box4' class='box'",
@@ -19,33 +19,43 @@
           "reason": "style change"
         },
         {
+          "object": "LayoutBlockFlow DIV id='box3' class='box'",
+          "rect": [18, 18, 302, 122],
+          "reason": "forced by layout"
+        },
+        {
           "object": "LayoutBlockFlow DIV class='indicator'",
           "rect": [345, 19, 240, 20],
           "reason": "style change"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [330, 136, 4, 18],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV class='em-units'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
+      "reason": "forced by layout"
     },
     {
-      "object": "LayoutBlockFlow DIV class='em-units'",
-      "reason": "invalidate paint rectangle"
+      "object": "LayoutBlockFlow DIV id='box3' class='box'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox '\n'",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutBlockFlow DIV id='box4' class='box'",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/inline-focus-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/inline-focus-expected.txt
index a957551..f4aed46 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/inline-focus-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/inline-focus-expected.txt
@@ -14,46 +14,41 @@
           "reason": "style change"
         },
         {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [-5, -5, 805, 28],
-          "reason": "invalidate paint rectangle"
-        },
-        {
           "object": "LayoutBlockFlow P",
           "rect": [0, 34, 800, 18],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutBlockFlow (anonymous)",
+          "rect": [0, 0, 800, 18],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [0, 34, 429, 18],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutInline A",
+          "rect": [0, 0, 40, 18],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [0, 6, 40, 10],
+          "reason": "forced by layout"
         }
       ]
     }
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Home'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'crbug.com/424078: ensure inline elements get their outline painted'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutInline A id='link'",
@@ -64,8 +59,36 @@
       "reason": "style change"
     },
     {
+      "object": "LayoutInline A",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'Home'",
+      "reason": "forced by layout"
+    },
+    {
       "object": "LayoutBlockFlow P",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutText #text",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineTextBox 'crbug.com/424078: ensure inline elements get their outline painted'",
+      "reason": "forced by layout"
     }
   ]
 }
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/inline-outline-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/inline-outline-repaint-expected.txt
index 6aa7483..eb69ab9 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/inline-outline-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/inline-outline-repaint-expected.txt
@@ -10,13 +10,13 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV",
-          "rect": [5, 163, 103, 42],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 166, 100, 36],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutInline SPAN id='test'",
           "rect": [5, 163, 98, 42],
-          "reason": "outline"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -37,328 +37,24 @@
       "reason": "layoutObject removal"
     },
     {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'dolor sit'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ''",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'dolor'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
       "object": "LayoutBlockFlow DIV",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "RootInlineBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutInline SPAN id='test'",
-      "reason": "outline"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineFlowBox",
-      "reason": "outline"
+      "reason": "forced by layout"
     },
     {
       "object": "InlineFlowBox",
-      "reason": "outline"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-relative-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-relative-expected.txt
index 94821a4..1d2b6433 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-relative-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-relative-expected.txt
@@ -11,7 +11,7 @@
         {
           "object": "LayoutBlockFlow (relative positioned) DIV id='target'",
           "rect": [8, 150, 784, 18],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -23,16 +23,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow (relative positioned) DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='target'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset-expected.txt
index d53c46c..71b4622 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [100, 118, 50, 18],
-          "reason": "invalidate paint rectangle"
+          "rect": [100, 118, 50, 50],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -23,16 +23,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset2-expected.txt
index 1fdfeab..9919af8 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset2-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset2-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [102, 120, 50, 18],
-          "reason": "invalidate paint rectangle"
+          "rect": [102, 120, 50, 50],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -23,16 +23,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset3-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset3-expected.txt
index c83c40f..ae9e5d1 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset3-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layout-state-scrolloffset3-expected.txt
@@ -10,8 +10,8 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [100, 118, 34, 18],
-          "reason": "invalidate paint rectangle"
+          "rect": [100, 118, 34, 50],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -23,16 +23,12 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineTextBox ''",
-      "reason": "full"
+      "object": "LayoutBlockFlow DIV id='target'",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "invalidate paint rectangle"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt
index 69bbd32..1e8aeef 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt
@@ -11,22 +11,27 @@
         {
           "object": "LayoutBlockFlow (anonymous)",
           "rect": [8, 40, 784, 104],
-          "reason": "invalidate paint rectangle"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutInline (relative positioned) SPAN id='target'",
           "rect": [8, 220, 100, 104],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutInline (relative positioned) SPAN id='target'",
           "rect": [8, 200, 100, 104],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutInline (relative positioned) SPAN",
+          "rect": [8, 120, 100, 104],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow DIV",
           "rect": [8, 220, 100, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -36,7 +41,7 @@
         {
           "object": "LayoutBlockFlow DIV",
           "rect": [8, 200, 100, 100],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -48,32 +53,28 @@
   ],
   "objectPaintInvalidations": [
     {
-      "object": "InlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
+      "object": "LayoutBlockFlow (anonymous)",
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "full"
+      "reason": "forced by layout"
     },
     {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutInline (relative positioned) SPAN id='target'",
-      "reason": "bounds change"
+      "object": "LayoutInline (relative positioned) SPAN",
+      "reason": "forced by layout"
     },
     {
       "object": "InlineFlowBox",
-      "reason": "bounds change"
+      "reason": "forced by layout"
+    },
+    {
+      "object": "LayoutInline (relative positioned) SPAN id='target'",
+      "reason": "forced by layout"
+    },
+    {
+      "object": "InlineFlowBox",
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
@@ -81,11 +82,11 @@
     },
     {
       "object": "LayoutBlockFlow DIV",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "RootInlineBox",
-      "reason": "bounds change"
+      "reason": "forced by layout"
     },
     {
       "object": "LayoutText #text",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-1-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-1-expected.txt
index 03dfe3a..698e86dd 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-1-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-1-expected.txt
@@ -9,49 +9,64 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 116, 418, 450],
-          "reason": "invalidate paint rectangle"
-        },
-        {
           "object": "LayoutText #text",
           "rect": [14, 170, 407, 72],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 242, 406, 126],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 224, 406, 126],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 80, 406, 108],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 476, 406, 90],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 188, 406, 72],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 422, 355, 54],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 404, 355, 36],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 386, 355, 36],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 368, 304, 18],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [178, 350, 145, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 350, 145, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) DIV id='pinkFloat'",
@@ -59,11 +74,6 @@
           "reason": "incremental"
         },
         {
-          "object": "LayoutText #text",
-          "rect": [367, 80, 53, 108],
-          "reason": "incremental"
-        },
-        {
           "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
           "rect": [14, 353, 48, 65],
           "reason": "bounds change"
@@ -76,17 +86,12 @@
         {
           "object": "LayoutText #text",
           "rect": [305, 170, 40, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 188, 40, 18],
-          "reason": "bounds change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [368, 422, 1, 54],
-          "reason": "incremental"
+          "reason": "forced by layout"
         }
       ]
     }
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-10-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-10-expected.txt
index 5dd823f..1a44de6 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-10-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-10-expected.txt
@@ -9,14 +9,39 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 314, 418, 252],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [14, 242, 406, 126],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 476, 406, 90],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 422, 355, 54],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 404, 355, 36],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 386, 304, 36],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 368, 304, 18],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [178, 350, 145, 18],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
@@ -27,11 +52,6 @@
           "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
           "rect": [14, 364, 48, 64],
           "reason": "bounds change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [367, 422, 2, 54],
-          "reason": "incremental"
         }
       ]
     }
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-2-expected.txt
index 537076c0..2bfb312 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-2-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-2-expected.txt
@@ -10,11 +10,6 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow P",
-          "rect": [8, 170, 418, 400],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutBlockFlow P",
           "rect": [8, 569, 418, 7],
           "reason": "incremental"
         },
@@ -26,82 +21,87 @@
         {
           "object": "LayoutText #text",
           "rect": [14, 246, 406, 126],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 242, 406, 126],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 480, 406, 90],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 476, 406, 90],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 191, 406, 73],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 188, 406, 72],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 426, 355, 54],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 422, 355, 54],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 408, 355, 36],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 404, 355, 36],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 80, 354, 108],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 390, 304, 36],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 386, 304, 36],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 372, 304, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 368, 304, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [178, 354, 145, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [178, 350, 145, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-3-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-3-expected.txt
index 7f4221f..c9e7884 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-3-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-3-expected.txt
@@ -9,19 +9,39 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 332, 418, 234],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [14, 242, 406, 126],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 476, 406, 90],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 368, 355, 54],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 422, 355, 54],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 404, 355, 36],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 368, 336, 18],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [178, 350, 145, 18],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
@@ -32,16 +52,6 @@
           "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
           "rect": [372, 371, 48, 81],
           "reason": "bounds change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [368, 368, 33, 18],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [352, 422, 17, 54],
-          "reason": "incremental"
         }
       ]
     }
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-4-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-4-expected.txt
index e792fb9..9c224aa 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-4-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-4-expected.txt
@@ -9,14 +9,39 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 332, 418, 234],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [14, 242, 406, 126],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
-          "rect": [368, 422, 52, 54],
-          "reason": "incremental"
+          "rect": [14, 476, 406, 90],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 422, 406, 54],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 404, 355, 36],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 386, 304, 36],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 368, 304, 18],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [178, 350, 145, 18],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-5-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-5-expected.txt
index 2458a781..01c87cb 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-5-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-5-expected.txt
@@ -9,44 +9,54 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 314, 418, 252],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [14, 242, 406, 126],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 476, 406, 90],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 422, 355, 54],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 404, 355, 36],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [49, 368, 320, 54],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 368, 304, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [49, 368, 301, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [178, 350, 145, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [162, 350, 145, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
           "rect": [46, 353, 16, 65],
           "reason": "incremental"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [368, 404, 1, 36],
-          "reason": "incremental"
         }
       ]
     }
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-6-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-6-expected.txt
index 9d54bfc..73bef55 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-6-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-6-expected.txt
@@ -9,9 +9,19 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 314, 418, 72],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [14, 242, 406, 126],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [65, 368, 304, 18],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [178, 350, 145, 18],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-7-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-7-expected.txt
index 373fdb0..0632642a 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-7-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-7-expected.txt
@@ -9,9 +9,9 @@
       "drawsContent": true,
       "paintInvalidations": [
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 386, 418, 54],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [14, 422, 355, 54],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
@@ -20,8 +20,8 @@
         },
         {
           "object": "LayoutText #text",
-          "rect": [368, 422, 1, 54],
-          "reason": "incremental"
+          "rect": [65, 386, 304, 36],
+          "reason": "forced by layout"
         }
       ]
     }
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-8-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-8-expected.txt
index ee1a165..6628af9a 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-8-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-8-expected.txt
@@ -10,48 +10,68 @@
       "paintInvalidations": [
         {
           "object": "LayoutBlockFlow P",
-          "rect": [8, 80, 418, 396],
-          "reason": "invalidate paint rectangle"
+          "rect": [8, 74, 418, 498],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 242, 406, 126],
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 188, 406, 72],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 404, 355, 72],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 368, 355, 54],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 404, 355, 36],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 80, 354, 108],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 368, 336, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [65, 368, 304, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [178, 350, 145, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [127, 350, 145, 18],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
           "rect": [14, 353, 48, 65],
           "reason": "layoutObject removal"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 188, 40, 18],
+          "reason": "forced by layout"
         }
       ]
     }
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-9-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-9-expected.txt
index be289aa..dcbd4a5 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-9-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-9-expected.txt
@@ -24,64 +24,69 @@
           "reason": "incremental"
         },
         {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 566, 418, 18],
-          "reason": "invalidate paint rectangle"
+          "object": "LayoutText #text",
+          "rect": [14, 242, 406, 126],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 494, 406, 90],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 476, 406, 90],
-          "reason": "bounds change"
+          "reason": "forced by layout"
+        },
+        {
+          "object": "LayoutText #text",
+          "rect": [14, 188, 406, 72],
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 440, 355, 54],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 422, 355, 54],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 404, 355, 36],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",
           "rect": [14, 404, 355, 36],
-          "reason": "bounds change"
+          "reason": "forced by layout"
         },
         {
           "object": "LayoutText #text",