diff --git a/DEPS b/DEPS
index 94b17a4..efc39fbc 100644
--- a/DEPS
+++ b/DEPS
@@ -96,11 +96,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '8e200f3940ffa90de63b7fee987619eb8aa22141',
+  'skia_revision': '8363be1a00b154082e6be178f37de4b8fa78dde0',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': 'cd4e3063b57853b04040115ffa2fe69c8ffdb1e4',
+  'v8_revision': '8030067c74da4dc677cab3984b5443c5f6bfbd9b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -108,7 +108,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': '1e91374efaa3fe384bed9c834e6afa62cf291146',
+  'angle_revision': '316c60650214130de83be8fde553c7bd0c2f8f00',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling build tools
   # and whatever else without interference from each other.
@@ -116,7 +116,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
-  'swiftshader_revision': 'cbb80f5f0078a9941f3ec43e83e52c3d15a43bea',
+  'swiftshader_revision': '4b74373aac5107233555ae00b6df2340251b5022',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
@@ -156,7 +156,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '0043a4a254625989ff29785bda17ec83b5bde51a',
+  'catapult_revision': '46ef7c475a9293a54d77b76a29fa7f2f2be95bcb',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -477,7 +477,7 @@
   },
 
   'src/third_party/breakpad/breakpad':
-    Var('chromium_git') + '/breakpad/breakpad.git' + '@' + 'c83fcf647033cd31348b4109c2a9d8df72706361',
+    Var('chromium_git') + '/breakpad/breakpad.git' + '@' + '27c001192ba9b78fe8f47c5a51a2d0a371860f12',
 
   'src/third_party/byte_buddy': {
       'packages': [
@@ -513,7 +513,7 @@
 
   # For Linux and Chromium OS.
   'src/third_party/cros_system_api': {
-      'url': Var('chromium_git') + '/chromiumos/platform/system_api.git' + '@' + 'f6223168d99e7d60252efb492c793507de9aa668',
+      'url': Var('chromium_git') + '/chromiumos/platform/system_api.git' + '@' + '55139d2ab617e9eaf1521f21da4ad58397d0e202',
       'condition': 'checkout_linux',
   },
 
@@ -767,7 +767,7 @@
   },
 
   'src/third_party/libvpx/source/libvpx':
-    Var('chromium_git') + '/webm/libvpx.git' + '@' +  '36825590ba676d54765c6c31482cacb4fe661b43',
+    Var('chromium_git') + '/webm/libvpx.git' + '@' +  '2b08f89076d1e93339fbbcc10e3298a0eec66bd6',
 
   'src/third_party/libwebm/source':
     Var('chromium_git') + '/webm/libwebm.git' + '@' + 'af81f26025b7435fa9a14ad07c58b44cf9280430',
@@ -990,7 +990,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '198d637dd3e21d837fac6b3186cc6bc72e2f7219',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '2aae2733a70c9dadfe20f04e8a85e4bfd9ef8ef7',
+    Var('webrtc_git') + '/src.git' + '@' + '9a89a491f801afb2a4fb0d90be397a4b2e553a95',
 
   'src/third_party/xdg-utils': {
       'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
@@ -1024,7 +1024,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@74cfbb05fcd90b8dea2c0747575347f3813acdf9',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@186537f188610462f4429f1dfa720a0d0a26d62f',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/WATCHLISTS b/WATCHLISTS
index 70bab007..26bc70f 100644
--- a/WATCHLISTS
+++ b/WATCHLISTS
@@ -978,12 +978,6 @@
     'ios_showcase': {
       'filepath': 'ios/showcase/',
     },
-    'ios_test': {
-      'filepath': 'ios/chrome/test/|'\
-                  'ios/testing/|'\
-                  'ios/web/public/test/|'\
-                  'ios/web/test/',
-    },
     'ios_web': {
       'filepath': 'ios/web(_view)?/',
     },
@@ -2119,7 +2113,6 @@
                   'marq+scrutinize@chromium.org'],
     'ios_showcase': ['ios-reviews+showcase@chromium.org',
                      'marq+watch@chromium.org'],
-    'ios_test': ['huangml+watch@chromium.org'],
     'ios_web': ['ios-reviews+web@chromium.org',
                 'eugenebut@chromium.org'],
     'ipc': ['jam@chromium.org'],
@@ -2144,7 +2137,8 @@
     'login': ['vabr+watchlistlogin@chromium.org'],
     'mac' : ['mac-reviews@chromium.org'],
     'manifest': ['mlamouri+watch-manifest@chromium.org'],
-    'mash_buildbot_filters': ['jamescook+watch@chromium.org'],
+    'mash_buildbot_filters': ['dxie+watch@chromium.org',
+                              'jamescook+watch@chromium.org'],
     'md_settings': ['michaelpg+watch-md-settings@chromium.org',
                     'stevenjb+watch-md-settings@chromium.org'],
     'media': ['feature-media-reviews@chromium.org'],
diff --git a/android_webview/browser/tracing/aw_trace_event_args_whitelist.cc b/android_webview/browser/tracing/aw_trace_event_args_whitelist.cc
index 64dfe5d2..c23c5b2 100644
--- a/android_webview/browser/tracing/aw_trace_event_args_whitelist.cc
+++ b/android_webview/browser/tracing/aw_trace_event_args_whitelist.cc
@@ -18,12 +18,17 @@
   const char* const* arg_name_filter;
 };
 
+const char* const kMemoryDumpAllowedArgs[] = {"dumps", nullptr};
+
 const WhitelistEntry kEventArgsWhitelist[] = {
     {"__metadata", "thread_name", nullptr},
     {"__metadata", "process_name", nullptr},
     {"__metadata", "process_uptime_seconds", nullptr},
     {"__metadata", "stackFrames", nullptr},
     {"__metadata", "typeNames", nullptr},
+    // Redefined the string since MemoryDumpManager::kTraceCategory causes
+    // static initialization of this struct.
+    {TRACE_DISABLED_BY_DEFAULT("memory-infra"), "*", kMemoryDumpAllowedArgs},
     {nullptr, nullptr, nullptr}};
 
 }  // namespace
diff --git a/android_webview/test/shell/src/org/chromium/android_webview/test/AwJUnit4ClassRunner.java b/android_webview/test/shell/src/org/chromium/android_webview/test/AwJUnit4ClassRunner.java
index 436b37e..d0318ba 100644
--- a/android_webview/test/shell/src/org/chromium/android_webview/test/AwJUnit4ClassRunner.java
+++ b/android_webview/test/shell/src/org/chromium/android_webview/test/AwJUnit4ClassRunner.java
@@ -4,12 +4,13 @@
 
 package org.chromium.android_webview.test;
 
+import android.support.annotation.CallSuper;
+
 import org.junit.runner.notification.RunNotifier;
 import org.junit.runners.model.FrameworkMethod;
 import org.junit.runners.model.InitializationError;
 
 import org.chromium.android_webview.AwSwitches;
-import org.chromium.base.CollectionUtil;
 import org.chromium.base.CommandLine;
 import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.BaseTestResult.PreTestHook;
@@ -38,11 +39,13 @@
      * @throws InitializationError if the test class is malformed
      */
     public AwJUnit4ClassRunner(Class<?> klass) throws InitializationError {
-        super(klass, null, defaultPreTestHooks());
+        super(klass);
     }
 
-    private static List<PreTestHook> defaultPreTestHooks() {
-        return CollectionUtil.newArrayList(Policies.getRegistrationHook());
+    @CallSuper
+    @Override
+    protected List<PreTestHook> getPreTestHooks() {
+        return addToList(super.getPreTestHooks(), Policies.getRegistrationHook());
     }
 
     @Override
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index cd8ec2a5..1ab01c6 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -107,6 +107,7 @@
     "assistant/ui/assistant_bubble.h",
     "assistant/ui/assistant_bubble_view.cc",
     "assistant/ui/assistant_bubble_view.h",
+    "assistant/ui/assistant_ui_constants.h",
     "assistant/ui/caption_bar.cc",
     "assistant/ui/caption_bar.h",
     "assistant/ui/dialog_plate/action_view.cc",
@@ -117,6 +118,8 @@
     "assistant/ui/logo_view/base_logo_view.h",
     "assistant/ui/suggestion_container_view.cc",
     "assistant/ui/suggestion_container_view.h",
+    "assistant/ui/ui_element_container_view.cc",
+    "assistant/ui/ui_element_container_view.h",
     "autoclick/autoclick_controller.cc",
     "autoclick/autoclick_controller.h",
     "cancel_mode.cc",
@@ -495,6 +498,8 @@
     "shelf/shelf_layout_manager_observer.h",
     "shelf/shelf_locking_manager.cc",
     "shelf/shelf_locking_manager.h",
+    "shelf/shelf_menu_model_adapter.cc",
+    "shelf/shelf_menu_model_adapter.h",
     "shelf/shelf_observer.h",
     "shelf/shelf_tooltip_bubble.cc",
     "shelf/shelf_tooltip_bubble.h",
@@ -515,8 +520,8 @@
     "shell.cc",
     "shell.h",
     "shell_delegate.h",
-    "shell_delegate_mus.cc",
-    "shell_delegate_mus.h",
+    "shell_delegate_mash.cc",
+    "shell_delegate_mash.h",
     "shell_init_params.cc",
     "shell_init_params.h",
     "shell_observer.h",
diff --git a/ash/accessibility/accessibility_highlight_controller.cc b/ash/accessibility/accessibility_highlight_controller.cc
index 13dd54bd..48d7c1b 100644
--- a/ash/accessibility/accessibility_highlight_controller.cc
+++ b/ash/accessibility/accessibility_highlight_controller.cc
@@ -80,7 +80,8 @@
 }
 
 void AccessibilityHighlightController::OnMouseEvent(ui::MouseEvent* event) {
-  if (event->type() == ui::ET_MOUSE_MOVED) {
+  if (event->type() == ui::ET_MOUSE_MOVED ||
+      event->type() == ui::ET_MOUSE_DRAGGED) {
     cursor_point_ = event->location();
     if (event->target()) {
       ::wm::ConvertPointToScreen(static_cast<aura::Window*>(event->target()),
diff --git a/ash/assistant/model/assistant_ui_element.h b/ash/assistant/model/assistant_ui_element.h
index e038c80..70369e7 100644
--- a/ash/assistant/model/assistant_ui_element.h
+++ b/ash/assistant/model/assistant_ui_element.h
@@ -47,7 +47,7 @@
 
   ~AssistantCardElement() override = default;
 
-  const std::string& GetHtml() const { return html_; }
+  const std::string& html() const { return html_; }
 
  private:
   const std::string html_;
@@ -65,7 +65,7 @@
 
   ~AssistantTextElement() override = default;
 
-  const std::string& GetText() const { return text_; }
+  const std::string& text() const { return text_; }
 
  private:
   const std::string text_;
diff --git a/ash/assistant/ui/assistant_bubble.cc b/ash/assistant/ui/assistant_bubble.cc
index af65f100..f42fd32 100644
--- a/ash/assistant/ui/assistant_bubble.cc
+++ b/ash/assistant/ui/assistant_bubble.cc
@@ -23,8 +23,8 @@
 
 // Appearance.
 constexpr SkColor kBackgroundColor = SK_ColorWHITE;
-constexpr int kCornerRadiusDip = 16;
-constexpr int kMarginDip = 16;
+constexpr int kCornerRadiusDip = 20;
+constexpr int kMarginDip = 8;
 
 // AssistantContainerView ------------------------------------------------------
 
diff --git a/ash/assistant/ui/assistant_bubble_view.cc b/ash/assistant/ui/assistant_bubble_view.cc
index eb47cf9e..cb7e71f 100644
--- a/ash/assistant/ui/assistant_bubble_view.cc
+++ b/ash/assistant/ui/assistant_bubble_view.cc
@@ -4,24 +4,21 @@
 
 #include "ash/assistant/ui/assistant_bubble_view.h"
 
+#include <memory>
+
 #include "ash/assistant/assistant_controller.h"
 #include "ash/assistant/model/assistant_interaction_model.h"
 #include "ash/assistant/model/assistant_query.h"
-#include "ash/assistant/model/assistant_ui_element.h"
+#include "ash/assistant/ui/assistant_ui_constants.h"
 #include "ash/assistant/ui/caption_bar.h"
 #include "ash/assistant/ui/dialog_plate/dialog_plate.h"
 #include "ash/assistant/ui/suggestion_container_view.h"
-#include "ash/public/cpp/app_list/answer_card_contents_registry.h"
+#include "ash/assistant/ui/ui_element_container_view.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "base/callback.h"
 #include "base/strings/utf_string_conversions.h"
-#include "base/unguessable_token.h"
-#include "ui/gfx/canvas.h"
 #include "ui/gfx/paint_vector_icon.h"
 #include "ui/gfx/render_text.h"
-#include "ui/views/background.h"
 #include "ui/views/controls/image_view.h"
-#include "ui/views/controls/label.h"
 #include "ui/views/layout/box_layout.h"
 
 namespace ash {
@@ -30,48 +27,13 @@
 
 // Appearance.
 constexpr int kIconSizeDip = 32;
+constexpr int kMinHeightDip = 200;
 constexpr int kMaxHeightDip = 640;
-constexpr int kPaddingDip = 14;
-constexpr int kPreferredWidthDip = 640;
-constexpr int kSpacingDip = 8;
-constexpr SkColor kTextBackgroundColor = SkColorSetARGB(0x8A, 0x42, 0x85, 0xF4);
-constexpr int kTextCornerRadiusDip = 16;
-constexpr int kTextPaddingHorizontalDip = 12;
-constexpr int kTextPaddingVerticalDip = 4;
-
-// Typography.
-constexpr SkColor kTextColorHint = SkColorSetA(SK_ColorBLACK, 0x42);
-constexpr SkColor kTextColorPrimary = SkColorSetA(SK_ColorBLACK, 0xDE);
 
 // TODO(b/77638210): Replace with localized resource strings.
 constexpr char kDefaultPrompt[] = "Hi, how can I help?";
 constexpr char kStylusPrompt[] = "Draw with your stylus to select";
 
-// TODO(dmblack): Remove after removing placeholders.
-// RoundRectBackground ---------------------------------------------------------
-
-class RoundRectBackground : public views::Background {
- public:
-  RoundRectBackground(SkColor color, int corner_radius)
-      : color_(color), corner_radius_(corner_radius) {}
-
-  ~RoundRectBackground() override = default;
-
-  // views::Background:
-  void Paint(gfx::Canvas* canvas, views::View* view) const override {
-    cc::PaintFlags flags;
-    flags.setAntiAlias(true);
-    flags.setColor(color_);
-    canvas->DrawRoundRect(view->GetContentsBounds(), corner_radius_, flags);
-  }
-
- private:
-  const SkColor color_;
-  const int corner_radius_;
-
-  DISALLOW_COPY_AND_ASSIGN(RoundRectBackground);
-};
-
 // TODO(dmblack): Try to use existing StyledLabel class.
 // InteractionLabel ------------------------------------------------------------
 
@@ -242,71 +204,6 @@
   DISALLOW_COPY_AND_ASSIGN(InteractionContainer);
 };
 
-// UiElementContainer ----------------------------------------------------------
-
-class UiElementContainer : public views::View {
- public:
-  UiElementContainer() { InitLayout(); }
-
-  ~UiElementContainer() override = default;
-
-  // views::View:
-  void ChildPreferredSizeChanged(views::View* child) override {
-    PreferredSizeChanged();
-  }
-
-  void AddText(const std::string& text) {
-    // Container.
-    views::View* text_container = new views::View();
-    text_container->SetBackground(std::make_unique<RoundRectBackground>(
-        kTextBackgroundColor, kTextCornerRadiusDip));
-    text_container->SetLayoutManager(std::make_unique<views::BoxLayout>(
-        views::BoxLayout::Orientation::kHorizontal,
-        gfx::Insets(kTextPaddingVerticalDip, kTextPaddingHorizontalDip)));
-
-    // Label.
-    views::Label* text_view = new views::Label(base::UTF8ToUTF16(text));
-    text_view->SetAutoColorReadabilityEnabled(false);
-    text_view->SetEnabledColor(kTextColorPrimary);
-    text_view->SetFontList(text_view->font_list().DeriveWithSizeDelta(4));
-    text_view->SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_LEFT);
-    text_view->SetMultiLine(true);
-
-    text_container->AddChildView(text_view);
-    AddChildView(text_container);
-
-    PreferredSizeChanged();
-  }
-
-  void EmbedCard(const base::UnguessableToken& embed_token) {
-    // When the card has been rendered in the same process, its view is
-    // available in the AnswerCardContentsRegistry's token-to-view map.
-    if (app_list::AnswerCardContentsRegistry::Get()) {
-      AddChildView(
-          app_list::AnswerCardContentsRegistry::Get()->GetView(embed_token));
-    }
-    // TODO(dmblack): Handle Mash case.
-  }
-
-  void ClearUiElements() {
-    RemoveAllChildViews(true);
-    PreferredSizeChanged();
-  }
-
- private:
-  void InitLayout() {
-    views::BoxLayout* layout =
-        SetLayoutManager(std::make_unique<views::BoxLayout>(
-            views::BoxLayout::Orientation::kVertical,
-            gfx::Insets(0, kPaddingDip), kSpacingDip));
-
-    layout->set_cross_axis_alignment(
-        views::BoxLayout::CrossAxisAlignment::CROSS_AXIS_ALIGNMENT_START);
-  }
-
-  DISALLOW_COPY_AND_ASSIGN(UiElementContainer);
-};
-
 }  // namespace
 
 // AssistantBubbleView ---------------------------------------------------------
@@ -317,30 +214,50 @@
       caption_bar_(new CaptionBar()),
       interaction_container_(
           new InteractionContainer(assistant_controller->interaction_model())),
-      ui_element_container_(new UiElementContainer()),
+      ui_element_container_(new UiElementContainerView(assistant_controller)),
       suggestions_container_(new SuggestionContainerView(assistant_controller)),
       dialog_plate_(new DialogPlate(assistant_controller)),
-      render_request_weak_factory_(this) {
+      min_height_dip_(kMinHeightDip) {
   InitLayout();
 
   // Observe changes to interaction model.
-  DCHECK(assistant_controller_);
   assistant_controller_->AddInteractionModelObserver(this);
 }
 
 AssistantBubbleView::~AssistantBubbleView() {
   assistant_controller_->RemoveInteractionModelObserver(this);
-  OnReleaseCards();
 }
 
 gfx::Size AssistantBubbleView::CalculatePreferredSize() const {
-  int preferred_height =
-      std::min(GetHeightForWidth(kPreferredWidthDip), kMaxHeightDip);
+  int preferred_height = GetHeightForWidth(kPreferredWidthDip);
+
+  // When not using stylus input modality:
+  // |min_height_dip_| <= preferred_height <= |kMaxHeightDip|.
+  if (assistant_controller_->interaction_model()->input_modality() !=
+      InputModality::kStylus) {
+    preferred_height =
+        std::min(std::max(preferred_height, min_height_dip_), kMaxHeightDip);
+  }
+
   return gfx::Size(kPreferredWidthDip, preferred_height);
 }
 
+void AssistantBubbleView::OnBoundsChanged(const gfx::Rect& prev_bounds) {
+  // Until Assistant UI is hidden, the view may grow in height but not shrink.
+  // The exception to this rule is if using stylus input modality.
+  min_height_dip_ = std::max(min_height_dip_, height());
+}
+
 void AssistantBubbleView::ChildPreferredSizeChanged(views::View* child) {
   PreferredSizeChanged();
+
+  // We force a layout here because, though we are receiving a
+  // ChildPreferredSizeChanged event, it may be that the
+  // |ui_element_container_|'s bounds will not actually change due to the height
+  // restrictions imposed by AssistantBubbleView. When this is the case, we
+  // need to force a layout to see |ui_element_container_|'s new contents.
+  if (child == ui_element_container_)
+    Layout();
 }
 
 void AssistantBubbleView::ChildVisibilityChanged(views::View* child) {
@@ -356,7 +273,8 @@
 }
 
 void AssistantBubbleView::InitLayout() {
-  // Caption bar and dialog plate are not visible when using stylus modality.
+  // Caption bar, dialog plate, suggestion container, and UI element container
+  // are not visible when using stylus modality.
   const bool is_using_stylus =
       assistant_controller_->interaction_model()->input_modality() ==
       InputModality::kStylus;
@@ -377,7 +295,7 @@
   AddChildView(interaction_container_);
 
   // UI element container.
-  ui_element_container_->SetVisible(false);
+  ui_element_container_->SetVisible(!is_using_stylus);
   AddChildView(ui_element_container_);
 
   layout_manager_->SetFlexForView(ui_element_container_, 1);
@@ -391,31 +309,13 @@
   AddChildView(dialog_plate_);
 }
 
-void AssistantBubbleView::SetProcessingUiElement(bool is_processing) {
-  if (is_processing == is_processing_ui_element_)
-    return;
-
-  is_processing_ui_element_ = is_processing;
-
-  // If we are no longer processing a UI element, we need to handle anything
-  // that was put in the pending queue. Note that the elements left in the
-  // pending queue may themselves require processing that again pends the queue.
-  if (!is_processing_ui_element_)
-    ProcessPendingUiElements();
-}
-
-void AssistantBubbleView::ProcessPendingUiElements() {
-  while (!is_processing_ui_element_ && !pending_ui_element_list_.empty()) {
-    const AssistantUiElement* ui_element = pending_ui_element_list_.front();
-    pending_ui_element_list_.pop_front();
-    OnUiElementAdded(ui_element);
-  }
-}
-
 void AssistantBubbleView::OnInputModalityChanged(InputModality input_modality) {
-  // Caption bar and dialog plate are not visible when using stylus modality.
+  // Caption bar, dialog plate, suggestion container, and UI element container
+  // are not visible when using stylus modality.
   caption_bar_->SetVisible(input_modality != InputModality::kStylus);
   dialog_plate_->SetVisible(input_modality != InputModality::kStylus);
+  suggestions_container_->SetVisible(input_modality != InputModality::kStylus);
+  ui_element_container_->SetVisible(input_modality != InputModality::kStylus);
 
   // If the query for the interaction is empty, we may need to update the prompt
   // to reflect the current input modality.
@@ -424,88 +324,16 @@
   }
 }
 
-void AssistantBubbleView::OnUiElementAdded(
-    const AssistantUiElement* ui_element) {
-  // If we are processing a UI element we need to pend the incoming element
-  // instead of handling it immediately.
-  if (is_processing_ui_element_) {
-    pending_ui_element_list_.push_back(ui_element);
+void AssistantBubbleView::OnInteractionStateChanged(
+    InteractionState interaction_state) {
+  if (interaction_state != InteractionState::kInactive)
     return;
-  }
 
-  switch (ui_element->GetType()) {
-    case AssistantUiElementType::kCard:
-      OnCardAdded(static_cast<const AssistantCardElement*>(ui_element));
-      break;
-    case AssistantUiElementType::kText:
-      OnTextAdded(static_cast<const AssistantTextElement*>(ui_element));
-      break;
-  }
-}
-
-void AssistantBubbleView::OnUiElementsCleared() {
-  // Prevent any in-flight card rendering requests from returning.
-  render_request_weak_factory_.InvalidateWeakPtrs();
-
-  ui_element_container_->SetVisible(false);
-  ui_element_container_->ClearUiElements();
-
-  OnReleaseCards();
-
-  // We can clear any pending UI elements as they are no longer relevant.
-  pending_ui_element_list_.clear();
-  SetProcessingUiElement(false);
-}
-
-void AssistantBubbleView::OnCardAdded(
-    const AssistantCardElement* card_element) {
-  DCHECK(!is_processing_ui_element_);
-
-  // We need to pend any further UI elements until the card has been rendered.
-  // This insures that views will be added to the view hierarchy in the order in
-  // which they were received.
-  SetProcessingUiElement(true);
-
-  // Generate a unique identifier for the card. This will be used to clean up
-  // card resources when it is no longer needed.
-  base::UnguessableToken id_token = base::UnguessableToken::Create();
-
-  // Configure parameters for the card.
-  ash::mojom::AssistantCardParamsPtr params(
-      ash::mojom::AssistantCardParams::New());
-  params->html = card_element->GetHtml();
-  params->min_width_dip = kPreferredWidthDip - 2 * kPaddingDip;
-  params->max_width_dip = kPreferredWidthDip - 2 * kPaddingDip;
-
-  // The card will be rendered by AssistantCardRenderer, running the specified
-  // callback when the card is ready for embedding.
-  assistant_controller_->RenderCard(
-      id_token, std::move(params),
-      base::BindOnce(&AssistantBubbleView::OnCardReady,
-                     render_request_weak_factory_.GetWeakPtr()));
-
-  // Cache the card identifier for freeing up resources when it is no longer
-  // needed.
-  id_token_list_.push_back(id_token);
-}
-
-void AssistantBubbleView::OnCardReady(
-    const base::UnguessableToken& embed_token) {
-  ui_element_container_->EmbedCard(embed_token);
-  ui_element_container_->SetVisible(true);
-
-  // Once the card has been rendered and embedded, we can resume processing
-  // any UI elements that are in the pending queue.
-  SetProcessingUiElement(false);
-}
-
-void AssistantBubbleView::OnReleaseCards() {
-  if (!id_token_list_.empty()) {
-    // Release any resources associated with the cards identified in
-    // |id_token_list_| owned by AssistantCardRenderer.
-    assistant_controller_->ReleaseCards(id_token_list_);
-    id_token_list_.clear();
-  }
+  // When the Assistant UI is being hidden we need to reset our minimum height
+  // restriction so that the default restrictions are restored for the next
+  // time the view is shown.
+  min_height_dip_ = kMinHeightDip;
+  PreferredSizeChanged();
 }
 
 void AssistantBubbleView::OnQueryChanged(const AssistantQuery& query) {
@@ -516,14 +344,6 @@
   interaction_container_->ClearQuery();
 }
 
-void AssistantBubbleView::OnTextAdded(
-    const AssistantTextElement* text_element) {
-  DCHECK(!is_processing_ui_element_);
-
-  ui_element_container_->AddText(text_element->GetText());
-  ui_element_container_->SetVisible(true);
-}
-
 void AssistantBubbleView::RequestFocus() {
   dialog_plate_->RequestFocus();
 }
diff --git a/ash/assistant/ui/assistant_bubble_view.h b/ash/assistant/ui/assistant_bubble_view.h
index 808faa4..95d52c2a 100644
--- a/ash/assistant/ui/assistant_bubble_view.h
+++ b/ash/assistant/ui/assistant_bubble_view.h
@@ -5,11 +5,6 @@
 #ifndef ASH_ASSISTANT_UI_ASSISTANT_BUBBLE_VIEW_H_
 #define ASH_ASSISTANT_UI_ASSISTANT_BUBBLE_VIEW_H_
 
-#include <deque>
-#include <memory>
-#include <string>
-#include <vector>
-
 #include "ash/assistant/model/assistant_interaction_model_observer.h"
 #include "base/macros.h"
 #include "ui/views/view.h"
@@ -20,16 +15,13 @@
 
 namespace ash {
 
-class AssistantCardElement;
 class AssistantController;
-class AssistantTextElement;
-class AssistantUiElement;
 class DialogPlate;
 class SuggestionContainerView;
+class UiElementContainerView;
 
 namespace {
 class InteractionContainer;
-class UiElementContainer;
 }  // namespace
 
 class AssistantBubbleView : public views::View,
@@ -42,52 +34,29 @@
   gfx::Size CalculatePreferredSize() const override;
   void ChildPreferredSizeChanged(views::View* child) override;
   void ChildVisibilityChanged(views::View* child) override;
+  void OnBoundsChanged(const gfx::Rect& prev_bounds) override;
   void RequestFocus() override;
 
   // AssistantInteractionModelObserver:
   void OnInputModalityChanged(InputModality input_modality) override;
-  void OnUiElementAdded(const AssistantUiElement* ui_element) override;
-  void OnUiElementsCleared() override;
+  void OnInteractionStateChanged(InteractionState interaction_state) override;
   void OnQueryChanged(const AssistantQuery& query) override;
   void OnQueryCleared() override;
 
  private:
   void InitLayout();
 
-  // Assistant cards are rendered asynchronously before being added to the view
-  // hierarchy. For this reason, it is necessary to pend any UI elements that
-  // arrive between the time a render request is sent and the time at which the
-  // view is finally embedded. Failure to do so could result in a mismatch
-  // between the ordering of UI elements received and their corresponding views.
-  void SetProcessingUiElement(bool is_processing);
-  void ProcessPendingUiElements();
+  AssistantController* const assistant_controller_;  // Owned by Shell.
 
-  void OnCardAdded(const AssistantCardElement* card_element);
-  void OnCardReady(const base::UnguessableToken& embed_token);
-  void OnReleaseCards();
-  void OnTextAdded(const AssistantTextElement* text_element);
-
-  AssistantController* assistant_controller_;    // Owned by Shell.
   views::View* caption_bar_;                     // Owned by view hierarchy.
   InteractionContainer* interaction_container_;  // Owned by view hierarchy.
-  UiElementContainer* ui_element_container_;     // Owned by view hierarchy.
+  UiElementContainerView* ui_element_container_;    // Owned by view hierarchy.
   SuggestionContainerView* suggestions_container_;  // Owned by view hierarchy.
   DialogPlate* dialog_plate_;                    // Owned by view hierarchy.
 
   views::BoxLayout* layout_manager_ = nullptr;  // Owned by view hierarchy.
 
-  // Uniquely identifies cards owned by AssistantCardRenderer.
-  std::vector<base::UnguessableToken> id_token_list_;
-
-  // Owned by AssistantInteractionModel.
-  std::deque<const AssistantUiElement*> pending_ui_element_list_;
-
-  // Whether a UI element is currently being processed. If true, new UI elements
-  // are added to |pending_ui_element_list_| and processed later.
-  bool is_processing_ui_element_ = false;
-
-  // Weak pointer factory used for card rendering requests.
-  base::WeakPtrFactory<AssistantBubbleView> render_request_weak_factory_;
+  int min_height_dip_;
 
   DISALLOW_COPY_AND_ASSIGN(AssistantBubbleView);
 };
diff --git a/ash/assistant/ui/assistant_ui_constants.h b/ash/assistant/ui/assistant_ui_constants.h
new file mode 100644
index 0000000..1edb7aa
--- /dev/null
+++ b/ash/assistant/ui/assistant_ui_constants.h
@@ -0,0 +1,23 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_ASSISTANT_UI_ASSISTANT_UI_CONSTANTS_H_
+#define ASH_ASSISTANT_UI_ASSISTANT_UI_CONSTANTS_H_
+
+#include "third_party/skia/include/core/SkColor.h"
+
+namespace ash {
+
+// Appearance.
+constexpr int kPaddingDip = 14;
+constexpr int kPreferredWidthDip = 640;
+constexpr int kSpacingDip = 8;
+
+// Typography.
+constexpr SkColor kTextColorHint = SkColorSetA(SK_ColorBLACK, 0x42);
+constexpr SkColor kTextColorPrimary = SkColorSetA(SK_ColorBLACK, 0xDE);
+
+}  // namespace ash
+
+#endif  // ASH_ASSISTANT_UI_ASSISTANT_UI_CONSTANTS_H_
diff --git a/ash/assistant/ui/dialog_plate/action_view.cc b/ash/assistant/ui/dialog_plate/action_view.cc
index a137bf71..9693d982 100644
--- a/ash/assistant/ui/dialog_plate/action_view.cc
+++ b/ash/assistant/ui/dialog_plate/action_view.cc
@@ -83,12 +83,21 @@
 }
 
 void ActionView::OnMicStateChanged(MicState mic_state) {
+  is_user_speaking_ = false;
   UpdateState(/*animate=*/true);
 }
 
 void ActionView::OnSpeechLevelChanged(float speech_level_db) {
-  // TODO(wutao): will handle in next cl.
-  NOTIMPLEMENTED();
+  // TODO: Work with UX to determine the threshold.
+  constexpr float kSpeechLevelThreshold = -60.0f;
+  if (speech_level_db < kSpeechLevelThreshold)
+    return;
+
+  voice_action_view_->SetSpeechLevel(speech_level_db);
+  if (!is_user_speaking_) {
+    is_user_speaking_ = true;
+    UpdateState(/*animate=*/true);
+  }
 }
 
 void ActionView::UpdateState(bool animate) {
@@ -110,12 +119,11 @@
   BaseLogoView::State mic_state;
   switch (interaction_model->mic_state()) {
     case MicState::kClosed:
-      // Do not animate when the first time showing the LogoView in kMic state.
-      // Only animate when changing from kListening or kUserSpeaks states.
       mic_state = BaseLogoView::State::kMicFab;
       break;
     case MicState::kOpen:
-      mic_state = BaseLogoView::State::kListening;
+      mic_state = is_user_speaking_ ? BaseLogoView::State::kUserSpeaks
+                                    : BaseLogoView::State::kListening;
       break;
   }
   voice_action_view_->SetState(mic_state, animate);
diff --git a/ash/assistant/ui/dialog_plate/action_view.h b/ash/assistant/ui/dialog_plate/action_view.h
index 19f294aa..72f1fac 100644
--- a/ash/assistant/ui/dialog_plate/action_view.h
+++ b/ash/assistant/ui/dialog_plate/action_view.h
@@ -61,6 +61,10 @@
   views::ImageView* keyboard_action_view_;  // Owned by view hierarchy.
   BaseLogoView* voice_action_view_;         // Owned by view hierarchy.
 
+  // True when speech level goes above a threshold and sets LogoView in
+  // kUserSpeaks state.
+  bool is_user_speaking_ = false;
+
   DISALLOW_COPY_AND_ASSIGN(ActionView);
 };
 
diff --git a/ash/assistant/ui/dialog_plate/dialog_plate.h b/ash/assistant/ui/dialog_plate/dialog_plate.h
index a027abb..10dfd90 100644
--- a/ash/assistant/ui/dialog_plate/dialog_plate.h
+++ b/ash/assistant/ui/dialog_plate/dialog_plate.h
@@ -15,6 +15,11 @@
 
 class AssistantController;
 
+// DialogPlate is the child of AssistantBubbleView concerned with providing the
+// means by which a user converses with Assistant. To this end, DialogPlate
+// provides a textfield for use with the keyboard input modality, and an
+// ActionView which serves to either commit a text query, or toggle voice
+// interaction as appropriate for the user's current input modality.
 class DialogPlate : public views::View,
                     public views::TextfieldController,
                     public ActionViewListener,
diff --git a/ash/assistant/ui/logo_view/base_logo_view.h b/ash/assistant/ui/logo_view/base_logo_view.h
index a079535..cd198a5 100644
--- a/ash/assistant/ui/logo_view/base_logo_view.h
+++ b/ash/assistant/ui/logo_view/base_logo_view.h
@@ -15,8 +15,8 @@
   enum class State {
     kUndefined,
     kListening,
-    kMic,
     kMicFab,
+    kUserSpeaks,
   };
 
   BaseLogoView();
@@ -25,6 +25,10 @@
   // If |animate| is true, animates to the |state|.
   virtual void SetState(State state, bool animate) {}
 
+  // Set the speech level for kUserSpeaks state. |speech_level| is the last
+  // observed speech level in dB.
+  virtual void SetSpeechLevel(float speech_level) {}
+
   // Creates LogoView based on the build flag ENABLE_CROS_LIBASSISTANT.
   static BaseLogoView* Create();
 
diff --git a/ash/assistant/ui/logo_view/logo_view.cc b/ash/assistant/ui/logo_view/logo_view.cc
index 9c57cce..79635b1 100644
--- a/ash/assistant/ui/logo_view/logo_view.cc
+++ b/ash/assistant/ui/logo_view/logo_view.cc
@@ -24,6 +24,10 @@
   return (timestamp - base::TimeTicks()).InMilliseconds();
 }
 
+int32_t GetLogoAlpha(const LogoView::Logo& logo) {
+  return logo.GetAlpha() * 255;
+}
+
 }  // namespace
 
 LogoView::LogoView()
@@ -33,6 +37,8 @@
   layer()->SetFillsBoundsOpaquely(false);
 
   state_animator_.SetStateAnimatorTimerDelegate(this);
+  state_animator_.SetLogoInputValueProvider(StateModel::State::kUserSpeaks,
+                                            &sound_level_input_value_provider_);
 }
 
 LogoView::~LogoView() {
@@ -45,19 +51,23 @@
     case BaseLogoView::State::kUndefined:
       animator_state = StateModel::State::kUndefined;
       break;
-    case BaseLogoView::State::kMic:
-      animator_state = StateModel::State::kMic;
-      break;
     case BaseLogoView::State::kMicFab:
       animator_state = StateModel::State::kMicFab;
       break;
     case BaseLogoView::State::kListening:
       animator_state = StateModel::State::kListening;
       break;
+    case BaseLogoView::State::kUserSpeaks:
+      animator_state = StateModel::State::kUserSpeaks;
+      break;
   }
   state_animator_.SwitchStateTo(animator_state, !animate);
 }
 
+void LogoView::SetSpeechLevel(float speech_level) {
+  sound_level_input_value_provider_.set_speech_level(speech_level);
+}
+
 int64_t LogoView::StartTimer() {
   ui::Compositor* compositor = layer()->GetCompositor();
   if (compositor && !compositor->HasAnimationObserver(this)) {
@@ -93,8 +103,6 @@
   // we need to find out why the Mic parts are overlapping in the first place.
   for (auto iter = logo_.dots().rbegin(); iter != logo_.dots().rend(); ++iter)
     DrawDot(canvas, (*iter).get());
-
-  layer()->SetOpacity(logo_.GetAlpha());
 }
 
 void LogoView::DrawDot(gfx::Canvas* canvas, Dot* dot) {
@@ -127,6 +135,7 @@
   cc::PaintFlags paint_flags;
   paint_flags.setAntiAlias(true);
   paint_flags.setColor(color);
+  paint_flags.setAlpha(GetLogoAlpha(logo_));
   paint_flags.setStyle(cc::PaintFlags::kStroke_Style);
   paint_flags.setStrokeCap(shape->cap());
 
@@ -142,6 +151,7 @@
   cc::PaintFlags paint_flags;
   paint_flags.setAntiAlias(true);
   paint_flags.setColor(dot->color());
+  paint_flags.setAlpha(GetLogoAlpha(logo_));
   paint_flags.setStrokeWidth(stroke_width);
   paint_flags.setStyle(cc::PaintFlags::kStroke_Style);
   paint_flags.setStrokeCap(cc::PaintFlags::kRound_Cap);
@@ -159,6 +169,7 @@
   cc::PaintFlags paint_flags;
   paint_flags.setAntiAlias(true);
   paint_flags.setColor(dot->color());
+  paint_flags.setAlpha(GetLogoAlpha(logo_));
   paint_flags.setStyle(cc::PaintFlags::kFill_Style);
   canvas->DrawCircle(gfx::PointF(x * dots_scale_, y * dots_scale_),
                      radius * dots_scale_, paint_flags);
diff --git a/ash/assistant/ui/logo_view/logo_view.h b/ash/assistant/ui/logo_view/logo_view.h
index c5952bc..e8c4a192 100644
--- a/ash/assistant/ui/logo_view/logo_view.h
+++ b/ash/assistant/ui/logo_view/logo_view.h
@@ -11,7 +11,7 @@
 #include "ash/assistant/ui/logo_view/base_logo_view.h"
 #include "ash/assistant/ui/logo_view/shape/mic_part_shape.h"
 #include "base/macros.h"
-#include "base/time/time.h"
+#include "chromeos/assistant/internal/logo_view/input_value_provider/sound_level_input_value_provider.h"
 #include "chromeos/assistant/internal/logo_view/logo_model/logo.h"
 #include "chromeos/assistant/internal/logo_view/state_animator.h"
 #include "chromeos/assistant/internal/logo_view/state_animator_timer_delegate.h"
@@ -57,6 +57,7 @@
 
   // BaseLogoView:
   void SetState(State state, bool animate) override;
+  void SetSpeechLevel(float speech_level) override;
 
   // chromeos::assistant::StateAnimatorTimerDelegate:
   int64_t StartTimer() override;
@@ -94,6 +95,9 @@
 
   float dots_scale_ = 1.0f;
 
+  chromeos::assistant::SoundLevelInputValueProvider
+      sound_level_input_value_provider_;
+
   DISALLOW_COPY_AND_ASSIGN(LogoView);
 };
 
diff --git a/ash/assistant/ui/suggestion_container_view.cc b/ash/assistant/ui/suggestion_container_view.cc
index 9ae0353..c80506039 100644
--- a/ash/assistant/ui/suggestion_container_view.cc
+++ b/ash/assistant/ui/suggestion_container_view.cc
@@ -7,6 +7,7 @@
 #include <memory>
 
 #include "ash/assistant/assistant_controller.h"
+#include "ash/assistant/ui/assistant_ui_constants.h"
 #include "base/strings/utf_string_conversions.h"
 #include "ui/views/controls/scrollbar/overlay_scroll_bar.h"
 #include "ui/views/layout/box_layout.h"
@@ -15,11 +16,8 @@
 
 namespace {
 
-// TODO(dmblack): Move common dimensions to shared constant file.
 // Appearance.
-constexpr int kPaddingDip = 14;
 constexpr int kPreferredHeightDip = 48;
-constexpr int kSpacingDip = 8;
 
 // InvisibleScrollBar ----------------------------------------------------------
 
diff --git a/ash/assistant/ui/suggestion_container_view.h b/ash/assistant/ui/suggestion_container_view.h
index 28590a9..56f5c69 100644
--- a/ash/assistant/ui/suggestion_container_view.h
+++ b/ash/assistant/ui/suggestion_container_view.h
@@ -16,6 +16,9 @@
 
 class AssistantController;
 
+// SuggestionContainerView is the child of AssistantBubbleView concerned with
+// laying out SuggestionChipViews in response to Assistant interaction model
+// suggestion events.
 class SuggestionContainerView : public views::ScrollView,
                                 public AssistantInteractionModelObserver,
                                 public app_list::SuggestionChipListener {
diff --git a/ash/assistant/ui/ui_element_container_view.cc b/ash/assistant/ui/ui_element_container_view.cc
new file mode 100644
index 0000000..b553fb2
--- /dev/null
+++ b/ash/assistant/ui/ui_element_container_view.cc
@@ -0,0 +1,227 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/assistant/ui/ui_element_container_view.h"
+
+#include "ash/assistant/assistant_controller.h"
+#include "ash/assistant/model/assistant_ui_element.h"
+#include "ash/assistant/ui/assistant_ui_constants.h"
+#include "ash/public/cpp/app_list/answer_card_contents_registry.h"
+#include "base/callback.h"
+#include "base/strings/utf_string_conversions.h"
+#include "base/unguessable_token.h"
+#include "ui/gfx/canvas.h"
+#include "ui/views/background.h"
+#include "ui/views/controls/label.h"
+#include "ui/views/layout/box_layout.h"
+
+namespace ash {
+
+namespace {
+
+// Appearance.
+constexpr SkColor kTextBackgroundColor = SkColorSetARGB(0x8A, 0x42, 0x85, 0xF4);
+constexpr int kTextCornerRadiusDip = 16;
+constexpr int kTextPaddingHorizontalDip = 12;
+constexpr int kTextPaddingVerticalDip = 4;
+
+// RoundRectBackground ---------------------------------------------------------
+
+class RoundRectBackground : public views::Background {
+ public:
+  RoundRectBackground(SkColor color, int corner_radius)
+      : color_(color), corner_radius_(corner_radius) {}
+
+  ~RoundRectBackground() override = default;
+
+  // views::Background:
+  void Paint(gfx::Canvas* canvas, views::View* view) const override {
+    cc::PaintFlags flags;
+    flags.setAntiAlias(true);
+    flags.setColor(color_);
+    canvas->DrawRoundRect(view->GetContentsBounds(), corner_radius_, flags);
+  }
+
+ private:
+  const SkColor color_;
+  const int corner_radius_;
+
+  DISALLOW_COPY_AND_ASSIGN(RoundRectBackground);
+};
+
+}  // namespace
+
+// UiElementContainerView ------------------------------------------------------
+
+UiElementContainerView::UiElementContainerView(
+    AssistantController* assistant_controller)
+    : assistant_controller_(assistant_controller),
+      render_request_weak_factory_(this) {
+  InitLayout();
+
+  // The Assistant controller indirectly owns the view hierarchy to which
+  // UiElementContainerView belongs so is guaranteed to outlive it.
+  assistant_controller_->AddInteractionModelObserver(this);
+}
+
+UiElementContainerView::~UiElementContainerView() {
+  assistant_controller_->RemoveInteractionModelObserver(this);
+  ReleaseAllCards();
+}
+
+void UiElementContainerView::ChildPreferredSizeChanged(views::View* child) {
+  PreferredSizeChanged();
+}
+
+void UiElementContainerView::InitLayout() {
+  views::BoxLayout* layout_manager =
+      SetLayoutManager(std::make_unique<views::BoxLayout>(
+          views::BoxLayout::Orientation::kVertical, gfx::Insets(0, kPaddingDip),
+          kSpacingDip));
+
+  layout_manager->set_cross_axis_alignment(
+      views::BoxLayout::CrossAxisAlignment::CROSS_AXIS_ALIGNMENT_START);
+}
+
+void UiElementContainerView::OnUiElementAdded(
+    const AssistantUiElement* ui_element) {
+  // If we are processing a UI element we need to pend the incoming element
+  // instead of handling it immediately.
+  if (is_processing_ui_element_) {
+    pending_ui_element_list_.push_back(ui_element);
+    return;
+  }
+
+  switch (ui_element->GetType()) {
+    case AssistantUiElementType::kCard:
+      OnCardElementAdded(static_cast<const AssistantCardElement*>(ui_element));
+      break;
+    case AssistantUiElementType::kText:
+      OnTextElementAdded(static_cast<const AssistantTextElement*>(ui_element));
+      break;
+  }
+}
+
+void UiElementContainerView::OnUiElementsCleared() {
+  // Prevent any in-flight card rendering requests from returning.
+  render_request_weak_factory_.InvalidateWeakPtrs();
+
+  RemoveAllChildViews(/*delete_children=*/true);
+  PreferredSizeChanged();
+
+  ReleaseAllCards();
+
+  // We can clear any pending UI elements as they are no longer relevant.
+  pending_ui_element_list_.clear();
+  SetProcessingUiElement(false);
+}
+
+void UiElementContainerView::OnCardElementAdded(
+    const AssistantCardElement* card_element) {
+  DCHECK(!is_processing_ui_element_);
+
+  // We need to pend any further UI elements until the card has been rendered.
+  // This insures that views will be added to the view hierarchy in the order in
+  // which they were received.
+  SetProcessingUiElement(true);
+
+  // Generate a unique identifier for the card. This will be used to clean up
+  // card resources when it is no longer needed.
+  base::UnguessableToken id_token = base::UnguessableToken::Create();
+
+  // Configure parameters for the card.
+  ash::mojom::AssistantCardParamsPtr params(
+      ash::mojom::AssistantCardParams::New());
+  params->html = card_element->html();
+  params->min_width_dip = kPreferredWidthDip - 2 * kPaddingDip;
+  params->max_width_dip = kPreferredWidthDip - 2 * kPaddingDip;
+
+  // The card will be rendered by AssistantCardRenderer, running the specified
+  // callback when the card is ready for embedding.
+  assistant_controller_->RenderCard(
+      id_token, std::move(params),
+      base::BindOnce(&UiElementContainerView::OnCardReady,
+                     render_request_weak_factory_.GetWeakPtr()));
+
+  // Cache the card identifier for freeing up resources when it is no longer
+  // needed.
+  id_token_list_.push_back(id_token);
+}
+
+void UiElementContainerView::OnCardReady(
+    const base::UnguessableToken& embed_token) {
+  // When the card has been rendered in the same process, its view is
+  // available in the AnswerCardContentsRegistry's token-to-view map.
+  if (app_list::AnswerCardContentsRegistry::Get()) {
+    AddChildView(
+        app_list::AnswerCardContentsRegistry::Get()->GetView(embed_token));
+  }
+  // TODO(dmblack): Handle Mash case.
+
+  PreferredSizeChanged();
+
+  // Once the card has been rendered and embedded, we can resume processing
+  // any UI elements that are in the pending queue.
+  SetProcessingUiElement(false);
+}
+
+void UiElementContainerView::OnTextElementAdded(
+    const AssistantTextElement* text_element) {
+  DCHECK(!is_processing_ui_element_);
+
+  // Container.
+  views::View* text_container = new views::View();
+  text_container->SetBackground(std::make_unique<RoundRectBackground>(
+      kTextBackgroundColor, kTextCornerRadiusDip));
+  text_container->SetLayoutManager(std::make_unique<views::BoxLayout>(
+      views::BoxLayout::Orientation::kHorizontal,
+      gfx::Insets(kTextPaddingVerticalDip, kTextPaddingHorizontalDip)));
+
+  // Label.
+  views::Label* text_view =
+      new views::Label(base::UTF8ToUTF16(text_element->text()));
+  text_view->SetAutoColorReadabilityEnabled(false);
+  text_view->SetEnabledColor(kTextColorPrimary);
+  text_view->SetFontList(text_view->font_list().DeriveWithSizeDelta(4));
+  text_view->SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_LEFT);
+  text_view->SetMultiLine(true);
+
+  text_container->AddChildView(text_view);
+  AddChildView(text_container);
+
+  PreferredSizeChanged();
+}
+
+void UiElementContainerView::SetProcessingUiElement(bool is_processing) {
+  if (is_processing == is_processing_ui_element_)
+    return;
+
+  is_processing_ui_element_ = is_processing;
+
+  // If we are no longer processing a UI element, we need to handle anything
+  // that was put in the pending queue. Note that the elements left in the
+  // pending queue may themselves require processing that again pends the queue.
+  if (!is_processing_ui_element_)
+    ProcessPendingUiElements();
+}
+
+void UiElementContainerView::ProcessPendingUiElements() {
+  while (!is_processing_ui_element_ && !pending_ui_element_list_.empty()) {
+    const AssistantUiElement* ui_element = pending_ui_element_list_.front();
+    pending_ui_element_list_.pop_front();
+    OnUiElementAdded(ui_element);
+  }
+}
+
+void UiElementContainerView::ReleaseAllCards() {
+  if (id_token_list_.empty())
+    return;
+
+  // Release any resources associated with the cards identified in
+  // |id_token_list_| owned by AssistantCardRenderer.
+  assistant_controller_->ReleaseCards(id_token_list_);
+  id_token_list_.clear();
+}
+
+}  // namespace ash
diff --git a/ash/assistant/ui/ui_element_container_view.h b/ash/assistant/ui/ui_element_container_view.h
new file mode 100644
index 0000000..edd218e7
--- /dev/null
+++ b/ash/assistant/ui/ui_element_container_view.h
@@ -0,0 +1,76 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_ASSISTANT_UI_UI_ELEMENT_CONTAINER_VIEW_H_
+#define ASH_ASSISTANT_UI_UI_ELEMENT_CONTAINER_VIEW_H_
+
+#include <deque>
+#include <memory>
+#include <vector>
+
+#include "ash/assistant/model/assistant_interaction_model_observer.h"
+#include "base/macros.h"
+#include "ui/views/view.h"
+
+namespace ash {
+
+class AssistantCardElement;
+class AssistantController;
+class AssistantTextElement;
+class AssistantUiElement;
+
+// UiElementContainerView is the child of AssistantBubbleView concerned with
+// laying out text views and embedded card views in response to Assistant
+// interaction model UI element events.
+class UiElementContainerView : public views::View,
+                               public AssistantInteractionModelObserver {
+ public:
+  explicit UiElementContainerView(AssistantController* assistant_controller);
+  ~UiElementContainerView() override;
+
+  // views::View:
+  void ChildPreferredSizeChanged(views::View* child) override;
+
+  // AssistantInteractionModelObserver:
+  void OnUiElementAdded(const AssistantUiElement* ui_element) override;
+  void OnUiElementsCleared() override;
+
+ private:
+  void InitLayout();
+
+  void OnCardElementAdded(const AssistantCardElement* card_element);
+  void OnCardReady(const base::UnguessableToken& embed_token);
+  void OnTextElementAdded(const AssistantTextElement* text_element);
+
+  // Assistant cards are rendered asynchronously before being added to the view
+  // hierarchy. For this reason, it is necessary to pend any UI elements that
+  // arrive between the time a render request is sent and the time at which the
+  // view is finally embedded. Failure to do so could result in a mismatch
+  // between the ordering of UI elements received and their corresponding views.
+  void SetProcessingUiElement(bool is_processing);
+  void ProcessPendingUiElements();
+
+  void ReleaseAllCards();
+
+  AssistantController* const assistant_controller_;  // Owned by Shell.
+
+  // Uniquely identifies cards owned by AssistantCardRenderer.
+  std::vector<base::UnguessableToken> id_token_list_;
+
+  // Owned by AssistantInteractionModel.
+  std::deque<const AssistantUiElement*> pending_ui_element_list_;
+
+  // Whether a UI element is currently being processed. If true, new UI elements
+  // are added to |pending_ui_element_list_| and processed later.
+  bool is_processing_ui_element_ = false;
+
+  // Weak pointer factory used for card rendering requests.
+  base::WeakPtrFactory<UiElementContainerView> render_request_weak_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(UiElementContainerView);
+};
+
+}  // namespace ash
+
+#endif  // ASH_ASSISTANT_UI_UI_ELEMENT_CONTAINER_VIEW_H_
diff --git a/ash/display/display_color_manager.cc b/ash/display/display_color_manager.cc
index c9463ed..2fc35e3 100644
--- a/ash/display/display_color_manager.cc
+++ b/ash/display/display_color_manager.cc
@@ -222,8 +222,7 @@
     }
 
     ColorMatrixVectorFromSkMatrix44(combined_matrix, &matrix_buffer_);
-    return configurator_->SetColorCorrection(
-        display_id, {} /* degamma_lut */, {} /* gamma_lut */, matrix_buffer_);
+    return configurator_->SetColorMatrix(display_id, matrix_buffer_);
   }
 
   LOG(ERROR) << "Display ID: " << display_id << " cannot be found.";
@@ -279,10 +278,13 @@
     final_matrix = &matrix_buffer_;
   }
 
-  if (!configurator_->SetColorCorrection(
-          display_id, calibration_data.degamma_lut, calibration_data.gamma_lut,
-          *final_matrix)) {
-    LOG(WARNING) << "Error applying color correction data";
+  if (!configurator_->SetColorMatrix(display_id, *final_matrix))
+    LOG(WARNING) << "Error applying the color matrix.";
+
+  if (!configurator_->SetGammaCorrection(display_id,
+                                         calibration_data.degamma_lut,
+                                         calibration_data.gamma_lut)) {
+    LOG(WARNING) << "Error applying gamma correction data.";
   }
 }
 
diff --git a/ash/display/display_color_manager_unittest.cc b/ash/display/display_color_manager_unittest.cc
index 3ddd13a6..0a994ce 100644
--- a/ash/display/display_color_manager_unittest.cc
+++ b/ash/display/display_color_manager_unittest.cc
@@ -26,11 +26,12 @@
 namespace {
 
 constexpr gfx::Size kDisplaySize(1024, 768);
-const char kResetGammaAction[] = "*set_color_correction(id=123)";
+const char kResetGammaAction[] = "*set_gamma_correction(id=123)";
 const char kSetGammaAction[] =
-    "set_color_correction(id=123,gamma[0]*gamma[255]=???????????\?)";
+    "*set_gamma_correction(id=123,gamma[0]*gamma[255]=???????????\?)";
 const char kSetFullCTMAction[] =
-    "set_color_correction(id=123,degamma[0]*gamma[0]*ctm[0]*ctm[8]*)";
+    "set_color_matrix(id=123,ctm[0]*ctm[8]*),"
+    "set_gamma_correction(id=123,degamma[0]*gamma[0]*)";
 
 class DisplayColorManagerForTest : public DisplayColorManager {
  public:
@@ -290,7 +291,7 @@
   // affected. Color matrix is applied as is.
   EXPECT_TRUE(base::MatchPattern(
       log_->GetActionsAndClear(),
-      "set_color_correction(id=123,ctm[0]=1*ctm[4]=0.7*ctm[8]=0.3*)"));
+      "set_color_matrix(id=123,ctm[0]=1*ctm[4]=0.7*ctm[8]=0.3*)"));
 
   // Reconfiguring with the same displays snapshots will reapply the matrix.
   native_display_delegate_->set_outputs(outputs);
@@ -298,7 +299,7 @@
   EXPECT_TRUE(test_api_.TriggerConfigureTimeout());
   EXPECT_TRUE(base::MatchPattern(
       log_->GetActionsAndClear(),
-      "*set_color_correction(id=123,ctm[0]=1*ctm[4]=0.7*ctm[8]=0.3*)"));
+      "*set_color_matrix(id=123,ctm[0]=1*ctm[4]=0.7*ctm[8]=0.3*)"));
 }
 
 TEST_F(DisplayColorManagerTest, SetDisplayColorMatrixWithMixedCTMSupport) {
@@ -345,7 +346,7 @@
   // affected. Color matrix is applied as is.
   EXPECT_TRUE(base::MatchPattern(
       log_->GetActionsAndClear(),
-      "set_color_correction(id=123,ctm[0]=1*ctm[4]=0.7*ctm[8]=0.3*)"));
+      "set_color_matrix(id=123,ctm[0]=1*ctm[4]=0.7*ctm[8]=0.3*)"));
 
   // No matrix will be applied to this display.
   EXPECT_FALSE(color_manager_->SetDisplayColorMatrix(kDisplayNoCtmId, matrix));
@@ -384,17 +385,17 @@
   // calibration matrix. Gamma/degamma won't be affected.
   EXPECT_TRUE(base::MatchPattern(
       log_->GetActionsAndClear(),
-      "set_color_correction(id=123,ctm[0]=0.01*ctm[4]=0.5*ctm[8]=0.04*)"));
+      "set_color_matrix(id=123,ctm[0]=0.01*ctm[4]=0.5*ctm[8]=0.04*)"));
 
   // Reconfiguring with the same displays snapshots will reapply the same
   // product matrix as well as gamma/degamma from the calibration data.
   native_display_delegate_->set_outputs(outputs);
   configurator_.OnConfigurationChanged();
   EXPECT_TRUE(test_api_.TriggerConfigureTimeout());
-  EXPECT_TRUE(
-      base::MatchPattern(log_->GetActionsAndClear(),
-                         "*set_color_correction(id=123,degamma[0]*gamma[0]*,"
-                         "ctm[0]=0.01*ctm[4]=0.5*ctm[8]=0.04*)"));
+  EXPECT_TRUE(base::MatchPattern(
+      log_->GetActionsAndClear(),
+      "*set_color_matrix(id=123,ctm[0]=0.01*ctm[4]=0.5*ctm[8]=0.04*),"
+      "set_gamma_correction(id=123,degamma[0]*gamma[0]*)"));
 }
 
 TEST_F(DisplayColorManagerTest, FullWithoutPlatformCTM) {
diff --git a/ash/public/cpp/BUILD.gn b/ash/public/cpp/BUILD.gn
index 6f3da07..f36017c 100644
--- a/ash/public/cpp/BUILD.gn
+++ b/ash/public/cpp/BUILD.gn
@@ -29,6 +29,8 @@
     "app_list/tokenized_string_char_iterator.h",
     "app_list/tokenized_string_match.cc",
     "app_list/tokenized_string_match.h",
+    "app_menu_model_adapter.cc",
+    "app_menu_model_adapter.h",
     "app_types.h",
     "ash_constants.h",
     "ash_features.cc",
diff --git a/ash/public/cpp/app_menu_model_adapter.cc b/ash/public/cpp/app_menu_model_adapter.cc
new file mode 100644
index 0000000..854898f6
--- /dev/null
+++ b/ash/public/cpp/app_menu_model_adapter.cc
@@ -0,0 +1,70 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/public/cpp/app_menu_model_adapter.h"
+
+#include "base/metrics/histogram_macros.h"
+#include "ui/base/models/simple_menu_model.h"
+#include "ui/views/controls/menu/menu_item_view.h"
+#include "ui/views/controls/menu/menu_model_adapter.h"
+#include "ui/views/controls/menu/menu_runner.h"
+
+namespace ash {
+
+AppMenuModelAdapter::AppMenuModelAdapter(
+    const std::string& app_id,
+    std::unique_ptr<ui::SimpleMenuModel> model,
+    views::View* menu_owner,
+    ui::MenuSourceType source_type,
+    base::OnceClosure on_menu_closed_callback)
+    : views::MenuModelAdapter(model.get()),
+      app_id_(app_id),
+      model_(std::move(model)),
+      menu_owner_(menu_owner),
+      source_type_(source_type),
+      on_menu_closed_callback_(std::move(on_menu_closed_callback)) {}
+
+AppMenuModelAdapter::~AppMenuModelAdapter() = default;
+
+void AppMenuModelAdapter::Run(const gfx::Rect& menu_anchor_rect,
+                              views::MenuAnchorPosition menu_anchor_position,
+                              int run_types) {
+  DCHECK(!root_);
+  DCHECK(model_);
+
+  menu_open_time_ = base::TimeTicks::Now();
+  root_ = CreateMenu();
+  menu_runner_ = std::make_unique<views::MenuRunner>(root_, run_types);
+  menu_runner_->RunMenuAt(menu_owner_->GetWidget(), nullptr /* MenuButton */,
+                          menu_anchor_rect, menu_anchor_position, source_type_);
+}
+
+bool AppMenuModelAdapter::IsShowingMenu() const {
+  return menu_runner_ && menu_runner_->IsRunning();
+}
+
+bool AppMenuModelAdapter::IsShowingMenuForView(const views::View& view) const {
+  return IsShowingMenu() && menu_owner_ == &view;
+}
+
+void AppMenuModelAdapter::Cancel() {
+  if (!IsShowingMenu())
+    return;
+  menu_runner_->Cancel();
+}
+
+base::TimeTicks AppMenuModelAdapter::GetClosingEventTime() {
+  DCHECK(menu_runner_);
+  return menu_runner_->closing_event_time();
+}
+
+void AppMenuModelAdapter::OnMenuClosed(views::MenuItemView* menu) {
+  DCHECK_NE(base::TimeTicks(), menu_open_time_);
+  RecordHistogram();
+
+  if (on_menu_closed_callback_)
+    std::move(on_menu_closed_callback_).Run();
+}
+
+}  // namespace ash
diff --git a/ash/public/cpp/app_menu_model_adapter.h b/ash/public/cpp/app_menu_model_adapter.h
new file mode 100644
index 0000000..d774d55
--- /dev/null
+++ b/ash/public/cpp/app_menu_model_adapter.h
@@ -0,0 +1,97 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_PUBLIC_CPP_APP_MENU_MODEL_ADAPTER_H_
+#define ASH_PUBLIC_CPP_APP_MENU_MODEL_ADAPTER_H_
+
+#include <memory>
+#include <string>
+
+#include "ash/public/cpp/ash_public_export.h"
+#include "base/callback.h"
+#include "ui/gfx/geometry/rect.h"
+#include "ui/views/controls/menu/menu_model_adapter.h"
+#include "ui/views/controls/menu/menu_types.h"
+
+namespace ui {
+class SimpleMenuModel;
+}
+
+namespace views {
+class MenuItemView;
+class MenuRunner;
+class View;
+}  // namespace views
+
+namespace ash {
+
+class ASH_PUBLIC_EXPORT AppMenuModelAdapter : public views::MenuModelAdapter {
+ public:
+  AppMenuModelAdapter(const std::string& app_id,
+                      std::unique_ptr<ui::SimpleMenuModel> model,
+                      views::View* menu_owner,
+                      ui::MenuSourceType source_type,
+                      base::OnceClosure on_menu_closed_callback);
+  ~AppMenuModelAdapter() override;
+
+  // Builds the view tree and shows the menu.
+  void Run(const gfx::Rect& menu_anchor_rect,
+           views::MenuAnchorPosition menu_anchor_position,
+           int run_types);
+  // Whether this is showing a menu.
+  bool IsShowingMenu() const;
+  // Whether this is showing a menu for |view|.
+  bool IsShowingMenuForView(const views::View& view) const;
+  // Closes the menu if one is being shown.
+  void Cancel();
+
+  // Records the user journey time and show source histograms.
+  virtual void RecordHistogram() = 0;
+
+  base::TimeTicks GetClosingEventTime();
+
+  // Overridden from views::MenuModelAdapter:
+  void OnMenuClosed(views::MenuItemView* menu) override;
+
+ protected:
+  const std::string& app_id() const { return app_id_; }
+  base::TimeTicks menu_open_time() const { return menu_open_time_; }
+  ui::MenuSourceType source_type() const { return source_type_; }
+
+  ui::SimpleMenuModel* model() { return model_.get(); }
+  const ui::SimpleMenuModel* model() const { return model_.get(); }
+
+ private:
+  // The application identifier used to fetch active notifications to display.
+  const std::string app_id_;
+
+  // The list of items which will be shown in the menu.
+  std::unique_ptr<ui::SimpleMenuModel> model_;
+
+  // The view showing a context menu. This can be either a ShelfView,
+  // ShelfButton, or AppListItemView. Not owned.
+  views::View* const menu_owner_;
+
+  // The event type which was used to show the menu.
+  const ui::MenuSourceType source_type_;
+
+  // The callback which is triggered when the menu is closed.
+  base::OnceClosure on_menu_closed_callback_;
+
+  // The root MenuItemView which contains all child MenuItemViews. Owned by
+  // |menu_runner_|.
+  views::MenuItemView* root_ = nullptr;
+
+  // Used to show the menu.
+  std::unique_ptr<views::MenuRunner> menu_runner_;
+
+  // The timestamp taken when the menu is opened. Used in metrics.
+  base::TimeTicks menu_open_time_;
+
+  DISALLOW_COPY_AND_ASSIGN(AppMenuModelAdapter);
+};
+
+}  // namespace ash
+
+#endif  // ASH_PUBLIC_CPP_APP_MENU_MODEL_ADAPTER_H_
diff --git a/ash/public/cpp/window_properties.cc b/ash/public/cpp/window_properties.cc
index 7c7fccea..1b3fd66 100644
--- a/ash/public/cpp/window_properties.cc
+++ b/ash/public/cpp/window_properties.cc
@@ -31,9 +31,17 @@
   property_converter->RegisterPrimitiveProperty(
       kCanConsumeSystemKeysKey, mojom::kCanConsumeSystemKeys_Property,
       aura::PropertyConverter::CreateAcceptAnyValueCallback());
+  property_converter->RegisterPrimitiveProperty(
+      kFrameActiveColorKey,
+      ui::mojom::WindowManager::kFrameActiveColor_Property,
+      aura::PropertyConverter::CreateAcceptAnyValueCallback());
   property_converter->RegisterImageSkiaProperty(
       kFrameImageActiveKey, mojom::kFrameImageActive_Property);
   property_converter->RegisterPrimitiveProperty(
+      kFrameInactiveColorKey,
+      ui::mojom::WindowManager::kFrameInactiveColor_Property,
+      aura::PropertyConverter::CreateAcceptAnyValueCallback());
+  property_converter->RegisterPrimitiveProperty(
       kHideShelfWhenFullscreenKey, mojom::kHideShelfWhenFullscreen_Property,
       aura::PropertyConverter::CreateAcceptAnyValueCallback());
   property_converter->RegisterPrimitiveProperty(
diff --git a/ash/shelf/shelf_button.cc b/ash/shelf/shelf_button.cc
index 82d71f7e..8364c76 100644
--- a/ash/shelf/shelf_button.cc
+++ b/ash/shelf/shelf_button.cc
@@ -412,8 +412,6 @@
   destroyed_flag_ = &destroyed;
 
   Button::ShowContextMenu(p, source_type);
-  UMA_HISTOGRAM_ENUMERATION("Apps.ContextMenuShowSource.ShelfButton",
-                            source_type, ui::MENU_SOURCE_TYPE_LAST);
 
   if (!destroyed) {
     destroyed_flag_ = nullptr;
diff --git a/ash/shelf/shelf_menu_model_adapter.cc b/ash/shelf/shelf_menu_model_adapter.cc
new file mode 100644
index 0000000..4c168d9
--- /dev/null
+++ b/ash/shelf/shelf_menu_model_adapter.cc
@@ -0,0 +1,43 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/shelf/shelf_menu_model_adapter.h"
+
+#include "base/metrics/histogram_macros.h"
+#include "ui/base/models/simple_menu_model.h"
+
+namespace ash {
+
+ShelfMenuModelAdapter::ShelfMenuModelAdapter(
+    const std::string& app_id,
+    std::unique_ptr<ui::SimpleMenuModel> model,
+    views::View* menu_owner,
+    ui::MenuSourceType source_type,
+    base::OnceClosure on_menu_closed_callback)
+    : AppMenuModelAdapter(app_id,
+                          std::move(model),
+                          menu_owner,
+                          source_type,
+                          std::move(on_menu_closed_callback)) {}
+
+ShelfMenuModelAdapter::~ShelfMenuModelAdapter() = default;
+
+void ShelfMenuModelAdapter::RecordHistogram() {
+  base::TimeDelta user_journey_time = base::TimeTicks::Now() - menu_open_time();
+  // If the menu is for a ShelfButton.
+  if (app_id().empty()) {
+    UMA_HISTOGRAM_TIMES("Apps.ContextMenuUserJourneyTime.ShelfButton",
+                        user_journey_time);
+    UMA_HISTOGRAM_ENUMERATION("Apps.ContextMenuShowSource.ShelfButton",
+                              source_type(), ui::MENU_SOURCE_TYPE_LAST);
+    return;
+  }
+
+  // TODO(newcomer): Add Apps.ContextMenuUserJourneyTime.Shelf metric.
+  // https://crbug.com/845273.
+  UMA_HISTOGRAM_ENUMERATION("Apps.ContextMenuShowSource.Shelf", source_type(),
+                            ui::MENU_SOURCE_TYPE_LAST);
+}
+
+}  // namespace ash
diff --git a/ash/shelf/shelf_menu_model_adapter.h b/ash/shelf/shelf_menu_model_adapter.h
new file mode 100644
index 0000000..2f9db93
--- /dev/null
+++ b/ash/shelf/shelf_menu_model_adapter.h
@@ -0,0 +1,33 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_SHELF_SHELF_MENU_MODEL_ADAPTER_H_
+#define ASH_SHELF_SHELF_MENU_MODEL_ADAPTER_H_
+
+#include "ash/ash_export.h"
+#include "ash/public/cpp/app_menu_model_adapter.h"
+
+namespace ash {
+
+// A class wrapping menu operations for ShelfView. Responsible for building,
+// running, and recording histograms.
+class ASH_EXPORT ShelfMenuModelAdapter : public AppMenuModelAdapter {
+ public:
+  ShelfMenuModelAdapter(const std::string& app_id,
+                        std::unique_ptr<ui::SimpleMenuModel> model,
+                        views::View* menu_owner,
+                        ui::MenuSourceType source_type,
+                        base::OnceClosure on_menu_closed_callback);
+  ~ShelfMenuModelAdapter() override;
+
+  // Overridden from AppMenuModelAdapter:
+  void RecordHistogram() override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ShelfMenuModelAdapter);
+};
+
+}  // namespace ash
+
+#endif  // ASH_SHELF_SHELF_MENU_MODEL_ADAPTER_H_
diff --git a/ash/shelf/shelf_view.cc b/ash/shelf/shelf_view.cc
index 02f8cb2..fa697d4 100644
--- a/ash/shelf/shelf_view.cc
+++ b/ash/shelf/shelf_view.cc
@@ -26,6 +26,7 @@
 #include "ash/shelf/shelf_constants.h"
 #include "ash/shelf/shelf_context_menu_model.h"
 #include "ash/shelf/shelf_controller.h"
+#include "ash/shelf/shelf_menu_model_adapter.h"
 #include "ash/shelf/shelf_widget.h"
 #include "ash/shell.h"
 #include "ash/shell_delegate.h"
@@ -36,6 +37,7 @@
 #include "ash/wm/tablet_mode/tablet_mode_controller.h"
 #include "base/auto_reset.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/strings/utf_string_conversions.h"
 #include "chromeos/chromeos_switches.h"
 #include "ui/accessibility/ax_node_data.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -404,11 +406,13 @@
 }
 
 bool ShelfView::IsShowingMenu() const {
-  return launcher_menu_runner_.get() && launcher_menu_runner_->IsRunning();
+  return shelf_menu_model_adapter_ &&
+         shelf_menu_model_adapter_->IsShowingMenu();
 }
 
 bool ShelfView::IsShowingMenuForView(views::View* view) const {
-  return IsShowingMenu() && menu_owner_ == view;
+  return IsShowingMenu() &&
+         shelf_menu_model_adapter_->IsShowingMenuForView(*view);
 }
 
 bool ShelfView::IsShowingOverflowBubble() const {
@@ -775,7 +779,7 @@
     return;
 
   if (IsShowingMenu())
-    launcher_menu_runner_->Cancel();
+    shelf_menu_model_adapter_->Cancel();
 
   int index = view_model_->GetIndexOfView(view);
   if (index == -1 || view_model_->view_size() <= 1)
@@ -1800,8 +1804,8 @@
 }
 
 void ShelfView::ShelfItemRemoved(int model_index, const ShelfItem& old_item) {
-  if (old_item.id == context_menu_id_)
-    launcher_menu_runner_->Cancel();
+  if (old_item.id == context_menu_id_ && shelf_menu_model_adapter_)
+    shelf_menu_model_adapter_->Cancel();
 
   views::View* view = view_model_->view_at(model_index);
   view_model_->Remove(model_index);
@@ -1970,8 +1974,6 @@
   const ShelfItem* item = ShelfItemForView(source);
   const int64_t display_id = GetDisplayIdForView(this);
   if (!item || !model_->GetShelfItemDelegate(item->id)) {
-    UMA_HISTOGRAM_ENUMERATION("Apps.ContextMenuShowSource.Shelf", source_type,
-                              ui::MENU_SOURCE_TYPE_LAST);
     context_menu_id_ = ShelfID();
     std::unique_ptr<ShelfContextMenuModel> menu_model =
         std::make_unique<ShelfContextMenuModel>(
@@ -1981,10 +1983,6 @@
     return;
   }
 
-  // Record the current time for the shelf button context menu user journey
-  // histogram.
-  shelf_button_context_menu_time_ = base::TimeTicks::Now();
-
   // Get any custom entries; show the context menu in AfterGetContextMenuItems.
   model_->GetShelfItemDelegate(item->id)->GetContextMenuItems(
       display_id, base::Bind(&ShelfView::AfterGetContextMenuItems,
@@ -1992,7 +1990,7 @@
                              source, source_type));
 }
 
-void ShelfView::ShowMenu(std::unique_ptr<ui::MenuModel> menu_model,
+void ShelfView::ShowMenu(std::unique_ptr<ui::SimpleMenuModel> menu_model,
                          views::View* source,
                          const gfx::Point& click_point,
                          bool context_menu,
@@ -2002,13 +2000,16 @@
     return;
   menu_owner_ = source;
 
-  menu_model_ = std::move(menu_model);
   closing_event_time_ = base::TimeTicks();
+
+  // NOTE: If you convert to HAS_MNEMONICS be sure to update menu building code.
   int run_types = 0;
   if (context_menu) {
     run_types |=
         views::MenuRunner::CONTEXT_MENU | views::MenuRunner::FIXED_ANCHOR;
   }
+
+  // Only use the touchable layout if the menu is for an app.
   if (features::IsTouchableAppContextMenuEnabled())
     run_types |= views::MenuRunner::USE_TOUCHABLE_LAYOUT;
 
@@ -2019,36 +2020,26 @@
     run_types |= views::MenuRunner::SEND_GESTURE_EVENTS_TO_OWNER;
   }
 
-  launcher_menu_runner_ = std::make_unique<views::MenuRunner>(
-      menu_model_.get(), run_types,
-      base::Bind(&ShelfView::OnMenuClosed, base::Unretained(this), source));
-
-  // NOTE: if you convert to HAS_MNEMONICS be sure to update menu building code.
-  launcher_menu_runner_->RunMenuAt(
-      GetWidget(), nullptr,
+  shelf_menu_model_adapter_ = std::make_unique<ShelfMenuModelAdapter>(
+      item ? item->id.app_id : std::string(), std::move(menu_model), source,
+      source_type,
+      base::BindOnce(&ShelfView::OnMenuClosed, base::Unretained(this), source));
+  shelf_menu_model_adapter_->Run(
       GetMenuAnchorRect(source, click_point, source_type, context_menu),
-      GetMenuAnchorPosition(item, context_menu), source_type);
+      GetMenuAnchorPosition(item, context_menu), run_types);
 }
 
 void ShelfView::OnMenuClosed(views::View* source) {
   menu_owner_ = nullptr;
   context_menu_id_ = ShelfID();
 
-  closing_event_time_ = launcher_menu_runner_->closing_event_time();
+  closing_event_time_ = shelf_menu_model_adapter_->GetClosingEventTime();
 
-  if (shelf_button_context_menu_time_ != base::TimeTicks()) {
-    // If the context menu came from a ShelfButton.
-    UMA_HISTOGRAM_TIMES(
-        "Apps.ContextMenuUserJourneyTime.ShelfButton",
-        base::TimeTicks::Now() - shelf_button_context_menu_time_);
-    shelf_button_context_menu_time_ = base::TimeTicks();
-  }
   const ShelfItem* item = ShelfItemForView(source);
   if (item)
     static_cast<ShelfButton*>(source)->OnMenuClosed();
 
-  launcher_menu_runner_.reset();
-  menu_model_.reset();
+  shelf_menu_model_adapter_.reset();
 
   // Auto-hide or alignment might have changed, but only for this shelf.
   shelf_->UpdateVisibilityState();
diff --git a/ash/shelf/shelf_view.h b/ash/shelf/shelf_view.h
index d142df8..ee9b97bd 100644
--- a/ash/shelf/shelf_view.h
+++ b/ash/shelf/shelf_view.h
@@ -30,7 +30,7 @@
 #include "ui/views/view_model.h"
 
 namespace ui {
-class MenuModel;
+class SimpleMenuModel;
 }
 
 namespace views {
@@ -49,6 +49,7 @@
 class ShelfButton;
 class ShelfModel;
 struct ShelfItem;
+class ShelfMenuModelAdapter;
 class ShelfWidget;
 
 enum ShelfAlignmentUmaEnumValue {
@@ -375,7 +376,7 @@
   // If |context_menu| is set, the displayed menu is a context menu and not
   // a menu listing one or more running applications.
   // The |click_point| is only used for |context_menu|'s.
-  void ShowMenu(std::unique_ptr<ui::MenuModel> menu_model,
+  void ShowMenu(std::unique_ptr<ui::SimpleMenuModel> menu_model,
                 views::View* source,
                 const gfx::Point& click_point,
                 bool context_menu,
@@ -462,9 +463,8 @@
 
   std::unique_ptr<views::FocusSearch> focus_search_;
 
-  // Manages the context menu, and the list menu.
-  std::unique_ptr<ui::MenuModel> menu_model_;
-  std::unique_ptr<views::MenuRunner> launcher_menu_runner_;
+  // Responsible for building and running all menus.
+  std::unique_ptr<ShelfMenuModelAdapter> shelf_menu_model_adapter_;
   std::unique_ptr<ScopedRootWindowForNewWindows>
       scoped_root_window_for_new_windows_;
 
@@ -478,10 +478,6 @@
   // The timestamp of the event which closed the last menu - or 0.
   base::TimeTicks closing_event_time_;
 
-  // The timestamp of the event which opened the last context menu on a
-  // ShelfButton. Used in metrics.
-  base::TimeTicks shelf_button_context_menu_time_;
-
   // True if a drag and drop operation created/pinned the item in the launcher
   // and it needs to be deleted/unpinned again if the operation gets cancelled.
   bool drag_and_drop_item_pinned_ = false;
diff --git a/ash/shelf/shelf_view_test_api.cc b/ash/shelf/shelf_view_test_api.cc
index 3d4f262..49d1061 100644
--- a/ash/shelf/shelf_view_test_api.cc
+++ b/ash/shelf/shelf_view_test_api.cc
@@ -8,6 +8,7 @@
 #include "ash/shelf/overflow_button.h"
 #include "ash/shelf/shelf_button.h"
 #include "ash/shelf/shelf_constants.h"
+#include "ash/shelf/shelf_menu_model_adapter.h"
 #include "ash/shelf/shelf_view.h"
 #include "base/run_loop.h"
 #include "ui/views/animation/bounds_animator.h"
@@ -125,10 +126,10 @@
 }
 
 bool ShelfViewTestAPI::CloseMenu() {
-  if (!shelf_view_->launcher_menu_runner_)
+  if (!shelf_view_->IsShowingMenu())
     return false;
 
-  shelf_view_->launcher_menu_runner_->Cancel();
+  shelf_view_->shelf_menu_model_adapter_->Cancel();
   return true;
 }
 
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc
index 066de0c..7eb8d3c 100644
--- a/ash/shelf/shelf_view_unittest.cc
+++ b/ash/shelf/shelf_view_unittest.cc
@@ -2004,6 +2004,7 @@
   ui::test::EventGenerator& generator = GetEventGenerator();
   generator.MoveMouseTo(shelf_view_->GetBoundsInScreen().CenterPoint());
   generator.PressRightButton();
+  generator.ReleaseRightButton();
   EXPECT_TRUE(test_api_->CloseMenu());
 }
 
diff --git a/ash/shell_delegate_mash.cc b/ash/shell_delegate_mash.cc
new file mode 100644
index 0000000..9d68969
--- /dev/null
+++ b/ash/shell_delegate_mash.cc
@@ -0,0 +1,100 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/shell_delegate_mash.h"
+
+#include <memory>
+#include <utility>
+
+#include "ash/accessibility/default_accessibility_delegate.h"
+#include "ash/screenshot_delegate.h"
+#include "base/strings/string16.h"
+#include "base/strings/string_util.h"
+#include "components/user_manager/user_info_impl.h"
+#include "services/ui/public/cpp/input_devices/input_device_controller_client.h"
+#include "ui/gfx/image/image.h"
+#include "ui/keyboard/keyboard_ui.h"
+
+namespace ash {
+namespace {
+
+// TODO(jamescook): Replace with a mojo-compatible ScreenshotClient.
+class ScreenshotDelegateMash : public ScreenshotDelegate {
+ public:
+  ScreenshotDelegateMash() = default;
+  ~ScreenshotDelegateMash() override = default;
+
+  // ScreenshotDelegate:
+  void HandleTakeScreenshotForAllRootWindows() override { NOTIMPLEMENTED(); }
+  void HandleTakePartialScreenshot(aura::Window* window,
+                                   const gfx::Rect& rect) override {
+    NOTIMPLEMENTED();
+  }
+  void HandleTakeWindowScreenshot(aura::Window* window) override {
+    NOTIMPLEMENTED();
+  }
+  bool CanTakeScreenshot() override { return true; }
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ScreenshotDelegateMash);
+};
+
+}  // namespace
+
+ShellDelegateMash::ShellDelegateMash(service_manager::Connector* connector)
+    : connector_(connector) {}
+
+ShellDelegateMash::~ShellDelegateMash() = default;
+
+service_manager::Connector* ShellDelegateMash::GetShellConnector() const {
+  return connector_;
+}
+
+bool ShellDelegateMash::CanShowWindowForUser(aura::Window* window) const {
+  NOTIMPLEMENTED_LOG_ONCE();
+  return true;
+}
+
+void ShellDelegateMash::PreInit() {
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
+std::unique_ptr<keyboard::KeyboardUI> ShellDelegateMash::CreateKeyboardUI() {
+  NOTIMPLEMENTED_LOG_ONCE();
+  return nullptr;
+}
+
+void ShellDelegateMash::OpenUrlFromArc(const GURL& url) {
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
+NetworkingConfigDelegate* ShellDelegateMash::GetNetworkingConfigDelegate() {
+  // TODO(mash): Provide a real implementation, perhaps by folding its behavior
+  // into an ash-side network information cache. http://crbug.com/651157
+  NOTIMPLEMENTED_LOG_ONCE();
+  return nullptr;
+}
+
+std::unique_ptr<ScreenshotDelegate>
+ShellDelegateMash::CreateScreenshotDelegate() {
+  return std::make_unique<ScreenshotDelegateMash>();
+}
+
+AccessibilityDelegate* ShellDelegateMash::CreateAccessibilityDelegate() {
+  return new DefaultAccessibilityDelegate;
+}
+
+ui::InputDeviceControllerClient*
+ShellDelegateMash::GetInputDeviceControllerClient() {
+  if (!connector_)
+    return nullptr;  // Happens in tests.
+
+  if (!input_device_controller_client_) {
+    input_device_controller_client_ =
+        std::make_unique<ui::InputDeviceControllerClient>(connector_);
+  }
+  return input_device_controller_client_.get();
+}
+
+}  // namespace ash
diff --git a/ash/shell_delegate_mash.h b/ash/shell_delegate_mash.h
new file mode 100644
index 0000000..6eb06ea
--- /dev/null
+++ b/ash/shell_delegate_mash.h
@@ -0,0 +1,47 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_SHELL_DELEGATE_MASH_H_
+#define ASH_SHELL_DELEGATE_MASH_H_
+
+#include <memory>
+
+#include "ash/shell_delegate.h"
+#include "base/macros.h"
+
+namespace service_manager {
+class Connector;
+}
+
+namespace ash {
+
+class ShellDelegateMash : public ShellDelegate {
+ public:
+  explicit ShellDelegateMash(service_manager::Connector* connector);
+  ~ShellDelegateMash() override;
+
+  // ShellDelegate:
+  service_manager::Connector* GetShellConnector() const override;
+  bool CanShowWindowForUser(aura::Window* window) const override;
+  void PreInit() override;
+  std::unique_ptr<keyboard::KeyboardUI> CreateKeyboardUI() override;
+  void OpenUrlFromArc(const GURL& url) override;
+  NetworkingConfigDelegate* GetNetworkingConfigDelegate() override;
+  std::unique_ptr<ScreenshotDelegate> CreateScreenshotDelegate() override;
+  AccessibilityDelegate* CreateAccessibilityDelegate() override;
+  ui::InputDeviceControllerClient* GetInputDeviceControllerClient() override;
+
+ private:
+  // |connector_| may be null in tests.
+  service_manager::Connector* connector_;
+
+  std::unique_ptr<ui::InputDeviceControllerClient>
+      input_device_controller_client_;
+
+  DISALLOW_COPY_AND_ASSIGN(ShellDelegateMash);
+};
+
+}  // namespace ash
+
+#endif  // ASH_SHELL_DELEGATE_MASH_H_
diff --git a/ash/shell_delegate_mus.cc b/ash/shell_delegate_mus.cc
deleted file mode 100644
index aabd91a..0000000
--- a/ash/shell_delegate_mus.cc
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/shell_delegate_mus.h"
-
-#include <memory>
-#include <utility>
-
-#include "ash/accessibility/default_accessibility_delegate.h"
-#include "ash/screenshot_delegate.h"
-#include "base/strings/string16.h"
-#include "base/strings/string_util.h"
-#include "components/user_manager/user_info_impl.h"
-#include "services/ui/public/cpp/input_devices/input_device_controller_client.h"
-#include "ui/gfx/image/image.h"
-#include "ui/keyboard/keyboard_ui.h"
-
-namespace ash {
-namespace {
-
-// TODO(jamescook): Replace with a mojo-compatible ScreenshotClient.
-class ScreenshotDelegateMash : public ScreenshotDelegate {
- public:
-  ScreenshotDelegateMash() = default;
-  ~ScreenshotDelegateMash() override = default;
-
-  // ScreenshotDelegate:
-  void HandleTakeScreenshotForAllRootWindows() override { NOTIMPLEMENTED(); }
-  void HandleTakePartialScreenshot(aura::Window* window,
-                                   const gfx::Rect& rect) override {
-    NOTIMPLEMENTED();
-  }
-  void HandleTakeWindowScreenshot(aura::Window* window) override {
-    NOTIMPLEMENTED();
-  }
-  bool CanTakeScreenshot() override { return true; }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(ScreenshotDelegateMash);
-};
-
-}  // namespace
-
-ShellDelegateMus::ShellDelegateMus(service_manager::Connector* connector)
-    : connector_(connector) {}
-
-ShellDelegateMus::~ShellDelegateMus() = default;
-
-service_manager::Connector* ShellDelegateMus::GetShellConnector() const {
-  return connector_;
-}
-
-bool ShellDelegateMus::CanShowWindowForUser(aura::Window* window) const {
-  NOTIMPLEMENTED_LOG_ONCE();
-  return true;
-}
-
-void ShellDelegateMus::PreInit() {
-  NOTIMPLEMENTED_LOG_ONCE();
-}
-
-std::unique_ptr<keyboard::KeyboardUI> ShellDelegateMus::CreateKeyboardUI() {
-  NOTIMPLEMENTED_LOG_ONCE();
-  return nullptr;
-}
-
-void ShellDelegateMus::OpenUrlFromArc(const GURL& url) {
-  NOTIMPLEMENTED_LOG_ONCE();
-}
-
-NetworkingConfigDelegate* ShellDelegateMus::GetNetworkingConfigDelegate() {
-  // TODO(mash): Provide a real implementation, perhaps by folding its behavior
-  // into an ash-side network information cache. http://crbug.com/651157
-  NOTIMPLEMENTED_LOG_ONCE();
-  return nullptr;
-}
-
-std::unique_ptr<ScreenshotDelegate>
-ShellDelegateMus::CreateScreenshotDelegate() {
-  return std::make_unique<ScreenshotDelegateMash>();
-}
-
-AccessibilityDelegate* ShellDelegateMus::CreateAccessibilityDelegate() {
-  return new DefaultAccessibilityDelegate;
-}
-
-ui::InputDeviceControllerClient*
-ShellDelegateMus::GetInputDeviceControllerClient() {
-  if (!connector_)
-    return nullptr;  // Happens in tests.
-
-  if (!input_device_controller_client_) {
-    input_device_controller_client_ =
-        std::make_unique<ui::InputDeviceControllerClient>(connector_);
-  }
-  return input_device_controller_client_.get();
-}
-
-}  // namespace ash
diff --git a/ash/shell_delegate_mus.h b/ash/shell_delegate_mus.h
deleted file mode 100644
index 0db667c..0000000
--- a/ash/shell_delegate_mus.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ASH_SHELL_DELEGATE_MUS_H_
-#define ASH_SHELL_DELEGATE_MUS_H_
-
-#include <memory>
-
-#include "ash/shell_delegate.h"
-#include "base/macros.h"
-
-namespace service_manager {
-class Connector;
-}
-
-namespace ash {
-
-// TODO(jamescook): Rename to ShellDelegateMash.
-class ShellDelegateMus : public ShellDelegate {
- public:
-  explicit ShellDelegateMus(service_manager::Connector* connector);
-  ~ShellDelegateMus() override;
-
-  // ShellDelegate:
-  service_manager::Connector* GetShellConnector() const override;
-  bool CanShowWindowForUser(aura::Window* window) const override;
-  void PreInit() override;
-  std::unique_ptr<keyboard::KeyboardUI> CreateKeyboardUI() override;
-  void OpenUrlFromArc(const GURL& url) override;
-  NetworkingConfigDelegate* GetNetworkingConfigDelegate() override;
-  std::unique_ptr<ScreenshotDelegate> CreateScreenshotDelegate() override;
-  AccessibilityDelegate* CreateAccessibilityDelegate() override;
-  ui::InputDeviceControllerClient* GetInputDeviceControllerClient() override;
-
- private:
-  // |connector_| may be null in tests.
-  service_manager::Connector* connector_;
-
-  std::unique_ptr<ui::InputDeviceControllerClient>
-      input_device_controller_client_;
-
-  DISALLOW_COPY_AND_ASSIGN(ShellDelegateMus);
-};
-
-}  // namespace ash
-
-#endif  // ASH_SHELL_DELEGATE_MUS_H_
diff --git a/ash/system/night_light/night_light_controller_unittest.cc b/ash/system/night_light/night_light_controller_unittest.cc
index fb27056c..ad8edd0 100644
--- a/ash/system/night_light/night_light_controller_unittest.cc
+++ b/ash/system/night_light/night_light_controller_unittest.cc
@@ -867,7 +867,7 @@
     const float green_scale =
         NightLightController::GreenColorScaleFromTemperature(temperature);
     std::stringstream pattern_stream;
-    pattern_stream << "*set_color_correction(id=" << display_id
+    pattern_stream << "*set_color_matrix(id=" << display_id
                    << ",ctm[0]=" << kRedScale << "*ctm[4]=" << green_scale
                    << "*ctm[8]=" << blue_scale << "*)*";
     return base::MatchPattern(logger_actions_string, pattern_stream.str());
diff --git a/ash/test/ash_test_helper.h b/ash/test/ash_test_helper.h
index 997b4dc..85292bf 100644
--- a/ash/test/ash_test_helper.h
+++ b/ash/test/ash_test_helper.h
@@ -64,9 +64,6 @@
   explicit AshTestHelper(AshTestEnvironment* ash_test_environment);
   ~AshTestHelper();
 
-  // This is intended to be called from TestSuites, not individual configs.
-  static void set_config(Config config) { config_ = config; }
-
   // Returns the configuration that tests are run in. See ash::Config enum for
   // details.
   static Config config() { return config_; }
diff --git a/ash/window_manager.cc b/ash/window_manager.cc
index d18becc..dda87d9 100644
--- a/ash/window_manager.cc
+++ b/ash/window_manager.cc
@@ -23,7 +23,7 @@
 #include "ash/root_window_settings.h"
 #include "ash/session/session_controller.h"
 #include "ash/shell.h"
-#include "ash/shell_delegate_mus.h"
+#include "ash/shell_delegate_mash.h"
 #include "ash/shell_init_params.h"
 #include "ash/shell_port_mash.h"
 #include "ash/wm/ash_focus_rules.h"
@@ -157,7 +157,7 @@
       this, pointer_watcher_event_router_.get());
   init_params.delegate = shell_delegate_
                              ? std::move(shell_delegate_)
-                             : std::make_unique<ShellDelegateMus>(connector_);
+                             : std::make_unique<ShellDelegateMash>(connector_);
   init_params.initial_display_prefs = std::move(initial_display_prefs_);
   Shell::CreateInstance(std::move(init_params));
 }
diff --git a/ash/window_manager.h b/ash/window_manager.h
index af037eee..39178a4 100644
--- a/ash/window_manager.h
+++ b/ash/window_manager.h
@@ -186,7 +186,7 @@
   uint16_t next_accelerator_namespace_id_ = 0u;
 
   // The ShellDelegate to install. This may be null, in which case
-  // ShellDelegateMus is used.
+  // ShellDelegateMash is used.
   // NOTE: AshTestHelper may set |shell_delegate_| directly.
   std::unique_ptr<ShellDelegate> shell_delegate_;
 
diff --git a/ash/wm/non_client_frame_controller.cc b/ash/wm/non_client_frame_controller.cc
index 424b909..9a81682 100644
--- a/ash/wm/non_client_frame_controller.cc
+++ b/ash/wm/non_client_frame_controller.cc
@@ -170,8 +170,6 @@
   WmNativeWidgetAura(views::internal::NativeWidgetDelegate* delegate,
                      aura::WindowManagerClient* window_manager_client,
                      bool remove_standard_frame,
-                     base::Optional<SkColor> active_frame_color,
-                     base::Optional<SkColor> inactive_frame_color,
                      bool enable_immersive,
                      mojom::WindowStyle window_style)
       // The NativeWidget is mirroring the real Widget created in client code.
@@ -180,13 +178,9 @@
             delegate,
             true /* is_parallel_widget_in_window_manager */),
         remove_standard_frame_(remove_standard_frame),
-        active_frame_color_(active_frame_color),
-        inactive_frame_color_(inactive_frame_color),
         enable_immersive_(enable_immersive),
         window_style_(window_style),
-        window_manager_client_(window_manager_client) {
-    DCHECK_EQ(!!active_frame_color_, !!inactive_frame_color_);
-  }
+        window_manager_client_(window_manager_client) {}
   ~WmNativeWidgetAura() override = default;
 
   void SetHeaderHeight(int height) {
@@ -214,11 +208,6 @@
         new CustomFrameViewAsh(GetWidget(), immersive_delegate_.get(),
                                enable_immersive_, window_style_);
 
-    if (active_frame_color_) {
-      custom_frame_view_->SetFrameColors(*active_frame_color_,
-                                         *inactive_frame_color_);
-    }
-
     // Only the header actually paints any content. So the rest of the region is
     // marked as transparent content (see below in NonClientFrameController()
     // ctor). So, it is necessary to provide a texture-layer for the header
@@ -232,8 +221,6 @@
 
  private:
   const bool remove_standard_frame_;
-  const base::Optional<SkColor> active_frame_color_;
-  const base::Optional<SkColor> inactive_frame_color_;
   const bool enable_immersive_;
   const mojom::WindowStyle window_style_;
 
@@ -311,7 +298,6 @@
   params.layer_type = ui::LAYER_SOLID_COLOR;
   WmNativeWidgetAura* native_widget = new WmNativeWidgetAura(
       widget_, window_manager_client_, ShouldRemoveStandardFrame(*properties),
-      GetFrameColor(*properties, true), GetFrameColor(*properties, false),
       ShouldEnableImmersive(*properties), GetWindowStyle(*properties));
   window_ = native_widget->GetNativeView();
   window_->SetProperty(aura::client::kEmbedType,
diff --git a/ash/wm/property_util.cc b/ash/wm/property_util.cc
index 320545c..1be1201 100644
--- a/ash/wm/property_util.cc
+++ b/ash/wm/property_util.cc
@@ -59,17 +59,6 @@
   return iter != properties.end() && mojo::ConvertTo<bool>(iter->second);
 }
 
-base::Optional<SkColor> GetFrameColor(const InitProperties& properties,
-                                      bool active) {
-  base::Optional<SkColor> color;
-  auto iter = properties.find(
-      active ? ui::mojom::WindowManager::kActiveFrameColor_InitProperty
-             : ui::mojom::WindowManager::kInactiveFrameColor_InitProperty);
-  if (iter != properties.end())
-    color = mojo::ConvertTo<int32_t>(iter->second);
-  return color;
-}
-
 bool ShouldEnableImmersive(const InitProperties& properties) {
   auto iter =
       properties.find(ui::mojom::WindowManager::kDisableImmersive_InitProperty);
diff --git a/ash/wm/property_util.h b/ash/wm/property_util.h
index 91884e3..7dbf953 100644
--- a/ash/wm/property_util.h
+++ b/ash/wm/property_util.h
@@ -11,9 +11,6 @@
 #include <string>
 #include <vector>
 
-#include "base/optional.h"
-#include "third_party/skia/include/core/SkColor.h"
-
 namespace aura {
 class PropertyConverter;
 class Window;
@@ -62,9 +59,6 @@
 
 bool ShouldRemoveStandardFrame(const InitProperties& properties);
 
-base::Optional<SkColor> GetFrameColor(const InitProperties& properties,
-                                      bool active);
-
 bool ShouldEnableImmersive(const InitProperties& properties);
 
 mojom::WindowStyle GetWindowStyle(const InitProperties& properties);
diff --git a/base/containers/queue.h b/base/containers/queue.h
index 2d3b4800..b5bc5c3 100644
--- a/base/containers/queue.h
+++ b/base/containers/queue.h
@@ -12,7 +12,7 @@
 namespace base {
 
 // Provides a definition of base::queue that's like std::queue but uses a
-// base::circular_queue instead of std::deque. Since std::queue is just a
+// base::circular_deque instead of std::deque. Since std::queue is just a
 // wrapper for an underlying type, we can just provide a typedef for it that
 // defaults to the base circular_deque.
 template <class T, class Container = circular_deque<T>>
diff --git a/base/containers/stack.h b/base/containers/stack.h
index 1aaa879..5cf06f825 100644
--- a/base/containers/stack.h
+++ b/base/containers/stack.h
@@ -12,7 +12,7 @@
 namespace base {
 
 // Provides a definition of base::stack that's like std::stack but uses a
-// base::circular_queue instead of std::deque. Since std::stack is just a
+// base::circular_deque instead of std::deque. Since std::stack is just a
 // wrapper for an underlying type, we can just provide a typedef for it that
 // defaults to the base circular_deque.
 template <class T, class Container = circular_deque<T>>
diff --git a/base/memory/platform_shared_memory_region_posix.cc b/base/memory/platform_shared_memory_region_posix.cc
index 8453c12..50c3977 100644
--- a/base/memory/platform_shared_memory_region_posix.cc
+++ b/base/memory/platform_shared_memory_region_posix.cc
@@ -31,6 +31,7 @@
 using ScopedPathUnlinker =
     ScopedGeneric<const FilePath*, ScopedPathUnlinkerTraits>;
 
+#if !defined(OS_NACL)
 bool CheckFDAccessMode(int fd, int expected_mode) {
   int fd_status = fcntl(fd, F_GETFL);
   if (fd_status == -1) {
@@ -47,6 +48,7 @@
 
   return true;
 }
+#endif  // !defined(OS_NACL)
 
 }  // namespace
 
@@ -161,7 +163,7 @@
   *memory = mmap(nullptr, size, PROT_READ | (write_allowed ? PROT_WRITE : 0),
                  MAP_SHARED, handle_.fd.get(), offset);
 
-  bool mmap_succeeded = *memory && *memory != reinterpret_cast<void*>(-1);
+  bool mmap_succeeded = *memory && *memory != MAP_FAILED;
   if (!mmap_succeeded) {
     DPLOG(ERROR) << "mmap " << handle_.fd.get() << " failed";
     return false;
@@ -263,6 +265,7 @@
     PlatformHandle handle,
     Mode mode,
     size_t size) {
+#if !defined(OS_NACL)
   if (!CheckFDAccessMode(handle.fd,
                          mode == Mode::kReadOnly ? O_RDONLY : O_RDWR)) {
     return false;
@@ -278,6 +281,28 @@
   }
 
   return true;
+#else
+  // fcntl(_, F_GETFL) is not implemented on NaCl.
+  void* temp_memory = nullptr;
+  temp_memory =
+      mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_SHARED, handle.fd, 0);
+
+  bool mmap_succeeded = temp_memory && temp_memory != MAP_FAILED;
+  if (mmap_succeeded)
+    munmap(temp_memory, size);
+
+  bool is_read_only = !mmap_succeeded;
+  bool expected_read_only = mode == Mode::kReadOnly;
+
+  if (is_read_only != expected_read_only) {
+    DLOG(ERROR) << "Descriptor has a wrong access mode: it is"
+                << (is_read_only ? " " : " not ") << "read-only but it should"
+                << (expected_read_only ? " " : " not ") << "be";
+    return false;
+  }
+
+  return true;
+#endif  // !defined(OS_NACL)
 }
 
 PlatformSharedMemoryRegion::PlatformSharedMemoryRegion(
diff --git a/base/test/android/javatests/src/org/chromium/base/test/BaseJUnit4ClassRunner.java b/base/test/android/javatests/src/org/chromium/base/test/BaseJUnit4ClassRunner.java
index 102e082..4f48033 100644
--- a/base/test/android/javatests/src/org/chromium/base/test/BaseJUnit4ClassRunner.java
+++ b/base/test/android/javatests/src/org/chromium/base/test/BaseJUnit4ClassRunner.java
@@ -7,21 +7,24 @@
 import static org.chromium.base.test.BaseChromiumAndroidJUnitRunner.shouldListTests;
 
 import android.content.Context;
+import android.support.annotation.CallSuper;
 import android.support.test.InstrumentationRegistry;
 import android.support.test.internal.runner.junit4.AndroidJUnit4ClassRunner;
 import android.support.test.internal.util.AndroidRunnerParams;
 
+import org.junit.rules.MethodRule;
+import org.junit.rules.TestRule;
 import org.junit.runner.Description;
 import org.junit.runner.notification.RunNotifier;
 import org.junit.runners.model.FrameworkMethod;
 import org.junit.runners.model.InitializationError;
 import org.junit.runners.model.Statement;
 
-import org.chromium.base.CollectionUtil;
 import org.chromium.base.CommandLine;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.Log;
 import org.chromium.base.test.BaseTestResult.PreTestHook;
+import org.chromium.base.test.params.MethodParamAnnotationRule;
 import org.chromium.base.test.util.DisableIfSkipCheck;
 import org.chromium.base.test.util.ManualSkipCheck;
 import org.chromium.base.test.util.MinAndroidSdkLevelSkipCheck;
@@ -31,6 +34,8 @@
 import java.io.File;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -43,22 +48,11 @@
  */
 public class BaseJUnit4ClassRunner extends AndroidJUnit4ClassRunner {
     private static final String TAG = "BaseJUnit4ClassRunnr";
-    private final List<SkipCheck> mSkipChecks;
-    private final List<PreTestHook> mPreTestHooks;
 
     private static final String EXTRA_TRACE_FILE =
             "org.chromium.base.test.BaseJUnit4ClassRunner.TraceFile";
 
     /**
-     * Create a BaseJUnit4ClassRunner to run {@code klass} and initialize values
-     *
-     * @throws InitializationError if the test class malformed
-     */
-    public BaseJUnit4ClassRunner(final Class<?> klass) throws InitializationError {
-        this(klass, null, null);
-    }
-
-    /**
      * Create a BaseJUnit4ClassRunner to run {@code klass} and initialize values.
      *
      * To add more SkipCheck or PreTestHook in subclass, create Lists of checks and hooks,
@@ -72,27 +66,25 @@
      * public ChildRunner extends BaseJUnit4ClassRunner {
      *     public ChildRunner(final Class<?> klass) {
      *             throws InitializationError {
-     *         this(klass, null, null);
+     *         this(klass, Collections.emptyList(), Collections.emptyList(),
+     * Collections.emptyList());
      *     }
      *
      *     public ChildRunner(
-     *             final Class<?> klass, List<SkipCheck> checks, List<PreTestHook> hook) {
-     *             throws InitializationError {
-     *         super(klass, mergeList(
-     *             checks, defaultSkipChecks()), mergeList(hooks, DEFAULT_HOOKS));
+     *             final Class<?> klass, List<SkipCheck> checks, List<PreTestHook> hook,
+     * List<TestRule> rules) { throws InitializationError { super(klass, mergeList( checks,
+     * getSkipChecks()), mergeList(hooks, getPreTestHooks()));
      *     }
      *
-     *     public List<SkipCheck> defaultSkipChecks() {...}
+     *     public List<SkipCheck> getSkipChecks() {...}
      *
-     *     public List<PreTestHook> defaultPreTestHooks() {...}
+     *     public List<PreTestHook> getPreTestHooks() {...}
      * </code>
      * </pre>
      *
      * @throws InitializationError if the test class malformed
      */
-    public BaseJUnit4ClassRunner(
-            final Class<?> klass, List<SkipCheck> checks, List<PreTestHook> hooks)
-            throws InitializationError {
+    public BaseJUnit4ClassRunner(final Class<?> klass) throws InitializationError {
         super(klass,
                 new AndroidRunnerParams(InstrumentationRegistry.getInstrumentation(),
                         InstrumentationRegistry.getArguments(), false, 0L, false));
@@ -109,9 +101,6 @@
                 }
             }
         }
-
-        mSkipChecks = mergeList(checks, defaultSkipChecks());
-        mPreTestHooks = mergeList(hooks, defaultPreTestHooks());
     }
 
     /**
@@ -120,17 +109,17 @@
      * Used to merge the default SkipChecks/PreTestHooks with the subclasses's
      * SkipChecks/PreTestHooks.
      */
-    protected static final <T> List<T> mergeList(List<T> listA, List<T> listB) {
-        List<T> l = new ArrayList<>();
-        if (listA != null) {
-            l.addAll(listA);
-        }
-        if (listB != null) {
-            l.addAll(listB);
-        }
+    private static <T> List<T> mergeList(List<T> listA, List<T> listB) {
+        List<T> l = new ArrayList<>(listA);
+        l.addAll(listB);
         return l;
     }
 
+    @SafeVarargs
+    protected static <T> List<T> addToList(List<T> list, T... additionalEntries) {
+        return mergeList(list, Arrays.asList(additionalEntries));
+    }
+
     @Override
     protected void collectInitializationErrors(List<Throwable> errors) {
         super.collectInitializationErrors(errors);
@@ -142,19 +131,51 @@
     }
 
     /**
-     * Change this static function to add or take out default {@code SkipCheck}s.
+     * Override this method to return a list of {@link SkipCheck}s}.
+     *
+     * Additional hooks can be added to the list using {@link #addToList}:
+     * {@code return addToList(super.getSkipChecks(), check1, check2);}
      */
-    private static List<SkipCheck> defaultSkipChecks() {
-        return CollectionUtil.newArrayList(
-                new RestrictionSkipCheck(InstrumentationRegistry.getTargetContext()),
+    @CallSuper
+    protected List<SkipCheck> getSkipChecks() {
+        return Arrays.asList(new RestrictionSkipCheck(InstrumentationRegistry.getTargetContext()),
                 new MinAndroidSdkLevelSkipCheck(), new DisableIfSkipCheck(), new ManualSkipCheck());
     }
 
     /**
-     * Change this static function to add or take out default {@code PreTestHook}s.
+     * Override this method to return a list of {@link PreTestHook}s.
+     *
+     * Additional hooks can be added to the list using {@link #addToList}:
+     * {@code return addToList(super.getPreTestHooks(), hook1, hook2);}
+     * TODO(bauerb): Migrate PreTestHook to TestRule.
      */
-    private static List<PreTestHook> defaultPreTestHooks() {
-        return null;
+    @CallSuper
+    protected List<PreTestHook> getPreTestHooks() {
+        return Collections.emptyList();
+    }
+
+    /**
+     * Override this method to return a list of method rules that should be applied to all tests
+     * run with this test runner.
+     *
+     * Additional rules can be added to the list using {@link #addToList}:
+     * {@code return addToList(super.getDefaultMethodRules(), rule1, rule2);}
+     */
+    @CallSuper
+    protected List<MethodRule> getDefaultMethodRules() {
+        return Collections.singletonList(new MethodParamAnnotationRule());
+    }
+
+    /**
+     * Override this method to return a list of rules that should be applied to all tests run with
+     * this test runner.
+     *
+     * Additional rules can be added to the list using {@link #addToList}:
+     * {@code return addToList(super.getDefaultTestRules(), rule1, rule2);}
+     */
+    @CallSuper
+    protected List<TestRule> getDefaultTestRules() {
+        return Collections.emptyList();
     }
 
     /**
@@ -165,6 +186,20 @@
         return super.isIgnored(method) || shouldSkip(method);
     }
 
+    @Override
+    protected List<MethodRule> rules(Object target) {
+        List<MethodRule> declaredRules = super.rules(target);
+        List<MethodRule> defaultRules = getDefaultMethodRules();
+        return mergeList(defaultRules, declaredRules);
+    }
+
+    @Override
+    protected final List<TestRule> getTestRules(Object target) {
+        List<TestRule> declaredRules = super.getTestRules(target);
+        List<TestRule> defaultRules = getDefaultTestRules();
+        return mergeList(declaredRules, defaultRules);
+    }
+
     /**
      * Run test with or without execution based on bundle arguments.
      */
@@ -177,12 +212,13 @@
                 notifier.fireTestStarted(child);
                 notifier.fireTestFinished(child);
             }
-        } else {
-            if (!CommandLine.isInitialized()) {
-                initCommandLineForTest();
-            }
-            super.run(notifier);
+            return;
         }
+
+        if (!CommandLine.isInitialized()) {
+            initCommandLineForTest();
+        }
+        super.run(notifier);
     }
 
     /**
@@ -215,7 +251,7 @@
     private void runPreTestHooks(FrameworkMethod frameworkMethod) {
         Method testMethod = frameworkMethod.getMethod();
         Context targetContext = InstrumentationRegistry.getTargetContext();
-        for (PreTestHook hook : mPreTestHooks) {
+        for (PreTestHook hook : getPreTestHooks()) {
             hook.run(targetContext, testMethod);
         }
     }
@@ -224,7 +260,7 @@
      * Loop through all the {@code SkipCheck}s to confirm whether a test should be ignored
      */
     private boolean shouldSkip(FrameworkMethod method) {
-        for (SkipCheck s : mSkipChecks) {
+        for (SkipCheck s : getSkipChecks()) {
             if (s.shouldSkip(method)) {
                 return true;
             }
diff --git a/build/android/apk_operations.py b/build/android/apk_operations.py
index 27d6a51..960fc0d1 100755
--- a/build/android/apk_operations.py
+++ b/build/android/apk_operations.py
@@ -17,6 +17,8 @@
 import re
 import shlex
 import sys
+import tempfile
+import textwrap
 
 import devil_chromium
 from devil import devil_env
@@ -36,6 +38,7 @@
 from incremental_install import installer
 from pylib import constants
 from pylib.symbols import deobfuscator
+from pylib.utils import simpleperf
 
 
 # Matches messages only on pre-L (Dalvik) that are spammy and unimportant.
@@ -633,6 +636,36 @@
       print line
 
 
+def _RunProfile(device, package_name, host_build_directory, pprof_out_path,
+                process_specifier, thread_specifier, extra_args):
+  simpleperf.PrepareDevice(device)
+  device_simpleperf_path = simpleperf.InstallSimpleperf(device, package_name)
+  with tempfile.NamedTemporaryFile() as fh:
+    host_simpleperf_out_path = fh.name
+
+    with simpleperf.RunSimpleperf(device, device_simpleperf_path, package_name,
+                                  process_specifier, thread_specifier,
+                                  extra_args, host_simpleperf_out_path):
+      sys.stdout.write('Profiler is running; press Enter to stop...')
+      sys.stdin.read(1)
+      sys.stdout.write('Post-processing data...')
+      sys.stdout.flush()
+
+    simpleperf.ConvertSimpleperfToPprof(host_simpleperf_out_path,
+                                        host_build_directory, pprof_out_path)
+    print textwrap.dedent("""
+        Profile data written to %(s)s.
+
+        To view profile as a call graph in browser:
+          pprof -web %(s)s
+
+        To print the hottest methods:
+          pprof -top %(s)s
+
+        pprof has many useful customization options; `pprof --help` for details.
+        """ % {'s': pprof_out_path})
+
+
 def _GenerateAvailableDevicesMessage(devices):
   devices_obj = device_utils.DeviceUtils.parallel(devices)
   descriptions = devices_obj.pMap(lambda d: d.build_description).pGet(None)
@@ -1111,6 +1144,44 @@
                    self.args.compilation_filter)
 
 
+class _ProfileCommand(_Command):
+  name = 'profile'
+  description = ('Run the simpleperf sampling CPU profiler on the currently-'
+                 'running APK. If --args is used, the extra arguments will be '
+                 'passed on to simpleperf; otherwise, the following default '
+                 'arguments are used: -g -f 1000 -o /data/local/tmp/perf.data')
+  needs_package_name = True
+  needs_output_directory = True
+  supports_multiple_devices = False
+  accepts_args = True
+
+  def _RegisterExtraArgs(self, group):
+    group.add_argument(
+        '--profile-process', default='browser',
+        help=('Which process to profile. This may be a process name or pid '
+              'such as you would get from running `%s ps`; or '
+              'it can be one of (browser, renderer, gpu).' % sys.argv[0]))
+    group.add_argument(
+        '--profile-thread', default=None,
+        help=('(Optional) Profile only a single thread. This may be either a '
+              'thread ID such as you would get by running `adb shell ps -t` '
+              '(pre-Oreo) or `adb shell ps -e -T` (Oreo and later); or it may '
+              'be one of (io, compositor, main, render), in which case '
+              '--profile-process is also required. (Note that "render" thread '
+              'refers to a thread in the browser process that manages a '
+              'renderer; to profile the main thread of the renderer process, '
+              'use --profile-thread=main).'))
+    group.add_argument('--profile-output', default='profile.pb',
+                       help='Output file for profiling data')
+
+  def Run(self):
+    extra_args = shlex.split(self.args.args or '')
+    _RunProfile(self.devices[0], self.args.package_name,
+                self.args.output_directory, self.args.profile_output,
+                self.args.profile_process, self.args.profile_thread,
+                extra_args)
+
+
 class _RunCommand(_InstallCommand, _LaunchCommand, _LogcatCommand):
   name = 'run'
   description = 'Install, launch, and show logcat (when targeting one device).'
@@ -1149,6 +1220,7 @@
     _MemUsageCommand,
     _ShellCommand,
     _CompileDexCommand,
+    _ProfileCommand,
     _RunCommand,
 ]
 
diff --git a/build/android/devil_chromium.json b/build/android/devil_chromium.json
index 6b87fa2c..ea5111b 100644
--- a/build/android/devil_chromium.json
+++ b/build/android/devil_chromium.json
@@ -64,6 +64,58 @@
           ]
         }
       }
+    },
+    "simpleperf": {
+      "file_info": {
+        "android_armeabi-v7a": {
+          "local_paths": [
+            "../../third_party/android_ndk/simpleperf/bin/android/arm/simpleperf"
+          ]
+        },
+        "android_arm64-v8a": {
+          "local_paths": [
+            "../../third_party/android_ndk/simpleperf/bin/android/arm64/simpleperf"
+          ]
+        },
+        "android_x86": {
+          "local_paths": [
+            "../../third_party/android_ndk/simpleperf/bin/android/x86/simpleperf"
+          ]
+        },
+        "android_x86_64": {
+          "local_paths": [
+            "../../third_party/android_ndk/simpleperf/bin/android/x86_64/simpleperf"
+          ]
+        },
+        "linux_x86": {
+          "local_paths": [
+            "../../third_party/android_ndk/simpleperf/bin/linux/x86/simpleperf"
+          ]
+        },
+        "linux_x86_64": {
+          "local_paths": [
+            "../../third_party/android_ndk/simpleperf/bin/linux/x86_64/simpleperf"
+          ]
+        }
+      }
+    },
+    "simpleperf_scripts": {
+      "file_info": {
+        "default": {
+          "local_paths": [
+            "../../third_party/android_ndk/simpleperf"
+          ]
+        }
+      }
+    },
+    "llvm-symbolizer": {
+      "file_info": {
+        "default": {
+          "local_paths": [
+            "../../third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer"
+          ]
+        }
+      }
     }
   }
 }
diff --git a/build/android/pylib/utils/simpleperf.py b/build/android/pylib/utils/simpleperf.py
new file mode 100644
index 0000000..be259d6
--- /dev/null
+++ b/build/android/pylib/utils/simpleperf.py
@@ -0,0 +1,259 @@
+# Copyright 2018 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import contextlib
+import os
+import shutil
+import subprocess
+import sys
+import tempfile
+
+from devil import devil_env
+from devil.android import device_signal
+from devil.android.sdk import version_codes
+
+
+def _ProcessType(proc):
+  _, _, suffix = proc.name.partition(':')
+  if not suffix:
+    return 'browser'
+  if suffix.startswith('sandboxed_process'):
+    return 'renderer'
+  if suffix.startswith('privileged_process'):
+    return 'gpu'
+  return None
+
+
+def _GetSpecifiedPID(device, package_name, process_specifier):
+  if process_specifier is None:
+    return None
+
+  # Check for numeric PID
+  try:
+    pid = int(process_specifier)
+    return pid
+  except ValueError:
+    pass
+
+  # Check for exact process name; can be any of these formats:
+  #   <package>:<process name>, i.e. 'org.chromium.chrome:sandboxed_process0'
+  #   :<process name>, i.e. ':sandboxed_process0'
+  #   <process name>, i.e. 'sandboxed_process0'
+  full_process_name = process_specifier
+  if process_specifier.startswith(':'):
+    full_process_name = package_name + process_specifier
+  elif ':' not in process_specifier:
+    full_process_name = '%s:%s' % (package_name, process_specifier)
+  matching_processes = device.ListProcesses(full_process_name)
+  if len(matching_processes) == 1:
+    return matching_processes[0].pid
+  if len(matching_processes) > 1:
+    raise RuntimeError('Found %d processes with name "%s".' % (
+        len(matching_processes), process_specifier))
+
+  # Check for process type (i.e. 'renderer')
+  package_processes = device.ListProcesses(package_name)
+  matching_processes = [p for p in package_processes if (
+      _ProcessType(p) == process_specifier)]
+  if process_specifier == 'renderer' and len(matching_processes) > 1:
+    raise RuntimeError('Found %d renderer processes; please re-run with only '
+                       'one open tab.' % len(matching_processes))
+  if len(matching_processes) != 1:
+    raise RuntimeError('Found %d processes of type "%s".' % (
+        len(matching_processes), process_specifier))
+  return matching_processes[0].pid
+
+
+def _ThreadsForProcess(device, pid):
+  # The thread list output format for 'ps' is the same regardless of version.
+  # Here's the column headers, and a sample line for a thread belonging to
+  # pid 12345 (note that the last few columns are not aligned with headers):
+  #
+  # USER        PID   TID  PPID     VSZ    RSS WCHAN            ADDR S CMD
+  # u0_i101   12345 24680   567 1357902  97531 futex_wait_queue_me e85acd9c S \
+  #     CrRendererMain
+  if device.build_version_sdk >= version_codes.OREO:
+    pid_regex = (
+        r'^[[:graph:]]\{1,\}[[:blank:]]\{1,\}%d[[:blank:]]\{1,\}' % pid)
+    ps_cmd = "ps -T -e | grep '%s'" % pid_regex
+    ps_output_lines = device.RunShellCommand(
+        ps_cmd, shell=True, check_return=True)
+  else:
+    ps_cmd = ['ps', '-p', str(pid), '-t']
+    ps_output_lines = device.RunShellCommand(ps_cmd, check_return=True)
+  result = []
+  for l in ps_output_lines:
+    fields = l.split()
+    # fields[2] is tid, fields[-1] is thread name. Output may include an entry
+    # for the process itself with tid=pid; omit that one.
+    if fields[2] == str(pid):
+      continue
+    result.append((int(fields[2]), fields[-1]))
+  return result
+
+
+def _ThreadType(thread_name):
+  if not thread_name:
+    return 'unknown'
+  if (thread_name.startswith('Chrome_ChildIO') or
+      thread_name.startswith('Chrome_IO')):
+    return 'io'
+  if thread_name.startswith('Compositor'):
+    return 'compositor'
+  if (thread_name.startswith('ChildProcessMai') or
+      thread_name.startswith('CrGpuMain') or
+      thread_name.startswith('CrRendererMain')):
+    return 'main'
+  if thread_name.startswith('RenderThread'):
+    return 'render'
+
+
+def _GetSpecifiedTID(device, pid, thread_specifier):
+  if thread_specifier is None:
+    return None
+
+  # Check for numeric TID
+  try:
+    tid = int(thread_specifier)
+    return tid
+  except ValueError:
+    pass
+
+  # Check for thread type
+  if pid is not None:
+    matching_threads = [t for t in _ThreadsForProcess(device, pid) if (
+        _ThreadType(t[1]) == thread_specifier)]
+    if len(matching_threads) != 1:
+      raise RuntimeError('Found %d threads of type "%s".' % (
+          len(matching_threads), thread_specifier))
+    return matching_threads[0][0]
+
+  return None
+
+
+def PrepareDevice(device):
+  if device.build_version_sdk < version_codes.NOUGAT:
+    raise RuntimeError('Simpleperf profiling is only supported on Android N '
+                       'and later.')
+
+  # Necessary for profiling
+  # https://android-review.googlesource.com/c/platform/system/sepolicy/+/234400
+  device.SetProp('security.perf_harden', '0')
+
+
+def InstallSimpleperf(device, package_name):
+  package_arch = device.GetPackageArchitecture(package_name) or 'armeabi-v7a'
+  host_simpleperf_path = devil_env.config.LocalPath('simpleperf', package_arch)
+  if not host_simpleperf_path:
+    raise Exception('Could not get path to simpleperf executable on host.')
+  device_simpleperf_path = '/'.join(
+      ('/data/local/tmp/profilers', package_arch, 'simpleperf'))
+  device.PushChangedFiles([(host_simpleperf_path, device_simpleperf_path)])
+  return device_simpleperf_path
+
+
+@contextlib.contextmanager
+def RunSimpleperf(device, device_simpleperf_path, package_name,
+                  process_specifier, thread_specifier, profiler_args,
+                  host_out_path):
+  pid = _GetSpecifiedPID(device, package_name, process_specifier)
+  tid = _GetSpecifiedTID(device, pid, thread_specifier)
+  if pid is None and tid is None:
+    raise RuntimeError('Could not find specified process/thread running on '
+                       'device. Make sure the apk is already running before '
+                       'attempting to profile.')
+  profiler_args = list(profiler_args)
+  if profiler_args and profiler_args[0] == 'record':
+    profiler_args.pop(0)
+  if '--call-graph' not in profiler_args and '-g' not in profiler_args:
+    profiler_args.append('-g')
+  if '-f' not in profiler_args:
+    profiler_args.extend(('-f', '1000'))
+  device_out_path = '/data/local/tmp/perf.data'
+  if '-o' in profiler_args:
+    device_out_path = profiler_args[profiler_args.index('-o') + 1]
+  else:
+    profiler_args.extend(('-o', device_out_path))
+
+  if tid:
+    profiler_args.extend(('-t', str(tid)))
+  else:
+    profiler_args.extend(('-p', str(pid)))
+
+  adb_shell_simpleperf_process = device.adb.StartShell(
+      [device_simpleperf_path, 'record'] + profiler_args)
+
+  completed = False
+  try:
+    yield
+    completed = True
+
+  finally:
+    device.KillAll('simpleperf', signum=device_signal.SIGINT, blocking=True,
+                   quiet=True)
+    if completed:
+      adb_shell_simpleperf_process.wait()
+      device.PullFile(device_out_path, host_out_path)
+
+
+def ConvertSimpleperfToPprof(simpleperf_out_path, build_directory,
+                             pprof_out_path):
+  # The simpleperf scripts require the unstripped libs to be installed in the
+  # same directory structure as the libs on the device. Much of the logic here
+  # is just figuring out and creating the necessary directory structure, and
+  # symlinking the unstripped shared libs.
+
+  # Get the set of libs that we can symbolize
+  unstripped_lib_dir = os.path.join(build_directory, 'lib.unstripped')
+  unstripped_libs = set(
+      f for f in os.listdir(unstripped_lib_dir) if f.endswith('.so'))
+
+  # report.py will show the directory structure above the shared libs;
+  # that is the directory structure we need to recreate on the host.
+  script_dir = devil_env.config.LocalPath('simpleperf_scripts')
+  report_path = os.path.join(script_dir, 'report.py')
+  report_cmd = [sys.executable, report_path, '-i', simpleperf_out_path]
+  device_lib_path = None
+  for line in subprocess.check_output(
+      report_cmd, stderr=subprocess.STDOUT).splitlines():
+    fields = line.split()
+    if len(fields) < 5:
+      continue
+    shlib_path = fields[4]
+    shlib_dirname, shlib_basename = shlib_path.rpartition('/')[::2]
+    if shlib_basename in unstripped_libs:
+      device_lib_path = shlib_dirname
+      break
+  if not device_lib_path:
+    raise RuntimeError('No chrome-related symbols in profiling data in %s. '
+                       'Either the process was idle for the entire profiling '
+                       'period, or something went very wrong (and you should '
+                       'file a bug at crbug.com/new with component '
+                       'Speed>Tracing, and assign it to szager@chromium.org).'
+                       % simpleperf_out_path)
+
+  # Recreate the directory structure locally, and symlink unstripped libs.
+  processing_dir = tempfile.mkdtemp()
+  try:
+    processing_lib_dir = os.path.join(
+        processing_dir, 'binary_cache', device_lib_path.lstrip('/'))
+    os.makedirs(processing_lib_dir)
+    for lib in unstripped_libs:
+      unstripped_lib_path = os.path.join(unstripped_lib_dir, lib)
+      processing_lib_path = os.path.join(processing_lib_dir, lib)
+      os.symlink(unstripped_lib_path, processing_lib_path)
+
+    # Run the script to annotate symbols and convert from simpleperf format to
+    # pprof format.
+    llvm_symbolizer_path = devil_env.config.LocalPath('llvm-symbolizer')
+    pprof_converter_script = os.path.join(
+        script_dir, 'pprof_proto_generator.py')
+    pprof_converter_cmd = [sys.executable, pprof_converter_script,
+                           '-i', simpleperf_out_path,
+                           '-o', os.path.abspath(pprof_out_path),
+                           '--addr2line', llvm_symbolizer_path]
+    subprocess.check_output(pprof_converter_cmd, stderr=subprocess.STDOUT,
+                            cwd=processing_dir)
+  finally:
+    shutil.rmtree(processing_dir, ignore_errors=True)
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index 83337d5..40696d5 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -10,6 +10,7 @@
 import("//build/config/compiler/compiler.gni")
 import("//build/config/coverage/coverage.gni")
 import("//build/config/host_byteorder.gni")
+import("//build/config/sanitizers/sanitizers.gni")
 import("//build/config/ui.gni")
 import("//build/toolchain/cc_wrapper.gni")
 import("//build/toolchain/toolchain.gni")
@@ -90,10 +91,6 @@
   # the needed gcov profiling data.
   auto_profile_path = ""
 
-  # Optimize for coverage guided fuzzing (balance between speed and number of
-  # branches)
-  optimize_for_fuzzing = false
-
   # Optimize symbol files for maximizing goma cache hit rate. This is on by
   # default only when goma is enabled on Linux because setting this to true may
   # make it harder to debug binaries.
diff --git a/build/config/sanitizers/BUILD.gn b/build/config/sanitizers/BUILD.gn
index b3cc71a..55a83f3d 100644
--- a/build/config/sanitizers/BUILD.gn
+++ b/build/config/sanitizers/BUILD.gn
@@ -525,7 +525,7 @@
 }
 
 config("fuzzing_build_mode") {
-  if (use_fuzzing_engine) {
+  if (use_fuzzing_engine && optimize_for_fuzzing) {
     defines = [ "FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" ]
   }
 }
diff --git a/build/config/sanitizers/sanitizers.gni b/build/config/sanitizers/sanitizers.gni
index 049a1f1..6c3027b 100644
--- a/build/config/sanitizers/sanitizers.gni
+++ b/build/config/sanitizers/sanitizers.gni
@@ -90,6 +90,10 @@
   # Not for client use.
   disable_libfuzzer = false
 
+  # Optimize for coverage guided fuzzing (balance between speed and number of
+  # branches). Can be also used to remove non-determinism and other issues.
+  optimize_for_fuzzing = false
+
   # Value for -fsanitize-coverage flag. Setting this causes
   # use_sanitizer_coverage to be enabled.
   # Default value when unset and use_fuzzing_engine=true:
diff --git a/build/toolchain/win/setup_toolchain.py b/build/toolchain/win/setup_toolchain.py
index d63b131a..9bc56fe 100644
--- a/build/toolchain/win/setup_toolchain.py
+++ b/build/toolchain/win/setup_toolchain.py
@@ -240,6 +240,9 @@
       # The separator for INCLUDE here must match the one used in
       # _LoadToolchainEnv() above.
       include = [p.replace('"', r'\"') for p in env['INCLUDE'].split(';') if p]
+
+      # Make include path relative to builddir.
+      include = map(os.path.relpath, include)
       include_I = ' '.join(['"/I' + i + '"' for i in include])
       include_imsvc = ' '.join(['"-imsvc' + i + '"' for i in include])
 
diff --git a/cc/BUILD.gn b/cc/BUILD.gn
index 86dbda85..e5b7356 100644
--- a/cc/BUILD.gn
+++ b/cc/BUILD.gn
@@ -180,8 +180,6 @@
     "raster/zero_copy_raster_buffer_provider.h",
     "resources/cross_thread_shared_bitmap.cc",
     "resources/cross_thread_shared_bitmap.h",
-    "resources/layer_tree_resource_provider.cc",
-    "resources/layer_tree_resource_provider.h",
     "resources/memory_history.cc",
     "resources/memory_history.h",
     "resources/resource_pool.cc",
@@ -197,8 +195,6 @@
     "resources/ui_resource_manager.h",
     "resources/ui_resource_request.cc",
     "resources/ui_resource_request.h",
-    "resources/video_resource_updater.cc",
-    "resources/video_resource_updater.h",
     "scheduler/begin_frame_tracker.cc",
     "scheduler/begin_frame_tracker.h",
     "scheduler/commit_earlyout_reason.h",
@@ -374,10 +370,9 @@
     "//gpu/ipc:gl_in_process_context",
     "//gpu/skia_bindings:skia_bindings",
     "//gpu/vulkan:buildflags",
-    "//media",
+    "//media",  # For VideoLayerImpl.
     "//mojo/public/cpp/bindings:struct_traits",
     "//services/metrics/public/cpp:ukm_builders",
-    "//third_party/libyuv",
     "//ui/events:events_base",
     "//ui/gfx",
     "//ui/gfx/geometry",
@@ -640,9 +635,7 @@
     "raster/synchronous_task_graph_runner_unittest.cc",
     "raster/task_graph_work_queue_unittest.cc",
     "raster/texture_compressor_etc1_unittest.cc",
-    "resources/layer_tree_resource_provider_unittest.cc",
     "resources/resource_pool_unittest.cc",
-    "resources/video_resource_updater_unittest.cc",
     "scheduler/compositor_timing_history_unittest.cc",
     "scheduler/scheduler_state_machine_unittest.cc",
     "scheduler/scheduler_unittest.cc",
@@ -787,6 +780,7 @@
     "//base",
     "//base/test:test_support",
     "//cc/paint",
+    "//components/viz/client",
     "//components/viz/common",
     "//components/viz/test:test_support",
     "//gpu",
diff --git a/cc/layers/heads_up_display_layer_impl.cc b/cc/layers/heads_up_display_layer_impl.cc
index 890f7ec4..d5175d8f 100644
--- a/cc/layers/heads_up_display_layer_impl.cc
+++ b/cc/layers/heads_up_display_layer_impl.cc
@@ -136,7 +136,7 @@
 
 bool HeadsUpDisplayLayerImpl::WillDraw(
     DrawMode draw_mode,
-    LayerTreeResourceProvider* resource_provider) {
+    viz::ClientResourceProvider* resource_provider) {
   if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE)
     return false;
 
@@ -173,7 +173,7 @@
 void HeadsUpDisplayLayerImpl::UpdateHudTexture(
     DrawMode draw_mode,
     LayerTreeFrameSink* layer_tree_frame_sink,
-    LayerTreeResourceProvider* resource_provider,
+    viz::ClientResourceProvider* resource_provider,
     bool gpu_raster,
     const viz::RenderPassList& list) {
   if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE)
@@ -276,7 +276,7 @@
 
     {
       ScopedGpuRaster gpu_raster(context_provider);
-      LayerTreeResourceProvider::ScopedSkSurface scoped_surface(
+      viz::ClientResourceProvider::ScopedSkSurface scoped_surface(
           context_provider->GrContext(), backing->texture_id,
           backing->texture_target, pool_resource.size(), pool_resource.format(),
           false /* can_use_lcd_text */, 0 /* msaa_sample_count */);
@@ -289,7 +289,7 @@
     }
 
     backing->mailbox_sync_token =
-        LayerTreeResourceProvider::GenerateSyncTokenHelper(gl);
+        viz::ClientResourceProvider::GenerateSyncTokenHelper(gl);
   } else if (draw_mode == DRAW_MODE_HARDWARE) {
     // If not using |gpu_raster| but using gpu compositing, we DrawHudContents()
     // into a software bitmap and upload it to a texture for compositing.
@@ -317,7 +317,7 @@
         pool_resource.size().height(), GLDataFormat(pool_resource.format()),
         GLDataType(pool_resource.format()), pixmap.addr());
     backing->mailbox_sync_token =
-        LayerTreeResourceProvider::GenerateSyncTokenHelper(gl);
+        viz::ClientResourceProvider::GenerateSyncTokenHelper(gl);
   } else {
     // If not using gpu compositing, we DrawHudContents() directly into a shared
     // memory bitmap, wrapped in an SkSurface, that can be shared to the display
diff --git a/cc/layers/heads_up_display_layer_impl.h b/cc/layers/heads_up_display_layer_impl.h
index b6f5070..6102b0da 100644
--- a/cc/layers/heads_up_display_layer_impl.h
+++ b/cc/layers/heads_up_display_layer_impl.h
@@ -24,10 +24,13 @@
 class SkTypeface;
 struct SkRect;
 
+namespace viz {
+class ClientResourceProvider;
+}
+
 namespace cc {
 class FrameRateCounter;
 class LayerTreeFrameSink;
-class LayerTreeResourceProvider;
 
 class CC_EXPORT HeadsUpDisplayLayerImpl : public LayerImpl {
  public:
@@ -41,12 +44,12 @@
   std::unique_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override;
 
   bool WillDraw(DrawMode draw_mode,
-                LayerTreeResourceProvider* resource_provider) override;
+                viz::ClientResourceProvider* resource_provider) override;
   void AppendQuads(viz::RenderPass* render_pass,
                    AppendQuadsData* append_quads_data) override;
   void UpdateHudTexture(DrawMode draw_mode,
                         LayerTreeFrameSink* frame_sink,
-                        LayerTreeResourceProvider* resource_provider,
+                        viz::ClientResourceProvider* resource_provider,
                         bool gpu_raster,
                         const viz::RenderPassList& list);
 
diff --git a/cc/layers/heads_up_display_layer_impl_unittest.cc b/cc/layers/heads_up_display_layer_impl_unittest.cc
index 6397ea81..33ba27f 100644
--- a/cc/layers/heads_up_display_layer_impl_unittest.cc
+++ b/cc/layers/heads_up_display_layer_impl_unittest.cc
@@ -18,7 +18,7 @@
 
 void CheckDrawLayer(HeadsUpDisplayLayerImpl* layer,
                     LayerTreeFrameSink* frame_sink,
-                    LayerTreeResourceProvider* resource_provider,
+                    viz::ClientResourceProvider* resource_provider,
                     viz::ContextProvider* context_provider,
                     DrawMode draw_mode) {
   std::unique_ptr<viz::RenderPass> render_pass = viz::RenderPass::Create();
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
index cd1232f..0c9dc2c 100644
--- a/cc/layers/layer_impl.cc
+++ b/cc/layers/layer_impl.cc
@@ -23,7 +23,6 @@
 #include "cc/input/main_thread_scrolling_reason.h"
 #include "cc/input/scroll_state.h"
 #include "cc/layers/layer.h"
-#include "cc/resources/layer_tree_resource_provider.h"
 #include "cc/trees/clip_node.h"
 #include "cc/trees/draw_property_utils.h"
 #include "cc/trees/effect_node.h"
@@ -34,6 +33,7 @@
 #include "cc/trees/proxy.h"
 #include "cc/trees/scroll_node.h"
 #include "cc/trees/transform_node.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/frame_sinks/copy_output_request.h"
 #include "components/viz/common/quads/debug_border_draw_quad.h"
 #include "components/viz/common/quads/render_pass.h"
@@ -175,7 +175,7 @@
 }
 
 bool LayerImpl::WillDraw(DrawMode draw_mode,
-                         LayerTreeResourceProvider* resource_provider) {
+                         viz::ClientResourceProvider* resource_provider) {
   // WillDraw/DidDraw must be matched.
   DCHECK_NE(DRAW_MODE_NONE, draw_mode);
   DCHECK_EQ(DRAW_MODE_NONE, current_draw_mode_);
@@ -183,7 +183,7 @@
   return true;
 }
 
-void LayerImpl::DidDraw(LayerTreeResourceProvider* resource_provider) {
+void LayerImpl::DidDraw(viz::ClientResourceProvider* resource_provider) {
   DCHECK_NE(DRAW_MODE_NONE, current_draw_mode_);
   current_draw_mode_ = DRAW_MODE_NONE;
 }
@@ -476,7 +476,7 @@
 
 void LayerImpl::ValidateQuadResourcesInternal(viz::DrawQuad* quad) const {
 #if DCHECK_IS_ON()
-  const LayerTreeResourceProvider* resource_provider =
+  const viz::ClientResourceProvider* resource_provider =
       layer_tree_impl_->resource_provider();
   for (viz::ResourceId resource_id : quad->resources)
     resource_provider->ValidateResource(resource_id);
diff --git a/cc/layers/layer_impl.h b/cc/layers/layer_impl.h
index d130a69..abd102ce 100644
--- a/cc/layers/layer_impl.h
+++ b/cc/layers/layer_impl.h
@@ -51,6 +51,7 @@
 }
 
 namespace viz {
+class ClientResourceProvider;
 class RenderPass;
 }
 
@@ -58,7 +59,6 @@
 
 class AppendQuadsData;
 class LayerTreeImpl;
-class LayerTreeResourceProvider;
 class MicroBenchmarkImpl;
 class MutatorHost;
 class PrioritizedTile;
@@ -138,10 +138,10 @@
   // WillDraw/DidDraw must call the base class version only if WillDraw
   // returns true.
   virtual bool WillDraw(DrawMode draw_mode,
-                        LayerTreeResourceProvider* resource_provider);
+                        viz::ClientResourceProvider* resource_provider);
   virtual void AppendQuads(viz::RenderPass* render_pass,
                            AppendQuadsData* append_quads_data) {}
-  virtual void DidDraw(LayerTreeResourceProvider* resource_provider);
+  virtual void DidDraw(viz::ClientResourceProvider* resource_provider);
 
   // Verify that the resource ids in the quad are valid.
   void ValidateQuadResources(viz::DrawQuad* quad) const {
diff --git a/cc/layers/painted_overlay_scrollbar_layer_impl.cc b/cc/layers/painted_overlay_scrollbar_layer_impl.cc
index 4f5a61e..831dffc 100644
--- a/cc/layers/painted_overlay_scrollbar_layer_impl.cc
+++ b/cc/layers/painted_overlay_scrollbar_layer_impl.cc
@@ -64,7 +64,7 @@
 
 bool PaintedOverlayScrollbarLayerImpl::WillDraw(
     DrawMode draw_mode,
-    LayerTreeResourceProvider* resource_provider) {
+    viz::ClientResourceProvider* resource_provider) {
   DCHECK(draw_mode != DRAW_MODE_RESOURCELESS_SOFTWARE);
   return LayerImpl::WillDraw(draw_mode, resource_provider);
 }
diff --git a/cc/layers/painted_overlay_scrollbar_layer_impl.h b/cc/layers/painted_overlay_scrollbar_layer_impl.h
index ca436bd..37bdce9 100644
--- a/cc/layers/painted_overlay_scrollbar_layer_impl.h
+++ b/cc/layers/painted_overlay_scrollbar_layer_impl.h
@@ -31,7 +31,7 @@
   void PushPropertiesTo(LayerImpl* layer) override;
 
   bool WillDraw(DrawMode draw_mode,
-                LayerTreeResourceProvider* resource_provider) override;
+                viz::ClientResourceProvider* resource_provider) override;
   void AppendQuads(viz::RenderPass* render_pass,
                    AppendQuadsData* append_quads_data) override;
 
diff --git a/cc/layers/painted_scrollbar_layer_impl.cc b/cc/layers/painted_scrollbar_layer_impl.cc
index 758cf62d..912e2a0 100644
--- a/cc/layers/painted_scrollbar_layer_impl.cc
+++ b/cc/layers/painted_scrollbar_layer_impl.cc
@@ -79,7 +79,7 @@
 
 bool PaintedScrollbarLayerImpl::WillDraw(
     DrawMode draw_mode,
-    LayerTreeResourceProvider* resource_provider) {
+    viz::ClientResourceProvider* resource_provider) {
   DCHECK(draw_mode != DRAW_MODE_RESOURCELESS_SOFTWARE);
   return LayerImpl::WillDraw(draw_mode, resource_provider);
 }
diff --git a/cc/layers/painted_scrollbar_layer_impl.h b/cc/layers/painted_scrollbar_layer_impl.h
index a08bfb3..a76b642 100644
--- a/cc/layers/painted_scrollbar_layer_impl.h
+++ b/cc/layers/painted_scrollbar_layer_impl.h
@@ -30,7 +30,7 @@
   void PushPropertiesTo(LayerImpl* layer) override;
 
   bool WillDraw(DrawMode draw_mode,
-                LayerTreeResourceProvider* resource_provider) override;
+                viz::ClientResourceProvider* resource_provider) override;
   void AppendQuads(viz::RenderPass* render_pass,
                    AppendQuadsData* append_quads_data) override;
   gfx::Rect GetEnclosingRectInTargetSpace() const override;
diff --git a/cc/layers/texture_layer_impl.cc b/cc/layers/texture_layer_impl.cc
index b0203d5..97d1413 100644
--- a/cc/layers/texture_layer_impl.cc
+++ b/cc/layers/texture_layer_impl.cc
@@ -69,8 +69,9 @@
   to_unregister_bitmap_ids_.clear();
 }
 
-bool TextureLayerImpl::WillDraw(DrawMode draw_mode,
-                                LayerTreeResourceProvider* resource_provider) {
+bool TextureLayerImpl::WillDraw(
+    DrawMode draw_mode,
+    viz::ClientResourceProvider* resource_provider) {
   if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE)
     return false;
   // These imply some synchronization problem where the compositor is in gpu
diff --git a/cc/layers/texture_layer_impl.h b/cc/layers/texture_layer_impl.h
index 49b6be2f..f8db91d 100644
--- a/cc/layers/texture_layer_impl.h
+++ b/cc/layers/texture_layer_impl.h
@@ -36,7 +36,7 @@
   void PushPropertiesTo(LayerImpl* layer) override;
 
   bool WillDraw(DrawMode draw_mode,
-                LayerTreeResourceProvider* resource_provider) override;
+                viz::ClientResourceProvider* resource_provider) override;
   void AppendQuads(viz::RenderPass* render_pass,
                    AppendQuadsData* append_quads_data) override;
   SimpleEnclosedRegion VisibleOpaqueRegion() const override;
@@ -92,13 +92,13 @@
 
   // True while the |transferable_resource_| is owned by this layer, and
   // becomes false once it is passed to another layer or to the
-  // LayerTreeResourceProvider, at which point we get back a |resource_id_|.
+  // viz::ClientResourceProvider, at which point we get back a |resource_id_|.
   bool own_resource_ = false;
   // A TransferableResource from the layer's client that will be given
   // to the display compositor.
   viz::TransferableResource transferable_resource_;
   // Local ResourceId for the TransferableResource, to be used with the
-  // compositor's LayerTreeResourceProvider in order to refer to the
+  // compositor's viz::ClientResourceProvider in order to refer to the
   // TransferableResource given to it.
   viz::ResourceId resource_id_ = 0;
   std::unique_ptr<viz::SingleReleaseCallback> release_callback_;
diff --git a/cc/layers/ui_resource_layer_impl.cc b/cc/layers/ui_resource_layer_impl.cc
index 9821c27a..e34f1894 100644
--- a/cc/layers/ui_resource_layer_impl.cc
+++ b/cc/layers/ui_resource_layer_impl.cc
@@ -86,7 +86,7 @@
 
 bool UIResourceLayerImpl::WillDraw(
     DrawMode draw_mode,
-    LayerTreeResourceProvider* resource_provider) {
+    viz::ClientResourceProvider* resource_provider) {
   if (!ui_resource_id_ || draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE)
     return false;
   return LayerImpl::WillDraw(draw_mode, resource_provider);
diff --git a/cc/layers/ui_resource_layer_impl.h b/cc/layers/ui_resource_layer_impl.h
index ed37db2c..bd94720 100644
--- a/cc/layers/ui_resource_layer_impl.h
+++ b/cc/layers/ui_resource_layer_impl.h
@@ -19,8 +19,11 @@
 class DictionaryValue;
 }
 
+namespace viz {
+class ClientResourceProvider;
+}
+
 namespace cc {
-class LayerTreeResourceProvider;
 
 class CC_EXPORT UIResourceLayerImpl : public LayerImpl {
  public:
@@ -45,7 +48,7 @@
   void PushPropertiesTo(LayerImpl* layer) override;
 
   bool WillDraw(DrawMode draw_mode,
-                LayerTreeResourceProvider* resource_provider) override;
+                viz::ClientResourceProvider* resource_provider) override;
   void AppendQuads(viz::RenderPass* render_pass,
                    AppendQuadsData* append_quads_data) override;
 
diff --git a/cc/layers/video_layer_impl.cc b/cc/layers/video_layer_impl.cc
index 4e2843f..3e41407 100644
--- a/cc/layers/video_layer_impl.cc
+++ b/cc/layers/video_layer_impl.cc
@@ -10,16 +10,17 @@
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
 #include "cc/layers/video_frame_provider_client_impl.h"
-#include "cc/resources/layer_tree_resource_provider.h"
 #include "cc/trees/layer_tree_frame_sink.h"
 #include "cc/trees/layer_tree_impl.h"
 #include "cc/trees/occlusion.h"
 #include "cc/trees/task_runner_provider.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/quads/stream_video_draw_quad.h"
 #include "components/viz/common/quads/texture_draw_quad.h"
 #include "components/viz/common/quads/yuv_video_draw_quad.h"
 #include "components/viz/common/resources/single_release_callback.h"
 #include "media/base/video_frame.h"
+#include "media/renderers/video_resource_updater.h"
 #include "ui/gfx/color_space.h"
 
 namespace cc {
@@ -77,7 +78,7 @@
 }
 
 bool VideoLayerImpl::WillDraw(DrawMode draw_mode,
-                              LayerTreeResourceProvider* resource_provider) {
+                              viz::ClientResourceProvider* resource_provider) {
   if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE)
     return false;
 
@@ -103,7 +104,7 @@
 
   if (!updater_) {
     const LayerTreeSettings& settings = layer_tree_impl()->settings();
-    updater_ = std::make_unique<VideoResourceUpdater>(
+    updater_ = std::make_unique<media::VideoResourceUpdater>(
         layer_tree_impl()->context_provider(),
         layer_tree_impl()->layer_tree_frame_sink(),
         layer_tree_impl()->resource_provider(),
@@ -158,7 +159,7 @@
                         GetSortingContextId(), visible_quad_rect);
 }
 
-void VideoLayerImpl::DidDraw(LayerTreeResourceProvider* resource_provider) {
+void VideoLayerImpl::DidDraw(viz::ClientResourceProvider* resource_provider) {
   LayerImpl::DidDraw(resource_provider);
 
   DCHECK(frame_.get());
diff --git a/cc/layers/video_layer_impl.h b/cc/layers/video_layer_impl.h
index 30d1055..4b3646b 100644
--- a/cc/layers/video_layer_impl.h
+++ b/cc/layers/video_layer_impl.h
@@ -10,12 +10,12 @@
 #include "base/macros.h"
 #include "cc/cc_export.h"
 #include "cc/layers/layer_impl.h"
-#include "cc/resources/video_resource_updater.h"
 #include "components/viz/common/resources/release_callback.h"
 #include "media/base/video_rotation.h"
 
 namespace media {
 class VideoFrame;
+class VideoResourceUpdater;
 }
 
 namespace cc {
@@ -36,10 +36,10 @@
   // LayerImpl implementation.
   std::unique_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override;
   bool WillDraw(DrawMode draw_mode,
-                LayerTreeResourceProvider* resource_provider) override;
+                viz::ClientResourceProvider* resource_provider) override;
   void AppendQuads(viz::RenderPass* render_pass,
                    AppendQuadsData* append_quads_data) override;
-  void DidDraw(LayerTreeResourceProvider* resource_provider) override;
+  void DidDraw(viz::ClientResourceProvider* resource_provider) override;
   SimpleEnclosedRegion VisibleOpaqueRegion() const override;
   void DidBecomeActive() override;
   void ReleaseResources() override;
@@ -62,7 +62,7 @@
 
   media::VideoRotation video_rotation_;
 
-  std::unique_ptr<VideoResourceUpdater> updater_;
+  std::unique_ptr<media::VideoResourceUpdater> updater_;
 
   DISALLOW_COPY_AND_ASSIGN(VideoLayerImpl);
 };
diff --git a/cc/paint/paint_filter.h b/cc/paint/paint_filter.h
index cab890ed..7710d501 100644
--- a/cc/paint/paint_filter.h
+++ b/cc/paint/paint_filter.h
@@ -93,14 +93,6 @@
       return 0;
     return cached_sk_filter_->countInputs();
   }
-  std::string ToString() const {
-    if (!cached_sk_filter_)
-      return "Invalid filter";
-
-    SkString str;
-    cached_sk_filter_->toString(&str);
-    return str.c_str();
-  }
   const CropRect* crop_rect() const {
     return base::OptionalOrNullptr(crop_rect_);
   }
diff --git a/cc/paint/paint_op_buffer_serializer.cc b/cc/paint/paint_op_buffer_serializer.cc
index b3bf5f4c..065c66a4 100644
--- a/cc/paint/paint_op_buffer_serializer.cc
+++ b/cc/paint/paint_op_buffer_serializer.cc
@@ -25,7 +25,7 @@
   PaintOp::SerializeOptions* options_;
 };
 
-// Copied from LayerTreeResourceProvider.
+// Copied from viz::ClientResourceProvider.
 SkSurfaceProps ComputeSurfaceProps(bool can_use_lcd_text) {
   uint32_t flags = 0;
   // Use unknown pixel geometry to disable LCD text.
diff --git a/cc/raster/gpu_raster_buffer_provider.cc b/cc/raster/gpu_raster_buffer_provider.cc
index f4490955..e42d065 100644
--- a/cc/raster/gpu_raster_buffer_provider.cc
+++ b/cc/raster/gpu_raster_buffer_provider.cc
@@ -17,7 +17,7 @@
 #include "cc/paint/paint_recorder.h"
 #include "cc/raster/raster_source.h"
 #include "cc/raster/scoped_gpu_raster.h"
-#include "cc/resources/layer_tree_resource_provider.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/gpu/context_provider.h"
 #include "components/viz/common/gpu/raster_context_provider.h"
 #include "components/viz/common/gpu/texture_allocation.h"
@@ -71,7 +71,7 @@
     SkImageInfo n32Info = SkImageInfo::MakeN32Premul(
         intermediate_size.width(), intermediate_size.height());
     SkSurfaceProps surface_props =
-        LayerTreeResourceProvider::ScopedSkSurface::ComputeSurfaceProps(
+        viz::ClientResourceProvider::ScopedSkSurface::ComputeSurfaceProps(
             can_use_lcd_text);
     surface_ = SkSurface::MakeRenderTarget(
         context_provider->GrContext(), SkBudgeted::kNo, n32Info,
@@ -212,7 +212,7 @@
 
   {
     ScopedGrContextAccess gr_context_access(context_provider);
-    base::Optional<LayerTreeResourceProvider::ScopedSkSurface> scoped_surface;
+    base::Optional<viz::ClientResourceProvider::ScopedSkSurface> scoped_surface;
     base::Optional<ScopedSkSurfaceForUnpremultiplyAndDither>
         scoped_dither_surface;
     SkSurface* surface;
@@ -385,7 +385,7 @@
     // Save a sync token in the backing so that we always wait on it even if
     // this task is cancelled between being scheduled and running.
     backing->returned_sync_token =
-        LayerTreeResourceProvider::GenerateSyncTokenHelper(gl);
+        viz::ClientResourceProvider::GenerateSyncTokenHelper(gl);
 
     resource.set_gpu_backing(std::move(backing));
   }
@@ -528,7 +528,7 @@
   }
 
   // Generate sync token for cross context synchronization.
-  return LayerTreeResourceProvider::GenerateSyncTokenHelper(ri);
+  return viz::ClientResourceProvider::GenerateSyncTokenHelper(ri);
 }
 
 bool GpuRasterBufferProvider::ShouldUnpremultiplyAndDitherResource(
diff --git a/cc/raster/one_copy_raster_buffer_provider.cc b/cc/raster/one_copy_raster_buffer_provider.cc
index 90f94f6..96a6169 100644
--- a/cc/raster/one_copy_raster_buffer_provider.cc
+++ b/cc/raster/one_copy_raster_buffer_provider.cc
@@ -179,7 +179,7 @@
     // Save a sync token in the backing so that we always wait on it even if
     // this task is cancelled between being scheduled and running.
     backing->returned_sync_token =
-        LayerTreeResourceProvider::GenerateSyncTokenHelper(gl);
+        viz::ClientResourceProvider::GenerateSyncTokenHelper(gl);
 
     resource.set_gpu_backing(std::move(backing));
   }
@@ -487,7 +487,7 @@
 
   // Generate sync token on the worker context that will be sent to and waited
   // for by the display compositor before using the content generated here.
-  return LayerTreeResourceProvider::GenerateSyncTokenHelper(ri);
+  return viz::ClientResourceProvider::GenerateSyncTokenHelper(ri);
 }
 
 gfx::BufferUsage OneCopyRasterBufferProvider::StagingBufferUsage() const {
diff --git a/cc/raster/one_copy_raster_buffer_provider.h b/cc/raster/one_copy_raster_buffer_provider.h
index 3c823596..4f4a1e2 100644
--- a/cc/raster/one_copy_raster_buffer_provider.h
+++ b/cc/raster/one_copy_raster_buffer_provider.h
@@ -11,7 +11,7 @@
 #include "base/sequenced_task_runner.h"
 #include "cc/raster/raster_buffer_provider.h"
 #include "cc/raster/staging_buffer_pool.h"
-#include "cc/resources/layer_tree_resource_provider.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "gpu/command_buffer/common/sync_token.h"
 
 namespace gpu {
diff --git a/cc/raster/raster_buffer_provider_perftest.cc b/cc/raster/raster_buffer_provider_perftest.cc
index a91d3be..8310bad 100644
--- a/cc/raster/raster_buffer_provider_perftest.cc
+++ b/cc/raster/raster_buffer_provider_perftest.cc
@@ -16,11 +16,11 @@
 #include "cc/raster/raster_buffer_provider.h"
 #include "cc/raster/synchronous_task_graph_runner.h"
 #include "cc/raster/zero_copy_raster_buffer_provider.h"
-#include "cc/resources/layer_tree_resource_provider.h"
 #include "cc/resources/resource_pool.h"
 #include "cc/test/fake_layer_tree_frame_sink.h"
 #include "cc/test/fake_resource_provider.h"
 #include "cc/tiles/tile_task_manager.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/gpu/context_cache_controller.h"
 #include "components/viz/common/gpu/context_provider.h"
 #include "components/viz/common/resources/platform_color.h"
@@ -331,7 +331,7 @@
   scoped_refptr<viz::ContextProvider> compositor_context_provider_;
   scoped_refptr<viz::RasterContextProvider> worker_context_provider_;
   std::unique_ptr<FakeLayerTreeFrameSink> layer_tree_frame_sink_;
-  std::unique_ptr<LayerTreeResourceProvider> resource_provider_;
+  std::unique_ptr<viz::ClientResourceProvider> resource_provider_;
   scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
   std::unique_ptr<ResourcePool> resource_pool_;
   std::unique_ptr<SynchronousTaskGraphRunner> task_graph_runner_;
@@ -501,14 +501,14 @@
 
  private:
   void Create3dResourceProvider() {
-    resource_provider_ = FakeResourceProvider::CreateLayerTreeResourceProvider(
+    resource_provider_ = FakeResourceProvider::CreateClientResourceProvider(
         compositor_context_provider_.get());
   }
 
   void CreateSoftwareResourceProvider() {
     layer_tree_frame_sink_ = FakeLayerTreeFrameSink::CreateSoftware();
     resource_provider_ =
-        FakeResourceProvider::CreateLayerTreeResourceProvider(nullptr);
+        FakeResourceProvider::CreateClientResourceProvider(nullptr);
   }
 
   std::string TestModifierString() const {
@@ -571,7 +571,7 @@
  public:
   // Overridden from testing::Test:
   void SetUp() override {
-    resource_provider_ = FakeResourceProvider::CreateLayerTreeResourceProvider(
+    resource_provider_ = FakeResourceProvider::CreateClientResourceProvider(
         compositor_context_provider_.get());
     resource_pool_ = std::make_unique<ResourcePool>(
         resource_provider_.get(), compositor_context_provider_.get(),
diff --git a/cc/raster/raster_buffer_provider_unittest.cc b/cc/raster/raster_buffer_provider_unittest.cc
index f591948d..9484b66 100644
--- a/cc/raster/raster_buffer_provider_unittest.cc
+++ b/cc/raster/raster_buffer_provider_unittest.cc
@@ -24,12 +24,12 @@
 #include "cc/raster/one_copy_raster_buffer_provider.h"
 #include "cc/raster/synchronous_task_graph_runner.h"
 #include "cc/raster/zero_copy_raster_buffer_provider.h"
-#include "cc/resources/layer_tree_resource_provider.h"
 #include "cc/resources/resource_pool.h"
 #include "cc/test/fake_layer_tree_frame_sink.h"
 #include "cc/test/fake_raster_source.h"
 #include "cc/test/fake_resource_provider.h"
 #include "cc/tiles/tile_task_manager.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/resources/platform_color.h"
 #include "components/viz/test/test_context_provider.h"
 #include "components/viz/test/test_gpu_memory_buffer_manager.h"
@@ -297,14 +297,14 @@
     context_provider_->BindToCurrentThread();
     worker_context_provider_ = viz::TestContextProvider::CreateWorker();
     layer_tree_frame_sink_ = FakeLayerTreeFrameSink::Create3d();
-    resource_provider_ = FakeResourceProvider::CreateLayerTreeResourceProvider(
+    resource_provider_ = FakeResourceProvider::CreateClientResourceProvider(
         context_provider_.get());
   }
 
   void CreateSoftwareResourceProvider() {
     layer_tree_frame_sink_ = FakeLayerTreeFrameSink::CreateSoftware();
     resource_provider_ =
-        FakeResourceProvider::CreateLayerTreeResourceProvider(nullptr);
+        FakeResourceProvider::CreateClientResourceProvider(nullptr);
   }
 
   void OnTimeout() {
@@ -317,7 +317,7 @@
   scoped_refptr<viz::TestContextProvider> worker_context_provider_;
   std::unique_ptr<ResourcePool> pool_;
   std::unique_ptr<FakeLayerTreeFrameSink> layer_tree_frame_sink_;
-  std::unique_ptr<LayerTreeResourceProvider> resource_provider_;
+  std::unique_ptr<viz::ClientResourceProvider> resource_provider_;
   std::unique_ptr<TileTaskManager> tile_task_manager_;
   std::unique_ptr<RasterBufferProvider> raster_buffer_provider_;
   viz::TestGpuMemoryBufferManager gpu_memory_buffer_manager_;
diff --git a/cc/raster/zero_copy_raster_buffer_provider.cc b/cc/raster/zero_copy_raster_buffer_provider.cc
index fd2bb21..bcd13f2 100644
--- a/cc/raster/zero_copy_raster_buffer_provider.cc
+++ b/cc/raster/zero_copy_raster_buffer_provider.cc
@@ -11,8 +11,8 @@
 #include "base/macros.h"
 #include "base/trace_event/trace_event.h"
 #include "base/trace_event/trace_event_argument.h"
-#include "cc/resources/layer_tree_resource_provider.h"
 #include "cc/resources/resource_pool.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/gpu/context_provider.h"
 #include "components/viz/common/resources/platform_color.h"
 #include "components/viz/common/resources/resource_format_utils.h"
@@ -147,7 +147,7 @@
     gl->BindTexture(backing_->texture_target, 0);
 
     backing_->mailbox_sync_token =
-        LayerTreeResourceProvider::GenerateSyncTokenHelper(gl);
+        viz::ClientResourceProvider::GenerateSyncTokenHelper(gl);
     backing_->gpu_memory_buffer = std::move(gpu_memory_buffer_);
   }
 
diff --git a/cc/resources/layer_tree_resource_provider.cc b/cc/resources/layer_tree_resource_provider.cc
deleted file mode 100644
index df7c76c..0000000
--- a/cc/resources/layer_tree_resource_provider.cc
+++ /dev/null
@@ -1,307 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "cc/resources/layer_tree_resource_provider.h"
-
-#include "base/bits.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "build/build_config.h"
-#include "components/viz/common/gpu/context_provider.h"
-#include "components/viz/common/resources/resource_format_utils.h"
-#include "components/viz/common/resources/resource_sizes.h"
-#include "components/viz/common/resources/returned_resource.h"
-#include "gpu/GLES2/gl2extchromium.h"
-#include "gpu/command_buffer/client/context_support.h"
-#include "gpu/command_buffer/client/gles2_interface.h"
-#include "gpu/command_buffer/client/raster_interface.h"
-#include "gpu/command_buffer/common/capabilities.h"
-#include "third_party/skia/include/core/SkCanvas.h"
-
-using gpu::gles2::GLES2Interface;
-
-namespace cc {
-
-struct LayerTreeResourceProvider::ImportedResource {
-  viz::TransferableResource resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
-  int exported_count = 0;
-  bool marked_for_deletion = false;
-
-  gpu::SyncToken returned_sync_token;
-  bool returned_lost = false;
-
-  ImportedResource(viz::ResourceId id,
-                   const viz::TransferableResource& resource,
-                   std::unique_ptr<viz::SingleReleaseCallback> release_callback)
-      : resource(resource),
-        release_callback(std::move(release_callback)),
-        // If the resource is immediately deleted, it returns the same SyncToken
-        // it came with. The client may need to wait on that before deleting the
-        // backing or reusing it.
-        returned_sync_token(resource.mailbox_holder.sync_token) {
-    // Replace the |resource| id with the local id from this
-    // LayerTreeResourceProvider.
-    this->resource.id = id;
-  }
-  ~ImportedResource() = default;
-
-  ImportedResource(ImportedResource&&) = default;
-  ImportedResource& operator=(ImportedResource&&) = default;
-};
-
-LayerTreeResourceProvider::LayerTreeResourceProvider(
-    viz::ContextProvider* compositor_context_provider,
-    bool delegated_sync_points_required)
-    : delegated_sync_points_required_(delegated_sync_points_required),
-      compositor_context_provider_(compositor_context_provider) {
-  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-}
-
-LayerTreeResourceProvider::~LayerTreeResourceProvider() {
-  for (auto& pair : imported_resources_) {
-    ImportedResource& imported = pair.second;
-    // If the resource is exported we can't report when it can be used again
-    // once this class is destroyed, so consider the resource lost.
-    bool is_lost = imported.exported_count || imported.returned_lost;
-    imported.release_callback->Run(imported.returned_sync_token, is_lost);
-  }
-}
-
-gpu::SyncToken LayerTreeResourceProvider::GenerateSyncTokenHelper(
-    gpu::gles2::GLES2Interface* gl) {
-  DCHECK(gl);
-  gpu::SyncToken sync_token;
-  gl->GenUnverifiedSyncTokenCHROMIUM(sync_token.GetData());
-  DCHECK(sync_token.HasData() ||
-         gl->GetGraphicsResetStatusKHR() != GL_NO_ERROR);
-  return sync_token;
-}
-
-gpu::SyncToken LayerTreeResourceProvider::GenerateSyncTokenHelper(
-    gpu::raster::RasterInterface* ri) {
-  DCHECK(ri);
-  gpu::SyncToken sync_token;
-  ri->GenUnverifiedSyncTokenCHROMIUM(sync_token.GetData());
-  DCHECK(sync_token.HasData() ||
-         ri->GetGraphicsResetStatusKHR() != GL_NO_ERROR);
-  return sync_token;
-}
-
-void LayerTreeResourceProvider::PrepareSendToParent(
-    const std::vector<viz::ResourceId>& export_ids,
-    std::vector<viz::TransferableResource>* list,
-    viz::ContextProvider* context_provider) {
-  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-
-  // This function goes through the array multiple times, store the resources
-  // as pointers so we don't have to look up the resource id multiple times.
-  // Make sure the maps do not change while these vectors are alive or they
-  // will become invalid.
-  std::vector<ImportedResource*> imports;
-  imports.reserve(export_ids.size());
-  for (const viz::ResourceId id : export_ids) {
-    auto it = imported_resources_.find(id);
-    DCHECK(it != imported_resources_.end());
-    imports.push_back(&it->second);
-  }
-
-  // Lazily create any mailboxes and verify all unverified sync tokens.
-  std::vector<GLbyte*> unverified_sync_tokens;
-  if (delegated_sync_points_required_) {
-    for (ImportedResource* imported : imports) {
-      if (!imported->resource.is_software &&
-          !imported->resource.mailbox_holder.sync_token.verified_flush()) {
-        unverified_sync_tokens.push_back(
-            imported->resource.mailbox_holder.sync_token.GetData());
-      }
-    }
-  }
-
-  if (!unverified_sync_tokens.empty()) {
-    DCHECK(delegated_sync_points_required_);
-    DCHECK(context_provider);
-    context_provider->ContextGL()->VerifySyncTokensCHROMIUM(
-        unverified_sync_tokens.data(), unverified_sync_tokens.size());
-  }
-
-  for (ImportedResource* imported : imports) {
-    list->push_back(imported->resource);
-    imported->exported_count++;
-  }
-}
-
-void LayerTreeResourceProvider::ReceiveReturnsFromParent(
-    const std::vector<viz::ReturnedResource>& resources) {
-  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-
-  for (const viz::ReturnedResource& returned : resources) {
-    viz::ResourceId local_id = returned.id;
-
-    auto import_it = imported_resources_.find(local_id);
-    DCHECK(import_it != imported_resources_.end());
-    ImportedResource& imported = import_it->second;
-
-    DCHECK_GE(imported.exported_count, returned.count);
-    imported.exported_count -= returned.count;
-    imported.returned_lost |= returned.lost;
-
-    if (imported.exported_count)
-      continue;
-
-    if (returned.sync_token.HasData()) {
-      DCHECK(!imported.resource.is_software);
-      imported.returned_sync_token = returned.sync_token;
-    }
-
-    if (imported.marked_for_deletion) {
-      imported.release_callback->Run(imported.returned_sync_token,
-                                     imported.returned_lost);
-      imported_resources_.erase(import_it);
-    }
-  }
-}
-
-viz::ResourceId LayerTreeResourceProvider::ImportResource(
-    const viz::TransferableResource& resource,
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback) {
-  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-  viz::ResourceId id = next_id_++;
-  auto result = imported_resources_.emplace(
-      id, ImportedResource(id, resource, std::move(release_callback)));
-  DCHECK(result.second);  // If false, the id was already in the map.
-  return id;
-}
-
-void LayerTreeResourceProvider::RemoveImportedResource(viz::ResourceId id) {
-  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-  auto it = imported_resources_.find(id);
-  DCHECK(it != imported_resources_.end());
-  ImportedResource& imported = it->second;
-  imported.marked_for_deletion = true;
-  if (imported.exported_count == 0) {
-    imported.release_callback->Run(imported.returned_sync_token,
-                                   imported.returned_lost);
-    imported_resources_.erase(it);
-  }
-}
-
-bool LayerTreeResourceProvider::IsTextureFormatSupported(
-    viz::ResourceFormat format) const {
-  gpu::Capabilities caps;
-  if (compositor_context_provider_)
-    caps = compositor_context_provider_->ContextCapabilities();
-
-  switch (format) {
-    case viz::ALPHA_8:
-    case viz::RGBA_4444:
-    case viz::RGBA_8888:
-    case viz::RGB_565:
-    case viz::LUMINANCE_8:
-      return true;
-    case viz::BGRA_8888:
-      return caps.texture_format_bgra8888;
-    case viz::ETC1:
-      return caps.texture_format_etc1;
-    case viz::RED_8:
-      return caps.texture_rg;
-    case viz::R16_EXT:
-      return caps.texture_norm16;
-    case viz::LUMINANCE_F16:
-    case viz::RGBA_F16:
-      return caps.texture_half_float_linear;
-  }
-
-  NOTREACHED();
-  return false;
-}
-
-bool LayerTreeResourceProvider::IsRenderBufferFormatSupported(
-    viz::ResourceFormat format) const {
-  gpu::Capabilities caps;
-  if (compositor_context_provider_)
-    caps = compositor_context_provider_->ContextCapabilities();
-
-  switch (format) {
-    case viz::RGBA_4444:
-    case viz::RGBA_8888:
-    case viz::RGB_565:
-      return true;
-    case viz::BGRA_8888:
-      return caps.render_buffer_format_bgra8888;
-    case viz::RGBA_F16:
-      // TODO(ccameron): This will always return false on pixel tests, which
-      // makes it un-test-able until we upgrade Mesa.
-      // https://crbug.com/687720
-      return caps.texture_half_float_linear &&
-             caps.color_buffer_half_float_rgba;
-    case viz::LUMINANCE_8:
-    case viz::ALPHA_8:
-    case viz::RED_8:
-    case viz::ETC1:
-    case viz::LUMINANCE_F16:
-    case viz::R16_EXT:
-      // We don't currently render into these formats. If we need to render into
-      // these eventually, we should expand this logic.
-      return false;
-  }
-
-  NOTREACHED();
-  return false;
-}
-
-LayerTreeResourceProvider::ScopedSkSurface::ScopedSkSurface(
-    GrContext* gr_context,
-    GLuint texture_id,
-    GLenum texture_target,
-    const gfx::Size& size,
-    viz::ResourceFormat format,
-    bool can_use_lcd_text,
-    int msaa_sample_count) {
-  GrGLTextureInfo texture_info;
-  texture_info.fID = texture_id;
-  texture_info.fTarget = texture_target;
-  texture_info.fFormat = TextureStorageFormat(format);
-  GrBackendTexture backend_texture(size.width(), size.height(),
-                                   GrMipMapped::kNo, texture_info);
-  SkSurfaceProps surface_props = ComputeSurfaceProps(can_use_lcd_text);
-  // This type is used only for gpu raster, which implies gpu compositing.
-  bool gpu_compositing = true;
-  surface_ = SkSurface::MakeFromBackendTextureAsRenderTarget(
-      gr_context, backend_texture, kTopLeft_GrSurfaceOrigin, msaa_sample_count,
-      ResourceFormatToClosestSkColorType(gpu_compositing, format), nullptr,
-      &surface_props);
-}
-
-LayerTreeResourceProvider::ScopedSkSurface::~ScopedSkSurface() {
-  if (surface_)
-    surface_->prepareForExternalIO();
-}
-
-SkSurfaceProps LayerTreeResourceProvider::ScopedSkSurface::ComputeSurfaceProps(
-    bool can_use_lcd_text) {
-  uint32_t flags = 0;
-  // Use unknown pixel geometry to disable LCD text.
-  SkSurfaceProps surface_props(flags, kUnknown_SkPixelGeometry);
-  if (can_use_lcd_text) {
-    // LegacyFontHost will get LCD text and skia figures out what type to use.
-    surface_props =
-        SkSurfaceProps(flags, SkSurfaceProps::kLegacyFontHost_InitType);
-  }
-  return surface_props;
-}
-
-void LayerTreeResourceProvider::ValidateResource(viz::ResourceId id) const {
-  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-  DCHECK(id);
-  DCHECK(imported_resources_.find(id) != imported_resources_.end());
-}
-
-bool LayerTreeResourceProvider::InUseByConsumer(viz::ResourceId id) {
-  auto it = imported_resources_.find(id);
-  DCHECK(it != imported_resources_.end());
-  ImportedResource& imported = it->second;
-  return imported.exported_count > 0 || imported.returned_lost;
-}
-
-}  // namespace cc
diff --git a/cc/resources/layer_tree_resource_provider.h b/cc/resources/layer_tree_resource_provider.h
deleted file mode 100644
index b046ea9..0000000
--- a/cc/resources/layer_tree_resource_provider.h
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CC_RESOURCES_LAYER_TREE_RESOURCE_PROVIDER_H_
-#define CC_RESOURCES_LAYER_TREE_RESOURCE_PROVIDER_H_
-
-#include <vector>
-
-#include "base/threading/thread_checker.h"
-#include "cc/cc_export.h"
-#include "components/viz/common/display/renderer_settings.h"
-#include "components/viz/common/resources/release_callback.h"
-#include "components/viz/common/resources/resource_id.h"
-#include "components/viz/common/resources/resource_settings.h"
-#include "components/viz/common/resources/single_release_callback.h"
-#include "components/viz/common/resources/transferable_resource.h"
-#include "third_party/khronos/GLES2/gl2.h"
-#include "third_party/skia/include/core/SkSurface.h"
-#include "third_party/skia/include/gpu/GrBackendSurface.h"
-#include "third_party/skia/include/gpu/GrContext.h"
-
-namespace gpu {
-namespace gles2 {
-class GLES2Interface;
-}
-namespace raster {
-class RasterInterface;
-}
-}  // namespace gpu
-
-namespace viz {
-class ContextProvider;
-}  // namespace viz
-
-namespace cc {
-
-// This class is not thread-safe and can only be called from the thread it was
-// created on (in practice, the impl thread).
-class CC_EXPORT LayerTreeResourceProvider {
- public:
-  LayerTreeResourceProvider(viz::ContextProvider* compositor_context_provider,
-                            bool delegated_sync_points_required);
-  ~LayerTreeResourceProvider();
-
-  static gpu::SyncToken GenerateSyncTokenHelper(gpu::gles2::GLES2Interface* gl);
-  static gpu::SyncToken GenerateSyncTokenHelper(
-      gpu::raster::RasterInterface* ri);
-
-  // Prepares resources to be transfered to the parent, moving them to
-  // mailboxes and serializing meta-data into TransferableResources.
-  // Resources are not removed from the ResourceProvider, but are marked as
-  // "in use".
-  void PrepareSendToParent(
-      const std::vector<viz::ResourceId>& resource_ids,
-      std::vector<viz::TransferableResource>* transferable_resources,
-      viz::ContextProvider* context_provider);
-
-  // Receives resources from the parent, moving them from mailboxes. ResourceIds
-  // passed are in the child namespace.
-  // NOTE: if the sync_token is set on any viz::TransferableResource, this will
-  // wait on it.
-  void ReceiveReturnsFromParent(
-      const std::vector<viz::ReturnedResource>& transferable_resources);
-
-  // Receives a resource from an external client that can be used in compositor
-  // frames, via the returned ResourceId.
-  viz::ResourceId ImportResource(const viz::TransferableResource&,
-                                 std::unique_ptr<viz::SingleReleaseCallback>);
-  // Removes an imported resource, which will call the ReleaseCallback given
-  // originally, once the resource is no longer in use by any compositor frame.
-  void RemoveImportedResource(viz::ResourceId);
-
-  // Verify that the ResourceId is valid and is known to this class, for debug
-  // checks.
-  void ValidateResource(viz::ResourceId id) const;
-
-  // Checks whether a resource is in use by a consumer.
-  bool InUseByConsumer(viz::ResourceId id);
-
-  bool IsTextureFormatSupported(viz::ResourceFormat format) const;
-
-  // Returns true if the provided |format| can be used as a render buffer.
-  // Note that render buffer support implies texture support.
-  bool IsRenderBufferFormatSupported(viz::ResourceFormat format) const;
-
-  bool IsSoftware() const { return !compositor_context_provider_; }
-
-  class CC_EXPORT ScopedSkSurface {
-   public:
-    ScopedSkSurface(GrContext* gr_context,
-                    GLuint texture_id,
-                    GLenum texture_target,
-                    const gfx::Size& size,
-                    viz::ResourceFormat format,
-                    bool can_use_lcd_text,
-                    int msaa_sample_count);
-    ~ScopedSkSurface();
-
-    SkSurface* surface() const { return surface_.get(); }
-
-    static SkSurfaceProps ComputeSurfaceProps(bool can_use_lcd_text);
-
-   private:
-    sk_sp<SkSurface> surface_;
-
-    DISALLOW_COPY_AND_ASSIGN(ScopedSkSurface);
-  };
-
- private:
-  struct ImportedResource;
-
-  THREAD_CHECKER(thread_checker_);
-  const bool delegated_sync_points_required_;
-  viz::ContextProvider* const compositor_context_provider_;
-
-  base::flat_map<viz::ResourceId, ImportedResource> imported_resources_;
-  // The ResourceIds in LayerTreeResourceProvider start from 1 to avoid
-  // conflicts with id from viz::DisplayResourceProvider.
-  viz::ResourceId next_id_ = 1;
-
-  DISALLOW_COPY_AND_ASSIGN(LayerTreeResourceProvider);
-};
-
-}  // namespace cc
-
-#endif  // CC_RESOURCES_LAYER_TREE_RESOURCE_PROVIDER_H_
diff --git a/cc/resources/layer_tree_resource_provider_unittest.cc b/cc/resources/layer_tree_resource_provider_unittest.cc
deleted file mode 100644
index e78f363d..0000000
--- a/cc/resources/layer_tree_resource_provider_unittest.cc
+++ /dev/null
@@ -1,556 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "cc/resources/layer_tree_resource_provider.h"
-
-#include <memory>
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "components/viz/common/resources/returned_resource.h"
-#include "components/viz/common/resources/single_release_callback.h"
-#include "components/viz/test/test_context_provider.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using testing::_;
-
-namespace cc {
-namespace {
-
-class LayerTreeResourceProviderTest : public testing::TestWithParam<bool> {
- protected:
-  LayerTreeResourceProviderTest()
-      : use_gpu_(GetParam()),
-        context_provider_(viz::TestContextProvider::Create()),
-        bound_(context_provider_->BindToCurrentThread()),
-        provider_(std::make_unique<LayerTreeResourceProvider>(
-            use_gpu_ ? context_provider_.get() : nullptr,
-            delegated_sync_points_required_)) {
-    DCHECK_EQ(bound_, gpu::ContextResult::kSuccess);
-  }
-
-  gpu::Mailbox MailboxFromChar(char value) {
-    gpu::Mailbox mailbox;
-    memset(mailbox.name, value, sizeof(mailbox.name));
-    return mailbox;
-  }
-
-  gpu::SyncToken SyncTokenFromUInt(uint32_t value) {
-    return gpu::SyncToken(gpu::CommandBufferNamespace::GPU_IO,
-                          gpu::CommandBufferId::FromUnsafeValue(0x123), value);
-  }
-
-  viz::TransferableResource MakeTransferableResource(
-      bool gpu,
-      char mailbox_char,
-      uint32_t sync_token_value) {
-    viz::TransferableResource r;
-    r.id = mailbox_char;
-    r.is_software = !gpu;
-    r.filter = 456;
-    r.size = gfx::Size(10, 11);
-    r.mailbox_holder.mailbox = MailboxFromChar(mailbox_char);
-    if (gpu) {
-      r.mailbox_holder.sync_token = SyncTokenFromUInt(sync_token_value);
-      r.mailbox_holder.texture_target = 6;
-    }
-    return r;
-  }
-
-  void Shutdown() { provider_.reset(); }
-
-  bool use_gpu() const { return use_gpu_; }
-  LayerTreeResourceProvider& provider() const { return *provider_; }
-  viz::ContextProvider* context_provider() const {
-    return context_provider_.get();
-  }
-
-  void DestroyProvider() { provider_.reset(); }
-
- private:
-  bool use_gpu_;
-  scoped_refptr<viz::TestContextProvider> context_provider_;
-  gpu::ContextResult bound_;
-  bool delegated_sync_points_required_ = true;
-  std::unique_ptr<LayerTreeResourceProvider> provider_;
-};
-
-INSTANTIATE_TEST_CASE_P(LayerTreeResourceProviderTests,
-                        LayerTreeResourceProviderTest,
-                        ::testing::Values(false, true));
-
-class MockReleaseCallback {
- public:
-  MOCK_METHOD2(Released, void(const gpu::SyncToken& token, bool lost));
-};
-
-TEST_P(LayerTreeResourceProviderTest, TransferableResourceReleased) {
-  MockReleaseCallback release;
-  viz::TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
-  viz::ResourceId id = provider().ImportResource(
-      tran, viz::SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
-  // The local id is different.
-  EXPECT_NE(id, tran.id);
-
-  // The same SyncToken that was sent is returned when the resource was never
-  // exported. The SyncToken may be from any context, and the ReleaseCallback
-  // may need to wait on it before interacting with the resource on its context.
-  EXPECT_CALL(release, Released(tran.mailbox_holder.sync_token, false));
-  provider().RemoveImportedResource(id);
-}
-
-TEST_P(LayerTreeResourceProviderTest, TransferableResourceSendToParent) {
-  MockReleaseCallback release;
-  viz::TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
-  tran.buffer_format = gfx::BufferFormat::RGBX_8888;
-  viz::ResourceId id = provider().ImportResource(
-      tran, viz::SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
-
-  // Export the resource.
-  std::vector<viz::ResourceId> to_send = {id};
-  std::vector<viz::TransferableResource> exported;
-  provider().PrepareSendToParent(to_send, &exported, context_provider());
-  ASSERT_EQ(exported.size(), 1u);
-
-  // Exported resource matches except for the id which was mapped
-  // to the local ResourceProvider, and the sync token should be
-  // verified if it's a gpu resource.
-  gpu::SyncToken verified_sync_token = tran.mailbox_holder.sync_token;
-  if (!tran.is_software)
-    verified_sync_token.SetVerifyFlush();
-  EXPECT_EQ(exported[0].id, id);
-  EXPECT_EQ(exported[0].is_software, tran.is_software);
-  EXPECT_EQ(exported[0].filter, tran.filter);
-  EXPECT_EQ(exported[0].size, tran.size);
-  EXPECT_EQ(exported[0].mailbox_holder.mailbox, tran.mailbox_holder.mailbox);
-  EXPECT_EQ(exported[0].mailbox_holder.sync_token, verified_sync_token);
-  EXPECT_EQ(exported[0].mailbox_holder.texture_target,
-            tran.mailbox_holder.texture_target);
-  EXPECT_EQ(exported[0].buffer_format, tran.buffer_format);
-
-  // Exported resources are not released when removed, until the export returns.
-  EXPECT_CALL(release, Released(_, _)).Times(0);
-  provider().RemoveImportedResource(id);
-
-  // Return the resource, with a sync token if using gpu.
-  std::vector<viz::ReturnedResource> returned;
-  returned.push_back({});
-  returned.back().id = exported[0].id;
-  if (use_gpu())
-    returned.back().sync_token = SyncTokenFromUInt(31);
-  returned.back().count = 1;
-  returned.back().lost = false;
-
-  // The sync token is given to the ReleaseCallback.
-  EXPECT_CALL(release, Released(returned[0].sync_token, false));
-  provider().ReceiveReturnsFromParent(returned);
-}
-
-TEST_P(LayerTreeResourceProviderTest, TransferableResourceSendTwoToParent) {
-  viz::TransferableResource tran[] = {
-      MakeTransferableResource(use_gpu(), 'a', 15),
-      MakeTransferableResource(use_gpu(), 'b', 16)};
-  viz::ResourceId id1 = provider().ImportResource(
-      tran[0], viz::SingleReleaseCallback::Create(base::DoNothing()));
-  viz::ResourceId id2 = provider().ImportResource(
-      tran[1], viz::SingleReleaseCallback::Create(base::DoNothing()));
-
-  // Export the resource.
-  std::vector<viz::ResourceId> to_send = {id1, id2};
-  std::vector<viz::TransferableResource> exported;
-  provider().PrepareSendToParent(to_send, &exported, context_provider());
-  ASSERT_EQ(exported.size(), 2u);
-
-  // Exported resource matches except for the id which was mapped
-  // to the local ResourceProvider, and the sync token should be
-  // verified if it's a gpu resource.
-  for (int i = 0; i < 2; ++i) {
-    gpu::SyncToken verified_sync_token = tran[i].mailbox_holder.sync_token;
-    if (!tran[i].is_software)
-      verified_sync_token.SetVerifyFlush();
-    EXPECT_EQ(exported[i].id, to_send[i]);
-    EXPECT_EQ(exported[i].is_software, tran[i].is_software);
-    EXPECT_EQ(exported[i].filter, tran[i].filter);
-    EXPECT_EQ(exported[i].size, tran[i].size);
-    EXPECT_EQ(exported[i].mailbox_holder.mailbox,
-              tran[i].mailbox_holder.mailbox);
-    EXPECT_EQ(exported[i].mailbox_holder.sync_token, verified_sync_token);
-    EXPECT_EQ(exported[i].mailbox_holder.texture_target,
-              tran[i].mailbox_holder.texture_target);
-    EXPECT_EQ(exported[i].buffer_format, tran[i].buffer_format);
-  }
-}
-
-TEST_P(LayerTreeResourceProviderTest,
-       TransferableResourceSendToParentTwoTimes) {
-  viz::TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
-  viz::ResourceId id = provider().ImportResource(
-      tran, viz::SingleReleaseCallback::Create(base::DoNothing()));
-
-  // Export the resource.
-  std::vector<viz::ResourceId> to_send = {id};
-  std::vector<viz::TransferableResource> exported;
-  provider().PrepareSendToParent(to_send, &exported, context_provider());
-  ASSERT_EQ(exported.size(), 1u);
-  EXPECT_EQ(exported[0].id, id);
-
-  // Return the resource, with a sync token if using gpu.
-  std::vector<viz::ReturnedResource> returned;
-  returned.push_back({});
-  returned.back().id = exported[0].id;
-  if (use_gpu())
-    returned.back().sync_token = SyncTokenFromUInt(31);
-  returned.back().count = 1;
-  returned.back().lost = false;
-  provider().ReceiveReturnsFromParent(returned);
-
-  // Then export again, it still sends.
-  exported.clear();
-  provider().PrepareSendToParent(to_send, &exported, context_provider());
-  ASSERT_EQ(exported.size(), 1u);
-  EXPECT_EQ(exported[0].id, id);
-}
-
-TEST_P(LayerTreeResourceProviderTest,
-       TransferableResourceLostOnShutdownIfExported) {
-  MockReleaseCallback release;
-  viz::TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
-  viz::ResourceId id = provider().ImportResource(
-      tran, viz::SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
-
-  // Export the resource.
-  std::vector<viz::ResourceId> to_send = {id};
-  std::vector<viz::TransferableResource> exported;
-  provider().PrepareSendToParent(to_send, &exported, context_provider());
-
-  EXPECT_CALL(release, Released(_, true));
-  Shutdown();
-}
-
-TEST_P(LayerTreeResourceProviderTest, TransferableResourceRemovedAfterReturn) {
-  MockReleaseCallback release;
-  viz::TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
-  viz::ResourceId id = provider().ImportResource(
-      tran, viz::SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
-
-  // Export the resource.
-  std::vector<viz::ResourceId> to_send = {id};
-  std::vector<viz::TransferableResource> exported;
-  provider().PrepareSendToParent(to_send, &exported, context_provider());
-
-  // Return the resource. This does not release the resource back to
-  // the client.
-  std::vector<viz::ReturnedResource> returned;
-  returned.push_back({});
-  returned.back().id = exported[0].id;
-  if (use_gpu())
-    returned.back().sync_token = SyncTokenFromUInt(31);
-  returned.back().count = 1;
-  returned.back().lost = false;
-
-  EXPECT_CALL(release, Released(_, _)).Times(0);
-  provider().ReceiveReturnsFromParent(returned);
-
-  // Once removed, the resource is released.
-  EXPECT_CALL(release, Released(returned[0].sync_token, false));
-  provider().RemoveImportedResource(id);
-}
-
-TEST_P(LayerTreeResourceProviderTest, TransferableResourceExportedTwice) {
-  MockReleaseCallback release;
-  viz::TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
-  viz::ResourceId id = provider().ImportResource(
-      tran, viz::SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
-
-  // Export the resource once.
-  std::vector<viz::ResourceId> to_send = {id};
-  std::vector<viz::TransferableResource> exported;
-  provider().PrepareSendToParent(to_send, &exported, context_provider());
-
-  // Exported resources are not released when removed, until all exports are
-  // returned.
-  EXPECT_CALL(release, Released(_, _)).Times(0);
-  provider().RemoveImportedResource(id);
-
-  // Export the resource twice.
-  exported = {};
-  provider().PrepareSendToParent(to_send, &exported, context_provider());
-
-  // Return the resource the first time.
-  std::vector<viz::ReturnedResource> returned;
-  returned.push_back({});
-  returned.back().id = exported[0].id;
-  if (use_gpu())
-    returned.back().sync_token = SyncTokenFromUInt(31);
-  returned.back().count = 1;
-  returned.back().lost = false;
-  provider().ReceiveReturnsFromParent(returned);
-
-  // And a second time, with a different sync token. Now the ReleaseCallback can
-  // happen, using the latest sync token.
-  if (use_gpu())
-    returned.back().sync_token = SyncTokenFromUInt(47);
-  EXPECT_CALL(release, Released(returned[0].sync_token, false));
-  provider().ReceiveReturnsFromParent(returned);
-}
-
-TEST_P(LayerTreeResourceProviderTest, TransferableResourceReturnedTwiceAtOnce) {
-  MockReleaseCallback release;
-  viz::TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
-  viz::ResourceId id = provider().ImportResource(
-      tran, viz::SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
-
-  // Export the resource once.
-  std::vector<viz::ResourceId> to_send = {id};
-  std::vector<viz::TransferableResource> exported;
-  provider().PrepareSendToParent(to_send, &exported, context_provider());
-
-  // Exported resources are not released when removed, until all exports are
-  // returned.
-  EXPECT_CALL(release, Released(_, _)).Times(0);
-  provider().RemoveImportedResource(id);
-
-  // Export the resource twice.
-  exported = {};
-  provider().PrepareSendToParent(to_send, &exported, context_provider());
-
-  // Return both exports at once.
-  std::vector<viz::ReturnedResource> returned;
-  returned.push_back({});
-  returned.back().id = exported[0].id;
-  if (use_gpu())
-    returned.back().sync_token = SyncTokenFromUInt(31);
-  returned.back().count = 2;
-  returned.back().lost = false;
-
-  // When returned, the ReleaseCallback can happen, using the latest sync token.
-  EXPECT_CALL(release, Released(returned[0].sync_token, false));
-  provider().ReceiveReturnsFromParent(returned);
-}
-
-TEST_P(LayerTreeResourceProviderTest, TransferableResourceLostOnReturn) {
-  MockReleaseCallback release;
-  viz::TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
-  viz::ResourceId id = provider().ImportResource(
-      tran, viz::SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
-
-  // Export the resource once.
-  std::vector<viz::ResourceId> to_send = {id};
-  std::vector<viz::TransferableResource> exported;
-  provider().PrepareSendToParent(to_send, &exported, context_provider());
-
-  // Exported resources are not released when removed, until all exports are
-  // returned.
-  EXPECT_CALL(release, Released(_, _)).Times(0);
-  provider().RemoveImportedResource(id);
-
-  // Export the resource twice.
-  exported = {};
-  provider().PrepareSendToParent(to_send, &exported, context_provider());
-
-  // Return the resource the first time, not lost.
-  std::vector<viz::ReturnedResource> returned;
-  returned.push_back({});
-  returned.back().id = exported[0].id;
-  returned.back().count = 1;
-  returned.back().lost = false;
-  provider().ReceiveReturnsFromParent(returned);
-
-  // Return a second time, as lost. The viz::ReturnCallback should report it
-  // lost.
-  returned.back().lost = true;
-  EXPECT_CALL(release, Released(_, true));
-  provider().ReceiveReturnsFromParent(returned);
-}
-
-TEST_P(LayerTreeResourceProviderTest, TransferableResourceLostOnFirstReturn) {
-  MockReleaseCallback release;
-  viz::TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
-  viz::ResourceId id = provider().ImportResource(
-      tran, viz::SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
-
-  // Export the resource once.
-  std::vector<viz::ResourceId> to_send = {id};
-  std::vector<viz::TransferableResource> exported;
-  provider().PrepareSendToParent(to_send, &exported, context_provider());
-
-  // Exported resources are not released when removed, until all exports are
-  // returned.
-  EXPECT_CALL(release, Released(_, _)).Times(0);
-  provider().RemoveImportedResource(id);
-
-  // Export the resource twice.
-  exported = {};
-  provider().PrepareSendToParent(to_send, &exported, context_provider());
-
-  // Return the resource the first time, marked as lost.
-  std::vector<viz::ReturnedResource> returned;
-  returned.push_back({});
-  returned.back().id = exported[0].id;
-  returned.back().count = 1;
-  returned.back().lost = true;
-  provider().ReceiveReturnsFromParent(returned);
-
-  // Return a second time, not lost. The first lost signal should not be lost.
-  returned.back().lost = false;
-  EXPECT_CALL(release, Released(_, true));
-  provider().ReceiveReturnsFromParent(returned);
-}
-
-TEST_P(LayerTreeResourceProviderTest, ReturnedSyncTokensArePassedToClient) {
-  // SyncTokens are gpu-only.
-  if (!use_gpu())
-    return;
-
-  MockReleaseCallback release;
-
-  GLuint texture;
-  context_provider()->ContextGL()->GenTextures(1, &texture);
-  context_provider()->ContextGL()->BindTexture(GL_TEXTURE_2D, texture);
-  gpu::Mailbox mailbox;
-  context_provider()->ContextGL()->GenMailboxCHROMIUM(mailbox.name);
-  context_provider()->ContextGL()->ProduceTextureDirectCHROMIUM(texture,
-                                                                mailbox.name);
-  gpu::SyncToken sync_token;
-  context_provider()->ContextGL()->GenSyncTokenCHROMIUM(sync_token.GetData());
-
-  auto tran = viz::TransferableResource::MakeGL(mailbox, GL_LINEAR,
-                                                GL_TEXTURE_2D, sync_token);
-  viz::ResourceId resource = provider().ImportResource(
-      tran, viz::SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
-
-  EXPECT_TRUE(tran.mailbox_holder.sync_token.HasData());
-  // All the logic below assumes that the sync token releases are all positive.
-  EXPECT_LT(0u, tran.mailbox_holder.sync_token.release_count());
-
-  // Transfer the resource, expect the sync points to be consistent.
-  std::vector<viz::TransferableResource> list;
-  provider().PrepareSendToParent({resource}, &list, context_provider());
-  ASSERT_EQ(1u, list.size());
-  EXPECT_LE(sync_token.release_count(),
-            list[0].mailbox_holder.sync_token.release_count());
-  EXPECT_EQ(0, memcmp(mailbox.name, list[0].mailbox_holder.mailbox.name,
-                      sizeof(mailbox.name)));
-
-  // Make a new texture id from the mailbox.
-  context_provider()->ContextGL()->WaitSyncTokenCHROMIUM(
-      list[0].mailbox_holder.sync_token.GetConstData());
-  unsigned other_texture =
-      context_provider()->ContextGL()->CreateAndConsumeTextureCHROMIUM(
-          mailbox.name);
-  // Then delete it and make a new SyncToken.
-  context_provider()->ContextGL()->DeleteTextures(1, &other_texture);
-  context_provider()->ContextGL()->GenSyncTokenCHROMIUM(
-      list[0].mailbox_holder.sync_token.GetData());
-  EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData());
-
-  // Receive the resource, then delete it, expect the SyncTokens to be
-  // consistent.
-  provider().ReceiveReturnsFromParent(
-      viz::TransferableResource::ReturnResources(list));
-
-  gpu::SyncToken returned_sync_token;
-  EXPECT_CALL(release, Released(_, false))
-      .WillOnce(testing::SaveArg<0>(&returned_sync_token));
-  provider().RemoveImportedResource(resource);
-  EXPECT_GE(returned_sync_token.release_count(),
-            list[0].mailbox_holder.sync_token.release_count());
-}
-
-TEST_P(LayerTreeResourceProviderTest, LostResourcesAreReturnedLost) {
-  MockReleaseCallback release;
-  viz::TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
-  viz::ResourceId resource = provider().ImportResource(
-      tran, viz::SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
-
-  // Transfer the resource to the parent.
-  std::vector<viz::TransferableResource> list;
-  provider().PrepareSendToParent({resource}, &list, context_provider());
-  EXPECT_EQ(1u, list.size());
-
-  // Receive it back marked lost.
-  std::vector<viz::ReturnedResource> returned_to_child;
-  returned_to_child.push_back(list[0].ToReturnedResource());
-  returned_to_child.back().lost = true;
-  provider().ReceiveReturnsFromParent(returned_to_child);
-
-  // Delete the resource in the child. Expect the resource to be lost.
-  EXPECT_CALL(release, Released(_, true));
-  provider().RemoveImportedResource(resource);
-}
-
-TEST_P(LayerTreeResourceProviderTest, ShutdownPreservesLostState) {
-  MockReleaseCallback release;
-  viz::TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
-  viz::ResourceId resource = provider().ImportResource(
-      tran, viz::SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
-
-  // Transfer the resource to the parent.
-  std::vector<viz::TransferableResource> list;
-  provider().PrepareSendToParent({resource}, &list, context_provider());
-  EXPECT_EQ(1u, list.size());
-
-  // Receive it back marked lost.
-  std::vector<viz::ReturnedResource> returned_to_child;
-  returned_to_child.push_back(list[0].ToReturnedResource());
-  returned_to_child.back().lost = true;
-  provider().ReceiveReturnsFromParent(returned_to_child);
-
-  // Shutdown, and expect the resource to be lost..
-  EXPECT_CALL(release, Released(_, true));
-  DestroyProvider();
-}
-
-TEST_P(LayerTreeResourceProviderTest, ShutdownLosesExportedResources) {
-  MockReleaseCallback release;
-  viz::TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
-  viz::ResourceId resource = provider().ImportResource(
-      tran, viz::SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
-
-  // Transfer the resource to the parent.
-  std::vector<viz::TransferableResource> list;
-  provider().PrepareSendToParent({resource}, &list, context_provider());
-  EXPECT_EQ(1u, list.size());
-
-  // Destroy the LayerTreeResourceProvider, the resource is returned lost.
-  EXPECT_CALL(release, Released(_, true));
-  DestroyProvider();
-}
-
-TEST_P(LayerTreeResourceProviderTest, ShutdownDoesNotLoseUnexportedResources) {
-  MockReleaseCallback release;
-  viz::TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
-  viz::ResourceId resource = provider().ImportResource(
-      tran, viz::SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
-
-  // Transfer the resource to the parent.
-  std::vector<viz::TransferableResource> list;
-  provider().PrepareSendToParent({resource}, &list, context_provider());
-  EXPECT_EQ(1u, list.size());
-
-  // Receive it back.
-  provider().ReceiveReturnsFromParent(
-      viz::TransferableResource::ReturnResources(list));
-
-  // Destroy the LayerTreeResourceProvider, the resource is not lost.
-  EXPECT_CALL(release, Released(_, false));
-  DestroyProvider();
-}
-
-}  // namespace
-}  // namespace cc
diff --git a/cc/resources/resource_pool.cc b/cc/resources/resource_pool.cc
index a6d8b841..00cc4f7 100644
--- a/cc/resources/resource_pool.cc
+++ b/cc/resources/resource_pool.cc
@@ -20,7 +20,7 @@
 #include "base/trace_event/memory_dump_manager.h"
 #include "build/build_config.h"
 #include "cc/base/container_util.h"
-#include "cc/resources/layer_tree_resource_provider.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/gpu/context_provider.h"
 #include "components/viz/common/resources/resource_sizes.h"
 #include "gpu/command_buffer/client/gles2_interface.h"
@@ -50,8 +50,8 @@
     return false;
 
   // GetArea will crash on overflow, however all sizes in use are tile sizes.
-  // These are capped at LayerTreeResourceProvider::max_texture_size(), and will
-  // not overflow.
+  // These are capped at viz::ClientResourceProvider::max_texture_size(), and
+  // will not overflow.
   float actual_area = actual_size.GetArea();
   float requested_area = requested_size.GetArea();
   // Don't use a resource that is more than |kReuseThreshold| times the
@@ -67,7 +67,7 @@
 constexpr base::TimeDelta ResourcePool::kDefaultExpirationDelay;
 
 ResourcePool::ResourcePool(
-    LayerTreeResourceProvider* resource_provider,
+    viz::ClientResourceProvider* resource_provider,
     viz::ContextProvider* context_provider,
     scoped_refptr<base::SingleThreadTaskRunner> task_runner,
     const base::TimeDelta& expiration_delay,
@@ -571,7 +571,7 @@
 void ResourcePool::PoolResource::OnMemoryDump(
     base::trace_event::ProcessMemoryDump* pmd,
     int tracing_id,
-    const LayerTreeResourceProvider* resource_provider,
+    const viz::ClientResourceProvider* resource_provider,
     bool is_free) const {
   base::UnguessableToken shm_guid;
   base::trace_event::MemoryAllocatorDumpGuid backing_guid;
diff --git a/cc/resources/resource_pool.h b/cc/resources/resource_pool.h
index e401582..a708a73 100644
--- a/cc/resources/resource_pool.h
+++ b/cc/resources/resource_pool.h
@@ -34,11 +34,11 @@
 }
 
 namespace viz {
+class ClientResourceProvider;
 class ContextProvider;
 }
 
 namespace cc {
-class LayerTreeResourceProvider;
 
 class CC_EXPORT ResourcePool : public base::trace_event::MemoryDumpProvider,
                                public base::MemoryCoordinatorClient {
@@ -169,7 +169,7 @@
   // When holding gpu resources, the |context_provider| should be non-null,
   // and when holding software resources, it should be null. It is used for
   // consistency checking as well as for correctness.
-  ResourcePool(LayerTreeResourceProvider* resource_provider,
+  ResourcePool(viz::ClientResourceProvider* resource_provider,
                viz::ContextProvider* context_provider,
                scoped_refptr<base::SingleThreadTaskRunner> task_runner,
                const base::TimeDelta& expiration_delay,
@@ -286,7 +286,7 @@
 
     void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
                       int tracing_id,
-                      const LayerTreeResourceProvider* resource_provider,
+                      const viz::ClientResourceProvider* resource_provider,
                       bool is_free) const;
 
    private:
@@ -347,7 +347,7 @@
   bool HasEvictableResources() const;
   base::TimeTicks GetUsageTimeForLRUResource() const;
 
-  LayerTreeResourceProvider* const resource_provider_;
+  viz::ClientResourceProvider* const resource_provider_;
   viz::ContextProvider* const context_provider_;
   const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
   const base::TimeDelta resource_expiration_delay_;
diff --git a/cc/resources/resource_pool_unittest.cc b/cc/resources/resource_pool_unittest.cc
index 509a5a27..154b7a8 100644
--- a/cc/resources/resource_pool_unittest.cc
+++ b/cc/resources/resource_pool_unittest.cc
@@ -22,7 +22,7 @@
   void SetUp() override {
     context_provider_ = viz::TestContextProvider::Create();
     context_provider_->BindToCurrentThread();
-    resource_provider_ = FakeResourceProvider::CreateLayerTreeResourceProvider(
+    resource_provider_ = FakeResourceProvider::CreateClientResourceProvider(
         context_provider_.get());
     task_runner_ = base::ThreadTaskRunnerHandle::Get();
     resource_pool_ = std::make_unique<ResourcePool>(
@@ -54,7 +54,7 @@
 
   viz::TestSharedBitmapManager shared_bitmap_manager_;
   scoped_refptr<viz::TestContextProvider> context_provider_;
-  std::unique_ptr<LayerTreeResourceProvider> resource_provider_;
+  std::unique_ptr<viz::ClientResourceProvider> resource_provider_;
   scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
   std::unique_ptr<ResourcePool> resource_pool_;
 };
diff --git a/cc/resources/video_resource_updater.cc b/cc/resources/video_resource_updater.cc
deleted file mode 100644
index 5004919..0000000
--- a/cc/resources/video_resource_updater.cc
+++ /dev/null
@@ -1,1155 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "cc/resources/video_resource_updater.h"
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <algorithm>
-#include <string>
-
-#include "base/atomic_sequence_num.h"
-#include "base/bind.h"
-#include "base/bit_cast.h"
-#include "base/memory/shared_memory.h"
-#include "base/strings/stringprintf.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "base/trace_event/memory_dump_manager.h"
-#include "base/trace_event/process_memory_dump.h"
-#include "base/trace_event/trace_event.h"
-#include "cc/base/math_util.h"
-#include "cc/paint/skia_paint_canvas.h"
-#include "cc/resources/layer_tree_resource_provider.h"
-#include "components/viz/common/gpu/context_provider.h"
-#include "components/viz/common/gpu/texture_allocation.h"
-#include "components/viz/common/quads/render_pass.h"
-#include "components/viz/common/quads/stream_video_draw_quad.h"
-#include "components/viz/common/quads/texture_draw_quad.h"
-#include "components/viz/common/quads/yuv_video_draw_quad.h"
-#include "components/viz/common/resources/bitmap_allocation.h"
-#include "components/viz/common/resources/resource_sizes.h"
-#include "components/viz/common/resources/shared_bitmap_reporter.h"
-#include "gpu/GLES2/gl2extchromium.h"
-#include "gpu/command_buffer/client/context_support.h"
-#include "gpu/command_buffer/client/gles2_interface.h"
-#include "media/base/video_frame.h"
-#include "media/renderers/paint_canvas_video_renderer.h"
-#include "media/video/half_float_maker.h"
-#include "third_party/khronos/GLES2/gl2.h"
-#include "third_party/khronos/GLES2/gl2ext.h"
-#include "third_party/libyuv/include/libyuv.h"
-#include "third_party/skia/include/core/SkCanvas.h"
-#include "ui/gfx/geometry/size_conversions.h"
-#include "ui/gfx/skia_util.h"
-#include "ui/gl/gl_enums.h"
-#include "ui/gl/trace_util.h"
-
-namespace cc {
-namespace {
-
-// Generates process-unique IDs to use for tracing video resources.
-base::AtomicSequenceNumber g_next_video_resource_updater_id;
-
-VideoFrameResourceType ExternalResourceTypeForHardwarePlanes(
-    media::VideoPixelFormat format,
-    GLuint target,
-    int num_textures,
-    gfx::BufferFormat* buffer_format,
-    bool use_stream_video_draw_quad) {
-  *buffer_format = gfx::BufferFormat::RGBA_8888;
-  switch (format) {
-    case media::PIXEL_FORMAT_ARGB:
-    case media::PIXEL_FORMAT_XRGB:
-    case media::PIXEL_FORMAT_RGB32:
-    case media::PIXEL_FORMAT_UYVY:
-      switch (target) {
-        case GL_TEXTURE_EXTERNAL_OES:
-          if (use_stream_video_draw_quad)
-            return VideoFrameResourceType::STREAM_TEXTURE;
-          FALLTHROUGH;
-        case GL_TEXTURE_2D:
-          return (format == media::PIXEL_FORMAT_XRGB)
-                     ? VideoFrameResourceType::RGB
-                     : VideoFrameResourceType::RGBA_PREMULTIPLIED;
-        case GL_TEXTURE_RECTANGLE_ARB:
-          return VideoFrameResourceType::RGB;
-        default:
-          NOTREACHED();
-          break;
-      }
-      break;
-    case media::PIXEL_FORMAT_I420:
-      return VideoFrameResourceType::YUV;
-    case media::PIXEL_FORMAT_NV12:
-      DCHECK(target == GL_TEXTURE_EXTERNAL_OES || target == GL_TEXTURE_2D ||
-             target == GL_TEXTURE_RECTANGLE_ARB)
-          << "Unsupported target " << gl::GLEnums::GetStringEnum(target);
-      // Single plane textures can be sampled as RGB.
-      if (num_textures > 1)
-        return VideoFrameResourceType::YUV;
-
-      *buffer_format = gfx::BufferFormat::YUV_420_BIPLANAR;
-      return VideoFrameResourceType::RGB;
-    case media::PIXEL_FORMAT_YV12:
-    case media::PIXEL_FORMAT_I422:
-    case media::PIXEL_FORMAT_I444:
-    case media::PIXEL_FORMAT_I420A:
-    case media::PIXEL_FORMAT_NV21:
-    case media::PIXEL_FORMAT_YUY2:
-    case media::PIXEL_FORMAT_RGB24:
-    case media::PIXEL_FORMAT_MJPEG:
-    case media::PIXEL_FORMAT_MT21:
-    case media::PIXEL_FORMAT_YUV420P9:
-    case media::PIXEL_FORMAT_YUV422P9:
-    case media::PIXEL_FORMAT_YUV444P9:
-    case media::PIXEL_FORMAT_YUV420P10:
-    case media::PIXEL_FORMAT_YUV422P10:
-    case media::PIXEL_FORMAT_YUV444P10:
-    case media::PIXEL_FORMAT_YUV420P12:
-    case media::PIXEL_FORMAT_YUV422P12:
-    case media::PIXEL_FORMAT_YUV444P12:
-    case media::PIXEL_FORMAT_Y16:
-    case media::PIXEL_FORMAT_UNKNOWN:
-      break;
-  }
-  return VideoFrameResourceType::NONE;
-}
-
-class SyncTokenClientImpl : public media::VideoFrame::SyncTokenClient {
- public:
-  SyncTokenClientImpl(gpu::gles2::GLES2Interface* gl, gpu::SyncToken sync_token)
-      : gl_(gl), sync_token_(sync_token) {}
-  ~SyncTokenClientImpl() override = default;
-
-  void GenerateSyncToken(gpu::SyncToken* sync_token) override {
-    if (sync_token_.HasData()) {
-      *sync_token = sync_token_;
-    } else {
-      gl_->GenSyncTokenCHROMIUM(sync_token->GetData());
-    }
-  }
-
-  void WaitSyncToken(const gpu::SyncToken& sync_token) override {
-    if (sync_token.HasData()) {
-      gl_->WaitSyncTokenCHROMIUM(sync_token.GetConstData());
-      if (sync_token_.HasData() && sync_token_ != sync_token) {
-        gl_->WaitSyncTokenCHROMIUM(sync_token_.GetConstData());
-        sync_token_.Clear();
-      }
-    }
-  }
-
- private:
-  gpu::gles2::GLES2Interface* gl_;
-  gpu::SyncToken sync_token_;
-  DISALLOW_COPY_AND_ASSIGN(SyncTokenClientImpl);
-};
-
-// Sync tokens passed downstream to the compositor can be unverified.
-void GenerateCompositorSyncToken(gpu::gles2::GLES2Interface* gl,
-                                 gpu::SyncToken* sync_token) {
-  gl->GenUnverifiedSyncTokenCHROMIUM(sync_token->GetData());
-}
-
-// For frames that we receive in software format, determine the dimensions of
-// each plane in the frame.
-gfx::Size SoftwarePlaneDimension(media::VideoFrame* input_frame,
-                                 bool software_compositor,
-                                 size_t plane_index) {
-  gfx::Size coded_size = input_frame->coded_size();
-  if (software_compositor)
-    return coded_size;
-
-  int plane_width = media::VideoFrame::Columns(
-      plane_index, input_frame->format(), coded_size.width());
-  int plane_height = media::VideoFrame::Rows(plane_index, input_frame->format(),
-                                             coded_size.height());
-  return gfx::Size(plane_width, plane_height);
-}
-
-}  // namespace
-
-VideoFrameExternalResources::VideoFrameExternalResources() = default;
-VideoFrameExternalResources::~VideoFrameExternalResources() = default;
-
-VideoFrameExternalResources::VideoFrameExternalResources(
-    VideoFrameExternalResources&& other) = default;
-VideoFrameExternalResources& VideoFrameExternalResources::operator=(
-    VideoFrameExternalResources&& other) = default;
-
-// Resource for a video plane allocated and owned by VideoResourceUpdater. There
-// can be multiple plane resources for each video frame, depending on the
-// format. These will be reused when possible.
-class VideoResourceUpdater::PlaneResource {
- public:
-  PlaneResource(uint32_t plane_resource_id,
-                const gfx::Size& resource_size,
-                viz::ResourceFormat resource_format,
-                bool is_software)
-      : plane_resource_id_(plane_resource_id),
-        resource_size_(resource_size),
-        resource_format_(resource_format),
-        is_software_(is_software) {}
-  virtual ~PlaneResource() = default;
-
-  // Casts |this| to SoftwarePlaneResource for software compositing.
-  SoftwarePlaneResource* AsSoftware();
-
-  // Casts |this| to HardwarePlaneResource for GPU compositing.
-  HardwarePlaneResource* AsHardware();
-
-  // Returns true if this resource matches the unique identifiers of another
-  // VideoFrame resource.
-  bool Matches(int unique_frame_id, size_t plane_index) {
-    return has_unique_frame_id_and_plane_index_ &&
-           unique_frame_id_ == unique_frame_id && plane_index_ == plane_index;
-  }
-
-  // Sets the unique identifiers for this resource, may only be called when
-  // there is a single reference to the resource (i.e. |ref_count_| == 1).
-  void SetUniqueId(int unique_frame_id, size_t plane_index) {
-    DCHECK_EQ(ref_count_, 1);
-    plane_index_ = plane_index;
-    unique_frame_id_ = unique_frame_id;
-    has_unique_frame_id_and_plane_index_ = true;
-  }
-
-  // Accessors for resource identifiers provided at construction time.
-  uint32_t plane_resource_id() const { return plane_resource_id_; }
-  const gfx::Size& resource_size() const { return resource_size_; }
-  viz::ResourceFormat resource_format() const { return resource_format_; }
-
-  // Various methods for managing references. See |ref_count_| for details.
-  void add_ref() { ++ref_count_; }
-  void remove_ref() { --ref_count_; }
-  void clear_refs() { ref_count_ = 0; }
-  bool has_refs() const { return ref_count_ != 0; }
-
- private:
-  const uint32_t plane_resource_id_;
-  const gfx::Size resource_size_;
-  const viz::ResourceFormat resource_format_;
-  const bool is_software_;
-
-  // The number of times this resource has been imported vs number of times this
-  // resource has returned.
-  int ref_count_ = 0;
-
-  // These two members are used for identifying the data stored in this
-  // resource; they uniquely identify a media::VideoFrame plane.
-  int unique_frame_id_ = 0;
-  size_t plane_index_ = 0u;
-  // Indicates if the above two members have been set or not.
-  bool has_unique_frame_id_and_plane_index_ = false;
-
-  DISALLOW_COPY_AND_ASSIGN(PlaneResource);
-};
-
-class VideoResourceUpdater::SoftwarePlaneResource
-    : public VideoResourceUpdater::PlaneResource {
- public:
-  SoftwarePlaneResource(uint32_t plane_resource_id,
-                        const gfx::Size& size,
-                        viz::SharedBitmapReporter* shared_bitmap_reporter)
-      : PlaneResource(plane_resource_id,
-                      size,
-                      viz::ResourceFormat::RGBA_8888,
-                      /*is_software=*/true),
-        shared_bitmap_reporter_(shared_bitmap_reporter),
-        shared_bitmap_id_(viz::SharedBitmap::GenerateId()) {
-    DCHECK(shared_bitmap_reporter_);
-
-    // Allocate SharedMemory and notify display compositor of the allocation.
-    shared_memory_ = viz::bitmap_allocation::AllocateMappedBitmap(
-        resource_size(), viz::ResourceFormat::RGBA_8888);
-    mojo::ScopedSharedBufferHandle handle =
-        viz::bitmap_allocation::DuplicateAndCloseMappedBitmap(
-            shared_memory_.get(), resource_size(),
-            viz::ResourceFormat::RGBA_8888);
-    shared_bitmap_reporter_->DidAllocateSharedBitmap(std::move(handle),
-                                                     shared_bitmap_id_);
-  }
-  ~SoftwarePlaneResource() override {
-    shared_bitmap_reporter_->DidDeleteSharedBitmap(shared_bitmap_id_);
-  }
-
-  const viz::SharedBitmapId& shared_bitmap_id() const {
-    return shared_bitmap_id_;
-  }
-  void* pixels() { return shared_memory_->memory(); }
-
-  // Returns a memory dump GUID consistent across processes.
-  base::UnguessableToken GetSharedMemoryGuid() const {
-    return shared_memory_->mapped_id();
-  }
-
- private:
-  viz::SharedBitmapReporter* const shared_bitmap_reporter_;
-  const viz::SharedBitmapId shared_bitmap_id_;
-  std::unique_ptr<base::SharedMemory> shared_memory_;
-
-  DISALLOW_COPY_AND_ASSIGN(SoftwarePlaneResource);
-};
-
-class VideoResourceUpdater::HardwarePlaneResource
-    : public VideoResourceUpdater::PlaneResource {
- public:
-  HardwarePlaneResource(uint32_t plane_resource_id,
-                        const gfx::Size& size,
-                        viz::ResourceFormat format,
-                        viz::ContextProvider* context_provider,
-                        viz::TextureAllocation allocation)
-      : PlaneResource(plane_resource_id, size, format, /*is_software=*/false),
-        context_provider_(context_provider),
-        mailbox_(gpu::Mailbox::Generate()),
-        allocation_(std::move(allocation)) {
-    DCHECK(context_provider_);
-    context_provider_->ContextGL()->ProduceTextureDirectCHROMIUM(
-        allocation_.texture_id, mailbox_.name);
-  }
-  ~HardwarePlaneResource() override {
-    context_provider_->ContextGL()->DeleteTextures(1, &allocation_.texture_id);
-  }
-
-  const gpu::Mailbox& mailbox() const { return mailbox_; }
-  GLuint texture_id() const { return allocation_.texture_id; }
-  GLenum texture_target() const { return allocation_.texture_target; }
-  bool overlay_candidate() const { return allocation_.overlay_candidate; }
-
- private:
-  viz::ContextProvider* const context_provider_;
-  const gpu::Mailbox mailbox_;
-  const viz::TextureAllocation allocation_;
-
-  DISALLOW_COPY_AND_ASSIGN(HardwarePlaneResource);
-};
-
-VideoResourceUpdater::SoftwarePlaneResource*
-VideoResourceUpdater::PlaneResource::AsSoftware() {
-  DCHECK(is_software_);
-  return static_cast<SoftwarePlaneResource*>(this);
-}
-
-VideoResourceUpdater::HardwarePlaneResource*
-VideoResourceUpdater::PlaneResource::AsHardware() {
-  DCHECK(!is_software_);
-  return static_cast<HardwarePlaneResource*>(this);
-}
-
-VideoResourceUpdater::VideoResourceUpdater(
-    viz::ContextProvider* context_provider,
-    viz::SharedBitmapReporter* shared_bitmap_reporter,
-    LayerTreeResourceProvider* resource_provider,
-    bool use_stream_video_draw_quad,
-    bool use_gpu_memory_buffer_resources,
-    bool use_r16_texture,
-    int max_resource_size)
-    : context_provider_(context_provider),
-      shared_bitmap_reporter_(shared_bitmap_reporter),
-      resource_provider_(resource_provider),
-      use_stream_video_draw_quad_(use_stream_video_draw_quad),
-      use_gpu_memory_buffer_resources_(use_gpu_memory_buffer_resources),
-      use_r16_texture_(use_r16_texture),
-      max_resource_size_(max_resource_size),
-      tracing_id_(g_next_video_resource_updater_id.GetNext()),
-      weak_ptr_factory_(this) {
-  DCHECK(context_provider_ || shared_bitmap_reporter_);
-
-  base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
-      this, "cc::VideoResourceUpdater", base::ThreadTaskRunnerHandle::Get());
-}
-
-VideoResourceUpdater::~VideoResourceUpdater() {
-  base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider(
-      this);
-}
-
-void VideoResourceUpdater::ObtainFrameResources(
-    scoped_refptr<media::VideoFrame> video_frame) {
-  VideoFrameExternalResources external_resources =
-      CreateExternalResourcesFromVideoFrame(video_frame);
-  frame_resource_type_ = external_resources.type;
-
-  if (external_resources.type == VideoFrameResourceType::YUV) {
-    frame_resource_offset_ = external_resources.offset;
-    frame_resource_multiplier_ = external_resources.multiplier;
-    frame_bits_per_channel_ = external_resources.bits_per_channel;
-  }
-
-  DCHECK_EQ(external_resources.resources.size(),
-            external_resources.release_callbacks.size());
-  for (size_t i = 0; i < external_resources.resources.size(); ++i) {
-    viz::ResourceId resource_id = resource_provider_->ImportResource(
-        external_resources.resources[i],
-        viz::SingleReleaseCallback::Create(
-            std::move(external_resources.release_callbacks[i])));
-    frame_resources_.push_back(
-        {resource_id, external_resources.resources[i].size});
-  }
-  TRACE_EVENT_INSTANT1("media", "VideoResourceUpdater::ObtainFrameResources",
-                       TRACE_EVENT_SCOPE_THREAD, "Timestamp",
-                       video_frame->timestamp().InMicroseconds());
-}
-
-void VideoResourceUpdater::ReleaseFrameResources() {
-  for (auto& frame_resource : frame_resources_)
-    resource_provider_->RemoveImportedResource(frame_resource.id);
-  frame_resources_.clear();
-}
-
-void VideoResourceUpdater::AppendQuads(viz::RenderPass* render_pass,
-                                       scoped_refptr<media::VideoFrame> frame,
-                                       gfx::Transform transform,
-                                       gfx::Size rotated_size,
-                                       gfx::Rect visible_layer_rect,
-                                       gfx::Rect clip_rect,
-                                       bool is_clipped,
-                                       bool contents_opaque,
-                                       float draw_opacity,
-                                       int sorting_context_id,
-                                       gfx::Rect visible_quad_rect) {
-  DCHECK(frame.get());
-
-  viz::SharedQuadState* shared_quad_state =
-      render_pass->CreateAndAppendSharedQuadState();
-  gfx::Rect rotated_size_rect(rotated_size);
-  shared_quad_state->SetAll(
-      transform, rotated_size_rect, visible_layer_rect, clip_rect, is_clipped,
-      contents_opaque, draw_opacity, SkBlendMode::kSrcOver, sorting_context_id);
-
-  gfx::Rect quad_rect(rotated_size);
-  gfx::Rect visible_rect = frame->visible_rect();
-  bool needs_blending = !contents_opaque;
-  gfx::Size coded_size = frame->coded_size();
-
-  const float tex_width_scale =
-      static_cast<float>(visible_rect.width()) / coded_size.width();
-  const float tex_height_scale =
-      static_cast<float>(visible_rect.height()) / coded_size.height();
-
-  switch (frame_resource_type_) {
-    case VideoFrameResourceType::YUV: {
-      const gfx::Size ya_tex_size = coded_size;
-
-      int u_width = media::VideoFrame::Columns(
-          media::VideoFrame::kUPlane, frame->format(), coded_size.width());
-      int u_height = media::VideoFrame::Rows(
-          media::VideoFrame::kUPlane, frame->format(), coded_size.height());
-      gfx::Size uv_tex_size(u_width, u_height);
-
-      if (frame->HasTextures()) {
-        if (frame->format() == media::PIXEL_FORMAT_NV12) {
-          DCHECK_EQ(2u, frame_resources_.size());
-        } else {
-          DCHECK_EQ(media::PIXEL_FORMAT_I420, frame->format());
-          DCHECK_EQ(3u,
-                    frame_resources_.size());  // Alpha is not supported yet.
-        }
-      } else {
-        DCHECK_GE(frame_resources_.size(), 3u);
-        DCHECK(frame_resources_.size() <= 3 ||
-               ya_tex_size == media::VideoFrame::PlaneSize(
-                                  frame->format(), media::VideoFrame::kAPlane,
-                                  coded_size));
-      }
-
-      // Compute the UV sub-sampling factor based on the ratio between
-      // |ya_tex_size| and |uv_tex_size|.
-      float uv_subsampling_factor_x =
-          static_cast<float>(ya_tex_size.width()) / uv_tex_size.width();
-      float uv_subsampling_factor_y =
-          static_cast<float>(ya_tex_size.height()) / uv_tex_size.height();
-      gfx::RectF ya_tex_coord_rect(visible_rect);
-      gfx::RectF uv_tex_coord_rect(
-          visible_rect.x() / uv_subsampling_factor_x,
-          visible_rect.y() / uv_subsampling_factor_y,
-          visible_rect.width() / uv_subsampling_factor_x,
-          visible_rect.height() / uv_subsampling_factor_y);
-
-      auto* yuv_video_quad =
-          render_pass->CreateAndAppendDrawQuad<viz::YUVVideoDrawQuad>();
-      yuv_video_quad->SetNew(
-          shared_quad_state, quad_rect, visible_quad_rect, needs_blending,
-          ya_tex_coord_rect, uv_tex_coord_rect, ya_tex_size, uv_tex_size,
-          frame_resources_[0].id, frame_resources_[1].id,
-          frame_resources_.size() > 2 ? frame_resources_[2].id
-                                      : frame_resources_[1].id,
-          frame_resources_.size() > 3 ? frame_resources_[3].id : 0,
-          frame->ColorSpace(), frame_resource_offset_,
-          frame_resource_multiplier_, frame_bits_per_channel_);
-      yuv_video_quad->require_overlay =
-          frame->metadata()->IsTrue(media::VideoFrameMetadata::REQUIRE_OVERLAY);
-      yuv_video_quad->is_protected_video =
-          frame->metadata()->IsTrue(media::VideoFrameMetadata::PROTECTED_VIDEO);
-
-      for (viz::ResourceId resource_id : yuv_video_quad->resources) {
-        resource_provider_->ValidateResource(resource_id);
-      }
-      break;
-    }
-    case VideoFrameResourceType::RGBA:
-    case VideoFrameResourceType::RGBA_PREMULTIPLIED:
-    case VideoFrameResourceType::RGB: {
-      DCHECK_EQ(frame_resources_.size(), 1u);
-      if (frame_resources_.size() < 1u)
-        break;
-      bool premultiplied_alpha =
-          frame_resource_type_ == VideoFrameResourceType::RGBA_PREMULTIPLIED;
-      gfx::PointF uv_top_left(0.f, 0.f);
-      gfx::PointF uv_bottom_right(tex_width_scale, tex_height_scale);
-      float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
-      bool flipped = false;
-      bool nearest_neighbor = false;
-      auto* texture_quad =
-          render_pass->CreateAndAppendDrawQuad<viz::TextureDrawQuad>();
-      texture_quad->SetNew(shared_quad_state, quad_rect, visible_quad_rect,
-                           needs_blending, frame_resources_[0].id,
-                           premultiplied_alpha, uv_top_left, uv_bottom_right,
-                           SK_ColorTRANSPARENT, opacity, flipped,
-                           nearest_neighbor, false);
-      texture_quad->set_resource_size_in_pixels(coded_size);
-      for (viz::ResourceId resource_id : texture_quad->resources) {
-        resource_provider_->ValidateResource(resource_id);
-      }
-      break;
-    }
-    case VideoFrameResourceType::STREAM_TEXTURE: {
-      DCHECK_EQ(frame_resources_.size(), 1u);
-      if (frame_resources_.size() < 1u)
-        break;
-      gfx::Transform scale;
-      scale.Scale(tex_width_scale, tex_height_scale);
-      auto* stream_video_quad =
-          render_pass->CreateAndAppendDrawQuad<viz::StreamVideoDrawQuad>();
-      stream_video_quad->SetNew(shared_quad_state, quad_rect, visible_quad_rect,
-                                needs_blending, frame_resources_[0].id,
-                                frame_resources_[0].size_in_pixels, scale);
-      for (viz::ResourceId resource_id : stream_video_quad->resources) {
-        resource_provider_->ValidateResource(resource_id);
-      }
-      break;
-    }
-    case VideoFrameResourceType::NONE:
-      NOTIMPLEMENTED();
-      break;
-  }
-}
-
-VideoFrameExternalResources
-VideoResourceUpdater::CreateExternalResourcesFromVideoFrame(
-    scoped_refptr<media::VideoFrame> video_frame) {
-  if (video_frame->format() == media::PIXEL_FORMAT_UNKNOWN)
-    return VideoFrameExternalResources();
-  DCHECK(video_frame->HasTextures() || video_frame->IsMappable());
-  if (video_frame->HasTextures())
-    return CreateForHardwarePlanes(std::move(video_frame));
-  else
-    return CreateForSoftwarePlanes(std::move(video_frame));
-}
-
-viz::ResourceFormat VideoResourceUpdater::YuvResourceFormat(
-    int bits_per_channel) {
-  DCHECK(context_provider_);
-  const auto& caps = context_provider_->ContextCapabilities();
-  if (caps.disable_one_component_textures)
-    return viz::RGBA_8888;
-  if (bits_per_channel <= 8)
-    return caps.texture_rg ? viz::RED_8 : viz::LUMINANCE_8;
-  if (use_r16_texture_ && caps.texture_norm16)
-    return viz::R16_EXT;
-  if (caps.texture_half_float_linear)
-    return viz::LUMINANCE_F16;
-  return viz::LUMINANCE_8;
-}
-
-VideoResourceUpdater::PlaneResource*
-VideoResourceUpdater::RecycleOrAllocateResource(
-    const gfx::Size& resource_size,
-    viz::ResourceFormat resource_format,
-    const gfx::ColorSpace& color_space,
-    int unique_id,
-    int plane_index) {
-  PlaneResource* recyclable_resource = nullptr;
-  for (auto& resource : all_resources_) {
-    // If the plane index is valid (positive, or 0, meaning all planes)
-    // then we are allowed to return a referenced resource that already
-    // contains the right frame data. It's safe to reuse it even if
-    // resource_provider_ holds some references to it, because those
-    // references are read-only.
-    if (plane_index != -1 && resource->Matches(unique_id, plane_index)) {
-      DCHECK(resource->resource_size() == resource_size);
-      DCHECK(resource->resource_format() == resource_format);
-      return resource.get();
-    }
-
-    // Otherwise check whether this is an unreferenced resource of the right
-    // format that we can recycle. Remember it, but don't return immediately,
-    // because we still want to find any reusable resources.
-    const bool in_use = resource->has_refs();
-
-    if (!in_use && resource->resource_size() == resource_size &&
-        resource->resource_format() == resource_format) {
-      recyclable_resource = resource.get();
-    }
-  }
-
-  if (recyclable_resource)
-    return recyclable_resource;
-
-  // There was nothing available to reuse or recycle. Allocate a new resource.
-  return AllocateResource(resource_size, resource_format, color_space);
-}
-
-VideoResourceUpdater::PlaneResource* VideoResourceUpdater::AllocateResource(
-    const gfx::Size& plane_size,
-    viz::ResourceFormat format,
-    const gfx::ColorSpace& color_space) {
-  const uint32_t plane_resource_id = next_plane_resource_id_++;
-
-  if (software_compositor()) {
-    DCHECK_EQ(format, viz::ResourceFormat::RGBA_8888);
-
-    all_resources_.push_back(std::make_unique<SoftwarePlaneResource>(
-        plane_resource_id, plane_size, shared_bitmap_reporter_));
-  } else {
-    // Video textures get composited into the display frame, the GPU doesn't
-    // draw to them directly.
-    constexpr bool kForFrameBufferAttachment = false;
-
-    viz::TextureAllocation alloc = viz::TextureAllocation::MakeTextureId(
-        context_provider_->ContextGL(),
-        context_provider_->ContextCapabilities(), format,
-        use_gpu_memory_buffer_resources_, kForFrameBufferAttachment);
-    viz::TextureAllocation::AllocateStorage(
-        context_provider_->ContextGL(),
-        context_provider_->ContextCapabilities(), format, plane_size, alloc,
-        color_space);
-
-    all_resources_.push_back(std::make_unique<HardwarePlaneResource>(
-        plane_resource_id, plane_size, format, context_provider_,
-        std::move(alloc)));
-  }
-  return all_resources_.back().get();
-}
-
-void VideoResourceUpdater::CopyHardwarePlane(
-    media::VideoFrame* video_frame,
-    const gfx::ColorSpace& resource_color_space,
-    const gpu::MailboxHolder& mailbox_holder,
-    VideoFrameExternalResources* external_resources) {
-  const gfx::Size output_plane_resource_size = video_frame->coded_size();
-  // The copy needs to be a direct transfer of pixel data, so we use an RGBA8
-  // target to avoid loss of precision or dropping any alpha component.
-  constexpr viz::ResourceFormat copy_resource_format =
-      viz::ResourceFormat::RGBA_8888;
-
-  const int no_unique_id = 0;
-  const int no_plane_index = -1;  // Do not recycle referenced textures.
-  PlaneResource* plane_resource = RecycleOrAllocateResource(
-      output_plane_resource_size, copy_resource_format, resource_color_space,
-      no_unique_id, no_plane_index);
-  HardwarePlaneResource* hardware_resource = plane_resource->AsHardware();
-  hardware_resource->add_ref();
-
-  DCHECK_EQ(hardware_resource->texture_target(),
-            static_cast<GLenum>(GL_TEXTURE_2D));
-
-  gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL();
-
-  gl->WaitSyncTokenCHROMIUM(mailbox_holder.sync_token.GetConstData());
-  uint32_t src_texture_id =
-      gl->CreateAndConsumeTextureCHROMIUM(mailbox_holder.mailbox.name);
-  gl->CopySubTextureCHROMIUM(
-      src_texture_id, 0, GL_TEXTURE_2D, hardware_resource->texture_id(), 0, 0,
-      0, 0, 0, output_plane_resource_size.width(),
-      output_plane_resource_size.height(), false, false, false);
-  gl->DeleteTextures(1, &src_texture_id);
-
-  // Pass an empty sync token to force generation of a new sync token.
-  SyncTokenClientImpl client(gl, gpu::SyncToken());
-  gpu::SyncToken sync_token = video_frame->UpdateReleaseSyncToken(&client);
-
-  auto transferable_resource = viz::TransferableResource::MakeGL(
-      hardware_resource->mailbox(), GL_LINEAR, GL_TEXTURE_2D, sync_token);
-  transferable_resource.color_space = resource_color_space;
-  transferable_resource.format = copy_resource_format;
-  transferable_resource.buffer_format = viz::BufferFormat(copy_resource_format);
-  external_resources->resources.push_back(std::move(transferable_resource));
-
-  external_resources->release_callbacks.push_back(base::BindOnce(
-      &VideoResourceUpdater::RecycleResource, weak_ptr_factory_.GetWeakPtr(),
-      hardware_resource->plane_resource_id()));
-}
-
-VideoFrameExternalResources VideoResourceUpdater::CreateForHardwarePlanes(
-    scoped_refptr<media::VideoFrame> video_frame) {
-  TRACE_EVENT0("cc", "VideoResourceUpdater::CreateForHardwarePlanes");
-  DCHECK(video_frame->HasTextures());
-  if (!context_provider_)
-    return VideoFrameExternalResources();
-
-  VideoFrameExternalResources external_resources;
-  gfx::ColorSpace resource_color_space = video_frame->ColorSpace();
-
-  bool copy_required =
-      video_frame->metadata()->IsTrue(media::VideoFrameMetadata::COPY_REQUIRED);
-
-  GLuint target = video_frame->mailbox_holder(0).texture_target;
-  // If |copy_required| then we will copy into a GL_TEXTURE_2D target.
-  if (copy_required)
-    target = GL_TEXTURE_2D;
-
-  gfx::BufferFormat buffer_format;
-  external_resources.type = ExternalResourceTypeForHardwarePlanes(
-      video_frame->format(), target, video_frame->NumTextures(), &buffer_format,
-      use_stream_video_draw_quad_);
-  if (external_resources.type == VideoFrameResourceType::NONE) {
-    DLOG(ERROR) << "Unsupported Texture format"
-                << media::VideoPixelFormatToString(video_frame->format());
-    return external_resources;
-  }
-  if (external_resources.type == VideoFrameResourceType::RGB ||
-      external_resources.type == VideoFrameResourceType::RGBA ||
-      external_resources.type == VideoFrameResourceType::RGBA_PREMULTIPLIED) {
-    resource_color_space = resource_color_space.GetAsFullRangeRGB();
-  }
-
-  const size_t num_textures = video_frame->NumTextures();
-  for (size_t i = 0; i < num_textures; ++i) {
-    const gpu::MailboxHolder& mailbox_holder = video_frame->mailbox_holder(i);
-    if (mailbox_holder.mailbox.IsZero())
-      break;
-
-    if (copy_required) {
-      CopyHardwarePlane(video_frame.get(), resource_color_space, mailbox_holder,
-                        &external_resources);
-    } else {
-      auto transfer_resource = viz::TransferableResource::MakeGLOverlay(
-          mailbox_holder.mailbox, GL_LINEAR, mailbox_holder.texture_target,
-          mailbox_holder.sync_token, video_frame->coded_size(),
-          video_frame->metadata()->IsTrue(
-              media::VideoFrameMetadata::ALLOW_OVERLAY));
-      transfer_resource.color_space = resource_color_space;
-      transfer_resource.read_lock_fences_enabled =
-          video_frame->metadata()->IsTrue(
-              media::VideoFrameMetadata::READ_LOCK_FENCES_ENABLED);
-      transfer_resource.buffer_format = buffer_format;
-#if defined(OS_ANDROID)
-      transfer_resource.is_backed_by_surface_texture =
-          video_frame->metadata()->IsTrue(
-              media::VideoFrameMetadata::TEXTURE_OWNER);
-      transfer_resource.wants_promotion_hint = video_frame->metadata()->IsTrue(
-          media::VideoFrameMetadata::WANTS_PROMOTION_HINT);
-#endif
-      external_resources.resources.push_back(std::move(transfer_resource));
-      external_resources.release_callbacks.push_back(
-          base::BindOnce(&VideoResourceUpdater::ReturnTexture,
-                         weak_ptr_factory_.GetWeakPtr(), video_frame));
-    }
-  }
-  return external_resources;
-}
-
-VideoFrameExternalResources VideoResourceUpdater::CreateForSoftwarePlanes(
-    scoped_refptr<media::VideoFrame> video_frame) {
-  TRACE_EVENT0("cc", "VideoResourceUpdater::CreateForSoftwarePlanes");
-  const media::VideoPixelFormat input_frame_format = video_frame->format();
-
-  size_t bits_per_channel = video_frame->BitDepth();
-
-  // Only YUV and Y16 software video frames are supported.
-  DCHECK(media::IsYuvPlanar(input_frame_format) ||
-         input_frame_format == media::PIXEL_FORMAT_Y16);
-
-  viz::ResourceFormat output_resource_format;
-  gfx::ColorSpace output_color_space = video_frame->ColorSpace();
-  if (input_frame_format == media::PIXEL_FORMAT_Y16) {
-    // Unable to display directly as yuv planes so convert it to RGBA for
-    // compositing.
-    output_resource_format = viz::RGBA_8888;
-    output_color_space = output_color_space.GetAsFullRangeRGB();
-  } else if (!software_compositor()) {
-    // Can be composited directly from yuv planes.
-    output_resource_format = YuvResourceFormat(bits_per_channel);
-  }
-
-  // If GPU compositing is enabled, but the output resource format
-  // returned by the resource provider is viz::RGBA_8888, then a GPU driver
-  // bug workaround requires that YUV frames must be converted to RGB
-  // before texture upload.
-  bool texture_needs_rgb_conversion =
-      !software_compositor() &&
-      output_resource_format == viz::ResourceFormat::RGBA_8888;
-
-  size_t output_plane_count = media::VideoFrame::NumPlanes(input_frame_format);
-
-  // TODO(skaslev): If we're in software compositing mode, we do the YUV -> RGB
-  // conversion here. That involves an extra copy of each frame to a bitmap.
-  // Obviously, this is suboptimal and should be addressed once ubercompositor
-  // starts shaping up.
-  if (software_compositor() || texture_needs_rgb_conversion) {
-    output_resource_format = viz::RGBA_8888;
-    output_plane_count = 1;
-    bits_per_channel = 8;
-
-    // The YUV to RGB conversion will be performed when we convert
-    // from single-channel textures to an RGBA texture via
-    // ConvertVideoFrameToRGBPixels below.
-    output_color_space = output_color_space.GetAsFullRangeRGB();
-  }
-
-  std::vector<gfx::Size> outplane_plane_sizes;
-  outplane_plane_sizes.reserve(output_plane_count);
-  for (size_t i = 0; i < output_plane_count; ++i) {
-    outplane_plane_sizes.push_back(
-        SoftwarePlaneDimension(video_frame.get(), software_compositor(), i));
-    const gfx::Size& output_plane_resource_size = outplane_plane_sizes.back();
-    if (output_plane_resource_size.IsEmpty() ||
-        output_plane_resource_size.width() > max_resource_size_ ||
-        output_plane_resource_size.height() > max_resource_size_) {
-      // This output plane has invalid geometry so return an empty external
-      // resources.
-      return VideoFrameExternalResources();
-    }
-  }
-
-  // Delete recycled resources that are the wrong format or wrong size.
-  auto can_delete_resource_fn =
-      [output_resource_format,
-       &outplane_plane_sizes](const std::unique_ptr<PlaneResource>& resource) {
-        // Resources that are still being used can't be deleted.
-        if (resource->has_refs())
-          return false;
-
-        return resource->resource_format() != output_resource_format ||
-               !base::ContainsValue(outplane_plane_sizes,
-                                    resource->resource_size());
-      };
-  base::EraseIf(all_resources_, can_delete_resource_fn);
-
-  // Recycle or allocate resources for each video plane.
-  std::vector<PlaneResource*> plane_resources;
-  plane_resources.reserve(output_plane_count);
-  for (size_t i = 0; i < output_plane_count; ++i) {
-    plane_resources.push_back(RecycleOrAllocateResource(
-        outplane_plane_sizes[i], output_resource_format, output_color_space,
-        video_frame->unique_id(), i));
-    plane_resources.back()->add_ref();
-  }
-
-  VideoFrameExternalResources external_resources;
-
-  external_resources.bits_per_channel = bits_per_channel;
-
-  if (software_compositor() || texture_needs_rgb_conversion) {
-    DCHECK_EQ(plane_resources.size(), 1u);
-    PlaneResource* plane_resource = plane_resources[0];
-    DCHECK_EQ(plane_resource->resource_format(), viz::RGBA_8888);
-
-    if (!plane_resource->Matches(video_frame->unique_id(), 0)) {
-      // We need to transfer data from |video_frame| to the plane resource.
-      if (software_compositor()) {
-        if (!video_renderer_)
-          video_renderer_ = std::make_unique<media::PaintCanvasVideoRenderer>();
-
-        SoftwarePlaneResource* software_resource = plane_resource->AsSoftware();
-
-        // We know the format is RGBA_8888 from check above.
-        SkImageInfo info = SkImageInfo::MakeN32Premul(
-            gfx::SizeToSkISize(software_resource->resource_size()));
-
-        SkBitmap sk_bitmap;
-        sk_bitmap.installPixels(info, software_resource->pixels(),
-                                info.minRowBytes());
-        SkiaPaintCanvas canvas(sk_bitmap);
-
-        // This is software path, so canvas and video_frame are always backed
-        // by software.
-        video_renderer_->Copy(video_frame, &canvas, media::Context3D());
-      } else {
-        HardwarePlaneResource* hardware_resource = plane_resource->AsHardware();
-        size_t bytes_per_row = viz::ResourceSizes::CheckedWidthInBytes<size_t>(
-            video_frame->coded_size().width(), viz::ResourceFormat::RGBA_8888);
-        size_t needed_size = bytes_per_row * video_frame->coded_size().height();
-        if (upload_pixels_.size() < needed_size) {
-          // Clear before resizing to avoid memcpy.
-          upload_pixels_.clear();
-          upload_pixels_.resize(needed_size);
-        }
-
-        media::PaintCanvasVideoRenderer::ConvertVideoFrameToRGBPixels(
-            video_frame.get(), &upload_pixels_[0], bytes_per_row);
-
-        // Copy pixels into texture.
-        auto* gl = context_provider_->ContextGL();
-        gl->BindTexture(hardware_resource->texture_target(),
-                        hardware_resource->texture_id());
-        const gfx::Size& plane_size = hardware_resource->resource_size();
-        gl->TexSubImage2D(
-            hardware_resource->texture_target(), 0, 0, 0, plane_size.width(),
-            plane_size.height(), GLDataFormat(viz::ResourceFormat::RGBA_8888),
-            GLDataType(viz::ResourceFormat::RGBA_8888), &upload_pixels_[0]);
-      }
-      plane_resource->SetUniqueId(video_frame->unique_id(), 0);
-    }
-
-    viz::TransferableResource transferable_resource;
-    if (software_compositor()) {
-      SoftwarePlaneResource* software_resource = plane_resource->AsSoftware();
-      external_resources.type = VideoFrameResourceType::RGBA_PREMULTIPLIED;
-      transferable_resource = viz::TransferableResource::MakeSoftware(
-          software_resource->shared_bitmap_id(),
-          software_resource->resource_size(),
-          plane_resource->resource_format());
-    } else {
-      HardwarePlaneResource* hardware_resource = plane_resource->AsHardware();
-      external_resources.type = VideoFrameResourceType::RGBA;
-      gpu::SyncToken sync_token;
-      GenerateCompositorSyncToken(context_provider_->ContextGL(), &sync_token);
-      transferable_resource = viz::TransferableResource::MakeGLOverlay(
-          hardware_resource->mailbox(), GL_LINEAR,
-          hardware_resource->texture_target(), sync_token,
-          hardware_resource->resource_size(),
-          hardware_resource->overlay_candidate());
-    }
-
-    transferable_resource.color_space = output_color_space;
-    transferable_resource.format = viz::ResourceFormat::RGBA_8888;
-    transferable_resource.buffer_format =
-        viz::BufferFormat(viz::ResourceFormat::RGBA_8888);
-    external_resources.resources.push_back(std::move(transferable_resource));
-    external_resources.release_callbacks.push_back(base::BindOnce(
-        &VideoResourceUpdater::RecycleResource, weak_ptr_factory_.GetWeakPtr(),
-        plane_resource->plane_resource_id()));
-
-    return external_resources;
-  }
-
-  const viz::ResourceFormat yuv_resource_format =
-      YuvResourceFormat(bits_per_channel);
-  DCHECK(yuv_resource_format == viz::LUMINANCE_F16 ||
-         yuv_resource_format == viz::R16_EXT ||
-         yuv_resource_format == viz::LUMINANCE_8 ||
-         yuv_resource_format == viz::RED_8)
-      << yuv_resource_format;
-
-  std::unique_ptr<media::HalfFloatMaker> half_float_maker;
-  if (yuv_resource_format == viz::LUMINANCE_F16) {
-    half_float_maker =
-        media::HalfFloatMaker::NewHalfFloatMaker(bits_per_channel);
-    external_resources.offset = half_float_maker->Offset();
-    external_resources.multiplier = half_float_maker->Multiplier();
-  } else if (yuv_resource_format == viz::R16_EXT) {
-    external_resources.multiplier = 65535.0f / ((1 << bits_per_channel) - 1);
-    external_resources.offset = 0;
-  }
-
-  // We need to transfer data from |video_frame| to the plane resources.
-  for (size_t i = 0; i < plane_resources.size(); ++i) {
-    HardwarePlaneResource* plane_resource = plane_resources[i]->AsHardware();
-
-    // Skip the transfer if this |video_frame|'s plane has been processed.
-    if (plane_resource->Matches(video_frame->unique_id(), i))
-      continue;
-
-    const viz::ResourceFormat plane_resource_format =
-        plane_resource->resource_format();
-    DCHECK_EQ(plane_resource_format, yuv_resource_format);
-
-    // TODO(hubbe): Move upload code to media/.
-    // TODO(reveman): Can use GpuMemoryBuffers here to improve performance.
-
-    // |video_stride_bytes| is the width of the |video_frame| we are uploading
-    // (including non-frame data to fill in the stride).
-    const int video_stride_bytes = video_frame->stride(i);
-
-    // |resource_size_pixels| is the size of the destination resource.
-    const gfx::Size resource_size_pixels = plane_resource->resource_size();
-
-    const size_t bytes_per_row =
-        viz::ResourceSizes::CheckedWidthInBytes<size_t>(
-            resource_size_pixels.width(), plane_resource_format);
-    // Use 4-byte row alignment (OpenGL default) for upload performance.
-    // Assuming that GL_UNPACK_ALIGNMENT has not changed from default.
-    const size_t upload_image_stride =
-        MathUtil::CheckedRoundUp<size_t>(bytes_per_row, 4u);
-
-    const size_t resource_bit_depth =
-        static_cast<size_t>(viz::BitsPerPixel(plane_resource_format));
-
-    // Data downshifting is needed if the resource bit depth is not enough.
-    const bool needs_bit_downshifting = bits_per_channel > resource_bit_depth;
-
-    // A copy to adjust strides is needed if those are different and both source
-    // and destination have the same bit depth.
-    const bool needs_stride_adaptation =
-        (bits_per_channel == resource_bit_depth) &&
-        (upload_image_stride != static_cast<size_t>(video_stride_bytes));
-
-    // We need to convert the incoming data if we're transferring to half float,
-    // if the need a bit downshift or if the strides need to be reconciled.
-    const bool needs_conversion = plane_resource_format == viz::LUMINANCE_F16 ||
-                                  needs_bit_downshifting ||
-                                  needs_stride_adaptation;
-
-    const uint8_t* pixels;
-    if (!needs_conversion) {
-      pixels = video_frame->data(i);
-    } else {
-      // Avoid malloc for each frame/plane if possible.
-      const size_t needed_size =
-          upload_image_stride * resource_size_pixels.height();
-      if (upload_pixels_.size() < needed_size) {
-        // Clear before resizing to avoid memcpy.
-        upload_pixels_.clear();
-        upload_pixels_.resize(needed_size);
-      }
-
-      if (plane_resource_format == viz::LUMINANCE_F16) {
-        for (int row = 0; row < resource_size_pixels.height(); ++row) {
-          uint16_t* dst = reinterpret_cast<uint16_t*>(
-              &upload_pixels_[upload_image_stride * row]);
-          const uint16_t* src = reinterpret_cast<uint16_t*>(
-              video_frame->data(i) + (video_stride_bytes * row));
-          half_float_maker->MakeHalfFloats(src, bytes_per_row / 2, dst);
-        }
-      } else if (needs_bit_downshifting) {
-        DCHECK(plane_resource_format == viz::LUMINANCE_8 ||
-               plane_resource_format == viz::RED_8);
-        const int scale = 0x10000 >> (bits_per_channel - 8);
-        libyuv::Convert16To8Plane(
-            reinterpret_cast<uint16_t*>(video_frame->data(i)),
-            video_stride_bytes / 2, upload_pixels_.data(), upload_image_stride,
-            scale, bytes_per_row, resource_size_pixels.height());
-      } else {
-        // Make a copy to reconcile stride, size and format being equal.
-        DCHECK(needs_stride_adaptation);
-        DCHECK(plane_resource_format == viz::LUMINANCE_8 ||
-               plane_resource_format == viz::RED_8);
-        libyuv::CopyPlane(video_frame->data(i), video_stride_bytes,
-                          upload_pixels_.data(), upload_image_stride,
-                          resource_size_pixels.width(),
-                          resource_size_pixels.height());
-      }
-
-      pixels = &upload_pixels_[0];
-    }
-
-    // Copy pixels into texture. TexSubImage2D() is applicable because
-    // |yuv_resource_format| is LUMINANCE_F16, R16_EXT, LUMINANCE_8 or RED_8.
-    auto* gl = context_provider_->ContextGL();
-    gl->BindTexture(plane_resource->texture_target(),
-                    plane_resource->texture_id());
-    gl->TexSubImage2D(
-        plane_resource->texture_target(), 0, 0, 0, resource_size_pixels.width(),
-        resource_size_pixels.height(), GLDataFormat(plane_resource_format),
-        GLDataType(plane_resource_format), pixels);
-
-    plane_resource->SetUniqueId(video_frame->unique_id(), i);
-  }
-
-  // Set the sync token otherwise resource is assumed to be synchronized.
-  gpu::SyncToken sync_token;
-  GenerateCompositorSyncToken(context_provider_->ContextGL(), &sync_token);
-
-  for (size_t i = 0; i < plane_resources.size(); ++i) {
-    HardwarePlaneResource* plane_resource = plane_resources[i]->AsHardware();
-    auto transferable_resource = viz::TransferableResource::MakeGLOverlay(
-        plane_resource->mailbox(), GL_LINEAR, plane_resource->texture_target(),
-        sync_token, plane_resource->resource_size(),
-        plane_resource->overlay_candidate());
-    transferable_resource.color_space = output_color_space;
-    transferable_resource.format = output_resource_format;
-    transferable_resource.buffer_format =
-        viz::BufferFormat(output_resource_format);
-    external_resources.resources.push_back(std::move(transferable_resource));
-    external_resources.release_callbacks.push_back(base::BindOnce(
-        &VideoResourceUpdater::RecycleResource, weak_ptr_factory_.GetWeakPtr(),
-        plane_resource->plane_resource_id()));
-  }
-
-  external_resources.type = VideoFrameResourceType::YUV;
-  return external_resources;
-}
-
-void VideoResourceUpdater::ReturnTexture(
-    const scoped_refptr<media::VideoFrame>& video_frame,
-    const gpu::SyncToken& sync_token,
-    bool lost_resource) {
-  // TODO(dshwang): Forward to the decoder as a lost resource.
-  if (lost_resource)
-    return;
-
-  // The video frame will insert a wait on the previous release sync token.
-  SyncTokenClientImpl client(context_provider_->ContextGL(), sync_token);
-  video_frame->UpdateReleaseSyncToken(&client);
-}
-
-void VideoResourceUpdater::RecycleResource(uint32_t plane_resource_id,
-                                           const gpu::SyncToken& sync_token,
-                                           bool lost_resource) {
-  auto matches_id_fn =
-      [plane_resource_id](const std::unique_ptr<PlaneResource>& resource) {
-        return resource->plane_resource_id() == plane_resource_id;
-      };
-  auto resource_it =
-      std::find_if(all_resources_.begin(), all_resources_.end(), matches_id_fn);
-  if (resource_it == all_resources_.end())
-    return;
-
-  if (context_provider_ && sync_token.HasData()) {
-    context_provider_->ContextGL()->WaitSyncTokenCHROMIUM(
-        sync_token.GetConstData());
-  }
-
-  if (lost_resource) {
-    all_resources_.erase(resource_it);
-  } else {
-    (*resource_it)->remove_ref();
-  }
-}
-
-bool VideoResourceUpdater::OnMemoryDump(
-    const base::trace_event::MemoryDumpArgs& args,
-    base::trace_event::ProcessMemoryDump* pmd) {
-  for (auto& resource : all_resources_) {
-    std::string dump_name =
-        base::StringPrintf("cc/video_memory/updater_%d/resource_%d",
-                           tracing_id_, resource->plane_resource_id());
-    base::trace_event::MemoryAllocatorDump* dump =
-        pmd->CreateAllocatorDump(dump_name);
-
-    const uint64_t total_bytes =
-        viz::ResourceSizes::UncheckedSizeInBytesAligned<uint64_t>(
-            resource->resource_size(), resource->resource_format());
-    dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize,
-                    base::trace_event::MemoryAllocatorDump::kUnitsBytes,
-                    total_bytes);
-
-    // The importance value assigned to the GUID here must be greater than the
-    // importance value assigned elsewhere so that resource ownership is
-    // attributed to VideoResourceUpdater.
-    constexpr int kImportance = 2;
-
-    // Resources are shared across processes and require a shared GUID to
-    // prevent double counting the memory.
-    if (software_compositor()) {
-      base::UnguessableToken shm_guid =
-          resource->AsSoftware()->GetSharedMemoryGuid();
-      pmd->CreateSharedMemoryOwnershipEdge(dump->guid(), shm_guid, kImportance);
-    } else {
-      base::trace_event::MemoryAllocatorDumpGuid guid =
-          gl::GetGLTextureClientGUIDForTracing(
-              context_provider_->ContextSupport()->ShareGroupTracingGUID(),
-              resource->AsHardware()->texture_id());
-      pmd->CreateSharedGlobalAllocatorDump(guid);
-      pmd->AddOwnershipEdge(dump->guid(), guid, kImportance);
-    }
-  }
-
-  return true;
-}
-
-}  // namespace cc
diff --git a/cc/resources/video_resource_updater.h b/cc/resources/video_resource_updater.h
deleted file mode 100644
index 0b3f651..0000000
--- a/cc/resources/video_resource_updater.h
+++ /dev/null
@@ -1,220 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CC_RESOURCES_VIDEO_RESOURCE_UPDATER_H_
-#define CC_RESOURCES_VIDEO_RESOURCE_UPDATER_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <list>
-#include <memory>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/weak_ptr.h"
-#include "base/time/time.h"
-#include "base/trace_event/memory_dump_provider.h"
-#include "cc/cc_export.h"
-#include "components/viz/common/resources/release_callback.h"
-#include "components/viz/common/resources/resource_format.h"
-#include "components/viz/common/resources/resource_id.h"
-#include "components/viz/common/resources/transferable_resource.h"
-#include "ui/gfx/buffer_types.h"
-#include "ui/gfx/geometry/size.h"
-
-namespace media {
-class PaintCanvasVideoRenderer;
-class VideoFrame;
-}
-
-namespace gfx {
-class Rect;
-class Transform;
-}  // namespace gfx
-
-namespace viz {
-class ContextProvider;
-class RenderPass;
-class SharedBitmapReporter;
-}
-
-namespace cc {
-class LayerTreeResourceProvider;
-
-// Specifies what type of data is contained in the mailboxes, as well as how
-// many mailboxes will be present.
-enum class VideoFrameResourceType {
-  NONE,
-  YUV,
-  RGB,
-  RGBA_PREMULTIPLIED,
-  RGBA,
-  STREAM_TEXTURE,
-};
-
-class CC_EXPORT VideoFrameExternalResources {
- public:
-  VideoFrameResourceType type = VideoFrameResourceType::NONE;
-  std::vector<viz::TransferableResource> resources;
-  std::vector<viz::ReleaseCallback> release_callbacks;
-
-  // Used by hardware textures which do not return values in the 0-1 range.
-  // After a lookup, subtract offset and multiply by multiplier.
-  float offset = 0.f;
-  float multiplier = 1.f;
-  uint32_t bits_per_channel = 8;
-
-  VideoFrameExternalResources();
-  VideoFrameExternalResources(VideoFrameExternalResources&& other);
-  VideoFrameExternalResources& operator=(VideoFrameExternalResources&& other);
-  ~VideoFrameExternalResources();
-};
-
-// VideoResourceUpdater is used by the video system to produce frame content as
-// resources consumable by the compositor.
-class CC_EXPORT VideoResourceUpdater
-    : public base::trace_event::MemoryDumpProvider {
- public:
-  // For GPU compositing |context_provider| should be provided and for software
-  // compositing |shared_bitmap_reporter| should be provided. If there is a
-  // non-null |context_provider| we assume GPU compositing.
-  VideoResourceUpdater(viz::ContextProvider* context_provider,
-                       viz::SharedBitmapReporter* shared_bitmap_reporter,
-                       LayerTreeResourceProvider* resource_provider,
-                       bool use_stream_video_draw_quad,
-                       bool use_gpu_memory_buffer_resources,
-                       bool use_r16_texture,
-                       int max_resource_size);
-
-  ~VideoResourceUpdater() override;
-
-  // For each CompositorFrame the following sequence is expected:
-  // 1. ObtainFrameResources(): Import resources for the next video frame with
-  //    LayerTreeResourceProvider. This will reuse existing GPU or SharedMemory
-  //    buffers if possible, otherwise it will allocate new ones.
-  // 2. AppendQuads(): Add DrawQuads to CompositorFrame for video.
-  // 3. ReleaseFrameResources(): After the CompositorFrame has been submitted,
-  //    remove imported resources from LayerTreeResourceProvider.
-  void ObtainFrameResources(scoped_refptr<media::VideoFrame> video_frame);
-  void ReleaseFrameResources();
-  void AppendQuads(viz::RenderPass* render_pass,
-                   scoped_refptr<media::VideoFrame> frame,
-                   gfx::Transform transform,
-                   gfx::Size rotated_size,
-                   gfx::Rect visible_layer_rect,
-                   gfx::Rect clip_rect,
-                   bool is_clipped,
-                   bool context_opaque,
-                   float draw_opacity,
-                   int sorting_context_id,
-                   gfx::Rect visible_quad_rect);
-
-  // TODO(kylechar): This is only public for testing, make private.
-  VideoFrameExternalResources CreateExternalResourcesFromVideoFrame(
-      scoped_refptr<media::VideoFrame> video_frame);
-
-  viz::ResourceFormat YuvResourceFormat(int bits_per_channel);
-
- private:
-  class PlaneResource;
-  class HardwarePlaneResource;
-  class SoftwarePlaneResource;
-
-  // A resource that will be embedded in a DrawQuad in the next CompositorFrame.
-  // Each video plane will correspond to one FrameResource.
-  struct FrameResource {
-    viz::ResourceId id;
-    gfx::Size size_in_pixels;
-  };
-
-  bool software_compositor() const { return context_provider_ == nullptr; }
-
-  // Obtain a resource of the right format by either recycling an
-  // unreferenced but appropriately formatted resource, or by
-  // allocating a new resource.
-  // Additionally, if the |unique_id| and |plane_index| match, then
-  // it is assumed that the resource has the right data already and will only be
-  // used for reading, and so is returned even if it is still referenced.
-  // Passing -1 for |plane_index| avoids returning referenced
-  // resources.
-  PlaneResource* RecycleOrAllocateResource(const gfx::Size& resource_size,
-                                           viz::ResourceFormat resource_format,
-                                           const gfx::ColorSpace& color_space,
-                                           int unique_id,
-                                           int plane_index);
-  PlaneResource* AllocateResource(const gfx::Size& plane_size,
-                                  viz::ResourceFormat format,
-                                  const gfx::ColorSpace& color_space);
-
-  // Create a copy of a texture-backed source video frame in a new GL_TEXTURE_2D
-  // texture. This is used when there are multiple GPU threads (Android WebView)
-  // and the source video frame texture can't be used on the output GL context.
-  // https://crbug.com/582170
-  void CopyHardwarePlane(media::VideoFrame* video_frame,
-                         const gfx::ColorSpace& resource_color_space,
-                         const gpu::MailboxHolder& mailbox_holder,
-                         VideoFrameExternalResources* external_resources);
-
-  // Get resources ready to be appended into DrawQuads. This is used for GPU
-  // compositing most of the time, except for the cases mentioned in
-  // CreateForSoftwarePlanes().
-  VideoFrameExternalResources CreateForHardwarePlanes(
-      scoped_refptr<media::VideoFrame> video_frame);
-
-  // Get resources ready to be appended into DrawQuads. This is always used for
-  // software compositing. This is also used for GPU compositing when the input
-  // video frame has no textures.
-  VideoFrameExternalResources CreateForSoftwarePlanes(
-      scoped_refptr<media::VideoFrame> video_frame);
-
-  void RecycleResource(uint32_t plane_resource_id,
-                       const gpu::SyncToken& sync_token,
-                       bool lost_resource);
-  void ReturnTexture(const scoped_refptr<media::VideoFrame>& video_frame,
-                     const gpu::SyncToken& sync_token,
-                     bool lost_resource);
-
-  // base::trace_event::MemoryDumpProvider implementation.
-  bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args,
-                    base::trace_event::ProcessMemoryDump* pmd) override;
-
-  viz::ContextProvider* const context_provider_;
-  viz::SharedBitmapReporter* const shared_bitmap_reporter_;
-  LayerTreeResourceProvider* const resource_provider_;
-  const bool use_stream_video_draw_quad_;
-  const bool use_gpu_memory_buffer_resources_;
-  // TODO(crbug.com/759456): Remove after r16 is used without the flag.
-  const bool use_r16_texture_;
-  const int max_resource_size_;
-  const int tracing_id_;
-  std::unique_ptr<media::PaintCanvasVideoRenderer> video_renderer_;
-  uint32_t next_plane_resource_id_ = 1;
-
-  // Temporary pixel buffer when converting between formats.
-  std::vector<uint8_t> upload_pixels_;
-
-  VideoFrameResourceType frame_resource_type_;
-
-  float frame_resource_offset_;
-  float frame_resource_multiplier_;
-  uint32_t frame_bits_per_channel_;
-
-  // Resources that will be placed into quads by the next call to
-  // AppendDrawQuads().
-  std::vector<FrameResource> frame_resources_;
-
-  // Resources allocated by VideoResourceUpdater. Used to recycle resources so
-  // we can reduce the number of allocations and data transfers.
-  std::vector<std::unique_ptr<PlaneResource>> all_resources_;
-
-  base::WeakPtrFactory<VideoResourceUpdater> weak_ptr_factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(VideoResourceUpdater);
-};
-
-}  // namespace cc
-
-#endif  // CC_RESOURCES_VIDEO_RESOURCE_UPDATER_H_
diff --git a/cc/resources/video_resource_updater_unittest.cc b/cc/resources/video_resource_updater_unittest.cc
deleted file mode 100644
index aaa5102..0000000
--- a/cc/resources/video_resource_updater_unittest.cc
+++ /dev/null
@@ -1,733 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "cc/resources/video_resource_updater.h"
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include "base/bind.h"
-#include "cc/resources/layer_tree_resource_provider.h"
-#include "cc/test/fake_layer_tree_frame_sink.h"
-#include "cc/test/fake_output_surface_client.h"
-#include "cc/test/fake_resource_provider.h"
-#include "components/viz/test/fake_output_surface.h"
-#include "components/viz/test/test_gles2_interface.h"
-#include "gpu/GLES2/gl2extchromium.h"
-#include "media/base/video_frame.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace cc {
-namespace {
-
-class UploadCounterGLES2Interface : public viz::TestGLES2Interface {
- public:
-  void TexSubImage2D(GLenum target,
-                     GLint level,
-                     GLint xoffset,
-                     GLint yoffset,
-                     GLsizei width,
-                     GLsizei height,
-                     GLenum format,
-                     GLenum type,
-                     const void* pixels) override {
-    ++upload_count_;
-  }
-
-  void TexStorage2DEXT(GLenum target,
-                       GLint levels,
-                       GLuint internalformat,
-                       GLint width,
-                       GLint height) override {}
-
-  void GenTextures(GLsizei n, GLuint* textures) override {
-    created_texture_count_ += n;
-    viz::TestGLES2Interface::GenTextures(n, textures);
-  }
-
-  void DeleteTextures(GLsizei n, const GLuint* textures) override {
-    created_texture_count_ -= n;
-    viz::TestGLES2Interface::DeleteTextures(n, textures);
-  }
-
-  int UploadCount() { return upload_count_; }
-  void ResetUploadCount() { upload_count_ = 0; }
-
-  int TextureCreationCount() { return created_texture_count_; }
-  void ResetTextureCreationCount() { created_texture_count_ = 0; }
-
- private:
-  int upload_count_;
-  int created_texture_count_;
-};
-
-class VideoResourceUpdaterTest : public testing::Test {
- protected:
-  VideoResourceUpdaterTest() {
-    std::unique_ptr<UploadCounterGLES2Interface> gl(
-        new UploadCounterGLES2Interface());
-
-    gl_ = gl.get();
-    gl_->set_support_texture_storage(true);
-
-    context_provider_ = viz::TestContextProvider::Create(std::move(gl));
-    context_provider_->BindToCurrentThread();
-  }
-
-  // testing::Test implementation.
-  void SetUp() override {
-    testing::Test::SetUp();
-    layer_tree_frame_sink_software_ = FakeLayerTreeFrameSink::CreateSoftware();
-    resource_provider3d_ =
-        FakeResourceProvider::CreateLayerTreeResourceProvider(
-            context_provider_.get());
-    resource_provider_software_ =
-        FakeResourceProvider::CreateLayerTreeResourceProvider(nullptr);
-  }
-
-  std::unique_ptr<VideoResourceUpdater> CreateUpdaterForHardware(
-      bool use_stream_video_draw_quad = false) {
-    return std::make_unique<VideoResourceUpdater>(
-        context_provider_.get(), nullptr, resource_provider3d_.get(),
-        use_stream_video_draw_quad, /*use_gpu_memory_buffer_resources=*/false,
-        /*use_r16_texture=*/use_r16_texture_, /*max_resource_size=*/10000);
-  }
-
-  std::unique_ptr<VideoResourceUpdater> CreateUpdaterForSoftware() {
-    return std::make_unique<VideoResourceUpdater>(
-        nullptr, layer_tree_frame_sink_software_.get(),
-        resource_provider_software_.get(),
-        /*use_stream_video_draw_quad=*/false,
-        /*use_gpu_memory_buffer_resources=*/false,
-        /*use_r16_texture=*/false,
-        /*max_resource_size=*/10000);
-  }
-
-  // Note that the number of pixels needed for |size| must be less than or equal
-  // to the number of pixels needed for size of 100x100.
-  scoped_refptr<media::VideoFrame> CreateTestYUVVideoFrame(
-      const gfx::Size& size = gfx::Size(10, 10)) {
-    constexpr int kMaxDimension = 100;
-    static uint8_t y_data[kMaxDimension * kMaxDimension] = {0};
-    static uint8_t u_data[kMaxDimension * kMaxDimension / 2] = {0};
-    static uint8_t v_data[kMaxDimension * kMaxDimension / 2] = {0};
-
-    CHECK_LE(size.width() * size.height(), kMaxDimension * kMaxDimension);
-
-    scoped_refptr<media::VideoFrame> video_frame =
-        media::VideoFrame::WrapExternalYuvData(
-            media::PIXEL_FORMAT_I422,  // format
-            size,                      // coded_size
-            gfx::Rect(size),           // visible_rect
-            size,                      // natural_size
-            size.width(),              // y_stride
-            size.width() / 2,          // u_stride
-            size.width() / 2,          // v_stride
-            y_data,                    // y_data
-            u_data,                    // u_data
-            v_data,                    // v_data
-            base::TimeDelta());        // timestamp
-    EXPECT_TRUE(video_frame);
-    return video_frame;
-  }
-
-  scoped_refptr<media::VideoFrame> CreateWonkyTestYUVVideoFrame() {
-    const int kDimension = 10;
-    const int kYWidth = kDimension + 5;
-    const int kUWidth = (kYWidth + 1) / 2 + 200;
-    const int kVWidth = (kYWidth + 1) / 2 + 1;
-    static uint8_t y_data[kYWidth * kDimension] = {0};
-    static uint8_t u_data[kUWidth * kDimension] = {0};
-    static uint8_t v_data[kVWidth * kDimension] = {0};
-
-    scoped_refptr<media::VideoFrame> video_frame =
-        media::VideoFrame::WrapExternalYuvData(
-            media::PIXEL_FORMAT_I422,                 // format
-            gfx::Size(kYWidth, kDimension),           // coded_size
-            gfx::Rect(2, 0, kDimension, kDimension),  // visible_rect
-            gfx::Size(kDimension, kDimension),        // natural_size
-            -kYWidth,                                 // y_stride (negative)
-            kUWidth,                                  // u_stride
-            kVWidth,                                  // v_stride
-            y_data + kYWidth * (kDimension - 1),      // y_data
-            u_data,                                   // u_data
-            v_data,                                   // v_data
-            base::TimeDelta());                       // timestamp
-    EXPECT_TRUE(video_frame);
-    return video_frame;
-  }
-
-  scoped_refptr<media::VideoFrame> CreateTestHighBitFrame() {
-    const int kDimension = 10;
-    gfx::Size size(kDimension, kDimension);
-
-    scoped_refptr<media::VideoFrame> video_frame(media::VideoFrame::CreateFrame(
-        media::PIXEL_FORMAT_YUV420P10, size, gfx::Rect(size), size,
-        base::TimeDelta()));
-    EXPECT_TRUE(video_frame);
-    return video_frame;
-  }
-
-  void SetReleaseSyncToken(const gpu::SyncToken& sync_token) {
-    release_sync_token_ = sync_token;
-  }
-
-  scoped_refptr<media::VideoFrame> CreateTestHardwareVideoFrame(
-      media::VideoPixelFormat format,
-      unsigned target) {
-    const int kDimension = 10;
-    gfx::Size size(kDimension, kDimension);
-
-    gpu::Mailbox mailbox;
-    mailbox.name[0] = 51;
-
-    gpu::MailboxHolder mailbox_holders[media::VideoFrame::kMaxPlanes] = {
-        gpu::MailboxHolder(mailbox, kMailboxSyncToken, target)};
-    scoped_refptr<media::VideoFrame> video_frame =
-        media::VideoFrame::WrapNativeTextures(
-            format, mailbox_holders,
-            base::Bind(&VideoResourceUpdaterTest::SetReleaseSyncToken,
-                       base::Unretained(this)),
-            size,                // coded_size
-            gfx::Rect(size),     // visible_rect
-            size,                // natural_size
-            base::TimeDelta());  // timestamp
-    EXPECT_TRUE(video_frame);
-    return video_frame;
-  }
-
-  scoped_refptr<media::VideoFrame> CreateTestRGBAHardwareVideoFrame() {
-    return CreateTestHardwareVideoFrame(media::PIXEL_FORMAT_ARGB,
-                                        GL_TEXTURE_2D);
-  }
-
-  scoped_refptr<media::VideoFrame> CreateTestStreamTextureHardwareVideoFrame(
-      bool needs_copy) {
-    scoped_refptr<media::VideoFrame> video_frame = CreateTestHardwareVideoFrame(
-        media::PIXEL_FORMAT_ARGB, GL_TEXTURE_EXTERNAL_OES);
-    video_frame->metadata()->SetBoolean(
-        media::VideoFrameMetadata::COPY_REQUIRED, needs_copy);
-    return video_frame;
-  }
-
-  scoped_refptr<media::VideoFrame> CreateTestYuvHardwareVideoFrame(
-      media::VideoPixelFormat format,
-      size_t num_textures,
-      unsigned target) {
-    const int kDimension = 10;
-    gfx::Size size(kDimension, kDimension);
-
-    gpu::MailboxHolder mailbox_holders[media::VideoFrame::kMaxPlanes];
-    for (size_t i = 0; i < num_textures; ++i) {
-      gpu::Mailbox mailbox;
-      mailbox.name[0] = 50 + 1;
-      mailbox_holders[i] =
-          gpu::MailboxHolder(mailbox, kMailboxSyncToken, target);
-    }
-    scoped_refptr<media::VideoFrame> video_frame =
-        media::VideoFrame::WrapNativeTextures(
-            format, mailbox_holders,
-            base::Bind(&VideoResourceUpdaterTest::SetReleaseSyncToken,
-                       base::Unretained(this)),
-            size,                // coded_size
-            gfx::Rect(size),     // visible_rect
-            size,                // natural_size
-            base::TimeDelta());  // timestamp
-    EXPECT_TRUE(video_frame);
-    return video_frame;
-  }
-
-  static const gpu::SyncToken kMailboxSyncToken;
-
-  UploadCounterGLES2Interface* gl_;
-  scoped_refptr<viz::TestContextProvider> context_provider_;
-  std::unique_ptr<FakeLayerTreeFrameSink> layer_tree_frame_sink_software_;
-  std::unique_ptr<LayerTreeResourceProvider> resource_provider3d_;
-  std::unique_ptr<LayerTreeResourceProvider> resource_provider_software_;
-  gpu::SyncToken release_sync_token_;
-  bool use_r16_texture_ = false;
-};
-
-const gpu::SyncToken VideoResourceUpdaterTest::kMailboxSyncToken =
-    gpu::SyncToken(gpu::CommandBufferNamespace::GPU_IO,
-                   gpu::CommandBufferId::FromUnsafeValue(0x123),
-                   7);
-
-TEST_F(VideoResourceUpdaterTest, SoftwareFrame) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-  scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
-}
-
-TEST_F(VideoResourceUpdaterTest, HighBitFrameNoF16) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-  scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame();
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
-}
-
-class VideoResourceUpdaterTestWithF16 : public VideoResourceUpdaterTest {
- public:
-  VideoResourceUpdaterTestWithF16() : VideoResourceUpdaterTest() {
-    gl_->set_support_texture_half_float_linear(true);
-  }
-};
-
-TEST_F(VideoResourceUpdaterTestWithF16, HighBitFrame) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-  scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame();
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
-  EXPECT_NEAR(resources.multiplier, 2.0, 0.1);
-  EXPECT_NEAR(resources.offset, 0.5, 0.1);
-
-  // Create the resource again, to test the path where the
-  // resources are cached.
-  VideoFrameExternalResources resources2 =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::YUV, resources2.type);
-  EXPECT_NEAR(resources2.multiplier, 2.0, 0.1);
-  EXPECT_NEAR(resources2.offset, 0.5, 0.1);
-}
-
-class VideoResourceUpdaterTestWithR16 : public VideoResourceUpdaterTest {
- public:
-  VideoResourceUpdaterTestWithR16() : VideoResourceUpdaterTest() {
-    use_r16_texture_ = true;
-    gl_->set_support_texture_norm16(true);
-  }
-};
-
-TEST_F(VideoResourceUpdaterTestWithR16, HighBitFrame) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-  scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame();
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
-
-  // Max 10-bit values as read by a sampler.
-  double max_10bit_value = ((1 << 10) - 1) / 65535.0;
-  EXPECT_NEAR(resources.multiplier * max_10bit_value, 1.0, 0.0001);
-  EXPECT_NEAR(resources.offset, 0.0, 0.1);
-
-  // Create the resource again, to test the path where the
-  // resources are cached.
-  VideoFrameExternalResources resources2 =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::YUV, resources2.type);
-  EXPECT_NEAR(resources2.multiplier * max_10bit_value, 1.0, 0.0001);
-  EXPECT_NEAR(resources2.offset, 0.0, 0.1);
-}
-
-TEST_F(VideoResourceUpdaterTest, HighBitFrameSoftwareCompositor) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForSoftware();
-  scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame();
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
-}
-
-TEST_F(VideoResourceUpdaterTest, WonkySoftwareFrame) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-  scoped_refptr<media::VideoFrame> video_frame = CreateWonkyTestYUVVideoFrame();
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
-}
-
-TEST_F(VideoResourceUpdaterTest, WonkySoftwareFrameSoftwareCompositor) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForSoftware();
-  scoped_refptr<media::VideoFrame> video_frame = CreateWonkyTestYUVVideoFrame();
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
-}
-
-TEST_F(VideoResourceUpdaterTest, ReuseResource) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-  scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
-  video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234));
-
-  // Allocate the resources for a YUV video frame.
-  gl_->ResetUploadCount();
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
-  EXPECT_EQ(3u, resources.resources.size());
-  EXPECT_EQ(3u, resources.release_callbacks.size());
-  // Expect exactly three texture uploads, one for each plane.
-  EXPECT_EQ(3, gl_->UploadCount());
-
-  // Simulate the ResourceProvider releasing the resources back to the video
-  // updater.
-  for (auto& release_callback : resources.release_callbacks)
-    std::move(release_callback).Run(gpu::SyncToken(), false);
-
-  // Allocate resources for the same frame.
-  gl_->ResetUploadCount();
-  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
-  EXPECT_EQ(3u, resources.resources.size());
-  EXPECT_EQ(3u, resources.release_callbacks.size());
-  // The data should be reused so expect no texture uploads.
-  EXPECT_EQ(0, gl_->UploadCount());
-}
-
-TEST_F(VideoResourceUpdaterTest, ReuseResourceNoDelete) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-  scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
-  video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234));
-
-  // Allocate the resources for a YUV video frame.
-  gl_->ResetUploadCount();
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
-  EXPECT_EQ(3u, resources.resources.size());
-  EXPECT_EQ(3u, resources.release_callbacks.size());
-  // Expect exactly three texture uploads, one for each plane.
-  EXPECT_EQ(3, gl_->UploadCount());
-
-  // Allocate resources for the same frame.
-  gl_->ResetUploadCount();
-  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
-  EXPECT_EQ(3u, resources.resources.size());
-  EXPECT_EQ(3u, resources.release_callbacks.size());
-  // The data should be reused so expect no texture uploads.
-  EXPECT_EQ(0, gl_->UploadCount());
-}
-
-TEST_F(VideoResourceUpdaterTest, SoftwareFrameSoftwareCompositor) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForSoftware();
-  scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
-}
-
-TEST_F(VideoResourceUpdaterTest, ReuseResourceSoftwareCompositor) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForSoftware();
-  scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
-  video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234));
-
-  // Allocate the resources for a software video frame.
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
-  EXPECT_EQ(1u, resources.resources.size());
-  EXPECT_EQ(1u, resources.release_callbacks.size());
-  // Expect exactly one allocated shared bitmap.
-  EXPECT_EQ(1u, layer_tree_frame_sink_software_->shared_bitmaps().size());
-  auto shared_bitmaps = layer_tree_frame_sink_software_->shared_bitmaps();
-
-  // Simulate the ResourceProvider releasing the resource back to the video
-  // updater.
-  std::move(resources.release_callbacks[0]).Run(gpu::SyncToken(), false);
-
-  // Allocate resources for the same frame.
-  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
-  EXPECT_EQ(1u, resources.resources.size());
-  EXPECT_EQ(1u, resources.release_callbacks.size());
-
-  // Ensure that the same shared bitmap was reused.
-  EXPECT_EQ(layer_tree_frame_sink_software_->shared_bitmaps(), shared_bitmaps);
-}
-
-TEST_F(VideoResourceUpdaterTest, ReuseResourceNoDeleteSoftwareCompositor) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForSoftware();
-  scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
-  video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234));
-
-  // Allocate the resources for a software video frame.
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
-  EXPECT_EQ(1u, resources.resources.size());
-  EXPECT_EQ(1u, resources.release_callbacks.size());
-  // Expect exactly one allocated shared bitmap.
-  EXPECT_EQ(1u, layer_tree_frame_sink_software_->shared_bitmaps().size());
-  auto shared_bitmaps = layer_tree_frame_sink_software_->shared_bitmaps();
-
-  // Allocate resources for the same frame.
-  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
-  EXPECT_EQ(1u, resources.resources.size());
-  EXPECT_EQ(1u, resources.release_callbacks.size());
-
-  // Ensure that the same shared bitmap was reused.
-  EXPECT_EQ(layer_tree_frame_sink_software_->shared_bitmaps(), shared_bitmaps);
-}
-
-TEST_F(VideoResourceUpdaterTest, ChangeResourceSizeSoftwareCompositor) {
-  constexpr gfx::Size kSize1(10, 10);
-  constexpr gfx::Size kSize2(20, 20);
-
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForSoftware();
-
-  // Allocate the resources for a software video frame.
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(
-          CreateTestYUVVideoFrame(kSize1));
-  // Expect exactly one allocated shared bitmap.
-  EXPECT_EQ(1u, layer_tree_frame_sink_software_->shared_bitmaps().size());
-  auto shared_bitmaps = layer_tree_frame_sink_software_->shared_bitmaps();
-
-  // Simulate the ResourceProvider releasing the resource back to the video
-  // updater.
-  std::move(resources.release_callbacks[0]).Run(gpu::SyncToken(), false);
-
-  // Allocate resources for the next frame with a different size.
-  resources = updater->CreateExternalResourcesFromVideoFrame(
-      CreateTestYUVVideoFrame(kSize2));
-
-  // The first resource was released, so it can be reused but it's the wrong
-  // size. We should expect the first shared bitmap to be deleted and a new
-  // shared bitmap to be allocated.
-  EXPECT_EQ(1u, layer_tree_frame_sink_software_->shared_bitmaps().size());
-  EXPECT_NE(layer_tree_frame_sink_software_->shared_bitmaps(), shared_bitmaps);
-}
-
-TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-
-  scoped_refptr<media::VideoFrame> video_frame =
-      CreateTestRGBAHardwareVideoFrame();
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
-  EXPECT_EQ(1u, resources.resources.size());
-  EXPECT_EQ(1u, resources.release_callbacks.size());
-
-  video_frame = CreateTestYuvHardwareVideoFrame(media::PIXEL_FORMAT_I420, 3,
-                                                GL_TEXTURE_RECTANGLE_ARB);
-
-  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
-  EXPECT_EQ(3u, resources.resources.size());
-  EXPECT_EQ(3u, resources.release_callbacks.size());
-  EXPECT_FALSE(resources.resources[0].read_lock_fences_enabled);
-  EXPECT_FALSE(resources.resources[1].read_lock_fences_enabled);
-  EXPECT_FALSE(resources.resources[2].read_lock_fences_enabled);
-
-  video_frame = CreateTestYuvHardwareVideoFrame(media::PIXEL_FORMAT_I420, 3,
-                                                GL_TEXTURE_RECTANGLE_ARB);
-  video_frame->metadata()->SetBoolean(
-      media::VideoFrameMetadata::READ_LOCK_FENCES_ENABLED, true);
-
-  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_TRUE(resources.resources[0].read_lock_fences_enabled);
-  EXPECT_TRUE(resources.resources[1].read_lock_fences_enabled);
-  EXPECT_TRUE(resources.resources[2].read_lock_fences_enabled);
-}
-
-TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes_StreamTexture) {
-  // Note that |use_stream_video_draw_quad| is true for this test.
-  std::unique_ptr<VideoResourceUpdater> updater =
-      CreateUpdaterForHardware(true);
-  gl_->ResetTextureCreationCount();
-  scoped_refptr<media::VideoFrame> video_frame =
-      CreateTestStreamTextureHardwareVideoFrame(false);
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::STREAM_TEXTURE, resources.type);
-  EXPECT_EQ(1u, resources.resources.size());
-  EXPECT_EQ((GLenum)GL_TEXTURE_EXTERNAL_OES,
-            resources.resources[0].mailbox_holder.texture_target);
-  EXPECT_EQ(1u, resources.release_callbacks.size());
-  EXPECT_EQ(0, gl_->TextureCreationCount());
-
-  // A copied stream texture should return an RGBA resource in a new
-  // GL_TEXTURE_2D texture.
-  gl_->ResetTextureCreationCount();
-  video_frame = CreateTestStreamTextureHardwareVideoFrame(true);
-  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
-  EXPECT_EQ(1u, resources.resources.size());
-  EXPECT_EQ((GLenum)GL_TEXTURE_2D,
-            resources.resources[0].mailbox_holder.texture_target);
-  EXPECT_EQ(1u, resources.release_callbacks.size());
-  EXPECT_EQ(1, gl_->TextureCreationCount());
-}
-
-TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes_TextureQuad) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-  gl_->ResetTextureCreationCount();
-  scoped_refptr<media::VideoFrame> video_frame =
-      CreateTestStreamTextureHardwareVideoFrame(false);
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
-  EXPECT_EQ(1u, resources.resources.size());
-  EXPECT_EQ((GLenum)GL_TEXTURE_EXTERNAL_OES,
-            resources.resources[0].mailbox_holder.texture_target);
-  EXPECT_EQ(1u, resources.release_callbacks.size());
-  EXPECT_EQ(0, gl_->TextureCreationCount());
-}
-
-// Passthrough the sync token returned by the compositor if we don't have an
-// existing release sync token.
-TEST_F(VideoResourceUpdaterTest, PassReleaseSyncToken) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-
-  const gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO,
-                                  gpu::CommandBufferId::FromUnsafeValue(0x123),
-                                  123);
-
-  {
-    scoped_refptr<media::VideoFrame> video_frame =
-        CreateTestRGBAHardwareVideoFrame();
-
-    VideoFrameExternalResources resources =
-        updater->CreateExternalResourcesFromVideoFrame(video_frame);
-
-    ASSERT_EQ(resources.release_callbacks.size(), 1u);
-    std::move(resources.release_callbacks[0]).Run(sync_token, false);
-  }
-
-  EXPECT_EQ(release_sync_token_, sync_token);
-}
-
-// Generate new sync token because video frame has an existing sync token.
-TEST_F(VideoResourceUpdaterTest, GenerateReleaseSyncToken) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-
-  const gpu::SyncToken sync_token1(gpu::CommandBufferNamespace::GPU_IO,
-                                   gpu::CommandBufferId::FromUnsafeValue(0x123),
-                                   123);
-
-  const gpu::SyncToken sync_token2(gpu::CommandBufferNamespace::GPU_IO,
-                                   gpu::CommandBufferId::FromUnsafeValue(0x234),
-                                   234);
-
-  {
-    scoped_refptr<media::VideoFrame> video_frame =
-        CreateTestRGBAHardwareVideoFrame();
-
-    VideoFrameExternalResources resources1 =
-        updater->CreateExternalResourcesFromVideoFrame(video_frame);
-    ASSERT_EQ(resources1.release_callbacks.size(), 1u);
-    std::move(resources1.release_callbacks[0]).Run(sync_token1, false);
-
-    VideoFrameExternalResources resources2 =
-        updater->CreateExternalResourcesFromVideoFrame(video_frame);
-    ASSERT_EQ(resources2.release_callbacks.size(), 1u);
-    std::move(resources2.release_callbacks[0]).Run(sync_token2, false);
-  }
-
-  EXPECT_TRUE(release_sync_token_.HasData());
-  EXPECT_NE(release_sync_token_, sync_token1);
-  EXPECT_NE(release_sync_token_, sync_token2);
-}
-
-// Pass mailbox sync token as is if no GL operations are performed before frame
-// resources are handed off to the compositor.
-TEST_F(VideoResourceUpdaterTest, PassMailboxSyncToken) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-
-  scoped_refptr<media::VideoFrame> video_frame =
-      CreateTestRGBAHardwareVideoFrame();
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-
-  ASSERT_EQ(resources.resources.size(), 1u);
-  EXPECT_TRUE(resources.resources[0].mailbox_holder.sync_token.HasData());
-  EXPECT_EQ(resources.resources[0].mailbox_holder.sync_token,
-            kMailboxSyncToken);
-}
-
-// Generate new sync token for compositor when copying the texture.
-TEST_F(VideoResourceUpdaterTest, GenerateSyncTokenOnTextureCopy) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-
-  scoped_refptr<media::VideoFrame> video_frame =
-      CreateTestStreamTextureHardwareVideoFrame(true /* needs_copy */);
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-
-  ASSERT_EQ(resources.resources.size(), 1u);
-  EXPECT_TRUE(resources.resources[0].mailbox_holder.sync_token.HasData());
-  EXPECT_NE(resources.resources[0].mailbox_holder.sync_token,
-            kMailboxSyncToken);
-}
-
-// NV12 VideoFrames backed by a single native texture can be sampled out
-// by GL as RGB. To use them as HW overlays we need to know the format
-// of the underlying buffer, that is YUV_420_BIPLANAR.
-TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes_SingleNV12) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-  gl_->ResetTextureCreationCount();
-  scoped_refptr<media::VideoFrame> video_frame = CreateTestHardwareVideoFrame(
-      media::PIXEL_FORMAT_NV12, GL_TEXTURE_EXTERNAL_OES);
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::RGB, resources.type);
-  EXPECT_EQ(1u, resources.resources.size());
-  EXPECT_EQ((GLenum)GL_TEXTURE_EXTERNAL_OES,
-            resources.resources[0].mailbox_holder.texture_target);
-  EXPECT_EQ(gfx::BufferFormat::YUV_420_BIPLANAR,
-            resources.resources[0].buffer_format);
-
-  video_frame = CreateTestYuvHardwareVideoFrame(media::PIXEL_FORMAT_NV12, 1,
-                                                GL_TEXTURE_RECTANGLE_ARB);
-  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::RGB, resources.type);
-  EXPECT_EQ(1u, resources.resources.size());
-  EXPECT_EQ((GLenum)GL_TEXTURE_RECTANGLE_ARB,
-            resources.resources[0].mailbox_holder.texture_target);
-  EXPECT_EQ(gfx::BufferFormat::YUV_420_BIPLANAR,
-            resources.resources[0].buffer_format);
-
-  EXPECT_EQ(0, gl_->TextureCreationCount());
-}
-
-TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes_DualNV12) {
-  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
-  gl_->ResetTextureCreationCount();
-  scoped_refptr<media::VideoFrame> video_frame =
-      CreateTestYuvHardwareVideoFrame(media::PIXEL_FORMAT_NV12, 2,
-                                      GL_TEXTURE_EXTERNAL_OES);
-
-  VideoFrameExternalResources resources =
-      updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
-  EXPECT_EQ(2u, resources.resources.size());
-  EXPECT_EQ(2u, resources.release_callbacks.size());
-  EXPECT_EQ((GLenum)GL_TEXTURE_EXTERNAL_OES,
-            resources.resources[0].mailbox_holder.texture_target);
-  // |updater| doesn't set |buffer_format| in this case.
-  EXPECT_EQ(gfx::BufferFormat::RGBA_8888, resources.resources[0].buffer_format);
-
-  video_frame = CreateTestYuvHardwareVideoFrame(media::PIXEL_FORMAT_NV12, 2,
-                                                GL_TEXTURE_RECTANGLE_ARB);
-  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
-  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
-  EXPECT_EQ(2u, resources.resources.size());
-  EXPECT_EQ((GLenum)GL_TEXTURE_RECTANGLE_ARB,
-            resources.resources[0].mailbox_holder.texture_target);
-  EXPECT_EQ(gfx::BufferFormat::RGBA_8888, resources.resources[0].buffer_format);
-  EXPECT_EQ(0, gl_->TextureCreationCount());
-}
-
-}  // namespace
-}  // namespace cc
diff --git a/cc/test/fake_picture_layer_tiling_client.cc b/cc/test/fake_picture_layer_tiling_client.cc
index 223dcffd..d2637665 100644
--- a/cc/test/fake_picture_layer_tiling_client.cc
+++ b/cc/test/fake_picture_layer_tiling_client.cc
@@ -22,7 +22,7 @@
       has_valid_tile_priorities_(true) {}
 
 FakePictureLayerTilingClient::FakePictureLayerTilingClient(
-    LayerTreeResourceProvider* resource_provider,
+    viz::ClientResourceProvider* resource_provider,
     viz::ContextProvider* context_provider)
     : resource_pool_(
           std::make_unique<ResourcePool>(resource_provider,
diff --git a/cc/test/fake_picture_layer_tiling_client.h b/cc/test/fake_picture_layer_tiling_client.h
index e954ccd..aa38db905 100644
--- a/cc/test/fake_picture_layer_tiling_client.h
+++ b/cc/test/fake_picture_layer_tiling_client.h
@@ -13,17 +13,17 @@
 #include "ui/gfx/geometry/rect.h"
 
 namespace viz {
+class ClientResourceProvider;
 class ContextProvider;
 }
 
 namespace cc {
-class LayerTreeResourceProvider;
 
 class FakePictureLayerTilingClient : public PictureLayerTilingClient {
  public:
   FakePictureLayerTilingClient();
   explicit FakePictureLayerTilingClient(
-      LayerTreeResourceProvider* resource_provider,
+      viz::ClientResourceProvider* resource_provider,
       viz::ContextProvider* context_provider);
   ~FakePictureLayerTilingClient() override;
 
diff --git a/cc/test/fake_resource_provider.h b/cc/test/fake_resource_provider.h
index 7245107..150a7e2 100644
--- a/cc/test/fake_resource_provider.h
+++ b/cc/test/fake_resource_provider.h
@@ -5,16 +5,17 @@
 #ifndef CC_TEST_FAKE_RESOURCE_PROVIDER_H_
 #define CC_TEST_FAKE_RESOURCE_PROVIDER_H_
 
-#include "cc/resources/layer_tree_resource_provider.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/service/display/display_resource_provider.h"
 
 namespace cc {
 
 class FakeResourceProvider {
  public:
-  static std::unique_ptr<LayerTreeResourceProvider>
-  CreateLayerTreeResourceProvider(viz::ContextProvider* context_provider) {
-    return std::make_unique<LayerTreeResourceProvider>(context_provider, true);
+  static std::unique_ptr<viz::ClientResourceProvider>
+  CreateClientResourceProvider(viz::ContextProvider* context_provider) {
+    return std::make_unique<viz::ClientResourceProvider>(context_provider,
+                                                         true);
   }
 
   static std::unique_ptr<viz::DisplayResourceProvider>
diff --git a/cc/test/layer_test_common.h b/cc/test/layer_test_common.h
index daa44207..bc353c7 100644
--- a/cc/test/layer_test_common.h
+++ b/cc/test/layer_test_common.h
@@ -181,7 +181,7 @@
     LayerTreeFrameSink* layer_tree_frame_sink() const {
       return host_->host_impl()->layer_tree_frame_sink();
     }
-    LayerTreeResourceProvider* resource_provider() const {
+    viz::ClientResourceProvider* resource_provider() const {
       return host_->host_impl()->resource_provider();
     }
     LayerImpl* root_layer_for_testing() const {
diff --git a/cc/test/pixel_test.cc b/cc/test/pixel_test.cc
index e4c5582..03320d7 100644
--- a/cc/test/pixel_test.cc
+++ b/cc/test/pixel_test.cc
@@ -13,11 +13,11 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "cc/base/switches.h"
 #include "cc/raster/raster_buffer_provider.h"
-#include "cc/resources/layer_tree_resource_provider.h"
 #include "cc/test/fake_output_surface_client.h"
 #include "cc/test/pixel_test_output_surface.h"
 #include "cc/test/pixel_test_utils.h"
 #include "cc/test/test_in_process_context_provider.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/frame_sinks/begin_frame_source.h"
 #include "components/viz/common/frame_sinks/copy_output_request.h"
 #include "components/viz/common/frame_sinks/copy_output_result.h"
@@ -206,7 +206,7 @@
   child_context_provider_ = base::MakeRefCounted<TestInProcessContextProvider>(
       /*enable_oop_rasterization=*/false);
   child_context_provider_->BindToCurrentThread();
-  child_resource_provider_ = std::make_unique<LayerTreeResourceProvider>(
+  child_resource_provider_ = std::make_unique<viz::ClientResourceProvider>(
       child_context_provider_.get(), true);
 }
 
@@ -240,7 +240,7 @@
   resource_provider_ = std::make_unique<viz::DisplayResourceProvider>(
       nullptr, shared_bitmap_manager_.get());
   child_resource_provider_ =
-      std::make_unique<LayerTreeResourceProvider>(nullptr, true);
+      std::make_unique<viz::ClientResourceProvider>(nullptr, true);
 
   auto renderer = std::make_unique<viz::SoftwareRenderer>(
       &renderer_settings_, output_surface_.get(), resource_provider_.get());
diff --git a/cc/test/pixel_test.h b/cc/test/pixel_test.h
index 0d69012..5bcf422 100644
--- a/cc/test/pixel_test.h
+++ b/cc/test/pixel_test.h
@@ -7,9 +7,9 @@
 
 #include "base/files/file_util.h"
 #include "base/single_thread_task_runner.h"
-#include "cc/resources/layer_tree_resource_provider.h"
 #include "cc/test/pixel_comparator.h"
 #include "cc/trees/layer_tree_settings.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/quads/render_pass.h"
 #include "components/viz/common/quads/shared_bitmap.h"
 #include "components/viz/service/display/gl_renderer.h"
@@ -79,7 +79,7 @@
   std::unique_ptr<viz::TestSharedBitmapManager> shared_bitmap_manager_;
   std::unique_ptr<viz::DisplayResourceProvider> resource_provider_;
   scoped_refptr<TestInProcessContextProvider> child_context_provider_;
-  std::unique_ptr<LayerTreeResourceProvider> child_resource_provider_;
+  std::unique_ptr<viz::ClientResourceProvider> child_resource_provider_;
   std::unique_ptr<viz::DirectRenderer> renderer_;
   viz::SoftwareRenderer* software_renderer_ = nullptr;
   std::unique_ptr<SkBitmap> result_bitmap_;
diff --git a/cc/test/render_pass_test_utils.cc b/cc/test/render_pass_test_utils.cc
index 4d03a29..0fb01351 100644
--- a/cc/test/render_pass_test_utils.cc
+++ b/cc/test/render_pass_test_utils.cc
@@ -8,7 +8,7 @@
 
 #include "base/bind.h"
 #include "base/bind_helpers.h"
-#include "cc/resources/layer_tree_resource_provider.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/quads/debug_border_draw_quad.h"
 #include "components/viz/common/quads/render_pass_draw_quad.h"
 #include "components/viz/common/quads/shared_quad_state.h"
@@ -30,7 +30,7 @@
 namespace {
 
 viz::ResourceId CreateAndImportResource(
-    LayerTreeResourceProvider* resource_provider,
+    viz::ClientResourceProvider* resource_provider,
     const gpu::SyncToken& sync_token,
     gfx::ColorSpace color_space = gfx::ColorSpace::CreateSRGB()) {
   auto transfer_resource = viz::TransferableResource::MakeGL(
@@ -136,7 +136,7 @@
 }
 
 void AddOneOfEveryQuadType(viz::RenderPass* to_pass,
-                           LayerTreeResourceProvider* resource_provider,
+                           viz::ClientResourceProvider* resource_provider,
                            viz::RenderPassId child_pass_id) {
   gfx::Rect rect(0, 0, 100, 100);
   gfx::Rect visible_rect(0, 0, 100, 100);
@@ -255,7 +255,7 @@
 void AddOneOfEveryQuadTypeInDisplayResourceProvider(
     viz::RenderPass* to_pass,
     viz::DisplayResourceProvider* resource_provider,
-    LayerTreeResourceProvider* child_resource_provider,
+    viz::ClientResourceProvider* child_resource_provider,
     viz::ContextProvider* child_context_provider,
     viz::RenderPassId child_pass_id,
     gpu::SyncToken* sync_token_for_mailbox_tebxture) {
diff --git a/cc/test/render_pass_test_utils.h b/cc/test/render_pass_test_utils.h
index 2338d12..59f3281 100644
--- a/cc/test/render_pass_test_utils.h
+++ b/cc/test/render_pass_test_utils.h
@@ -21,6 +21,7 @@
 }
 
 namespace viz {
+class ClientResourceProvider;
 class ContextProvider;
 class DisplayResourceProvider;
 class RenderPass;
@@ -28,7 +29,6 @@
 }  // namespace viz
 
 namespace cc {
-class LayerTreeResourceProvider;
 
 // Adds a new render pass with the provided properties to the given
 // render pass list.
@@ -75,16 +75,16 @@
                        SkBlendMode blend_mode);
 
 void AddOneOfEveryQuadType(viz::RenderPass* to_pass,
-                           LayerTreeResourceProvider* resource_provider,
+                           viz::ClientResourceProvider* resource_provider,
                            viz::RenderPassId child_pass_id);
 
 // Adds a render pass quad with the given mask resource, filter, and transform.
-// The resource used in render pass is created by LayerTreeResourceProvider,
+// The resource used in render pass is created by viz::ClientResourceProvider,
 // then transferred to viz::DisplayResourceProvider.
 void AddOneOfEveryQuadTypeInDisplayResourceProvider(
     viz::RenderPass* to_pass,
     viz::DisplayResourceProvider* resource_provider,
-    LayerTreeResourceProvider* child_resource_provider,
+    viz::ClientResourceProvider* child_resource_provider,
     viz::ContextProvider* child_context_provider,
     viz::RenderPassId child_pass_id,
     gpu::SyncToken* sync_token_for_mailbox_texture);
diff --git a/cc/test/resource_provider_test_utils.cc b/cc/test/resource_provider_test_utils.cc
index 948b353..74d5f77 100644
--- a/cc/test/resource_provider_test_utils.cc
+++ b/cc/test/resource_provider_test_utils.cc
@@ -12,7 +12,7 @@
 SendResourceAndGetChildToParentMap(
     const std::vector<viz::ResourceId>& resource_ids,
     viz::DisplayResourceProvider* resource_provider,
-    LayerTreeResourceProvider* child_resource_provider,
+    viz::ClientResourceProvider* child_resource_provider,
     viz::ContextProvider* child_context_provider) {
   DCHECK(resource_provider);
   DCHECK(child_resource_provider);
diff --git a/cc/test/resource_provider_test_utils.h b/cc/test/resource_provider_test_utils.h
index fa84621..d3e7af5e 100644
--- a/cc/test/resource_provider_test_utils.h
+++ b/cc/test/resource_provider_test_utils.h
@@ -5,7 +5,7 @@
 #ifndef CC_TEST_RESOURCE_PROVIDER_TEST_UTILS_H_
 #define CC_TEST_RESOURCE_PROVIDER_TEST_UTILS_H_
 
-#include "cc/resources/layer_tree_resource_provider.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/service/display/display_resource_provider.h"
 
 namespace cc {
@@ -15,7 +15,7 @@
 SendResourceAndGetChildToParentMap(
     const std::vector<viz::ResourceId>& resource_ids,
     viz::DisplayResourceProvider* resource_provider,
-    LayerTreeResourceProvider* child_resource_provider,
+    viz::ClientResourceProvider* child_resource_provider,
     viz::ContextProvider* child_context_provider);
 
 }  // namespace cc
diff --git a/cc/tiles/picture_layer_tiling_set_unittest.cc b/cc/tiles/picture_layer_tiling_set_unittest.cc
index c1f7703c..fdd8e78 100644
--- a/cc/tiles/picture_layer_tiling_set_unittest.cc
+++ b/cc/tiles/picture_layer_tiling_set_unittest.cc
@@ -7,12 +7,12 @@
 #include <map>
 #include <vector>
 
-#include "cc/resources/layer_tree_resource_provider.h"
 #include "cc/test/fake_output_surface_client.h"
 #include "cc/test/fake_picture_layer_tiling_client.h"
 #include "cc/test/fake_raster_source.h"
 #include "cc/test/fake_resource_provider.h"
 #include "cc/trees/layer_tree_settings.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/test/fake_output_surface.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/geometry/size_conversions.h"
@@ -246,8 +246,8 @@
         viz::TestContextProvider::Create();
     ASSERT_EQ(context_provider->BindToCurrentThread(),
               gpu::ContextResult::kSuccess);
-    std::unique_ptr<LayerTreeResourceProvider> resource_provider =
-        FakeResourceProvider::CreateLayerTreeResourceProvider(
+    std::unique_ptr<viz::ClientResourceProvider> resource_provider =
+        FakeResourceProvider::CreateClientResourceProvider(
             context_provider.get());
 
     FakePictureLayerTilingClient client(resource_provider.get(),
diff --git a/cc/trees/layer_tree_frame_sink.h b/cc/trees/layer_tree_frame_sink.h
index 7f550dc..0a6c126 100644
--- a/cc/trees/layer_tree_frame_sink.h
+++ b/cc/trees/layer_tree_frame_sink.h
@@ -14,11 +14,11 @@
 #include "base/single_thread_task_runner.h"
 #include "base/threading/thread_checker.h"
 #include "cc/cc_export.h"
+#include "components/viz/client/shared_bitmap_reporter.h"
 #include "components/viz/common/gpu/context_lost_observer.h"
 #include "components/viz/common/gpu/context_provider.h"
 #include "components/viz/common/gpu/raster_context_provider.h"
 #include "components/viz/common/resources/returned_resource.h"
-#include "components/viz/common/resources/shared_bitmap_reporter.h"
 #include "gpu/command_buffer/common/texture_in_use_response.h"
 #include "ui/gfx/color_space.h"
 
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index c4f2427..011763e 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -3045,7 +3045,7 @@
     max_texture_size_ = 16 * 1024;
   }
 
-  resource_provider_ = std::make_unique<LayerTreeResourceProvider>(
+  resource_provider_ = std::make_unique<viz::ClientResourceProvider>(
       layer_tree_frame_sink_->context_provider(),
       layer_tree_frame_sink_->capabilities().delegated_sync_points_required);
   resource_pool_ = std::make_unique<ResourcePool>(
@@ -4962,7 +4962,7 @@
     gpu::Mailbox mailbox = gpu::Mailbox::Generate();
     gl->ProduceTextureDirectCHROMIUM(texture_alloc.texture_id, mailbox.name);
     gpu::SyncToken sync_token =
-        LayerTreeResourceProvider::GenerateSyncTokenHelper(gl);
+        viz::ClientResourceProvider::GenerateSyncTokenHelper(gl);
 
     transferable = viz::TransferableResource::MakeGLOverlay(
         mailbox, GL_LINEAR, texture_alloc.texture_target, sync_token,
@@ -5006,7 +5006,8 @@
     UIResourceData& data = it->second;
     viz::ResourceId id = data.resource_id_for_export;
     // Move the |data| to |deleted_ui_resources_| before removing it from the
-    // LayerTreeResourceProvider, so that the ReleaseCallback can see it there.
+    // viz::ClientResourceProvider, so that the ReleaseCallback can see it
+    // there.
     deleted_ui_resources_[uid] = std::move(data);
     ui_resource_map_.erase(it);
 
diff --git a/cc/trees/layer_tree_host_impl.h b/cc/trees/layer_tree_host_impl.h
index 33ceccd..68841c26 100644
--- a/cc/trees/layer_tree_host_impl.h
+++ b/cc/trees/layer_tree_host_impl.h
@@ -27,7 +27,6 @@
 #include "cc/input/input_handler.h"
 #include "cc/input/scrollbar_animation_controller.h"
 #include "cc/layers/layer_collections.h"
-#include "cc/resources/layer_tree_resource_provider.h"
 #include "cc/resources/ui_resource_client.h"
 #include "cc/scheduler/begin_frame_tracker.h"
 #include "cc/scheduler/commit_earlyout_reason.h"
@@ -44,6 +43,7 @@
 #include "cc/trees/render_frame_metadata.h"
 #include "cc/trees/task_runner_provider.h"
 #include "cc/trees/ukm_manager.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/frame_sinks/begin_frame_args.h"
 #include "components/viz/common/gpu/context_cache_controller.h"
 #include "components/viz/common/quads/render_pass.h"
@@ -547,7 +547,7 @@
   FrameRateCounter* fps_counter() { return fps_counter_.get(); }
   MemoryHistory* memory_history() { return memory_history_.get(); }
   DebugRectHistory* debug_rect_history() { return debug_rect_history_.get(); }
-  LayerTreeResourceProvider* resource_provider() {
+  viz::ClientResourceProvider* resource_provider() {
     return resource_provider_.get();
   }
   BrowserControlsOffsetManager* browser_controls_manager() {
@@ -891,7 +891,7 @@
   std::unique_ptr<viz::ContextCacheController::ScopedVisibility>
       worker_context_visibility_;
 
-  std::unique_ptr<LayerTreeResourceProvider> resource_provider_;
+  std::unique_ptr<viz::ClientResourceProvider> resource_provider_;
   bool need_update_gpu_rasterization_status_;
   bool content_has_slow_paths_;
   bool content_has_non_aa_paint_;
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
index ad0a42af..5cac959 100644
--- a/cc/trees/layer_tree_host_impl_unittest.cc
+++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -4576,7 +4576,7 @@
   }
 
   bool WillDraw(DrawMode draw_mode,
-                LayerTreeResourceProvider* provider) override {
+                viz::ClientResourceProvider* provider) override {
     will_draw_called_ = true;
     if (will_draw_returns_false_)
       return false;
@@ -4589,7 +4589,7 @@
     LayerImpl::AppendQuads(render_pass, append_quads_data);
   }
 
-  void DidDraw(LayerTreeResourceProvider* provider) override {
+  void DidDraw(viz::ClientResourceProvider* provider) override {
     did_draw_called_ = true;
     LayerImpl::DidDraw(provider);
   }
@@ -8356,7 +8356,7 @@
  public:
   BlendStateCheckLayer(LayerTreeImpl* tree_impl,
                        int id,
-                       LayerTreeResourceProvider* resource_provider)
+                       viz::ClientResourceProvider* resource_provider)
       : LayerImpl(tree_impl, id),
         blend_(false),
         has_render_surface_(false),
diff --git a/cc/trees/layer_tree_host_unittest_context.cc b/cc/trees/layer_tree_host_unittest_context.cc
index 8a159ec..3e7fa7e 100644
--- a/cc/trees/layer_tree_host_unittest_context.cc
+++ b/cc/trees/layer_tree_host_unittest_context.cc
@@ -885,7 +885,7 @@
     CHECK_EQ(result, gpu::ContextResult::kSuccess);
     shared_bitmap_manager_ = std::make_unique<viz::TestSharedBitmapManager>();
     child_resource_provider_ =
-        FakeResourceProvider::CreateLayerTreeResourceProvider(
+        FakeResourceProvider::CreateClientResourceProvider(
             child_context_provider_.get());
   }
 
@@ -1041,7 +1041,7 @@
 
   scoped_refptr<viz::TestContextProvider> child_context_provider_;
   std::unique_ptr<viz::SharedBitmapManager> shared_bitmap_manager_;
-  std::unique_ptr<LayerTreeResourceProvider> child_resource_provider_;
+  std::unique_ptr<viz::ClientResourceProvider> child_resource_provider_;
 
   scoped_refptr<VideoFrame> color_video_frame_;
   scoped_refptr<VideoFrame> hw_video_frame_;
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
index d6643c2..66b0edd 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -1411,7 +1411,7 @@
   return host_impl_->layer_tree_frame_sink()->context_provider();
 }
 
-LayerTreeResourceProvider* LayerTreeImpl::resource_provider() const {
+viz::ClientResourceProvider* LayerTreeImpl::resource_provider() const {
   return host_impl_->resource_provider();
 }
 
diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h
index 739a35a..95e6fe4 100644
--- a/cc/trees/layer_tree_impl.h
+++ b/cc/trees/layer_tree_impl.h
@@ -32,6 +32,7 @@
 }
 
 namespace viz {
+class ClientResourceProvider;
 class ContextProvider;
 }
 
@@ -44,7 +45,6 @@
 class LayerTreeDebugState;
 class LayerTreeImpl;
 class LayerTreeFrameSink;
-class LayerTreeResourceProvider;
 class LayerTreeSettings;
 class MemoryHistory;
 class PictureLayerImpl;
@@ -110,7 +110,7 @@
   const LayerTreeSettings& settings() const;
   const LayerTreeDebugState& debug_state() const;
   viz::ContextProvider* context_provider() const;
-  LayerTreeResourceProvider* resource_provider() const;
+  viz::ClientResourceProvider* resource_provider() const;
   TileManager* tile_manager() const;
   ImageDecodeCache* image_decode_cache() const;
   ImageAnimationController* image_animation_controller() const;
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
index 0596831..f0be4e8 100644
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -528,6 +528,7 @@
     "//chrome/android/third_party/compositor_animator:compositor_animator_java",
     "//chrome/android/webapk/libs/client:client_java",
     "//chrome/android/webapk/libs/common:common_java",
+    "//chrome/browser/android/metrics:ukm_utils_java",
     "//chrome/test/android:chrome_java_test_support",
     "//chrome/test/android/test_trusted_web_activity:test_trusted_web_activity_java",
     "//components/autofill/android:autofill_java",
@@ -858,6 +859,7 @@
   deps = [
     ":chrome_jni_for_test_registration($default_toolchain)",
     "//base/test:test_support",
+    "//chrome/browser/android/metrics:ukm_utils_for_test",
     "//components/heap_profiling:test_support",
     "//content/public/test/android:content_native_test_support",
   ]
@@ -1070,6 +1072,7 @@
     ":chrome_sync_shell_jni_registration($default_toolchain)",
     "//build/config:exe_and_shlib_deps",
     "//chrome:chrome_android_core",
+    "//chrome/browser/android/metrics:ukm_utils_for_test",
     "//components/sync",
     "//components/sync:test_support_fake_server_android",
   ]
@@ -1125,6 +1128,7 @@
     shared_library_for_unwind_asset = "chromefortest"
   }
   deps = [
+    "//chrome/browser/android/metrics:ukm_utils_java",
     "//components/heap_profiling:heap_profiling_java_test_support",
     "//content/public/test/android:content_java_test_support",
   ]
diff --git a/chrome/android/java/res/layout/download_location_preference_item.xml b/chrome/android/java/res/layout/download_location_preference_item.xml
index 6f81248..a9ba550c 100644
--- a/chrome/android/java/res/layout/download_location_preference_item.xml
+++ b/chrome/android/java/res/layout/download_location_preference_item.xml
@@ -31,7 +31,7 @@
             android:layout_marginStart="6dp"
             android:maxLines="1"
             android:ellipsize="end"
-            android:textAppearance="@style/BlackTitle3" />
+            android:textAppearance="@style/BlackTitle1" />
         <TextView
             android:id="@+id/description"
             android:layout_width="match_parent"
@@ -39,7 +39,7 @@
             android:layout_marginStart="6dp"
             android:maxLines="1"
             android:ellipsize="end"
-            android:textAppearance="@style/BlackSummary" />
+            android:textAppearance="@style/BlackBody" />
     </LinearLayout>
 
 </LinearLayout>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
index 828e2ef..f25c9d8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -1450,7 +1450,12 @@
     public boolean shouldShowAppMenu() {
         if (isActivityDestroyed()) return false;
 
-        if (ApplicationStatus.getStateForActivity(this) != ActivityState.RESUMED) return false;
+        @ActivityState
+        int state = ApplicationStatus.getStateForActivity(this);
+        boolean inMultiWindow = MultiWindowUtils.getInstance().isInMultiWindowMode(this);
+        if (state != ActivityState.RESUMED && (!inMultiWindow || state != ActivityState.PAUSED)) {
+            return false;
+        }
 
         // Do not show the menu if Contextual Search panel is opened.
         if (mContextualSearchManager != null && mContextualSearchManager.isSearchPanelOpened()) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelContent.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelContent.java
index 9e95af82..89a81036 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelContent.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelContent.java
@@ -455,7 +455,7 @@
     /**
      * @return Whether the given HTTP result code represents a failure or not.
      */
-    private boolean isHttpFailureCode(int httpResultCode) {
+    private static boolean isHttpFailureCode(int httpResultCode) {
         return httpResultCode <= 0 || httpResultCode >= 400;
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialog.java
index a85739c..88f0983 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialog.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialog.java
@@ -10,6 +10,8 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.CompoundButton.OnCheckedChangeListener;
 import android.widget.Spinner;
 import android.widget.TextView;
 
@@ -26,7 +28,7 @@
 /**
  * Dialog that is displayed to ask user where they want to download the file.
  */
-public class DownloadLocationDialog extends ModalDialogView {
+public class DownloadLocationDialog extends ModalDialogView implements OnCheckedChangeListener {
     private DownloadDirectoryAdapter mDirectoryAdapter;
 
     private AlertDialogEditText mFileName;
@@ -109,6 +111,15 @@
         boolean isInitial = PrefServiceBridge.getInstance().getPromptForDownloadAndroid()
                 == DownloadPromptStatus.SHOW_INITIAL;
         mDontShowAgain.setChecked(isInitial);
+        mDontShowAgain.setOnCheckedChangeListener(this);
+    }
+
+    // CompoundButton.OnCheckedChangeListener implementation.
+    @Override
+    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+        int newStatus =
+                isChecked ? DownloadPromptStatus.DONT_SHOW : DownloadPromptStatus.SHOW_PREFERENCE;
+        PrefServiceBridge.getInstance().setPromptForDownloadAndroid(newStatus);
     }
 
     // Helper methods available to DownloadLocationDialogBridge.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/UkmUtilsForTest.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/UkmUtilsForTest.java
index 55fe520..cfefe7a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/UkmUtilsForTest.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/UkmUtilsForTest.java
@@ -29,7 +29,15 @@
         nativeRecordSourceWithId(sourceId);
     }
 
+    /**
+     * Get the UKM clientId.
+     */
+    public static long getClientId() {
+        return nativeGetClientId();
+    }
+
     private static native boolean nativeIsEnabled();
     private static native boolean nativeHasSourceWithId(long sourceId);
     private static native void nativeRecordSourceWithId(long sourceId);
+    private static native long nativeGetClientId();
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java
index 8be801d..5643b9e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java
@@ -368,7 +368,6 @@
             mToolbarButtonsContainer = (ViewGroup) findViewById(R.id.toolbar_buttons);
 
             mHomeButton = (TintedImageButton) findViewById(R.id.home_button);
-            if (FeatureUtilities.isNewTabPageButtonEnabled()) changeIconToNTPIcon(mHomeButton);
 
             mUrlBar = (TextView) findViewById(R.id.url_bar);
 
@@ -526,7 +525,10 @@
 
         enableTabSwitchingResources();
 
-        if (mHomeButton != null) mHomeButton.setOnClickListener(this);
+        if (mHomeButton != null) {
+            mHomeButton.setOnClickListener(this);
+            if (FeatureUtilities.isNewTabPageButtonEnabled()) changeIconToNTPIcon(mHomeButton);
+        }
 
         mMenuButton.setOnKeyListener(new KeyboardNavigationListener() {
             @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarTablet.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarTablet.java
index 2e45274e..ba458ebf 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarTablet.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarTablet.java
@@ -129,8 +129,6 @@
         mShouldAnimateButtonVisibilityChange = false;
         mToolbarButtonsVisible = true;
         mToolbarButtons = new TintedImageButton[] {mBackButton, mForwardButton, mReloadButton};
-
-        if (FeatureUtilities.isNewTabPageButtonEnabled()) changeIconToNTPIcon(mHomeButton);
     }
 
     @Override
@@ -165,6 +163,7 @@
                 return findViewById(R.id.menu_button);
             }
         });
+        if (FeatureUtilities.isNewTabPageButtonEnabled()) changeIconToNTPIcon(mHomeButton);
 
         mBackButton.setOnClickListener(this);
         mBackButton.setLongClickable(true);
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
index 2decef8..9e60410 100644
--- a/chrome/android/java_sources.gni
+++ b/chrome/android/java_sources.gni
@@ -724,7 +724,6 @@
   "java/src/org/chromium/chrome/browser/metrics/OneShotImpressionListener.java",
   "java/src/org/chromium/chrome/browser/metrics/PackageMetrics.java",
   "java/src/org/chromium/chrome/browser/metrics/PageLoadMetrics.java",
-  "java/src/org/chromium/chrome/browser/metrics/UkmUtilsForTest.java",
   "java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java",
   "java/src/org/chromium/chrome/browser/metrics/UmaUtils.java",
   "java/src/org/chromium/chrome/browser/metrics/VariationsSession.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/FeaturesAnnotationsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/FeaturesAnnotationsTest.java
index fc3fe7c9..c5b2be3 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/FeaturesAnnotationsTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/FeaturesAnnotationsTest.java
@@ -14,7 +14,6 @@
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.CommandLine;
@@ -37,12 +36,6 @@
 @CommandLineFlags.Add(ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE)
 public class FeaturesAnnotationsTest {
     @Rule
-    public TestRule mChromeHomeProcessor = new ChromeModernDesign.Processor();
-
-    @Rule
-    public TestRule mFeaturesProcessor = new Features.InstrumentationProcessor();
-
-    @Rule
     public ChromeTabbedActivityTestRule mActivityRule = new ChromeTabbedActivityTestRule();
 
     /**
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/AutofillKeyboardAccessoryIntegrationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/AutofillKeyboardAccessoryIntegrationTest.java
index da0cf96b..ee762d61 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/AutofillKeyboardAccessoryIntegrationTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/AutofillKeyboardAccessoryIntegrationTest.java
@@ -21,7 +21,6 @@
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.ThreadUtils;
@@ -39,7 +38,6 @@
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.test.ChromeActivityTestRule;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
-import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
 import org.chromium.content.browser.test.util.Criteria;
 import org.chromium.content.browser.test.util.CriteriaHelper;
@@ -62,8 +60,6 @@
     @Rule
     public ChromeActivityTestRule<ChromeActivity> mActivityTestRule =
             new ChromeActivityTestRule<>(ChromeActivity.class);
-    @Rule
-    public TestRule mFeaturesProcessor = new Features.InstrumentationProcessor();
 
     private final AtomicReference<WebContents> mWebContentsRef = new AtomicReference<>();
     private final AtomicReference<ViewGroup> mContainerRef = new AtomicReference<>();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java
index 606bc85..1b8d51d6 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java
@@ -19,7 +19,6 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.ActivityState;
@@ -70,9 +69,6 @@
     @Rule
     public RenderTestRule mRenderTestRule = new RenderTestRule();
 
-    @Rule
-    public TestRule mChromeModernDesignStateRule = new ChromeModernDesign.Processor();
-
     private static final String TEST_PAGE_URL_GOOGLE = "/chrome/test/data/android/google.html";
     private static final String TEST_PAGE_TITLE_GOOGLE = "The Google";
     private static final String TEST_PAGE_TITLE_GOOGLE2 = "Google";
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsTest.java
index e28495e..1ac8319 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsTest.java
@@ -24,12 +24,10 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.MethodRule;
 import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.ThreadUtils;
-import org.chromium.base.test.params.MethodParamAnnotationRule;
 import org.chromium.base.test.params.ParameterAnnotations;
 import org.chromium.base.test.params.ParameterProvider;
 import org.chromium.base.test.params.ParameterSet;
@@ -98,18 +96,12 @@
     public ContextualSuggestionsDependenciesRule mContextualSuggestionsDeps =
             new ContextualSuggestionsDependenciesRule();
     @Rule
-    public TestRule mChromeModernDesignStateRule = new ChromeModernDesign.Processor();
-    @Rule
-    public TestRule mFeaturesProcessor = new Features.InstrumentationProcessor();
-    @Rule
     public ScreenShooter mScreenShooter = new ScreenShooter();
     @Rule
     public TestRule mDisableChromeAnimations = new DisableChromeAnimations();
     @Rule
     public RenderTestRule mRenderTestRule = new RenderTestRule();
 
-    @Rule
-    public MethodRule mMethodParamAnnotationProcessor = new MethodParamAnnotationRule();
     /** Parameter provider for the Slim Peek UI */
     public static class SlimPeekUIParams implements ParameterProvider {
         @Override
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
index 723941d..2ee504a 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
@@ -60,7 +60,6 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.ActivityState;
@@ -110,7 +109,6 @@
 import org.chromium.chrome.test.ChromeActivityTestRule;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.util.ChromeTabUtils;
-import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
 import org.chromium.chrome.test.util.browser.LocationSettingsTestUtil;
 import org.chromium.chrome.test.util.browser.contextmenu.ContextMenuUtils;
@@ -202,8 +200,6 @@
 
     @Rule
     public final ScreenShooter mScreenShooter = new ScreenShooter();
-    @Rule
-    public TestRule mProcessor = new Features.InstrumentationProcessor();
 
     @Before
     public void setUp() throws Exception {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/DetachedResourceRequestTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/DetachedResourceRequestTest.java
index aa9ce2f..1d79e91 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/DetachedResourceRequestTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/DetachedResourceRequestTest.java
@@ -17,7 +17,6 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.PathUtils;
@@ -34,7 +33,6 @@
 import org.chromium.chrome.browser.preferences.PrefServiceBridge;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
-import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
 import org.chromium.components.safe_browsing.SafeBrowsingApiBridge;
 import org.chromium.content.browser.test.util.CriteriaHelper;
@@ -48,8 +46,6 @@
 @RunWith(ChromeJUnit4ClassRunner.class)
 public class DetachedResourceRequestTest {
     @Rule
-    public TestRule mProcessor = new Features.InstrumentationProcessor();
-    @Rule
     public CustomTabActivityTestRule mCustomTabActivityTestRule = new CustomTabActivityTestRule();
 
     private CustomTabsConnection mConnection;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/TrustedCdnPublisherUrlTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/TrustedCdnPublisherUrlTest.java
index ef7dfa6..282d8673 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/TrustedCdnPublisherUrlTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/TrustedCdnPublisherUrlTest.java
@@ -27,7 +27,6 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.CommandLine;
@@ -85,8 +84,6 @@
 
     @Rule
     public final ScreenShooter mScreenShooter = new ScreenShooter();
-    @Rule
-    public TestRule mProcessor = new Features.InstrumentationProcessor();
 
     /**
      * Annotation to override the trusted CDN.
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadActivityTest.java
index 9729892..27fb1be 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadActivityTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadActivityTest.java
@@ -23,7 +23,6 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.ContextUtils;
@@ -46,7 +45,6 @@
 import org.chromium.chrome.browser.widget.ListMenuButton.Item;
 import org.chromium.chrome.browser.widget.selection.SelectionDelegate.SelectionObserver;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
-import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
 import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
 import org.chromium.components.offline_items_collection.OfflineItem;
@@ -67,9 +65,6 @@
     public ActivityTestRule<DownloadActivity> mActivityTestRule =
             new ActivityTestRule<>(DownloadActivity.class);
 
-    @Rule
-    public TestRule mProcessor = new Features.InstrumentationProcessor();
-
     private static class TestObserver extends RecyclerView.AdapterDataObserver
             implements SelectionObserver<DownloadHistoryItemWrapper>,
                     DownloadManagerUi.DownloadUiObserver, SpaceDisplay.Observer {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/history/HistoryActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/history/HistoryActivityTest.java
index 91a84fb..f34c3183 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/history/HistoryActivityTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/history/HistoryActivityTest.java
@@ -33,7 +33,6 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.ThreadUtils;
@@ -80,9 +79,6 @@
     public IntentsTestRule<HistoryActivity> mActivityTestRule =
             new IntentsTestRule<>(HistoryActivity.class, false, false);
 
-    @Rule
-    public TestRule mChromeModernDesignStateRule = new ChromeModernDesign.Processor();
-
     private static class TestObserver extends RecyclerView.AdapterDataObserver
             implements SelectionObserver<HistoryItem>, SignInStateObserver, PrefObserver {
         public final CallbackHelper onChangedCallback = new CallbackHelper();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/metrics/UkmTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/metrics/UkmTest.java
index 6937999..13d6530 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/metrics/UkmTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/metrics/UkmTest.java
@@ -17,7 +17,6 @@
 import org.chromium.base.test.util.CallbackHelper;
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.DisabledTest;
-import org.chromium.base.test.util.RetryOnFailure;
 import org.chromium.chrome.browser.ChromeSwitches;
 import org.chromium.chrome.browser.browsing_data.BrowsingDataType;
 import org.chromium.chrome.browser.browsing_data.TimePeriod;
@@ -27,8 +26,6 @@
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.ChromeTabUtils;
-import org.chromium.content.browser.test.util.JavaScriptUtils;
-import org.chromium.ui.base.PageTransition;
 
 /**
  * Android UKM tests.
@@ -40,37 +37,11 @@
     @Rule
     public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
 
-    private static final String DEBUG_PAGE = "chrome://ukm";
-
     @Before
     public void setUp() throws InterruptedException {
         mActivityTestRule.startMainActivityOnBlankPage();
     }
 
-    // TODO(rkaplow): Swap these methods (here and in UkmTest.java) with the JNI methods in
-    // UkmUtilsForTest.
-    /*
-     * These helper method should stay in sync with the tests within
-     * sync_shell/.../chrome/browser/sync/UkmTest.java.
-     */
-    public String getElementContent(Tab normalTab, String elementId) throws Exception {
-        mActivityTestRule.loadUrlInTab(
-                DEBUG_PAGE, PageTransition.TYPED | PageTransition.FROM_ADDRESS_BAR, normalTab);
-        return JavaScriptUtils.executeJavaScriptAndWaitForResult(normalTab.getWebContents(),
-                "document.getElementById('" + elementId + "').textContent");
-    }
-
-    public boolean isUkmEnabled(Tab normalTab) throws Exception {
-        String state = getElementContent(normalTab, "state");
-        Assert.assertTrue(
-                "UKM state: " + state, state.equals("\"True\"") || state.equals("\"False\""));
-        return state.equals("\"True\"");
-    }
-
-    public String getUkmClientId(Tab normalTab) throws Exception {
-        return getElementContent(normalTab, "clientid");
-    }
-
     /**
      * Closes the current tab.
      * @param incognito Whether to close an incognito or non-incognito tab.
@@ -94,6 +65,8 @@
         closeCurrentTab(true);
     }
 
+    // TODO(rkaplow): Simplify these by running then all in the UI thread via
+    // @UIThreadTest.
     @Test
     @SmallTest
     @DisabledTest // TODO(https://crbug.com/842999): Reenable after unflaking.
@@ -102,38 +75,47 @@
         // chrome/browser/metrics/ukm_browsertest.cc.
         Tab normalTab = mActivityTestRule.getActivity().getActivityTab();
 
-        Assert.assertTrue("UKM Enabled:", isUkmEnabled(normalTab));
+        ThreadUtils.runOnUiThreadBlocking(
+                () -> { Assert.assertTrue(UkmUtilsForTest.isEnabled()); });
 
-        String clientId = getUkmClientId(normalTab);
-        Assert.assertFalse("Non empty client id: " + clientId, clientId.isEmpty());
+        long originalClientId =
+                ThreadUtils.runOnUiThreadBlocking(() -> { return UkmUtilsForTest.getClientId(); })
+                        .longValue();
+        Assert.assertFalse("Non-zero client id: " + originalClientId, originalClientId == 0);
 
         mActivityTestRule.newIncognitoTabFromMenu();
 
-        Assert.assertFalse("UKM Enabled:", isUkmEnabled(normalTab));
+        ThreadUtils.runOnUiThreadBlocking(
+                () -> { Assert.assertFalse(UkmUtilsForTest.isEnabled()); });
 
         // Opening another regular tab mustn't enable UKM.
         ChromeTabUtils.newTabFromMenu(
                 InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity());
-        Assert.assertFalse("UKM Enabled:", isUkmEnabled(normalTab));
+        ThreadUtils.runOnUiThreadBlocking(
+                () -> { Assert.assertFalse(UkmUtilsForTest.isEnabled()); });
 
         // Opening and closing another Incognito tab mustn't enable UKM.
         mActivityTestRule.newIncognitoTabFromMenu();
         closeIncognitoTab();
-        Assert.assertFalse("UKM Enabled:", isUkmEnabled(normalTab));
+        ThreadUtils.runOnUiThreadBlocking(
+                () -> { Assert.assertFalse(UkmUtilsForTest.isEnabled()); });
 
         closeRegularTab();
-        Assert.assertFalse("UKM Enabled:", isUkmEnabled(normalTab));
+        ThreadUtils.runOnUiThreadBlocking(
+                () -> { Assert.assertFalse(UkmUtilsForTest.isEnabled()); });
 
         closeIncognitoTab();
-        Assert.assertTrue("UKM Enabled:", isUkmEnabled(normalTab));
+        ThreadUtils.runOnUiThreadBlocking(
+                () -> { Assert.assertTrue(UkmUtilsForTest.isEnabled()); });
 
         // Client ID should not have been reset.
-        Assert.assertEquals("Client id:", clientId, getUkmClientId(normalTab));
+        ThreadUtils.runOnUiThreadBlocking(() -> {
+            Assert.assertEquals("Client id:", originalClientId, UkmUtilsForTest.getClientId());
+        });
     }
 
     @Test
     @SmallTest
-    @RetryOnFailure
     public void testIncognitoPlusRegularCheck() throws Exception {
         // Keep in sync with UkmBrowserTest.IncognitoPlusRegularCheck in
         // chrome/browser/metrics/ukm_browsertest.cc.
@@ -148,10 +130,12 @@
                 InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity());
         Tab normalTab = mActivityTestRule.getActivity().getActivityTab();
 
-        Assert.assertFalse("UKM Enabled:", isUkmEnabled(normalTab));
+        ThreadUtils.runOnUiThreadBlocking(
+                () -> { Assert.assertFalse(UkmUtilsForTest.isEnabled()); });
 
         closeIncognitoTab();
-        Assert.assertTrue("UKM Enabled:", isUkmEnabled(normalTab));
+        ThreadUtils.runOnUiThreadBlocking(
+                () -> { Assert.assertTrue(UkmUtilsForTest.isEnabled()); });
     }
 
     @Test
@@ -160,12 +144,17 @@
         // Keep in sync with UkmBrowserTest.HistoryDeleteCheck in
         // chrome/browser/metrics/ukm_browsertest.cc.
 
-        Tab normalTab = mActivityTestRule.getActivity().getActivityTab();
+        // Start by closing all tabs.
+        ChromeTabUtils.closeAllTabs(
+                InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity());
 
         ThreadUtils.runOnUiThreadBlocking(
                 () -> { Assert.assertTrue(UkmUtilsForTest.isEnabled()); });
 
-        String originalClientId = getUkmClientId(normalTab);
+        long originalClientId =
+                ThreadUtils.runOnUiThreadBlocking(() -> { return UkmUtilsForTest.getClientId(); })
+                        .longValue();
+        Assert.assertFalse("Non-zero client id: " + originalClientId, originalClientId == 0);
 
         // Record some dummy UKM data (adding a Source).
         final long sourceId = 0x54321;
@@ -193,9 +182,8 @@
             Assert.assertTrue(UkmUtilsForTest.isEnabled());
             // The source under sourceId should be removed.
             Assert.assertFalse(UkmUtilsForTest.hasSourceWithId(sourceId));
+            // Client ID should not have been reset.
+            Assert.assertEquals("Client id:", originalClientId, UkmUtilsForTest.getClientId());
         });
-
-        // Client ID should NOT have been reset.
-        Assert.assertEquals("Client id:", originalClientId, getUkmClientId(normalTab));
     }
 }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageTest.java
index 8fd3ec3..cfdad924 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageTest.java
@@ -23,12 +23,9 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.MethodRule;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.ThreadUtils;
-import org.chromium.base.test.params.MethodParamAnnotationRule;
 import org.chromium.base.test.params.ParameterAnnotations;
 import org.chromium.base.test.params.ParameterProvider;
 import org.chromium.base.test.params.ParameterSet;
@@ -65,7 +62,6 @@
 import org.chromium.chrome.test.util.OmniboxTestUtils;
 import org.chromium.chrome.test.util.RenderTestRule;
 import org.chromium.chrome.test.util.browser.ChromeModernDesign;
-import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
 import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
 import org.chromium.chrome.test.util.browser.RecyclerViewTestUtils;
@@ -110,14 +106,10 @@
     public RenderTestRule mRenderTestRule =
             new RenderTestRule("chrome/test/data/android/render_tests");
 
-    @Rule
-    public MethodRule mMethodParamAnnotationProcessor = new MethodParamAnnotationRule();
-
-    @Rule
-    public ChromeModernDesign.Processor mChromeModernProcessor = new ChromeModernDesign.Processor();
-
-    @Rule
-    public TestRule mFeatureRule = new Features.InstrumentationProcessor();
+    // This is only used for directly setting the feature state, therefore not annotated with @Rule.
+    // TODO(bauerb): Refactor so it doesn't use AnnotationRule.
+    private ChromeModernDesign.Processor mChromeModernProcessor =
+            new ChromeModernDesign.Processor();
 
     public static class ModernParams implements ParameterProvider {
         @Override
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageUiCaptureTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageUiCaptureTest.java
index ee45550c..c7d9ae9 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageUiCaptureTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageUiCaptureTest.java
@@ -56,8 +56,6 @@
             Arrays.asList(new ParameterSet().value(false).name("DisableNTPModernLayout"),
                     new ParameterSet().value(true).name("EnableNTPModernLayout"));
     @Rule
-    public TestRule mFeaturesProcessor = new Features.InstrumentationProcessor();
-    @Rule
     public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
     @Rule
     public ScreenShooter mScreenShooter = new ScreenShooter();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/AllDismissedItemTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/AllDismissedItemTest.java
index bbaaad8..521fec4 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/AllDismissedItemTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/AllDismissedItemTest.java
@@ -10,7 +10,6 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.ThreadUtils;
@@ -41,9 +40,6 @@
     @Rule
     public RenderTestRule mRenderTestRule = new RenderTestRule();
 
-    @Rule
-    public TestRule mChromeModernDesignStateRule = new ChromeModernDesign.Processor();
-
     private FrameLayout mContentView;
 
     @Before
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/snippets/ArticleSnippetsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/snippets/ArticleSnippetsTest.java
index ef1c18a..f5b5d28 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/snippets/ArticleSnippetsTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/snippets/ArticleSnippetsTest.java
@@ -104,12 +104,6 @@
     public RenderTestRule mRenderTestRule = new RenderTestRule();
 
     @Rule
-    public TestRule mChromeModernDesignStateRule = new ChromeModernDesign.Processor();
-
-    @Rule
-    public TestRule mFeaturesProcessor = new Features.InstrumentationProcessor();
-
-    @Rule
     public TestRule mDisableChromeAnimations = new DisableChromeAnimations();
 
     private SuggestionsUiDelegate mUiDelegate;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java
index 26476b27..8b388aa 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java
@@ -11,7 +11,6 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.ContextUtils;
@@ -29,7 +28,6 @@
 import org.chromium.chrome.browser.widget.TintedImageButton;
 import org.chromium.chrome.test.ChromeActivityTestRule;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
-import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
 import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
 import org.chromium.components.security_state.ConnectionSecurityLevel;
@@ -49,9 +47,6 @@
     public ChromeActivityTestRule<ChromeActivity> mActivityTestRule =
             new ChromeActivityTestRule<>(ChromeActivity.class);
 
-    @Rule
-    public TestRule mProcessor = new Features.InstrumentationProcessor();
-
     private static final int SEARCH_ICON_RESOURCE = R.drawable.omnibox_search;
 
     private static final String SEARCH_TERMS = "machine learning";
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/ContextualSuggestionsPreferenceTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/ContextualSuggestionsPreferenceTest.java
index 676acc8..085b617 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/ContextualSuggestionsPreferenceTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/ContextualSuggestionsPreferenceTest.java
@@ -14,7 +14,6 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.ThreadUtils;
@@ -33,9 +32,6 @@
     @Rule
     public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule();
 
-    @Rule
-    public TestRule mFeaturesProcessor = new Features.InstrumentationProcessor();
-
     private ContextualSuggestionsPreference mFragment;
     private FakeEnabledStateMonitor mTestMonitor;
     private ChromeSwitchPreference mSwitch;
@@ -43,12 +39,12 @@
 
     @Before
     public void setUp() {
+        mTestMonitor = new FakeEnabledStateMonitor();
+        ContextualSuggestionsPreference.setEnabledStateMonitorForTesting(mTestMonitor);
         Preferences preferences =
                 PreferencesTest.startPreferences(InstrumentationRegistry.getInstrumentation(),
                         ContextualSuggestionsPreference.class.getName());
         mFragment = (ContextualSuggestionsPreference) preferences.getFragmentForTest();
-        mTestMonitor = new FakeEnabledStateMonitor();
-        ContextualSuggestionsPreference.setEnabledStateMonitorForTesting(mTestMonitor);
         mTestMonitor.setObserver(mFragment);
         mSwitch = (ChromeSwitchPreference) mFragment.findPreference(
                 ContextualSuggestionsPreference.PREF_CONTEXTUAL_SUGGESTIONS_SWITCH);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java
index d0112b2..6e9b22d 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java
@@ -27,7 +27,6 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.ThreadUtils;
@@ -52,7 +51,6 @@
 import org.chromium.chrome.browser.webapps.WebappRegistry;
 import org.chromium.chrome.test.ChromeActivityTestRule;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
-import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
 import org.chromium.chrome.test.util.browser.signin.SigninTestUtil;
 import org.chromium.content.browser.test.util.Criteria;
@@ -78,8 +76,6 @@
     @Rule
     public ChromeActivityTestRule<ChromeActivity> mActivityTestRule =
             new ChromeActivityTestRule<>(ChromeActivity.class);
-    @Rule
-    public TestRule mProcessor = new Features.InstrumentationProcessor();
 
     private EmbeddedTestServer mTestServer;
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/suggestions/HomeSheetUiCaptureTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/suggestions/HomeSheetUiCaptureTest.java
index 2f5205f..286da02 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/suggestions/HomeSheetUiCaptureTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/suggestions/HomeSheetUiCaptureTest.java
@@ -15,11 +15,9 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.MethodRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.ThreadUtils;
-import org.chromium.base.test.params.MethodParamAnnotationRule;
 import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.Restriction;
@@ -51,9 +49,6 @@
     @Rule
     public ScreenShooter mScreenShooter = new ScreenShooter();
 
-    @Rule
-    public MethodRule mMethodParamAnnotationProcessor = new MethodParamAnnotationRule();
-
     @Before
     public void setup() throws InterruptedException {
         mActivityRule.startMainActivityOnBlankPage();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/suggestions/TileGridLayoutTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/suggestions/TileGridLayoutTest.java
index f8f1382..0c4d2e42 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/suggestions/TileGridLayoutTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/suggestions/TileGridLayoutTest.java
@@ -27,7 +27,6 @@
 
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.ApiCompatibilityUtils;
@@ -83,9 +82,6 @@
     public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
 
     @Rule
-    public TestRule mChromeModernDesignStateRule = new ChromeModernDesign.Processor();
-
-    @Rule
     public SuggestionsDependenciesRule mSuggestionsDeps = new SuggestionsDependenciesRule();
 
     @Rule
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/toolbar/ToolbarModelTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/toolbar/ToolbarModelTest.java
index c91dae5..24b5ba7 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/toolbar/ToolbarModelTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/toolbar/ToolbarModelTest.java
@@ -12,7 +12,6 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.ContextUtils;
@@ -29,7 +28,6 @@
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.ChromeTabUtils;
-import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
 import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
 
@@ -42,11 +40,6 @@
     @Rule
     public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
 
-    @Rule
-    public TestRule mProcessor = new Features.InstrumentationProcessor();
-
-    private static final String TEST_PAGE = "/chrome/test/data/android/test.html";
-
     @Before
     public void setUp() throws InterruptedException {
         mActivityTestRule.startMainActivityOnBlankPage();
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 634b4fb..1d2a112b 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -2103,7 +2103,6 @@
       "android/logo_bridge.cc",
       "android/logo_bridge.h",
       "android/metrics/launch_metrics.cc",
-      "android/metrics/ukm_utils_for_test.cc",
       "android/metrics/uma_session_stats.cc",
       "android/metrics/uma_session_stats.h",
       "android/metrics/uma_utils.cc",
@@ -3023,12 +3022,12 @@
       sources += [
         "notifications/notification_platform_bridge_win.cc",
         "notifications/notification_platform_bridge_win.h",
-        "notifications/notification_platform_bridge_win_metrics.cc",
-        "notifications/notification_platform_bridge_win_metrics.h",
-        "notifications/notification_platform_bridge_win_util.cc",
-        "notifications/notification_platform_bridge_win_util.h",
         "notifications/win/notification_launch_id.cc",
         "notifications/win/notification_launch_id.h",
+        "notifications/win/notification_metrics.cc",
+        "notifications/win/notification_metrics.h",
+        "notifications/win/notification_util.cc",
+        "notifications/win/notification_util.h",
       ]
     }
 
@@ -4385,7 +4384,6 @@
       "../android/java/src/org/chromium/chrome/browser/media/router/MediaControllerBridge.java",
       "../android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java",
       "../android/java/src/org/chromium/chrome/browser/metrics/PageLoadMetrics.java",
-      "../android/java/src/org/chromium/chrome/browser/metrics/UkmUtilsForTest.java",
       "../android/java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java",
       "../android/java/src/org/chromium/chrome/browser/metrics/UmaUtils.java",
       "../android/java/src/org/chromium/chrome/browser/metrics/VariationsSession.java",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 3bc2a0c..78987929 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2350,12 +2350,6 @@
     {"force-text-direction", flag_descriptions::kForceTextDirectionName,
      flag_descriptions::kForceTextDirectionDescription, kOsAll,
      MULTI_VALUE_TYPE(kForceTextDirectionChoices)},
-#if BUILDFLAG(ENABLE_EXTENSIONS)
-    {"enable-md-extensions",
-     flag_descriptions::kEnableMaterialDesignExtensionsName,
-     flag_descriptions::kEnableMaterialDesignExtensionsDescription, kOsDesktop,
-     FEATURE_VALUE_TYPE(features::kMaterialDesignExtensions)},
-#endif  // ENABLE_EXTENSIONS
 #if defined(OS_WIN) || defined(OS_LINUX)
     {"enable-input-ime-api", flag_descriptions::kEnableInputImeApiName,
      flag_descriptions::kEnableInputImeApiDescription, kOsWin | kOsLinux,
@@ -3862,10 +3856,21 @@
      flag_descriptions::kEnableAccessibilityObjectModelDescription, kOsAll,
      SINGLE_VALUE_TYPE(switches::kEnableAccessibilityObjectModel)},
 
+    {"enable-autoplay-ignore-web-audio",
+     flag_descriptions::kEnableAutoplayIgnoreWebAudioName,
+     flag_descriptions::kEnableAutoplayIgnoreWebAudioDescription, kOsDesktop,
+     FEATURE_VALUE_TYPE(media::kAutoplayIgnoreWebAudio)},
+
     // NOTE: Adding a new flag requires adding a corresponding entry to enum
     // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag
     // Histograms" in tools/metrics/histograms/README.md (run the
     // AboutFlagsHistogramTest unit test to verify this process).
+
+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
+    {"uifood", flag_descriptions::kUiFoodName,
+     flag_descriptions::kUiFoodDescription, kOsDesktop,
+     FEATURE_VALUE_TYPE(features::kUiFood)},
+#endif
 };
 
 class FlagsStateSingleton {
diff --git a/chrome/browser/android/metrics/BUILD.gn b/chrome/browser/android/metrics/BUILD.gn
new file mode 100644
index 0000000..af1cf686e
--- /dev/null
+++ b/chrome/browser/android/metrics/BUILD.gn
@@ -0,0 +1,33 @@
+# Copyright 2018 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+if (is_android) {
+  import("//build/config/android/rules.gni")
+
+  static_library("ukm_utils_for_test") {
+    testonly = true
+    sources = [
+      "ukm_utils_for_test.cc",
+    ]
+    deps = [
+      "//chrome/browser:browser",
+      "//chrome/browser/android/metrics:jni_headers",
+    ]
+  }
+
+  generate_jni("jni_headers") {
+    sources = [
+      "../../../android/java/src/org/chromium/chrome/browser/metrics/UkmUtilsForTest.java",
+    ]
+    jni_package = "chrome"
+  }
+
+  android_library("ukm_utils_java") {
+    testonly = true
+    java_files = [ "../../../android/java/src/org/chromium/chrome/browser/metrics/UkmUtilsForTest.java" ]
+    deps = [
+      "//base:base_java",
+    ]
+  }
+}
diff --git a/chrome/browser/android/metrics/ukm_utils_for_test.cc b/chrome/browser/android/metrics/ukm_utils_for_test.cc
index da5ffaf..5a8c137 100644
--- a/chrome/browser/android/metrics/ukm_utils_for_test.cc
+++ b/chrome/browser/android/metrics/ukm_utils_for_test.cc
@@ -37,6 +37,14 @@
   service->UpdateSourceURL(source_id, GURL("http://example.com"));
 }
 
+// static
+uint64_t UkmUtilsForTest::GetClientId() {
+  auto* service =
+      g_browser_process->GetMetricsServicesManager()->GetUkmService();
+  DCHECK(service);
+  return service->client_id_;
+}
+
 }  // namespace ukm
 
 static jboolean JNI_UkmUtilsForTest_IsEnabled(JNIEnv*,
@@ -57,3 +65,8 @@
   ukm::SourceId source = static_cast<ukm::SourceId>(source_id);
   ukm::UkmUtilsForTest::RecordSourceWithId(source);
 }
+
+static jlong JNI_UkmUtilsForTest_GetClientId(JNIEnv*,
+                                             const JavaParamRef<jclass>&) {
+  return ukm::UkmUtilsForTest::GetClientId();
+}
diff --git a/chrome/browser/android/metrics/ukm_utils_for_test.h b/chrome/browser/android/metrics/ukm_utils_for_test.h
index 43e8db9d..a3624ec 100644
--- a/chrome/browser/android/metrics/ukm_utils_for_test.h
+++ b/chrome/browser/android/metrics/ukm_utils_for_test.h
@@ -17,6 +17,7 @@
   static bool IsEnabled();
   static bool HasSourceWithId(SourceId source_id);
   static void RecordSourceWithId(SourceId source_id);
+  static uint64_t GetClientId();
 
  private:
   // Should never be needed, as this class is setup to let it be a friend to
diff --git a/chrome/browser/android/vr/arcore_device/arcore.h b/chrome/browser/android/vr/arcore_device/arcore.h
index 9dcd924..97bd97d9 100644
--- a/chrome/browser/android/vr/arcore_device/arcore.h
+++ b/chrome/browser/android/vr/arcore_device/arcore.h
@@ -31,7 +31,13 @@
   virtual std::vector<float> TransformDisplayUvCoords(
       const base::span<const float> uvs) = 0;
   virtual gfx::Transform GetProjectionMatrix(float near, float far) = 0;
+
   virtual mojom::VRPosePtr Update() = 0;
+
+  virtual bool RequestHitTest(
+      const mojom::XRRayPtr& ray,
+      const gfx::Size& image_size,
+      std::vector<mojom::XRHitResultPtr>* hit_results) = 0;
 };
 
 }  // namespace device
diff --git a/chrome/browser/android/vr/arcore_device/arcore_device.cc b/chrome/browser/android/vr/arcore_device/arcore_device.cc
index e71494c3..3fc2103 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_device.cc
+++ b/chrome/browser/android/vr/arcore_device/arcore_device.cc
@@ -85,7 +85,7 @@
   // TODO(https://crbug.com/836553): use same GL thread as GVR.
   arcore_gl_thread_ = std::make_unique<ARCoreGlThread>(
       std::move(mailbox_bridge_),
-      CreateMainThreadCallback<bool>(base::BindOnce(
+      CreateMainThreadCallback(base::BindOnce(
           &ARCoreDevice::OnARCoreGlThreadInitialized, GetWeakPtr())));
   arcore_gl_thread_->Start();
 }
@@ -132,8 +132,17 @@
   PostTaskToGlThread(base::BindOnce(
       &ARCoreGl::ProduceFrame, arcore_gl_thread_->GetARCoreGl()->GetWeakPtr(),
       frame_size, display_rotation,
-      CreateMainThreadCallback<mojom::VRMagicWindowFrameDataPtr>(
-          std::move(callback))));
+      CreateMainThreadCallback(std::move(callback))));
+}
+
+void ARCoreDevice::RequestHitTest(
+    mojom::XRRayPtr ray,
+    mojom::VRMagicWindowProvider::RequestHitTestCallback callback) {
+  DCHECK(IsOnMainThread());
+
+  PostTaskToGlThread(base::BindOnce(
+      &ARCoreGl::RequestHitTest, arcore_gl_thread_->GetARCoreGl()->GetWeakPtr(),
+      std::move(ray), CreateMainThreadCallback(std::move(callback))));
 }
 
 bool ARCoreDevice::IsOnMainThread() {
diff --git a/chrome/browser/android/vr/arcore_device/arcore_device.h b/chrome/browser/android/vr/arcore_device/arcore_device.h
index 1582e3b7..88640000 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_device.h
+++ b/chrome/browser/android/vr/arcore_device/arcore_device.h
@@ -39,9 +39,9 @@
       const gfx::Size& frame_size,
       display::Display::Rotation frame_rotation,
       mojom::VRMagicWindowProvider::GetFrameDataCallback callback) override;
-  void OnMagicWindowFrameDataRequestComplete(
-      mojom::VRMagicWindowProvider::GetFrameDataCallback callback,
-      mojom::VRMagicWindowFrameDataPtr frame_data);
+  void RequestHitTest(
+      mojom::XRRayPtr ray,
+      mojom::VRMagicWindowProvider::RequestHitTestCallback callback) override;
   void OnMailboxBridgeReady();
   void OnARCoreGlThreadInitialized(bool success);
 
diff --git a/chrome/browser/android/vr/arcore_device/arcore_gl.cc b/chrome/browser/android/vr/arcore_device/arcore_gl.cc
index b2c5bbb..c62643ac 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_gl.cc
+++ b/chrome/browser/android/vr/arcore_device/arcore_gl.cc
@@ -34,8 +34,6 @@
 #include "ui/gl/gl_surface.h"
 #include "ui/gl/init/gl_factory.h"
 
-namespace device {
-
 namespace {
 // Input display coordinates (range 0..1) used with ARCore's
 // transformDisplayUvCoords to calculate the output matrix.
@@ -79,6 +77,18 @@
 
 }  // namespace
 
+namespace device {
+
+struct ARCoreHitTestRequest {
+  ARCoreHitTestRequest() = default;
+  ~ARCoreHitTestRequest() = default;
+  mojom::XRRayPtr ray;
+  mojom::VRMagicWindowProvider::RequestHitTestCallback callback;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ARCoreHitTestRequest);
+};
+
 ARCoreGl::ARCoreGl(std::unique_ptr<vr::MailboxToSurfaceBridge> mailbox_bridge)
     : gl_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()),
       arcore_(std::make_unique<ARCoreImpl>()),
@@ -195,6 +205,62 @@
   fps_meter_.AddFrame(base::TimeTicks::Now());
   TRACE_COUNTER1("gpu", "WebXR FPS", fps_meter_.GetFPS());
 
+  // Post a task to finish processing the frame so any calls to
+  // RequestHitTest() that were made during this function, which can block
+  // on the arcore_->Update() call above, can be processed in this frame.
+  gl_thread_task_runner_->PostTask(
+      FROM_HERE,
+      base::BindOnce(&ARCoreGl::ProcessFrame, weak_ptr_factory_.GetWeakPtr(),
+                     base::Passed(&frame_data), frame_size,
+                     base::Passed(&callback)));
+}
+
+void ARCoreGl::RequestHitTest(
+    mojom::XRRayPtr ray,
+    mojom::VRMagicWindowProvider::RequestHitTestCallback callback) {
+  DCHECK(IsOnGlThread());
+  DCHECK(is_initialized_);
+
+  std::unique_ptr<ARCoreHitTestRequest> request =
+      std::make_unique<ARCoreHitTestRequest>();
+  request->ray = std::move(ray);
+  request->callback = std::move(callback);
+  hit_test_requests_.push_back(std::move(request));
+}
+
+void ARCoreGl::ProcessFrame(
+    mojom::VRMagicWindowFrameDataPtr frame_data,
+    const gfx::Size& frame_size,
+    mojom::VRMagicWindowProvider::GetFrameDataCallback callback) {
+  DCHECK(IsOnGlThread());
+  DCHECK(is_initialized_);
+
+  // The timing requirements for hit-test are documented here:
+  // https://github.com/immersive-web/hit-test/blob/master/explainer.md#timing
+  // The current implementation of frame generation on the renderer side is
+  // 1:1 with calls to this method, so it is safe to fire off the hit-test
+  // results here, one at a time, in the order they were enqueued prior to
+  // running the GetFrameDataCallback.
+  // Since mojo callbacks are processed in order, this will result in the
+  // correct sequence of hit-test callbacks / promise resolutions. If
+  // the implementation of the renderer processing were to change, this
+  // code is fragile and could break depending on the new implementation.
+  // TODO(https://crbug.com/844174): In order to be more correct by design,
+  // hit results should be bundled with the frame data - that way it would be
+  // obvious how the timing between the results and the frame should go.
+  for (auto& request : hit_test_requests_) {
+    std::vector<mojom::XRHitResultPtr> results;
+    if (!arcore_->RequestHitTest(request->ray, frame_size, &results)) {
+      std::move(request->callback).Run(base::nullopt);
+    }
+    std::move(request->callback).Run(std::move(results));
+  }
+  hit_test_requests_.clear();
+
+  // Running this callback after resolving all the hit-test requests ensures
+  // that we satisfy the guarantee of the WebXR hit-test spec - that the
+  // hit-test promise resolves immediately prior to the frame for which it is
+  // valid.
   std::move(callback).Run(std::move(frame_data));
 }
 
diff --git a/chrome/browser/android/vr/arcore_device/arcore_gl.h b/chrome/browser/android/vr/arcore_device/arcore_gl.h
index 8aa3542..34c74a4 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_gl.h
+++ b/chrome/browser/android/vr/arcore_device/arcore_gl.h
@@ -36,6 +36,7 @@
 namespace device {
 
 class ARCore;
+struct ARCoreHitTestRequest;
 class ARImageTransport;
 
 // All of this class's methods must be called on the same valid GL thread with
@@ -55,9 +56,18 @@
     return gl_thread_task_runner_;
   }
 
+  void RequestHitTest(mojom::XRRayPtr,
+                      mojom::VRMagicWindowProvider::RequestHitTestCallback);
+
   base::WeakPtr<ARCoreGl> GetWeakPtr();
 
  private:
+  // TODO(https://crbug/835948): remove frame_size.
+  void ProcessFrame(
+      mojom::VRMagicWindowFrameDataPtr frame_data,
+      const gfx::Size& frame_size,
+      mojom::VRMagicWindowProvider::GetFrameDataCallback callback);
+
   bool IsOnGlThread() const;
 
   scoped_refptr<gl::GLSurface> surface_;
@@ -71,6 +81,9 @@
   bool is_initialized_ = false;
 
   vr::FPSMeter fps_meter_;
+
+  std::vector<std::unique_ptr<ARCoreHitTestRequest>> hit_test_requests_;
+
   // Must be last.
   base::WeakPtrFactory<ARCoreGl> weak_ptr_factory_;
   DISALLOW_COPY_AND_ASSIGN(ARCoreGl);
diff --git a/chrome/browser/android/vr/arcore_device/arcore_impl.cc b/chrome/browser/android/vr/arcore_device/arcore_impl.cc
index feeeb0c7..85e0ee9 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_impl.cc
+++ b/chrome/browser/android/vr/arcore_device/arcore_impl.cc
@@ -11,7 +11,11 @@
 #include "base/trace_event/trace_event.h"
 #include "chrome/browser/android/vr/arcore_device/arcore_java_utils.h"
 #include "device/vr/public/mojom/vr_service.mojom.h"
+#include "third_party/skia/include/core/SkMatrix44.h"
 #include "ui/display/display.h"
+#include "ui/gfx/geometry/point3_f.h"
+#include "ui/gfx/geometry/point_f.h"
+#include "ui/gfx/transform.h"
 
 using base::android::JavaRef;
 
@@ -198,6 +202,130 @@
   return result;
 }
 
+// TODO(835948): remove image-size
+bool ARCoreImpl::RequestHitTest(
+    const mojom::XRRayPtr& ray,
+    const gfx::Size& image_size,
+    std::vector<mojom::XRHitResultPtr>* hit_results) {
+  DCHECK(IsOnGlThread());
+  DCHECK(arcore_session_.is_valid());
+  DCHECK(arcore_frame_.is_valid());
+
+  internal::ScopedArCoreObject<ArHitResultList*> arcore_hit_result_list;
+  ArHitResultList_create(arcore_session_.get(),
+                         arcore_hit_result_list.receive());
+  if (!arcore_hit_result_list.is_valid()) {
+    DLOG(ERROR) << "ArHitResultList_create failed!";
+    return false;
+  }
+
+  gfx::PointF screen_point;
+  if (!TransformRayToScreenSpace(ray, image_size, &screen_point)) {
+    return false;
+  }
+
+  // ARCore returns hit-results in sorted order, thus providing the guarantee
+  // of sorted results promised by the WebXR spec for requestHitTest().
+  ArFrame_hitTest(arcore_session_.get(), arcore_frame_.get(),
+                  screen_point.x() * image_size.width(),
+                  screen_point.y() * image_size.height(),
+                  arcore_hit_result_list.get());
+
+  int arcore_hit_result_list_size = 0;
+  ArHitResultList_getSize(arcore_session_.get(), arcore_hit_result_list.get(),
+                          &arcore_hit_result_list_size);
+
+  for (int i = 0; i < arcore_hit_result_list_size; i++) {
+    internal::ScopedArCoreObject<ArHitResult*> arcore_hit;
+    ArHitResult_create(arcore_session_.get(), arcore_hit.receive());
+    if (!arcore_hit.is_valid()) {
+      DLOG(ERROR) << "ArHitResult_create failed!";
+      return false;
+    }
+
+    ArHitResultList_getItem(arcore_session_.get(), arcore_hit_result_list.get(),
+                            i, arcore_hit.get());
+
+    mojom::XRHitResultPtr mojo_hit = mojom::XRHitResult::New();
+    if (!ArHitResultToXRHitResult(arcore_hit.get(), mojo_hit.get())) {
+      return false;
+    }
+    hit_results->push_back(std::move(mojo_hit));
+  }
+  return true;
+}
+
+// TODO(835948): remove this method.
+bool ARCoreImpl::TransformRayToScreenSpace(const mojom::XRRayPtr& ray,
+                                           const gfx::Size& image_size,
+                                           gfx::PointF* screen_point) {
+  DCHECK(IsOnGlThread());
+  DCHECK(arcore_session_.is_valid());
+  DCHECK(arcore_frame_.is_valid());
+
+  internal::ScopedArCoreObject<ArCamera*> arcore_camera;
+  ArFrame_acquireCamera(arcore_session_.get(), arcore_frame_.get(),
+                        arcore_camera.receive());
+  DCHECK(arcore_camera.is_valid())
+      << "ArFrame_acquireCamera failed despite documentation saying it cannot";
+
+  // Get the projection matrix.
+  float projection_matrix[16];
+  ArCamera_getProjectionMatrix(arcore_session_.get(), arcore_camera.get(), 0.1,
+                               1000, projection_matrix);
+  SkMatrix44 projection44;
+  projection44.setColMajorf(projection_matrix);
+  gfx::Transform projection_transform(projection44);
+
+  // Get the view matrix.
+  float view_matrix[16];
+  ArCamera_getViewMatrix(arcore_session_.get(), arcore_camera.get(),
+                         view_matrix);
+  SkMatrix44 view44;
+  view44.setColMajorf(view_matrix);
+  gfx::Transform view_transform(view44);
+
+  // Create the combined matrix.
+  gfx::Transform proj_view_transform = projection_transform * view_transform;
+
+  // Transform the ray into screen space.
+  gfx::Point3F screen_point_3d{ray->origin[0] + ray->direction[0],
+                               ray->origin[1] + ray->direction[1],
+                               ray->origin[2] + ray->direction[2]};
+  proj_view_transform.TransformPoint(&screen_point_3d);
+  if (screen_point_3d.x() < -1 || screen_point_3d.x() > 1 ||
+      screen_point_3d.y() < -1 || screen_point_3d.y() > 1) {
+    // The point does not project back into screen space, so this won't
+    // work with the screen-space-based hit-test API.
+    DLOG(ERROR) << "Invalid ray - does not originate from device screen.";
+    return false;
+  }
+
+  screen_point->set_x((screen_point_3d.x() + 1) / 2);
+  screen_point->set_y((screen_point_3d.y() + 1) / 2);
+  return true;
+}
+
+bool ARCoreImpl::ArHitResultToXRHitResult(ArHitResult* arcore_hit,
+                                          mojom::XRHitResult* hit_result) {
+  DCHECK(IsOnGlThread());
+  DCHECK(arcore_session_.is_valid());
+  DCHECK(arcore_frame_.is_valid());
+
+  internal::ScopedArCoreObject<ArPose*> arcore_pose;
+  ArPose_create(arcore_session_.get(), nullptr, arcore_pose.receive());
+  if (!arcore_pose.is_valid()) {
+    DLOG(ERROR) << "ArPose_create failed!";
+    return false;
+  }
+  ArHitResult_getHitPose(arcore_session_.get(), arcore_hit, arcore_pose.get());
+  hit_result->hit_matrix.resize(16);
+  ArPose_getMatrix(arcore_session_.get(), arcore_pose.get(),
+                   hit_result->hit_matrix.data());
+
+  return true;
+}
+
 bool ARCoreImpl::IsOnGlThread() {
   return gl_thread_task_runner_->BelongsToCurrentThread();
 }
diff --git a/chrome/browser/android/vr/arcore_device/arcore_impl.h b/chrome/browser/android/vr/arcore_device/arcore_impl.h
index 31b03cba..bc06c57 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_impl.h
+++ b/chrome/browser/android/vr/arcore_device/arcore_impl.h
@@ -47,6 +47,18 @@
   // Do nothing - ArCamera has no destroy method and is managed by ARCore.
 }
 
+template <>
+void inline ScopedGenericArObject<ArHitResultList*>::Free(
+    ArHitResultList* ar_hit_result_list) {
+  ArHitResultList_destroy(ar_hit_result_list);
+}
+
+template <>
+void inline ScopedGenericArObject<ArHitResult*>::Free(
+    ArHitResult* ar_hit_result) {
+  ArHitResult_destroy(ar_hit_result);
+}
+
 template <class T>
 using ScopedArCoreObject = base::ScopedGeneric<T, ScopedGenericArObject<T>>;
 
@@ -68,7 +80,18 @@
   gfx::Transform GetProjectionMatrix(float near, float far) override;
   mojom::VRPosePtr Update() override;
 
+  bool RequestHitTest(const mojom::XRRayPtr& ray,
+                      const gfx::Size& image_size,
+                      std::vector<mojom::XRHitResultPtr>* hit_results) override;
+
  private:
+  bool TransformRayToScreenSpace(const mojom::XRRayPtr& ray,
+                                 const gfx::Size& image_size,
+                                 gfx::PointF* screen_point);
+
+  bool ArHitResultToXRHitResult(ArHitResult* ar_hit,
+                                mojom::XRHitResult* hit_result);
+
   bool IsOnGlThread();
   base::WeakPtr<ARCoreImpl> GetWeakPtr() {
     return weak_ptr_factory_.GetWeakPtr();
diff --git a/chrome/browser/android/vr/arcore_device/arcore_shim.cc b/chrome/browser/android/vr/arcore_device/arcore_shim.cc
index f70beb1..7d29eb6a 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_shim.cc
+++ b/chrome/browser/android/vr/arcore_device/arcore_shim.cc
@@ -15,14 +15,24 @@
   CALL(ArCamera_getDisplayOrientedPose)  \
   CALL(ArCamera_getProjectionMatrix)     \
   CALL(ArCamera_getTrackingState)        \
+  CALL(ArCamera_getViewMatrix)           \
   CALL(ArConfig_create)                  \
   CALL(ArConfig_destroy)                 \
   CALL(ArFrame_acquireCamera)            \
   CALL(ArFrame_create)                   \
   CALL(ArFrame_destroy)                  \
+  CALL(ArFrame_hitTest)                  \
   CALL(ArFrame_transformDisplayUvCoords) \
+  CALL(ArHitResult_create)               \
+  CALL(ArHitResult_destroy)              \
+  CALL(ArHitResult_getHitPose)           \
+  CALL(ArHitResultList_create)           \
+  CALL(ArHitResultList_destroy)          \
+  CALL(ArHitResultList_getItem)          \
+  CALL(ArHitResultList_getSize)          \
   CALL(ArPose_create)                    \
   CALL(ArPose_destroy)                   \
+  CALL(ArPose_getMatrix)                 \
   CALL(ArPose_getPoseRaw)                \
   CALL(ArSession_checkSupported)         \
   CALL(ArSession_configure)              \
@@ -101,6 +111,12 @@
                                              out_tracking_state);
 }
 
+void ArCamera_getViewMatrix(const ArSession* session,
+                            const ArCamera* camera,
+                            float* out_matrix) {
+  arcore_api->impl_ArCamera_getViewMatrix(session, camera, out_matrix);
+}
+
 void ArConfig_create(const ArSession* session, ArConfig** out_config) {
   arcore_api->impl_ArConfig_create(session, out_config);
 }
@@ -123,6 +139,15 @@
   arcore_api->impl_ArFrame_destroy(frame);
 }
 
+void ArFrame_hitTest(const ArSession* session,
+                     const ArFrame* frame,
+                     float pixel_x,
+                     float pixel_y,
+                     ArHitResultList* out_hit_results) {
+  arcore_api->impl_ArFrame_hitTest(session, frame, pixel_x, pixel_y,
+                                   out_hit_results);
+}
+
 void ArFrame_transformDisplayUvCoords(const ArSession* session,
                                       const ArFrame* frame,
                                       int32_t num_elements,
@@ -132,6 +157,44 @@
       session, frame, num_elements, uvs_in, uvs_out);
 }
 
+void ArHitResult_create(const ArSession* session,
+                        ArHitResult** out_hit_result) {
+  arcore_api->impl_ArHitResult_create(session, out_hit_result);
+}
+
+void ArHitResult_destroy(ArHitResult* hit_result) {
+  arcore_api->impl_ArHitResult_destroy(hit_result);
+}
+
+void ArHitResult_getHitPose(const ArSession* session,
+                            const ArHitResult* hit_result,
+                            ArPose* out_pose) {
+  arcore_api->impl_ArHitResult_getHitPose(session, hit_result, out_pose);
+}
+
+void ArHitResultList_create(const ArSession* session,
+                            ArHitResultList** out_hit_result_list) {
+  arcore_api->impl_ArHitResultList_create(session, out_hit_result_list);
+}
+
+void ArHitResultList_destroy(ArHitResultList* hit_result_list) {
+  arcore_api->impl_ArHitResultList_destroy(hit_result_list);
+}
+
+void ArHitResultList_getItem(const ArSession* session,
+                             const ArHitResultList* hit_result_list,
+                             int index,
+                             ArHitResult* out_hit_result) {
+  arcore_api->impl_ArHitResultList_getItem(session, hit_result_list, index,
+                                           out_hit_result);
+}
+
+void ArHitResultList_getSize(const ArSession* session,
+                             const ArHitResultList* hit_result_list,
+                             int* out_size) {
+  arcore_api->impl_ArHitResultList_getSize(session, hit_result_list, out_size);
+}
+
 void ArPose_create(const ArSession* session,
                    const float* pose_raw,
                    ArPose** out_pose) {
@@ -142,6 +205,12 @@
   arcore_api->impl_ArPose_destroy(pose);
 }
 
+void ArPose_getMatrix(const ArSession* session,
+                      const ArPose* pose,
+                      float* out_matrix) {
+  arcore_api->impl_ArPose_getMatrix(session, pose, out_matrix);
+}
+
 void ArPose_getPoseRaw(const ArSession* session,
                        const ArPose* pose,
                        float* out_pose_raw) {
diff --git a/chrome/browser/android/vr/arcore_device/fake_arcore.cc b/chrome/browser/android/vr/arcore_device/fake_arcore.cc
index 0f4995a0..aa2fb73 100644
--- a/chrome/browser/android/vr/arcore_device/fake_arcore.cc
+++ b/chrome/browser/android/vr/arcore_device/fake_arcore.cc
@@ -263,4 +263,12 @@
   return pose;
 }
 
+bool FakeARCore::RequestHitTest(
+    const mojom::XRRayPtr& ray,
+    const gfx::Size& image_size,
+    std::vector<mojom::XRHitResultPtr>* hit_results) {
+  // TODO(https://crbug.com/837834): implement for testing.
+  return false;
+}
+
 }  // namespace device
diff --git a/chrome/browser/android/vr/arcore_device/fake_arcore.h b/chrome/browser/android/vr/arcore_device/fake_arcore.h
index bb7746e4..05f0754 100644
--- a/chrome/browser/android/vr/arcore_device/fake_arcore.h
+++ b/chrome/browser/android/vr/arcore_device/fake_arcore.h
@@ -35,6 +35,10 @@
   gfx::Transform GetProjectionMatrix(float near, float far) override;
   mojom::VRPosePtr Update() override;
 
+  bool RequestHitTest(const mojom::XRRayPtr& ray,
+                      const gfx::Size& image_size,
+                      std::vector<mojom::XRHitResultPtr>* hit_results) override;
+
   void SetCameraAspect(float aspect) { camera_aspect_ = aspect; }
 
  private:
diff --git a/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc b/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc
index bdc36dde..8e4df9d 100644
--- a/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc
+++ b/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc
@@ -817,11 +817,10 @@
 
 std::string DeviceLocalAccountManagementPolicyProvider::
     GetDebugPolicyProviderName() const {
-#if defined(NDEBUG)
-  NOTREACHED();
-  return std::string();
-#else
+#if DCHECK_IS_ON()
   return "whitelist for device-local accounts";
+#else
+  IMMEDIATE_CRASH();
 #endif
 }
 
diff --git a/chrome/browser/chromeos/extensions/signin_screen_policy_provider.cc b/chrome/browser/chromeos/extensions/signin_screen_policy_provider.cc
index a1955ba..ccf4809 100644
--- a/chrome/browser/chromeos/extensions/signin_screen_policy_provider.cc
+++ b/chrome/browser/chromeos/extensions/signin_screen_policy_provider.cc
@@ -34,11 +34,10 @@
 SigninScreenPolicyProvider::~SigninScreenPolicyProvider() {}
 
 std::string SigninScreenPolicyProvider::GetDebugPolicyProviderName() const {
-#if defined(NDEBUG)
-  NOTREACHED();
-  return std::string();
-#else
+#if DCHECK_IS_ON()
   return "Guard for sign-in screen";
+#else
+  IMMEDIATE_CRASH();
 #endif
 }
 
diff --git a/chrome/browser/chromeos/login/quick_unlock/pin_backend.cc b/chrome/browser/chromeos/login/quick_unlock/pin_backend.cc
index 77a3ec9..fbe44ba 100644
--- a/chrome/browser/chromeos/login/quick_unlock/pin_backend.cc
+++ b/chrome/browser/chromeos/login/quick_unlock/pin_backend.cc
@@ -226,7 +226,7 @@
   // the prefs backend from a previous version. If that's the case, we should
   // talk to the prefs backend instead of the cryptohome backend.
   QuickUnlockStorage* storage = GetPrefsBackend(account_id);
-  return !storage->pin_storage_prefs()->IsPinSet();
+  return !storage || !storage->pin_storage_prefs()->IsPinSet();
 }
 
 }  // namespace quick_unlock
diff --git a/chrome/browser/chromeos/policy/device_system_use_24hour_clock_browsertest.cc b/chrome/browser/chromeos/policy/device_system_use_24hour_clock_browsertest.cc
index e852710a..0e368db3a 100644
--- a/chrome/browser/chromeos/policy/device_system_use_24hour_clock_browsertest.cc
+++ b/chrome/browser/chromeos/policy/device_system_use_24hour_clock_browsertest.cc
@@ -24,7 +24,6 @@
 #include "chrome/browser/lifetime/application_lifetime.h"
 #include "chromeos/chromeos_switches.h"
 #include "components/policy/proto/chrome_device_policy.pb.h"
-#include "content/public/test/test_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace em = enterprise_management;
diff --git a/chrome/browser/chromeos/policy/display_rotation_default_handler_browsertest.cc b/chrome/browser/chromeos/policy/display_rotation_default_handler_browsertest.cc
index 94e4ff3..eba4277 100644
--- a/chrome/browser/chromeos/policy/display_rotation_default_handler_browsertest.cc
+++ b/chrome/browser/chromeos/policy/display_rotation_default_handler_browsertest.cc
@@ -30,7 +30,6 @@
 #include "chromeos/dbus/session_manager_client.h"
 #include "chromeos/settings/cros_settings_names.h"
 #include "components/policy/proto/chrome_device_policy.pb.h"
-#include "content/public/test/test_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/display/display.h"
 #include "ui/display/display_layout.h"
diff --git a/chrome/browser/chromeos/policy/unaffiliated_arc_allowed_browsertest.cc b/chrome/browser/chromeos/policy/unaffiliated_arc_allowed_browsertest.cc
index c03f912..8b66e7e 100644
--- a/chrome/browser/chromeos/policy/unaffiliated_arc_allowed_browsertest.cc
+++ b/chrome/browser/chromeos/policy/unaffiliated_arc_allowed_browsertest.cc
@@ -22,7 +22,6 @@
 #include "chromeos/settings/cros_settings_names.h"
 #include "components/arc/arc_util.h"
 #include "components/policy/proto/chrome_device_policy.pb.h"
-#include "content/public/test/test_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace em = enterprise_management;
diff --git a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_browsertest.cc b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_browsertest.cc
index 0a1392e..162eec5 100644
--- a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_browsertest.cc
+++ b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_browsertest.cc
@@ -7,7 +7,6 @@
 #include <utility>
 
 #include "base/macros.h"
-#include "base/run_loop.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/values.h"
 #include "chrome/browser/chrome_notification_types.h"
diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc
index 76ced7e..9543d3e 100644
--- a/chrome/browser/download/chrome_download_manager_delegate.cc
+++ b/chrome/browser/download/chrome_download_manager_delegate.cc
@@ -957,9 +957,17 @@
   // with the filename automatically set to be the unique filename.
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   if (result == PathValidationResult::SUCCESS) {
-    ChooseDownloadLocation(
-        native_window, DownloadLocationDialogType::NAME_CONFLICT, target_path,
-        base::BindOnce(&OnDownloadLocationDetermined, callback));
+    if (download_prefs_ && download_prefs_->PromptForDownload()) {
+      ChooseDownloadLocation(
+          native_window, DownloadLocationDialogType::NAME_CONFLICT, target_path,
+          base::BindOnce(&OnDownloadLocationDetermined, callback));
+      return;
+    }
+
+    // If user chose not to show download location dialog, uses current unique
+    // target path.
+    callback.Run(DownloadConfirmationResult::CONTINUE_WITHOUT_CONFIRMATION,
+                 target_path);
   } else {
     // If the name generation failed, fail the download.
     callback.Run(DownloadConfirmationResult::FAILED, base::FilePath());
diff --git a/chrome/browser/download/chrome_download_manager_delegate_unittest.cc b/chrome/browser/download/chrome_download_manager_delegate_unittest.cc
index 96d5d43e..34d077b 100644
--- a/chrome/browser/download/chrome_download_manager_delegate_unittest.cc
+++ b/chrome/browser/download/chrome_download_manager_delegate_unittest.cc
@@ -53,6 +53,7 @@
 #endif
 
 #if defined(OS_ANDROID)
+#include "chrome/browser/download/download_prompt_status.h"
 #include "chrome/browser/infobars/infobar_service.h"
 #include "components/infobars/core/infobar.h"
 #include "components/infobars/core/infobar_delegate.h"
@@ -1195,6 +1196,10 @@
   scoped_list.InitAndEnableFeature(features::kDownloadsLocationChange);
   EXPECT_TRUE(base::FeatureList::IsEnabled(features::kDownloadsLocationChange));
 
+  profile()->GetTestingPrefService()->SetInteger(
+      prefs::kPromptForDownloadAndroid,
+      static_cast<int>(DownloadPromptStatus::SHOW_PREFERENCE));
+
   enum class WebContents { AVAILABLE, NONE };
   enum class ExpectPath { FULL, EMPTY };
   struct {
diff --git a/chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper.cc b/chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper.cc
index 4602d75..4eae3e8 100644
--- a/chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper.cc
+++ b/chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper.cc
@@ -30,10 +30,7 @@
 namespace extensions {
 namespace {
 
-// JSON key in extension arguments.
-const char kMachineName[] = "machineName";
-const char kOSInfo[] = "osInfo";
-const char kOSUser[] = "osUser";
+// JSON keys in the extension arguments.
 const char kBrowserReport[] = "browserReport";
 const char kChromeUserProfileReport[] = "chromeUserProfileReport";
 const char kChromeSignInUser[] = "chromeSignInUser";
@@ -43,8 +40,9 @@
 const char kSafeBrowsingWarningsClickThrough[] =
     "safeBrowsingWarningsClickThrough";
 
-// JSON key in the os_info field.
+// JSON keys in the os_info field.
 const char kOS[] = "os";
+const char kOSArch[] = "arch";
 const char kOSVersion[] = "os_version";
 
 const char kDefaultDictionary[] = "{}";
@@ -136,17 +134,23 @@
   return true;
 }
 
-bool UpdateOSInfoEntry(const base::Value& report, std::string* os_info_string) {
-  base::Value writable_os_info(base::Value::Type::DICTIONARY);
-  if (const base::Value* os_info = report.FindKey(kOSInfo)) {
-    if (!os_info->is_dict())
-      return false;
-    writable_os_info = os_info->Clone();
-  }
-  writable_os_info.SetKey(kOS, base::Value(policy::GetOSPlatform()));
-  writable_os_info.SetKey(kOSVersion, base::Value(policy::GetOSVersion()));
-  base::JSONWriter::Write(writable_os_info, os_info_string);
-  return true;
+void AppendPlatformInformation(em::ChromeDesktopReportRequest* request) {
+  const char kComputerName[] = "computername";
+  const char kUsername[] = "username";
+
+  base::Value os_info = base::Value(base::Value::Type::DICTIONARY);
+  os_info.SetKey(kOS, base::Value(policy::GetOSPlatform()));
+  os_info.SetKey(kOSVersion, base::Value(policy::GetOSVersion()));
+  os_info.SetKey(kOSArch, base::Value(policy::GetOSArchitecture()));
+  base::JSONWriter::Write(os_info, request->mutable_os_info());
+
+  base::Value machine_name = base::Value(base::Value::Type::DICTIONARY);
+  machine_name.SetKey(kComputerName, base::Value(policy::GetMachineName()));
+  base::JSONWriter::Write(machine_name, request->mutable_machine_name());
+
+  base::Value os_user = base::Value(base::Value::Type::DICTIONARY);
+  os_user.SetKey(kUsername, base::Value(policy::GetOSUsername()));
+  base::JSONWriter::Write(os_user, request->mutable_os_user());
 }
 
 std::unique_ptr<em::ChromeUserProfileReport>
@@ -192,13 +196,7 @@
   std::unique_ptr<em::ChromeDesktopReportRequest> request =
       std::make_unique<em::ChromeDesktopReportRequest>();
 
-  if (!UpdateJSONEncodedStringEntry(
-          report, kMachineName, request->mutable_machine_name(), DICTIONARY) ||
-      !UpdateJSONEncodedStringEntry(report, kOSUser, request->mutable_os_user(),
-                                    DICTIONARY) ||
-      !UpdateOSInfoEntry(report, request->mutable_os_info())) {
-    return nullptr;
-  }
+  AppendPlatformInformation(request.get());
 
   if (const base::Value* browser_report =
           report.FindKeyOfType(kBrowserReport, base::Value::Type::DICTIONARY)) {
diff --git a/chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper_unittest.cc b/chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper_unittest.cc
index 96ababa..97d58f1c 100644
--- a/chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper_unittest.cc
+++ b/chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper_unittest.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper.h"
 
 #include "base/json/json_reader.h"
+#include "base/json/string_escape.h"
 #include "base/values.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/test/base/testing_profile.h"
@@ -29,46 +30,41 @@
   std::unique_ptr<em::ChromeDesktopReportRequest> request;
   std::string expected_os_info;
 
-  // Platform and its version will be the |os_info| by default.
-  expected_os_info = base::StringPrintf("{\"os\":\"%s\",\"os_version\":\"%s\"}",
-                                        policy::GetOSPlatform().c_str(),
-                                        policy::GetOSVersion().c_str());
+  expected_os_info = base::StringPrintf(
+      "{\"arch\":\"%s\",\"os\":\"%s\",\"os_version\":\"%s\"}",
+      policy::GetOSArchitecture().c_str(), policy::GetOSPlatform().c_str(),
+      policy::GetOSVersion().c_str());
   request =
       GenerateChromeDesktopReportRequest(base::DictionaryValue(), &profile_);
   ASSERT_TRUE(request);
   EXPECT_EQ(expected_os_info, request->os_info());
-
-  // Platform and its version will be merged with other |os_info|.
-  expected_os_info = base::StringPrintf(
-      "{\"os\":\"%s\",\"os_version\":\"%s\",\"other_info\":\"info\"}",
-      policy::GetOSPlatform().c_str(), policy::GetOSVersion().c_str());
-  std::unique_ptr<base::DictionaryValue> report = base::DictionaryValue::From(
-      base::JSONReader::Read("{\"osInfo\": {\"other_info\":\"info\"}}"));
-  ASSERT_TRUE(report);
-  request = GenerateChromeDesktopReportRequest(*report, &profile_);
-  ASSERT_TRUE(request);
-  EXPECT_EQ(expected_os_info, request->os_info());
 }
 
 TEST_F(ChromeDesktopReportRequestGeneratorTest, MachineName) {
   std::unique_ptr<em::ChromeDesktopReportRequest> request;
   std::string expected_machine_name;
 
-  // Machine name will be a empty dict by default.
-  expected_machine_name = "{}";
+  expected_machine_name = base::StringPrintf("{\"computername\":\"%s\"}",
+                                             policy::GetMachineName().c_str());
   request =
       GenerateChromeDesktopReportRequest(base::DictionaryValue(), &profile_);
   ASSERT_TRUE(request);
   EXPECT_EQ(expected_machine_name, request->machine_name());
+}
 
-  // Machine name will be copied from the |report|.
-  expected_machine_name = "{\"computername\":\"name\"}";
-  std::unique_ptr<base::DictionaryValue> report = base::DictionaryValue::From(
-      base::JSONReader::Read("{\"machineName\":{\"computername\":\"name\"}}"));
-  ASSERT_TRUE(report);
-  request = GenerateChromeDesktopReportRequest(*report, &profile_);
+TEST_F(ChromeDesktopReportRequestGeneratorTest, OSUsername) {
+  std::unique_ptr<em::ChromeDesktopReportRequest> request;
+  std::string expected_os_username, os_username_escaped;
+
+  // The username needs to be escaped as the name can contain slashes.
+  base::EscapeJSONString(policy::GetOSUsername(), false, &os_username_escaped);
+  expected_os_username =
+      base::StringPrintf("{\"username\":\"%s\"}", os_username_escaped.c_str());
+
+  request =
+      GenerateChromeDesktopReportRequest(base::DictionaryValue(), &profile_);
   ASSERT_TRUE(request);
-  EXPECT_EQ(expected_machine_name, request->machine_name());
+  EXPECT_EQ(expected_os_username, request->os_user());
 }
 
 TEST_F(ChromeDesktopReportRequestGeneratorTest, ProfileName) {
@@ -142,19 +138,15 @@
 TEST_F(ChromeDesktopReportRequestGeneratorTest, InvalidInput) {
   // |request| will not be generated if the type of input is invalid.
   std::unique_ptr<base::DictionaryValue> report;
-  report = base::DictionaryValue::From(
-      base::JSONReader::Read("{\"osInfo\": \"info\"}"));
-  ASSERT_TRUE(report);
-  EXPECT_FALSE(GenerateChromeDesktopReportRequest(*report, &profile_));
-
-  report = base::DictionaryValue::From(
-      base::JSONReader::Read("{\"machineName\": \"info\"}"));
+  report = base::DictionaryValue::From(base::JSONReader::Read(
+      "{\"browserReport\": "
+      "{\"chromeUserProfileReport\":[{\"extensionData\":{}}]}}"));
   ASSERT_TRUE(report);
   EXPECT_FALSE(GenerateChromeDesktopReportRequest(*report, &profile_));
 
   report = base::DictionaryValue::From(base::JSONReader::Read(
       "{\"browserReport\": "
-      "{\"chromeUserProfileReport\":[{\"extensionData\":{}}]}}"));
+      "{\"chromeUserProfileReport\":[{\"chromeSignInUser\":\"\"}]}}"));
   ASSERT_TRUE(report);
   EXPECT_FALSE(GenerateChromeDesktopReportRequest(*report, &profile_));
 }
diff --git a/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_unittest.cc b/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_unittest.cc
index 5692926..14c234c6 100644
--- a/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_unittest.cc
+++ b/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_unittest.cc
@@ -21,7 +21,6 @@
 const char kFakeDMToken[] = "fake-dm-token";
 const char kFakeClientId[] = "fake-client-id";
 const char kFakeMachineNameReport[] = "{\"computername\":\"name\"}";
-const char kFakeInvalidMachineNameReport[] = "\"invalid\"";
 
 class MockCloudPolicyClient : public policy::MockCloudPolicyClient {
  public:
@@ -73,6 +72,14 @@
     return base::StringPrintf("[{\"machineName\":%s}]", name);
   }
 
+  std::string GenerateInvalidReport() {
+    // This report is invalid as the chromeSignInUser dictionary should not be
+    // wrapped in a list.
+    return std::string(
+        "[{\"browserReport\": "
+        "{\"chromeUserProfileReport\":[{\"chromeSignInUser\":\"Name\"}]}}]");
+  }
+
   MockCloudPolicyClient* client_;
 
  private:
@@ -90,7 +97,7 @@
   ASSERT_EQ(enterprise_reporting::kInvalidInputErrorMessage,
             RunFunctionAndReturnError(
                 CreateChromeDesktopReportingFunction(kFakeDMToken),
-                GenerateArgs(kFakeInvalidMachineNameReport)));
+                GenerateInvalidReport()));
 }
 
 TEST_F(EnterpriseReportingPrivateTest, UploadFailed) {
diff --git a/chrome/browser/extensions/api/web_request/web_request_apitest.cc b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
index af4ddbde..c8246ed6 100644
--- a/chrome/browser/extensions/api/web_request/web_request_apitest.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
@@ -438,9 +438,7 @@
       message_;
 }
 
-// Flaky (sometimes crash): http://crbug.com/140976
-IN_PROC_BROWSER_TEST_F(ExtensionWebRequestApiTest,
-                       DISABLED_WebRequestAuthRequired) {
+IN_PROC_BROWSER_TEST_F(ExtensionWebRequestApiTest, WebRequestAuthRequired) {
   CancelLoginDialog login_dialog_helper;
 
   ASSERT_TRUE(StartEmbeddedTestServer());
diff --git a/chrome/browser/extensions/extension_crash_recovery_browsertest.cc b/chrome/browser/extensions/extension_crash_recovery_browsertest.cc
index 14dc036..9f286ce 100644
--- a/chrome/browser/extensions/extension_crash_recovery_browsertest.cc
+++ b/chrome/browser/extensions/extension_crash_recovery_browsertest.cc
@@ -208,7 +208,7 @@
 #endif
 
 IN_PROC_BROWSER_TEST_F(ExtensionCrashRecoveryTest,
-                       ReloadIndependentlyChangeTabs) {
+                       MAYBE_ReloadIndependentlyChangeTabs) {
   const size_t count_before = GetEnabledExtensionCount();
   LoadTestExtension();
   CrashExtension(first_extension_id_);
diff --git a/chrome/browser/extensions/standard_management_policy_provider.cc b/chrome/browser/extensions/standard_management_policy_provider.cc
index a346c8c..4e09531 100644
--- a/chrome/browser/extensions/standard_management_policy_provider.cc
+++ b/chrome/browser/extensions/standard_management_policy_provider.cc
@@ -64,11 +64,10 @@
 
 std::string
     StandardManagementPolicyProvider::GetDebugPolicyProviderName() const {
-#ifdef NDEBUG
-  NOTREACHED();
-  return std::string();
-#else
+#if DCHECK_IS_ON()
   return "extension management policy controlled settings";
+#else
+  IMMEDIATE_CRASH();
 #endif
 }
 
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 3d0d905..56aeb19a 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -361,6 +361,11 @@
     "If enabled, adds the status of certain experiment variations when making "
     "calls to Google Payments.";
 
+const char kEnableAutoplayIgnoreWebAudioName[] =
+    "Autoplay ignores WebAudio playbacks";
+const char kEnableAutoplayIgnoreWebAudioDescription[] =
+    "If enabled, autoplay restrictions will be ignored for WebAudio.";
+
 const char kEnableBreakingNewsPushName[] = "Breaking News Push";
 const char kEnableBreakingNewsPushDescription[] =
     "Listen for breaking news content suggestions (e.g. for New Tab Page) "
@@ -486,12 +491,6 @@
     "might contain generation fallbacks or 'Show all saved passwords' "
     "fallback.";
 
-const char kEnableMaterialDesignExtensionsName[] =
-    "Enable Material Design extensions";
-const char kEnableMaterialDesignExtensionsDescription[] =
-    "If enabled, the chrome://extensions/ URL loads the Material Design "
-    "extensions page.";
-
 const char kEnablePolicyToolName[] = "Enable policy management page";
 const char kEnablePolicyToolDescription[] =
     "If enabled, the chrome://policy-tool URL loads a page for managing "
@@ -3147,6 +3146,13 @@
 
 #endif  // defined(OS_WIN) || defined(OS_MACOSX)
 
+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
+
+const char kUiFoodName[] = "Use all upcoming UI features";
+const char kUiFoodDescription[] = "Use all upcoming UI features.";
+
+#endif
+
 // Feature flags --------------------------------------------------------------
 
 #if BUILDFLAG(ENABLE_VR)
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index e83aa43..f5bb185 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -250,6 +250,9 @@
 extern const char kEnableAutofillSendExperimentIdsInPaymentsRPCsName[];
 extern const char kEnableAutofillSendExperimentIdsInPaymentsRPCsDescription[];
 
+extern const char kEnableAutoplayIgnoreWebAudioName[];
+extern const char kEnableAutoplayIgnoreWebAudioDescription[];
+
 extern const char kEnableBreakingNewsPushName[];
 extern const char kEnableBreakingNewsPushDescription[];
 
@@ -326,9 +329,6 @@
 extern const char kEnableMaterialDesignBookmarksName[];
 extern const char kEnableMaterialDesignBookmarksDescription[];
 
-extern const char kEnableMaterialDesignExtensionsName[];
-extern const char kEnableMaterialDesignExtensionsDescription[];
-
 extern const char kEnablePolicyToolName[];
 extern const char kEnablePolicyToolDescription[];
 
@@ -1930,6 +1930,13 @@
 
 #endif  // defined(OS_WIN) || defined(OS_LINUX)
 
+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
+
+extern const char kUiFoodName[];
+extern const char kUiFoodDescription[];
+
+#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
+
 #if defined(OS_WIN) || defined(OS_MACOSX)
 
 extern const char kAutomaticTabDiscardingName[];
diff --git a/chrome/browser/media/encrypted_media_browsertest.cc b/chrome/browser/media/encrypted_media_browsertest.cc
index 89c87fe..fb50ca98 100644
--- a/chrome/browser/media/encrypted_media_browsertest.cc
+++ b/chrome/browser/media/encrypted_media_browsertest.cc
@@ -855,8 +855,10 @@
     return;
   }
 
-  TestNonPlaybackCases(kExternalClearKeyCdmProxyTestKeySystem,
-                       kUnitTestSuccess);
+  // ClearKeyCdmProxy only supports decrypt-only.
+  RunSimpleEncryptedMediaTest("bear-a_enc-a.webm", kWebMVorbisAudioOnly,
+                              kExternalClearKeyCdmProxyTestKeySystem,
+                              SrcType::MSE);
 }
 
 #endif  // BUILDFLAG(ENABLE_LIBRARY_CDMS)
diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc
index 22de9de..d659309 100644
--- a/chrome/browser/net/chrome_network_delegate.cc
+++ b/chrome/browser/net/chrome_network_delegate.cc
@@ -202,7 +202,9 @@
 ChromeNetworkDelegate::ChromeNetworkDelegate(
     extensions::EventRouterForwarder* event_router,
     BooleanPrefMember* enable_referrers)
-    : profile_(nullptr),
+    : extensions_delegate_(
+          ChromeExtensionsNetworkDelegate::Create(event_router)),
+      profile_(nullptr),
       enable_referrers_(enable_referrers),
       force_google_safe_search_(nullptr),
       force_youtube_restrict_(nullptr),
@@ -213,8 +215,6 @@
       data_use_aggregator_(nullptr),
       is_data_usage_off_the_record_(true) {
   DCHECK(enable_referrers);
-  extensions_delegate_.reset(
-      ChromeExtensionsNetworkDelegate::Create(event_router));
 }
 
 ChromeNetworkDelegate::~ChromeNetworkDelegate() {}
diff --git a/chrome/browser/notifications/notification_interactive_uitest.cc b/chrome/browser/notifications/notification_interactive_uitest.cc
index 77953689..a663a0c 100644
--- a/chrome/browser/notifications/notification_interactive_uitest.cc
+++ b/chrome/browser/notifications/notification_interactive_uitest.cc
@@ -361,36 +361,6 @@
   ASSERT_EQ(0, GetNotificationCount());
 }
 
-// Crashes on Linux/Win. See http://crbug.com/160657.
-IN_PROC_BROWSER_TEST_F(
-    NotificationsTest,
-    DISABLED_TestOriginPrefsNotSavedInIncognito) {
-  ASSERT_TRUE(embedded_test_server()->Start());
-
-  // Verify that allow/deny origin preferences are not saved in incognito.
-  Browser* incognito = CreateIncognitoBrowser();
-  ui_test_utils::NavigateToURL(incognito, GetTestPageURL());
-  ASSERT_TRUE(RequestAndDenyPermission(incognito));
-  CloseBrowserSynchronously(incognito);
-
-  incognito = CreateIncognitoBrowser();
-  ui_test_utils::NavigateToURL(incognito, GetTestPageURL());
-  ASSERT_TRUE(RequestAndAcceptPermission(incognito));
-  CreateSimpleNotification(incognito, true);
-  ASSERT_EQ(1, GetNotificationCount());
-  CloseBrowserSynchronously(incognito);
-
-  incognito = CreateIncognitoBrowser();
-  ui_test_utils::NavigateToURL(incognito, GetTestPageURL());
-  ASSERT_TRUE(RequestPermissionAndWait(incognito));
-
-  ContentSettingsForOneType settings;
-  GetPrefsByContentSetting(CONTENT_SETTING_BLOCK, &settings);
-  EXPECT_EQ(0U, settings.size());
-  GetPrefsByContentSetting(CONTENT_SETTING_ALLOW, &settings);
-  EXPECT_EQ(0U, settings.size());
-}
-
 IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCloseTabWithPermissionRequestUI) {
   ASSERT_TRUE(embedded_test_server()->Start());
 
diff --git a/chrome/browser/notifications/notification_platform_bridge_win.cc b/chrome/browser/notifications/notification_platform_bridge_win.cc
index 9615f906..b31eaa2 100644
--- a/chrome/browser/notifications/notification_platform_bridge_win.cc
+++ b/chrome/browser/notifications/notification_platform_bridge_win.cc
@@ -29,11 +29,11 @@
 #include "chrome/browser/notifications/notification_common.h"
 #include "chrome/browser/notifications/notification_display_service_impl.h"
 #include "chrome/browser/notifications/notification_handler.h"
-#include "chrome/browser/notifications/notification_platform_bridge_win_metrics.h"
-#include "chrome/browser/notifications/notification_platform_bridge_win_util.h"
 #include "chrome/browser/notifications/win/notification_image_retainer.h"
 #include "chrome/browser/notifications/win/notification_launch_id.h"
+#include "chrome/browser/notifications/win/notification_metrics.h"
 #include "chrome/browser/notifications/win/notification_template_builder.h"
+#include "chrome/browser/notifications/win/notification_util.h"
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/common/chrome_features.h"
 #include "chrome/common/chrome_switches.h"
diff --git a/chrome/browser/notifications/notification_platform_bridge_win_metrics.cc b/chrome/browser/notifications/notification_platform_bridge_win_metrics.cc
deleted file mode 100644
index 207683a..0000000
--- a/chrome/browser/notifications/notification_platform_bridge_win_metrics.cc
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/notifications/notification_platform_bridge_win_metrics.h"
-
-#include "base/metrics/histogram_macros.h"
-
-namespace notifications_uma {
-
-void LogDisplayHistogram(DisplayStatus status) {
-  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.DisplayStatus", status,
-                            DisplayStatus::COUNT);
-}
-
-void LogCloseHistogram(CloseStatus status) {
-  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.CloseStatus", status,
-                            CloseStatus::COUNT);
-}
-
-void LogHistoryHistogram(HistoryStatus status) {
-  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.HistoryStatus", status,
-                            HistoryStatus::COUNT);
-}
-
-void LogGetDisplayedStatus(GetDisplayedStatus status) {
-  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.GetDisplayedStatus", status,
-                            GetDisplayedStatus::COUNT);
-}
-
-void LogGetDisplayedLaunchIdStatus(GetDisplayedLaunchIdStatus status) {
-  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.GetDisplayedLaunchIdStatus",
-                            status, GetDisplayedLaunchIdStatus::COUNT);
-}
-
-void LogGetNotificationLaunchIdStatus(GetNotificationLaunchIdStatus status) {
-  UMA_HISTOGRAM_ENUMERATION(
-      "Notifications.Windows.GetNotificationLaunchIdStatus", status,
-      GetNotificationLaunchIdStatus::COUNT);
-}
-
-void LogGetSettingPolicy(GetSettingPolicy policy) {
-  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.GetSettingPolicy", policy,
-                            GetSettingPolicy::COUNT);
-}
-
-void LogGetSettingStatus(GetSettingStatus status) {
-  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.GetSettingStatus", status,
-                            GetSettingStatus::COUNT);
-}
-
-void LogHandleEventStatus(HandleEventStatus status) {
-  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.HandleEventStatus", status,
-                            HandleEventStatus::COUNT);
-}
-
-void LogActivationStatus(ActivationStatus status) {
-  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.ActivationStatus", status,
-                            ActivationStatus::COUNT);
-}
-
-void LogSetReadyCallbackStatus(SetReadyCallbackStatus status) {
-  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.SetReadyCallbackStatus",
-                            status, SetReadyCallbackStatus::COUNT);
-}
-
-void LogOnDismissedStatus(OnDismissedStatus status) {
-  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.OnDismissedStatus", status,
-                            OnDismissedStatus::COUNT);
-}
-
-void LogOnFailedStatus(OnFailedStatus status) {
-  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.OnFailedStatus", status,
-                            OnFailedStatus::COUNT);
-}
-
-}  // namespace notifications_uma
diff --git a/chrome/browser/notifications/notification_platform_bridge_win_metrics.h b/chrome/browser/notifications/notification_platform_bridge_win_metrics.h
deleted file mode 100644
index 3db596a..0000000
--- a/chrome/browser/notifications/notification_platform_bridge_win_metrics.h
+++ /dev/null
@@ -1,175 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_WIN_METRICS_H_
-#define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_WIN_METRICS_H_
-
-namespace notifications_uma {
-
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class DisplayStatus {
-  SUCCESS = 0,
-  RO_ACTIVATE_FAILED = 1,
-  CONVERSION_FAILED_INSPECTABLE_TO_XML_IO = 2,
-  LOAD_XML_FAILED = 3,
-  CONVERSION_FAILED_XML_IO_TO_XML = 4,
-  CREATE_FACTORY_FAILED = 5,
-  CREATE_TOAST_NOTIFICATION_FAILED = 6,
-  CREATE_TOAST_NOTIFICATION2_FAILED = 7,
-  SETTING_GROUP_FAILED = 8,
-  SETTING_TAG_FAILED = 9,
-  GET_GROUP_FAILED = 10,
-  GET_TAG_FAILED = 11,
-  SUPPRESS_POPUP_FAILED = 12,
-  ADD_TOAST_DISMISS_HANDLER_FAILED = 13,
-  ADD_TOAST_ERROR_HANDLER_FAILED = 14,
-  SHOWING_TOAST_FAILED = 15,
-  CREATE_TOAST_NOTIFICATION_MANAGER_FAILED = 16,
-  CREATE_TOAST_NOTIFIER_WITH_ID_FAILED = 17,
-  DEPRECATED_DISABLED_FOR_APPLICATION = 18,
-  DEPRECATED_DISABLED_FOR_USER = 19,
-  DEPRECATED_DISABLED_BY_GROUP_POLICY = 20,
-  DEPRECATED_DISABLED_BY_MANIFEST = 21,
-  COUNT  // Must be the final value.
-};
-
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class CloseStatus {
-  SUCCESS = 0,
-  GET_TOAST_HISTORY_FAILED = 1,
-  REMOVING_TOAST_FAILED = 2,
-  COUNT  // Must be the final value.
-};
-
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class HistoryStatus {
-  SUCCESS = 0,
-  CREATE_TOAST_NOTIFICATION_MANAGER_FAILED = 1,
-  QUERY_TOAST_MANAGER_STATISTICS2_FAILED = 2,
-  GET_TOAST_HISTORY_FAILED = 3,
-  COUNT  // Must be the final value.
-};
-
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class GetDisplayedStatus {
-  SUCCESS = 0,
-  SUCCESS_WITH_GET_AT_FAILURE = 1,
-  GET_TOAST_HISTORY_FAILED = 2,
-  QUERY_TOAST_NOTIFICATION_HISTORY2_FAILED = 3,
-  GET_HISTORY_WITH_ID_FAILED = 4,
-  GET_SIZE_FAILED = 5,
-  COUNT  // Must be the final value.
-};
-
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class GetDisplayedLaunchIdStatus {
-  SUCCESS = 0,
-  DECODE_LAUNCH_ID_FAILED = 1,
-  COUNT  // Must be the final value.
-};
-
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class GetNotificationLaunchIdStatus {
-  SUCCESS = 0,
-  NOTIFICATION_GET_CONTENT_FAILED = 1,
-  GET_ELEMENTS_BY_TAG_FAILED = 2,
-  MISSING_TOAST_ELEMENT_IN_DOC = 3,
-  ITEM_AT_FAILED = 4,
-  GET_ATTRIBUTES_FAILED = 5,
-  GET_NAMED_ITEM_FAILED = 6,
-  GET_FIRST_CHILD_FAILED = 7,
-  GET_NODE_VALUE_FAILED = 8,
-  CONVERSION_TO_PROP_VALUE_FAILED = 9,
-  GET_STRING_FAILED = 10,
-  COUNT  // Must be the final value.
-};
-
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class GetSettingPolicy {
-  ENABLED = 0,
-  DISABLED_FOR_APPLICATION = 1,
-  DISABLED_FOR_USER = 2,
-  DISABLED_BY_GROUP_POLICY = 3,
-  DISABLED_BY_MANIFEST = 4,
-  COUNT  // Must be the final value.
-};
-
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class GetSettingStatus {
-  SUCCESS = 0,
-  UNKNOWN_FAILURE = 1,
-  COUNT  // Must be the final value.
-};
-
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class ActivationStatus {
-  SUCCESS = 0,
-  DEPRECATED_GET_PROFILE_ID_INVALID_LAUNCH_ID = 1,
-  DEPRECATED_ACTIVATION_INVALID_LAUNCH_ID = 2,
-  INVALID_LAUNCH_ID = 3,
-  COUNT  // Must be the final value.
-};
-
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class HandleEventStatus {
-  SUCCESS = 0,
-  HANDLE_EVENT_LAUNCH_ID_INVALID = 1,
-  COUNT  // Must be the final value.
-};
-
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class SetReadyCallbackStatus {
-  SUCCESS = 0,
-  COM_NOT_INITIALIZED = 1,
-  COM_SERVER_MISCONFIGURATION = 2,
-  SHORTCUT_MISCONFIGURATION = 3,
-  COUNT  // Must be the final value.
-};
-
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class OnDismissedStatus {
-  SUCCESS = 0,
-  GET_DISMISSAL_REASON_FAILED = 1,
-  COUNT  // Must be the final value.
-};
-
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class OnFailedStatus {
-  SUCCESS = 0,
-  GET_ERROR_CODE_FAILED = 1,
-  COUNT  // Must be the final value.
-};
-
-// Methods to log histograms (to detect error rates in Native Notifications on
-// Windows).
-void LogDisplayHistogram(DisplayStatus status);
-void LogCloseHistogram(CloseStatus status);
-void LogHistoryHistogram(HistoryStatus status);
-void LogGetDisplayedStatus(GetDisplayedStatus status);
-void LogGetDisplayedLaunchIdStatus(GetDisplayedLaunchIdStatus status);
-void LogGetNotificationLaunchIdStatus(GetNotificationLaunchIdStatus status);
-void LogGetSettingPolicy(GetSettingPolicy policy);
-void LogGetSettingStatus(GetSettingStatus status);
-void LogHandleEventStatus(HandleEventStatus status);
-void LogActivationStatus(ActivationStatus status);
-void LogSetReadyCallbackStatus(SetReadyCallbackStatus status);
-void LogOnDismissedStatus(OnDismissedStatus status);
-void LogOnFailedStatus(OnFailedStatus status);
-
-}  // namespace notifications_uma
-
-#endif  // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_WIN_METRICS_H_
diff --git a/chrome/browser/notifications/notification_platform_bridge_win_util.cc b/chrome/browser/notifications/notification_platform_bridge_win_util.cc
deleted file mode 100644
index b2d4af9..0000000
--- a/chrome/browser/notifications/notification_platform_bridge_win_util.cc
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/notifications/notification_platform_bridge_win_util.h"
-
-#include <wrl/client.h>
-
-#include "base/win/scoped_hstring.h"
-#include "chrome/browser/notifications/notification_platform_bridge_win_metrics.h"
-#include "chrome/browser/notifications/win/notification_launch_id.h"
-#include "chrome/browser/notifications/win/notification_template_builder.h"
-
-namespace mswr = Microsoft::WRL;
-namespace winfoundtn = ABI::Windows::Foundation;
-namespace winui = ABI::Windows::UI;
-namespace winxml = ABI::Windows::Data::Xml;
-
-using notifications_uma::GetNotificationLaunchIdStatus;
-using base::win::ScopedHString;
-
-NotificationLaunchId GetNotificationLaunchId(
-    winui::Notifications::IToastNotification* notification) {
-  mswr::ComPtr<winxml::Dom::IXmlDocument> document;
-  HRESULT hr = notification->get_Content(&document);
-  if (FAILED(hr)) {
-    LogGetNotificationLaunchIdStatus(
-        GetNotificationLaunchIdStatus::NOTIFICATION_GET_CONTENT_FAILED);
-    DLOG(ERROR) << "Failed to get XML document";
-    return NotificationLaunchId();
-  }
-
-  ScopedHString tag = ScopedHString::Create(kNotificationToastElement);
-  mswr::ComPtr<winxml::Dom::IXmlNodeList> elements;
-  hr = document->GetElementsByTagName(tag.get(), &elements);
-  if (FAILED(hr)) {
-    LogGetNotificationLaunchIdStatus(
-        GetNotificationLaunchIdStatus::GET_ELEMENTS_BY_TAG_FAILED);
-    DLOG(ERROR) << "Failed to get <toast> elements from document";
-    return NotificationLaunchId();
-  }
-
-  UINT32 length;
-  hr = elements->get_Length(&length);
-  if (length == 0) {
-    LogGetNotificationLaunchIdStatus(
-        GetNotificationLaunchIdStatus::MISSING_TOAST_ELEMENT_IN_DOC);
-    DLOG(ERROR) << "No <toast> elements in document.";
-    return NotificationLaunchId();
-  }
-
-  mswr::ComPtr<winxml::Dom::IXmlNode> node;
-  hr = elements->Item(0, &node);
-  if (FAILED(hr)) {
-    LogGetNotificationLaunchIdStatus(
-        GetNotificationLaunchIdStatus::ITEM_AT_FAILED);
-    DLOG(ERROR) << "Failed to get first <toast> element";
-    return NotificationLaunchId();
-  }
-
-  mswr::ComPtr<winxml::Dom::IXmlNamedNodeMap> attributes;
-  hr = node->get_Attributes(&attributes);
-  if (FAILED(hr)) {
-    LogGetNotificationLaunchIdStatus(
-        GetNotificationLaunchIdStatus::GET_ATTRIBUTES_FAILED);
-    DLOG(ERROR) << "Failed to get attributes of <toast>";
-    return NotificationLaunchId();
-  }
-
-  mswr::ComPtr<winxml::Dom::IXmlNode> leaf;
-  ScopedHString id = ScopedHString::Create(kNotificationLaunchAttribute);
-  hr = attributes->GetNamedItem(id.get(), &leaf);
-  if (FAILED(hr)) {
-    LogGetNotificationLaunchIdStatus(
-        GetNotificationLaunchIdStatus::GET_NAMED_ITEM_FAILED);
-    DLOG(ERROR) << "Failed to get launch attribute of <toast>";
-    return NotificationLaunchId();
-  }
-
-  mswr::ComPtr<winxml::Dom::IXmlNode> child;
-  hr = leaf->get_FirstChild(&child);
-  if (FAILED(hr)) {
-    LogGetNotificationLaunchIdStatus(
-        GetNotificationLaunchIdStatus::GET_FIRST_CHILD_FAILED);
-    DLOG(ERROR) << "Failed to get content of launch attribute";
-    return NotificationLaunchId();
-  }
-
-  mswr::ComPtr<IInspectable> inspectable;
-  hr = child->get_NodeValue(&inspectable);
-  if (FAILED(hr)) {
-    LogGetNotificationLaunchIdStatus(
-        GetNotificationLaunchIdStatus::GET_NODE_VALUE_FAILED);
-    DLOG(ERROR) << "Failed to get node value of launch attribute";
-    return NotificationLaunchId();
-  }
-
-  mswr::ComPtr<winfoundtn::IPropertyValue> property_value;
-  hr = inspectable.As<winfoundtn::IPropertyValue>(&property_value);
-  if (FAILED(hr)) {
-    LogGetNotificationLaunchIdStatus(
-        GetNotificationLaunchIdStatus::CONVERSION_TO_PROP_VALUE_FAILED);
-    DLOG(ERROR) << "Failed to convert node value of launch attribute";
-    return NotificationLaunchId();
-  }
-
-  HSTRING value_hstring;
-  hr = property_value->GetString(&value_hstring);
-  if (FAILED(hr)) {
-    LogGetNotificationLaunchIdStatus(
-        GetNotificationLaunchIdStatus::GET_STRING_FAILED);
-    DLOG(ERROR) << "Failed to get string for launch attribute";
-    return NotificationLaunchId();
-  }
-
-  LogGetNotificationLaunchIdStatus(GetNotificationLaunchIdStatus::SUCCESS);
-
-  ScopedHString value(value_hstring);
-  return NotificationLaunchId(value.GetAsUTF8());
-}
diff --git a/chrome/browser/notifications/notification_platform_bridge_win_util.h b/chrome/browser/notifications/notification_platform_bridge_win_util.h
deleted file mode 100644
index e40b527..0000000
--- a/chrome/browser/notifications/notification_platform_bridge_win_util.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_WIN_UTIL_H_
-#define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_WIN_UTIL_H_
-
-#include <windows.ui.notifications.h>
-
-class NotificationLaunchId;
-
-// Extracts a NotificationLaunchId from a Toast |notification|. Outside tests,
-// this function should be called on a non-UI thread.
-NotificationLaunchId GetNotificationLaunchId(
-    ABI::Windows::UI::Notifications::IToastNotification* notification);
-
-#endif  // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_WIN_UTIL_H_
diff --git a/chrome/browser/notifications/win/mock_itoastnotifier.cc b/chrome/browser/notifications/win/mock_itoastnotifier.cc
index 7573f20..7847819 100644
--- a/chrome/browser/notifications/win/mock_itoastnotifier.cc
+++ b/chrome/browser/notifications/win/mock_itoastnotifier.cc
@@ -7,8 +7,8 @@
 #include <wrl/client.h>
 
 #include "chrome/browser/notifications/notification_platform_bridge_win.h"
-#include "chrome/browser/notifications/notification_platform_bridge_win_util.h"
 #include "chrome/browser/notifications/win/notification_launch_id.h"
+#include "chrome/browser/notifications/win/notification_util.h"
 
 namespace winui = ABI::Windows::UI;
 
diff --git a/chrome/browser/notifications/win/notification_metrics.cc b/chrome/browser/notifications/win/notification_metrics.cc
new file mode 100644
index 0000000..1732b65
--- /dev/null
+++ b/chrome/browser/notifications/win/notification_metrics.cc
@@ -0,0 +1,77 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/notifications/win/notification_metrics.h"
+
+#include "base/metrics/histogram_macros.h"
+
+namespace notifications_uma {
+
+void LogDisplayHistogram(DisplayStatus status) {
+  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.DisplayStatus", status,
+                            DisplayStatus::COUNT);
+}
+
+void LogCloseHistogram(CloseStatus status) {
+  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.CloseStatus", status,
+                            CloseStatus::COUNT);
+}
+
+void LogHistoryHistogram(HistoryStatus status) {
+  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.HistoryStatus", status,
+                            HistoryStatus::COUNT);
+}
+
+void LogGetDisplayedStatus(GetDisplayedStatus status) {
+  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.GetDisplayedStatus", status,
+                            GetDisplayedStatus::COUNT);
+}
+
+void LogGetDisplayedLaunchIdStatus(GetDisplayedLaunchIdStatus status) {
+  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.GetDisplayedLaunchIdStatus",
+                            status, GetDisplayedLaunchIdStatus::COUNT);
+}
+
+void LogGetNotificationLaunchIdStatus(GetNotificationLaunchIdStatus status) {
+  UMA_HISTOGRAM_ENUMERATION(
+      "Notifications.Windows.GetNotificationLaunchIdStatus", status,
+      GetNotificationLaunchIdStatus::COUNT);
+}
+
+void LogGetSettingPolicy(GetSettingPolicy policy) {
+  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.GetSettingPolicy", policy,
+                            GetSettingPolicy::COUNT);
+}
+
+void LogGetSettingStatus(GetSettingStatus status) {
+  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.GetSettingStatus", status,
+                            GetSettingStatus::COUNT);
+}
+
+void LogHandleEventStatus(HandleEventStatus status) {
+  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.HandleEventStatus", status,
+                            HandleEventStatus::COUNT);
+}
+
+void LogActivationStatus(ActivationStatus status) {
+  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.ActivationStatus", status,
+                            ActivationStatus::COUNT);
+}
+
+void LogSetReadyCallbackStatus(SetReadyCallbackStatus status) {
+  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.SetReadyCallbackStatus",
+                            status, SetReadyCallbackStatus::COUNT);
+}
+
+void LogOnDismissedStatus(OnDismissedStatus status) {
+  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.OnDismissedStatus", status,
+                            OnDismissedStatus::COUNT);
+}
+
+void LogOnFailedStatus(OnFailedStatus status) {
+  UMA_HISTOGRAM_ENUMERATION("Notifications.Windows.OnFailedStatus", status,
+                            OnFailedStatus::COUNT);
+}
+
+}  // namespace notifications_uma
diff --git a/chrome/browser/notifications/win/notification_metrics.h b/chrome/browser/notifications/win/notification_metrics.h
new file mode 100644
index 0000000..ab377231
--- /dev/null
+++ b/chrome/browser/notifications/win/notification_metrics.h
@@ -0,0 +1,175 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_NOTIFICATIONS_WIN_NOTIFICATION_METRICS_H_
+#define CHROME_BROWSER_NOTIFICATIONS_WIN_NOTIFICATION_METRICS_H_
+
+namespace notifications_uma {
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class DisplayStatus {
+  SUCCESS = 0,
+  RO_ACTIVATE_FAILED = 1,
+  CONVERSION_FAILED_INSPECTABLE_TO_XML_IO = 2,
+  LOAD_XML_FAILED = 3,
+  CONVERSION_FAILED_XML_IO_TO_XML = 4,
+  CREATE_FACTORY_FAILED = 5,
+  CREATE_TOAST_NOTIFICATION_FAILED = 6,
+  CREATE_TOAST_NOTIFICATION2_FAILED = 7,
+  SETTING_GROUP_FAILED = 8,
+  SETTING_TAG_FAILED = 9,
+  GET_GROUP_FAILED = 10,
+  GET_TAG_FAILED = 11,
+  SUPPRESS_POPUP_FAILED = 12,
+  ADD_TOAST_DISMISS_HANDLER_FAILED = 13,
+  ADD_TOAST_ERROR_HANDLER_FAILED = 14,
+  SHOWING_TOAST_FAILED = 15,
+  CREATE_TOAST_NOTIFICATION_MANAGER_FAILED = 16,
+  CREATE_TOAST_NOTIFIER_WITH_ID_FAILED = 17,
+  DEPRECATED_DISABLED_FOR_APPLICATION = 18,
+  DEPRECATED_DISABLED_FOR_USER = 19,
+  DEPRECATED_DISABLED_BY_GROUP_POLICY = 20,
+  DEPRECATED_DISABLED_BY_MANIFEST = 21,
+  COUNT  // Must be the final value.
+};
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class CloseStatus {
+  SUCCESS = 0,
+  GET_TOAST_HISTORY_FAILED = 1,
+  REMOVING_TOAST_FAILED = 2,
+  COUNT  // Must be the final value.
+};
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class HistoryStatus {
+  SUCCESS = 0,
+  CREATE_TOAST_NOTIFICATION_MANAGER_FAILED = 1,
+  QUERY_TOAST_MANAGER_STATISTICS2_FAILED = 2,
+  GET_TOAST_HISTORY_FAILED = 3,
+  COUNT  // Must be the final value.
+};
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class GetDisplayedStatus {
+  SUCCESS = 0,
+  SUCCESS_WITH_GET_AT_FAILURE = 1,
+  GET_TOAST_HISTORY_FAILED = 2,
+  QUERY_TOAST_NOTIFICATION_HISTORY2_FAILED = 3,
+  GET_HISTORY_WITH_ID_FAILED = 4,
+  GET_SIZE_FAILED = 5,
+  COUNT  // Must be the final value.
+};
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class GetDisplayedLaunchIdStatus {
+  SUCCESS = 0,
+  DECODE_LAUNCH_ID_FAILED = 1,
+  COUNT  // Must be the final value.
+};
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class GetNotificationLaunchIdStatus {
+  SUCCESS = 0,
+  NOTIFICATION_GET_CONTENT_FAILED = 1,
+  GET_ELEMENTS_BY_TAG_FAILED = 2,
+  MISSING_TOAST_ELEMENT_IN_DOC = 3,
+  ITEM_AT_FAILED = 4,
+  GET_ATTRIBUTES_FAILED = 5,
+  GET_NAMED_ITEM_FAILED = 6,
+  GET_FIRST_CHILD_FAILED = 7,
+  GET_NODE_VALUE_FAILED = 8,
+  CONVERSION_TO_PROP_VALUE_FAILED = 9,
+  GET_STRING_FAILED = 10,
+  COUNT  // Must be the final value.
+};
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class GetSettingPolicy {
+  ENABLED = 0,
+  DISABLED_FOR_APPLICATION = 1,
+  DISABLED_FOR_USER = 2,
+  DISABLED_BY_GROUP_POLICY = 3,
+  DISABLED_BY_MANIFEST = 4,
+  COUNT  // Must be the final value.
+};
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class GetSettingStatus {
+  SUCCESS = 0,
+  UNKNOWN_FAILURE = 1,
+  COUNT  // Must be the final value.
+};
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class ActivationStatus {
+  SUCCESS = 0,
+  DEPRECATED_GET_PROFILE_ID_INVALID_LAUNCH_ID = 1,
+  DEPRECATED_ACTIVATION_INVALID_LAUNCH_ID = 2,
+  INVALID_LAUNCH_ID = 3,
+  COUNT  // Must be the final value.
+};
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class HandleEventStatus {
+  SUCCESS = 0,
+  HANDLE_EVENT_LAUNCH_ID_INVALID = 1,
+  COUNT  // Must be the final value.
+};
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class SetReadyCallbackStatus {
+  SUCCESS = 0,
+  COM_NOT_INITIALIZED = 1,
+  COM_SERVER_MISCONFIGURATION = 2,
+  SHORTCUT_MISCONFIGURATION = 3,
+  COUNT  // Must be the final value.
+};
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class OnDismissedStatus {
+  SUCCESS = 0,
+  GET_DISMISSAL_REASON_FAILED = 1,
+  COUNT  // Must be the final value.
+};
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class OnFailedStatus {
+  SUCCESS = 0,
+  GET_ERROR_CODE_FAILED = 1,
+  COUNT  // Must be the final value.
+};
+
+// Methods to log histograms (to detect error rates in Native Notifications on
+// Windows).
+void LogDisplayHistogram(DisplayStatus status);
+void LogCloseHistogram(CloseStatus status);
+void LogHistoryHistogram(HistoryStatus status);
+void LogGetDisplayedStatus(GetDisplayedStatus status);
+void LogGetDisplayedLaunchIdStatus(GetDisplayedLaunchIdStatus status);
+void LogGetNotificationLaunchIdStatus(GetNotificationLaunchIdStatus status);
+void LogGetSettingPolicy(GetSettingPolicy policy);
+void LogGetSettingStatus(GetSettingStatus status);
+void LogHandleEventStatus(HandleEventStatus status);
+void LogActivationStatus(ActivationStatus status);
+void LogSetReadyCallbackStatus(SetReadyCallbackStatus status);
+void LogOnDismissedStatus(OnDismissedStatus status);
+void LogOnFailedStatus(OnFailedStatus status);
+
+}  // namespace notifications_uma
+
+#endif  // CHROME_BROWSER_NOTIFICATIONS_WIN_NOTIFICATION_METRICS_H_
diff --git a/chrome/browser/notifications/win/notification_util.cc b/chrome/browser/notifications/win/notification_util.cc
new file mode 100644
index 0000000..04f3c9a
--- /dev/null
+++ b/chrome/browser/notifications/win/notification_util.cc
@@ -0,0 +1,120 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/notifications/win/notification_util.h"
+
+#include <wrl/client.h>
+
+#include "base/win/scoped_hstring.h"
+#include "chrome/browser/notifications/win/notification_launch_id.h"
+#include "chrome/browser/notifications/win/notification_metrics.h"
+#include "chrome/browser/notifications/win/notification_template_builder.h"
+
+namespace mswr = Microsoft::WRL;
+namespace winfoundtn = ABI::Windows::Foundation;
+namespace winui = ABI::Windows::UI;
+namespace winxml = ABI::Windows::Data::Xml;
+
+using notifications_uma::GetNotificationLaunchIdStatus;
+using base::win::ScopedHString;
+
+NotificationLaunchId GetNotificationLaunchId(
+    winui::Notifications::IToastNotification* notification) {
+  mswr::ComPtr<winxml::Dom::IXmlDocument> document;
+  HRESULT hr = notification->get_Content(&document);
+  if (FAILED(hr)) {
+    LogGetNotificationLaunchIdStatus(
+        GetNotificationLaunchIdStatus::NOTIFICATION_GET_CONTENT_FAILED);
+    DLOG(ERROR) << "Failed to get XML document";
+    return NotificationLaunchId();
+  }
+
+  ScopedHString tag = ScopedHString::Create(kNotificationToastElement);
+  mswr::ComPtr<winxml::Dom::IXmlNodeList> elements;
+  hr = document->GetElementsByTagName(tag.get(), &elements);
+  if (FAILED(hr)) {
+    LogGetNotificationLaunchIdStatus(
+        GetNotificationLaunchIdStatus::GET_ELEMENTS_BY_TAG_FAILED);
+    DLOG(ERROR) << "Failed to get <toast> elements from document";
+    return NotificationLaunchId();
+  }
+
+  UINT32 length;
+  hr = elements->get_Length(&length);
+  if (length == 0) {
+    LogGetNotificationLaunchIdStatus(
+        GetNotificationLaunchIdStatus::MISSING_TOAST_ELEMENT_IN_DOC);
+    DLOG(ERROR) << "No <toast> elements in document.";
+    return NotificationLaunchId();
+  }
+
+  mswr::ComPtr<winxml::Dom::IXmlNode> node;
+  hr = elements->Item(0, &node);
+  if (FAILED(hr)) {
+    LogGetNotificationLaunchIdStatus(
+        GetNotificationLaunchIdStatus::ITEM_AT_FAILED);
+    DLOG(ERROR) << "Failed to get first <toast> element";
+    return NotificationLaunchId();
+  }
+
+  mswr::ComPtr<winxml::Dom::IXmlNamedNodeMap> attributes;
+  hr = node->get_Attributes(&attributes);
+  if (FAILED(hr)) {
+    LogGetNotificationLaunchIdStatus(
+        GetNotificationLaunchIdStatus::GET_ATTRIBUTES_FAILED);
+    DLOG(ERROR) << "Failed to get attributes of <toast>";
+    return NotificationLaunchId();
+  }
+
+  mswr::ComPtr<winxml::Dom::IXmlNode> leaf;
+  ScopedHString id = ScopedHString::Create(kNotificationLaunchAttribute);
+  hr = attributes->GetNamedItem(id.get(), &leaf);
+  if (FAILED(hr)) {
+    LogGetNotificationLaunchIdStatus(
+        GetNotificationLaunchIdStatus::GET_NAMED_ITEM_FAILED);
+    DLOG(ERROR) << "Failed to get launch attribute of <toast>";
+    return NotificationLaunchId();
+  }
+
+  mswr::ComPtr<winxml::Dom::IXmlNode> child;
+  hr = leaf->get_FirstChild(&child);
+  if (FAILED(hr)) {
+    LogGetNotificationLaunchIdStatus(
+        GetNotificationLaunchIdStatus::GET_FIRST_CHILD_FAILED);
+    DLOG(ERROR) << "Failed to get content of launch attribute";
+    return NotificationLaunchId();
+  }
+
+  mswr::ComPtr<IInspectable> inspectable;
+  hr = child->get_NodeValue(&inspectable);
+  if (FAILED(hr)) {
+    LogGetNotificationLaunchIdStatus(
+        GetNotificationLaunchIdStatus::GET_NODE_VALUE_FAILED);
+    DLOG(ERROR) << "Failed to get node value of launch attribute";
+    return NotificationLaunchId();
+  }
+
+  mswr::ComPtr<winfoundtn::IPropertyValue> property_value;
+  hr = inspectable.As<winfoundtn::IPropertyValue>(&property_value);
+  if (FAILED(hr)) {
+    LogGetNotificationLaunchIdStatus(
+        GetNotificationLaunchIdStatus::CONVERSION_TO_PROP_VALUE_FAILED);
+    DLOG(ERROR) << "Failed to convert node value of launch attribute";
+    return NotificationLaunchId();
+  }
+
+  HSTRING value_hstring;
+  hr = property_value->GetString(&value_hstring);
+  if (FAILED(hr)) {
+    LogGetNotificationLaunchIdStatus(
+        GetNotificationLaunchIdStatus::GET_STRING_FAILED);
+    DLOG(ERROR) << "Failed to get string for launch attribute";
+    return NotificationLaunchId();
+  }
+
+  LogGetNotificationLaunchIdStatus(GetNotificationLaunchIdStatus::SUCCESS);
+
+  ScopedHString value(value_hstring);
+  return NotificationLaunchId(value.GetAsUTF8());
+}
diff --git a/chrome/browser/notifications/win/notification_util.h b/chrome/browser/notifications/win/notification_util.h
new file mode 100644
index 0000000..7ca5fb0
--- /dev/null
+++ b/chrome/browser/notifications/win/notification_util.h
@@ -0,0 +1,17 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_NOTIFICATIONS_WIN_NOTIFICATION_UTIL_H_
+#define CHROME_BROWSER_NOTIFICATIONS_WIN_NOTIFICATION_UTIL_H_
+
+#include <windows.ui.notifications.h>
+
+class NotificationLaunchId;
+
+// Extracts a NotificationLaunchId from a Toast |notification|. Outside tests,
+// this function should be called on a non-UI thread.
+NotificationLaunchId GetNotificationLaunchId(
+    ABI::Windows::UI::Notifications::IToastNotification* notification);
+
+#endif  // CHROME_BROWSER_NOTIFICATIONS_WIN_NOTIFICATION_UTIL_H_
diff --git a/chrome/browser/page_load_metrics/observers/use_counter/ukm_features.cc b/chrome/browser/page_load_metrics/observers/use_counter/ukm_features.cc
index 811ee69..ef08e00 100644
--- a/chrome/browser/page_load_metrics/observers/use_counter/ukm_features.cc
+++ b/chrome/browser/page_load_metrics/observers/use_counter/ukm_features.cc
@@ -30,6 +30,10 @@
           WebFeature::kHTMLImports, WebFeature::kHTMLImportsHasStyleSheets,
           WebFeature::kElementCreateShadowRoot,
           WebFeature::kDocumentRegisterElement,
+          WebFeature::kCredentialManagerCreatePublicKeyCredential,
+          WebFeature::kCredentialManagerGetPublicKeyCredential,
+          WebFeature::kCredentialManagerMakePublicKeyCredentialSuccess,
+          WebFeature::kCredentialManagerGetPublicKeyCredentialSuccess,
       }));
   return opt_in_features.count(feature);
 }
diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
index eabc39e..f57c1e4 100644
--- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
@@ -79,6 +79,7 @@
 #include "chrome/browser/ui/prefs/prefs_tab_helper.h"
 #include "chrome/browser/ui/tabs/pinned_tab_service_factory.h"
 #include "chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.h"
+#include "chrome/browser/ui/webui/signin/login_ui_service_factory.h"
 #include "chrome/browser/undo/bookmark_undo_service_factory.h"
 #include "chrome/browser/web_data_service_factory.h"
 #include "chrome/common/buildflags.h"
@@ -286,6 +287,9 @@
 #endif
 #endif
   LanguageModelFactory::GetInstance();
+#if !defined(OS_ANDROID)
+  LoginUIServiceFactory::GetInstance();
+#endif
   if (MediaEngagementService::IsEnabled())
     MediaEngagementServiceFactory::GetInstance();
   media_router::MediaRouterFactory::GetInstance();
diff --git a/chrome/browser/resource_coordinator/local_site_characteristics_data_impl.cc b/chrome/browser/resource_coordinator/local_site_characteristics_data_impl.cc
index 93ae8bc..c6874e06 100644
--- a/chrome/browser/resource_coordinator/local_site_characteristics_data_impl.cc
+++ b/chrome/browser/resource_coordinator/local_site_characteristics_data_impl.cc
@@ -42,6 +42,8 @@
   if (loaded_tabs_count_ == 0) {
     site_characteristics_.set_last_loaded(
         TimeDeltaToInternalRepresentation(GetTickDeltaSinceEpoch()));
+
+    is_dirty_ = true;
   }
   loaded_tabs_count_++;
 }
@@ -138,6 +140,7 @@
       database_(database),
       delegate_(delegate),
       safe_to_write_to_db_(false),
+      is_dirty_(false),
       weak_factory_(this) {
   DCHECK(database_);
   DCHECK(delegate_);
@@ -162,7 +165,7 @@
 
   // TODO(sebmarchand): Some data might be lost here if the read operation has
   // not completed, add some metrics to measure if this is really an issue.
-  if (safe_to_write_to_db_) {
+  if (is_dirty_ && safe_to_write_to_db_) {
     DCHECK(site_characteristics_.IsInitialized());
     database_->WriteSiteCharacteristicsIntoDB(origin_str_,
                                               site_characteristics_);
diff --git a/chrome/browser/resource_coordinator/local_site_characteristics_data_impl.h b/chrome/browser/resource_coordinator/local_site_characteristics_data_impl.h
index c8a3ca7..c479889a 100644
--- a/chrome/browser/resource_coordinator/local_site_characteristics_data_impl.h
+++ b/chrome/browser/resource_coordinator/local_site_characteristics_data_impl.h
@@ -26,6 +26,9 @@
 class LocalSiteCharacteristicsDataReaderTest;
 class LocalSiteCharacteristicsDataWriterTest;
 
+FORWARD_DECLARE_TEST(LocalSiteCharacteristicsDataReaderTest,
+                     FreeingReaderDoesntCauseWriteOperation);
+
 namespace internal {
 
 FORWARD_DECLARE_TEST(LocalSiteCharacteristicsDataImplTest,
@@ -139,6 +142,9 @@
  private:
   FRIEND_TEST_ALL_PREFIXES(LocalSiteCharacteristicsDataImplTest,
                            LateAsyncReadDoesntBypassClearEvent);
+  FRIEND_TEST_ALL_PREFIXES(
+      resource_coordinator::LocalSiteCharacteristicsDataReaderTest,
+      FreeingReaderDoesntCauseWriteOperation);
 
   // Add |extra_observation_duration| to the observation window of a given
   // feature if it hasn't been used yet, do nothing otherwise.
@@ -218,6 +224,10 @@
   // database without erasing some data.
   bool safe_to_write_to_db_;
 
+  // Dirty bit, indicates if any of the fields in |site_characteristics_| has
+  // changed since it has been initialized.
+  bool is_dirty_;
+
   SEQUENCE_CHECKER(sequence_checker_);
 
   base::WeakPtrFactory<LocalSiteCharacteristicsDataImpl> weak_factory_;
diff --git a/chrome/browser/resource_coordinator/local_site_characteristics_data_reader.h b/chrome/browser/resource_coordinator/local_site_characteristics_data_reader.h
index feea4f8..ec88cc7 100644
--- a/chrome/browser/resource_coordinator/local_site_characteristics_data_reader.h
+++ b/chrome/browser/resource_coordinator/local_site_characteristics_data_reader.h
@@ -5,12 +5,16 @@
 #ifndef CHROME_BROWSER_RESOURCE_COORDINATOR_LOCAL_SITE_CHARACTERISTICS_DATA_READER_H_
 #define CHROME_BROWSER_RESOURCE_COORDINATOR_LOCAL_SITE_CHARACTERISTICS_DATA_READER_H_
 
+#include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "chrome/browser/resource_coordinator/site_characteristics_data_reader.h"
 
 namespace resource_coordinator {
 
+FORWARD_DECLARE_TEST(LocalSiteCharacteristicsDataReaderTest,
+                     FreeingReaderDoesntCauseWriteOperation);
+
 namespace internal {
 class LocalSiteCharacteristicsDataImpl;
 }  // namespace internal
@@ -28,10 +32,17 @@
   SiteFeatureUsage UsesAudioInBackground() const override;
   SiteFeatureUsage UsesNotificationsInBackground() const override;
 
+  const scoped_refptr<internal::LocalSiteCharacteristicsDataImpl>
+  impl_for_testing() const {
+    return impl_;
+  }
+
  private:
   friend class LocalSiteCharacteristicsDataReaderTest;
   friend class LocalSiteCharacteristicsDataStoreTest;
   friend class LocalSiteCharacteristicsDataStore;
+  FRIEND_TEST_ALL_PREFIXES(LocalSiteCharacteristicsDataReaderTest,
+                           FreeingReaderDoesntCauseWriteOperation);
 
   // Private constructor, these objects are meant to be created by a site
   // characteristics data store.
diff --git a/chrome/browser/resource_coordinator/local_site_characteristics_data_reader_unittest.cc b/chrome/browser/resource_coordinator/local_site_characteristics_data_reader_unittest.cc
index 3b9b525..f075a7a 100644
--- a/chrome/browser/resource_coordinator/local_site_characteristics_data_reader_unittest.cc
+++ b/chrome/browser/resource_coordinator/local_site_characteristics_data_reader_unittest.cc
@@ -14,6 +14,58 @@
 
 namespace resource_coordinator {
 
+namespace {
+
+class MockLocalSiteCharacteristicsDatabase
+    : public testing::NoopLocalSiteCharacteristicsDatabase {
+ public:
+  MockLocalSiteCharacteristicsDatabase() = default;
+  ~MockLocalSiteCharacteristicsDatabase() = default;
+
+  // Note: As move-only parameters (e.g. OnceCallback) aren't supported by mock
+  // methods, add On... methods to pass a non-const reference to OnceCallback.
+  void ReadSiteCharacteristicsFromDB(
+      const std::string& origin_str,
+      LocalSiteCharacteristicsDatabase::ReadSiteCharacteristicsFromDBCallback
+          callback) override {
+    OnReadSiteCharacteristicsFromDB(origin_str, callback);
+  }
+  MOCK_METHOD2(OnReadSiteCharacteristicsFromDB,
+               void(const std::string&,
+                    LocalSiteCharacteristicsDatabase::
+                        ReadSiteCharacteristicsFromDBCallback&));
+
+  MOCK_METHOD2(WriteSiteCharacteristicsIntoDB,
+               void(const std::string& site_origin,
+                    const SiteCharacteristicsProto& site_characteristic_proto));
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(MockLocalSiteCharacteristicsDatabase);
+};
+
+void InitializeSiteCharacteristicsProto(
+    SiteCharacteristicsProto* site_characteristics) {
+  DCHECK(site_characteristics);
+  site_characteristics->set_last_loaded(42);
+
+  SiteCharacteristicsFeatureProto used_feature_proto;
+  used_feature_proto.set_observation_duration(0U);
+  used_feature_proto.set_use_timestamp(1U);
+
+  site_characteristics->mutable_updates_favicon_in_background()->CopyFrom(
+      used_feature_proto);
+  site_characteristics->mutable_updates_title_in_background()->CopyFrom(
+      used_feature_proto);
+  site_characteristics->mutable_uses_audio_in_background()->CopyFrom(
+      used_feature_proto);
+  site_characteristics->mutable_uses_notifications_in_background()->CopyFrom(
+      used_feature_proto);
+
+  DCHECK(site_characteristics->IsInitialized());
+}
+
+}  // namespace
+
 class LocalSiteCharacteristicsDataReaderTest : public ::testing::Test {
  protected:
   // The constructors needs to call 'new' directly rather than using the
@@ -90,4 +142,42 @@
             reader_->UsesNotificationsInBackground());
 }
 
+TEST_F(LocalSiteCharacteristicsDataReaderTest,
+       FreeingReaderDoesntCauseWriteOperation) {
+  const char* kOrigin = "foo.com";
+  ::testing::StrictMock<MockLocalSiteCharacteristicsDatabase> database;
+
+  // Override the read callback to simulate a successful read from the
+  // database.
+  SiteCharacteristicsProto proto = {};
+  InitializeSiteCharacteristicsProto(&proto);
+  auto read_from_db_mock_impl =
+      [&](const std::string& site_origin,
+          LocalSiteCharacteristicsDatabase::
+              ReadSiteCharacteristicsFromDBCallback& callback) {
+        std::move(callback).Run(
+            base::Optional<SiteCharacteristicsProto>(proto));
+      };
+
+  EXPECT_CALL(database, OnReadSiteCharacteristicsFromDB(kOrigin, ::testing::_))
+      .WillOnce(::testing::Invoke(read_from_db_mock_impl));
+
+  std::unique_ptr<LocalSiteCharacteristicsDataReader> reader =
+      base::WrapUnique(new LocalSiteCharacteristicsDataReader(
+          base::WrapRefCounted(new internal::LocalSiteCharacteristicsDataImpl(
+              kOrigin, &delegate_, &database))));
+  ::testing::Mock::VerifyAndClear(&database);
+
+  EXPECT_TRUE(reader->impl_for_testing()
+                  ->site_characteristics_for_testing()
+                  .IsInitialized());
+
+  // Resetting the reader shouldn't cause any write operation to the database.
+  EXPECT_CALL(database,
+              WriteSiteCharacteristicsIntoDB(::testing::_, ::testing::_))
+      .Times(0);
+  reader.reset();
+  ::testing::Mock::VerifyAndClear(&database);
+}
+
 }  // namespace resource_coordinator
diff --git a/chrome/browser/resource_coordinator/page_signal_receiver.cc b/chrome/browser/resource_coordinator/page_signal_receiver.cc
index 22d083d..c8c0f72e 100644
--- a/chrome/browser/resource_coordinator/page_signal_receiver.cc
+++ b/chrome/browser/resource_coordinator/page_signal_receiver.cc
@@ -36,9 +36,10 @@
 
 PageSignalReceiver::~PageSignalReceiver() = default;
 
-void PageSignalReceiver::NotifyPageAlmostIdle(const CoordinationUnitID& cu_id) {
+void PageSignalReceiver::NotifyPageAlmostIdle(
+    const CoordinationUnitID& page_cu_id) {
   DCHECK(IsPageAlmostIdleSignalEnabled());
-  auto web_contents_iter = cu_id_web_contents_map_.find(cu_id);
+  auto web_contents_iter = cu_id_web_contents_map_.find(page_cu_id);
   if (web_contents_iter == cu_id_web_contents_map_.end())
     return;
   for (auto& observer : observers_)
@@ -46,9 +47,9 @@
 }
 
 void PageSignalReceiver::SetExpectedTaskQueueingDuration(
-    const CoordinationUnitID& cu_id,
+    const CoordinationUnitID& page_cu_id,
     base::TimeDelta duration) {
-  auto web_contents_iter = cu_id_web_contents_map_.find(cu_id);
+  auto web_contents_iter = cu_id_web_contents_map_.find(page_cu_id);
   if (web_contents_iter == cu_id_web_contents_map_.end())
     return;
   for (auto& observer : observers_)
@@ -56,15 +57,24 @@
                                                duration);
 }
 
-void PageSignalReceiver::SetLifecycleState(const CoordinationUnitID& cu_id,
+void PageSignalReceiver::SetLifecycleState(const CoordinationUnitID& page_cu_id,
                                            mojom::LifecycleState state) {
-  auto web_contents_iter = cu_id_web_contents_map_.find(cu_id);
+  auto web_contents_iter = cu_id_web_contents_map_.find(page_cu_id);
   if (web_contents_iter == cu_id_web_contents_map_.end())
     return;
   for (auto& observer : observers_)
     observer.OnLifecycleStateChanged(web_contents_iter->second, state);
 }
 
+void PageSignalReceiver::NotifyNonPersistentNotificationCreated(
+    const CoordinationUnitID& page_cu_id) {
+  auto web_contents_iter = cu_id_web_contents_map_.find(page_cu_id);
+  if (web_contents_iter == cu_id_web_contents_map_.end())
+    return;
+  for (auto& observer : observers_)
+    observer.OnNonPersistentNotificationCreated(web_contents_iter->second);
+}
+
 void PageSignalReceiver::AddObserver(PageSignalObserver* observer) {
   // When PageSignalReceiver starts to have observer, construct the mojo
   // channel.
diff --git a/chrome/browser/resource_coordinator/page_signal_receiver.h b/chrome/browser/resource_coordinator/page_signal_receiver.h
index 73baa7d..d1c77da8 100644
--- a/chrome/browser/resource_coordinator/page_signal_receiver.h
+++ b/chrome/browser/resource_coordinator/page_signal_receiver.h
@@ -30,6 +30,8 @@
       base::TimeDelta duration) {}
   virtual void OnLifecycleStateChanged(content::WebContents* web_contents,
                                        mojom::LifecycleState state) {}
+  virtual void OnNonPersistentNotificationCreated(
+      content::WebContents* web_contents) {}
 };
 
 // Implementation of resource_coordinator::mojom::PageSignalReceiver.
@@ -49,11 +51,13 @@
   static PageSignalReceiver* GetInstance();
 
   // mojom::PageSignalReceiver implementation.
-  void NotifyPageAlmostIdle(const CoordinationUnitID& cu_id) override;
-  void SetExpectedTaskQueueingDuration(const CoordinationUnitID& cu_id,
+  void NotifyPageAlmostIdle(const CoordinationUnitID& page_cu_id) override;
+  void SetExpectedTaskQueueingDuration(const CoordinationUnitID& page_cu_id,
                                        base::TimeDelta duration) override;
-  void SetLifecycleState(const CoordinationUnitID& cu_id,
+  void SetLifecycleState(const CoordinationUnitID& page_cu_id,
                          mojom::LifecycleState) override;
+  void NotifyNonPersistentNotificationCreated(
+      const CoordinationUnitID& page_cu_id) override;
 
   void AddObserver(PageSignalObserver* observer);
   void RemoveObserver(PageSignalObserver* observer);
diff --git a/chrome/browser/resource_coordinator/tab_manager_resource_coordinator_signal_observer.cc b/chrome/browser/resource_coordinator/tab_manager_resource_coordinator_signal_observer.cc
index 0341bc8..cbef029 100644
--- a/chrome/browser/resource_coordinator/tab_manager_resource_coordinator_signal_observer.cc
+++ b/chrome/browser/resource_coordinator/tab_manager_resource_coordinator_signal_observer.cc
@@ -48,4 +48,10 @@
       ->RecordExpectedTaskQueueingDuration(web_contents, duration);
 }
 
+void TabManager::ResourceCoordinatorSignalObserver::
+    OnNonPersistentNotificationCreated(content::WebContents* web_contents) {
+  // TODO(sebmarchand): Add the wiring to forward this signal where it should be
+  // used.
+}
+
 }  // namespace resource_coordinator
diff --git a/chrome/browser/resource_coordinator/tab_manager_resource_coordinator_signal_observer.h b/chrome/browser/resource_coordinator/tab_manager_resource_coordinator_signal_observer.h
index 5a318f6..841fc8b 100644
--- a/chrome/browser/resource_coordinator/tab_manager_resource_coordinator_signal_observer.h
+++ b/chrome/browser/resource_coordinator/tab_manager_resource_coordinator_signal_observer.h
@@ -25,6 +25,8 @@
   void OnPageAlmostIdle(content::WebContents* web_contents) override;
   void OnExpectedTaskQueueingDurationSet(content::WebContents* web_contents,
                                          base::TimeDelta duration) override;
+  void OnNonPersistentNotificationCreated(
+      content::WebContents* web_contents) override;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(ResourceCoordinatorSignalObserver);
diff --git a/chrome/browser/resources/print_preview/new/pages_settings.html b/chrome/browser/resources/print_preview/new/pages_settings.html
index 7e083a0..30b38ef 100644
--- a/chrome/browser/resources/print_preview/new/pages_settings.html
+++ b/chrome/browser/resources/print_preview/new/pages_settings.html
@@ -38,11 +38,11 @@
           <label class="custom-input-wrapper"
               for="pageSettingsCustomInput" tabindex=-1>
             <input type="radio" name="pages" id="custom-radio-button"
-                disabled$="[[getDisabled_(disabled, settings.pages.valid)]]"
+                disabled$="[[getDisabled_(disabled)]]"
                 on-click="onCustomRadioClick_">
             <input id="pageSettingsCustomInput" class="user-value" type="text"
                 checked="{{customSelected_::change}}" data-timeout-delay="500"
-                disabled$="[[getDisabled_(disabled, settings.pages.valid)]]"
+                disabled$="[[getDisabled_(disabled)]]"
                 pattern="[[inputPattern_]]"
                 on-focus="onCustomInputFocus_" on-blur="onCustomInputBlur_"
                 placeholder="$i18n{examplePageRangeText}"
diff --git a/chrome/browser/resources/settings/about_page/about_page.html b/chrome/browser/resources/settings/about_page/about_page.html
index 3595107..b0a041b 100644
--- a/chrome/browser/resources/settings/about_page/about_page.html
+++ b/chrome/browser/resources/settings/about_page/about_page.html
@@ -72,6 +72,10 @@
         overflow-x: auto;
       }
 
+      paper-button {
+        white-space: nowrap;
+      }
+
       #regulatoryInfo img {
         width: 330px;
       }
diff --git a/chrome/browser/resources/settings/device_page/display.html b/chrome/browser/resources/settings/device_page/display.html
index d1f6cce..5d1a3f8f 100644
--- a/chrome/browser/resources/settings/device_page/display.html
+++ b/chrome/browser/resources/settings/device_page/display.html
@@ -148,7 +148,7 @@
           </div>
           <settings-slider disabled="[[!enableSetResolution_(selectedDisplay)]]"
               tick-values="[[modeValues_]]" pref="{{selectedModePref_}}"
-              on-change="onSelectedModeChange_">
+              on-change="onSelectedModeSliderChange_">
           </settings-slider>
         </div>
       </template>
diff --git a/chrome/browser/resources/settings/device_page/display.js b/chrome/browser/resources/settings/device_page/display.js
index cf46911..0f449f2 100644
--- a/chrome/browser/resources/settings/device_page/display.js
+++ b/chrome/browser/resources/settings/device_page/display.js
@@ -692,16 +692,11 @@
   },
 
   /**
-   * Triggered when the 'change' event for the selected mode slider is
-   * triggered. This only occurs when the value is committed (i.e. not while
-   * the slider is being dragged).
-   * @param {number} newModeIndex The new index value for which thie function is
-   *     called.
+   * Updates the selected mode based on the latest pref value.
    * @private
    */
-  onSelectedModeChange_: function(newModeIndex) {
+  onSelectedModeSliderChange_: function() {
     if (this.currentSelectedModeIndex_ == -1 ||
-        this.currentSelectedModeIndex_ == newModeIndex ||
         this.currentSelectedModeIndex_ == this.selectedModePref_.value) {
       // Don't change the selected display mode until we have received an update
       // from Chrome and the mode differs from the current mode.
@@ -717,6 +712,24 @@
   },
 
   /**
+   * Handles a change in the |selectedModePref| value triggered via the observer
+   * @param {number} newModeIndex The new index value for which thie function is
+   *     called.
+   * @private
+   */
+  onSelectedModeChange_: function(newModeIndex) {
+    // We want to ignore all value changes to the pref due to the slider being
+    // dragged. Since this can only happen when the slider is present which is
+    // when display zoom is disabled, we can use this check.
+    // See http://crbug/845712 for more info.
+    if (!this.showDisplayZoomSetting_)
+      return;
+    if (this.currentSelectedModeIndex_ == newModeIndex)
+      return;
+    this.onSelectedModeSliderChange_();
+  },
+
+  /**
    * Triggerend when the display size slider changes its value. This only
    * occurs when the value is committed (i.e. not while the slider is being
    * dragged).
diff --git a/chrome/browser/resources/snippets_internals/snippets_internals.js b/chrome/browser/resources/snippets_internals/snippets_internals.js
index 90162c1..6b28f63 100644
--- a/chrome/browser/resources/snippets_internals/snippets_internals.js
+++ b/chrome/browser/resources/snippets_internals/snippets_internals.js
@@ -219,10 +219,9 @@
   });
 
   $('background-fetch-button').addEventListener('click', function(event) {
-    const content = $('background-fetch-button').textContent;
-    $('background-fetch-button').textContent = '...';
+    $('background-fetch-button').disabled = true;
     pageHandler.fetchSuggestionsInBackground(2).then(function(response) {
-      $('background-fetch-button').textContent = content;
+      $('background-fetch-button').disabled = false;
       $('last-json-container').classList.add('hidden');
       $('last-json-button').textContent = 'Show the last JSON';
 
diff --git a/chrome/browser/ssl/security_state_tab_helper_browsertest.cc b/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
index a4de802..4b12382 100644
--- a/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
+++ b/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/ssl/security_state_tab_helper.h"
 
+#include "base/base64.h"
 #include "base/command_line.h"
 #include "base/files/file_path.h"
 #include "base/macros.h"
@@ -66,6 +67,8 @@
 #include "net/ssl/ssl_connection_status_flags.h"
 #include "net/test/cert_test_util.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
+#include "net/test/embedded_test_server/http_request.h"
+#include "net/test/embedded_test_server/http_response.h"
 #include "net/test/embedded_test_server/request_handler_util.h"
 #include "net/test/test_data_directory.h"
 #include "net/test/url_request/url_request_failed_job.h"
@@ -1122,39 +1125,85 @@
   EXPECT_EQ(content::SSLStatus::NORMAL_CONTENT, entry->GetSSL().content_status);
 }
 
-const char kReportURI[] = "https://report-hpkp.test";
+const char kReportURI[] = "https://report-hpkp.test/";
 
 class PKPModelClientTest : public SecurityStateTabHelperTest {
  public:
   void SetUpOnMainThread() override {
+    // Switch HTTPS server to use the "localhost" cert. The test mocks out cert
+    // verification results, anyways, but it mocks results based on the used
+    // cert, so this server needs a different cert from the test server used to
+    // send the HPKP header.
+    https_server_.SetSSLConfig(
+        net::EmbeddedTestServer::CERT_COMMON_NAME_IS_DOMAIN);
     ASSERT_TRUE(https_server_.Start());
-    url_request_context_getter_ = browser()->profile()->GetRequestContext();
-    content::BrowserThread::PostTask(
-        content::BrowserThread::IO, FROM_HERE,
-        base::BindOnce(&PKPModelClientTest::SetUpOnIOThread,
-                       base::Unretained(this)));
+
+    // Create a second embedded test server using a different cert (the default
+    // CERT_OK one) to send an HPKP header, which should result in an entry
+    // being added to the TransportSecurityState. This server will use a
+    // different port, but HPKP headers are set on hosts basis, not origins.
+    net::EmbeddedTestServer https_set_hpkp_server(
+        net::EmbeddedTestServer::TYPE_HTTPS);
+    https_set_hpkp_server.RegisterRequestHandler(
+        base::BindRepeating(&PKPModelClientTest::SendPublicKeyPinsResponse));
+    ASSERT_TRUE(https_set_hpkp_server.Start());
+
+    // Set up a mock result.
+    net::CertVerifyResult verify_result;
+    verify_result.verified_cert = https_set_hpkp_server.GetCertificate();
+    verify_result.cert_status = 0;
+    // These are the important lines. HPKP headers from servers with certs not
+    // issued by known roots are ignored, so need to claim the cert is from the
+    // known root. The second line sets a bogus hash, which matches the
+    // "Public-Key-Pins" header set by SendPublicKeyPinsResponse.
+    verify_result.is_issued_by_known_root = true;
+    verify_result.public_key_hashes.push_back(
+        net::HashValue(GetExpectedCertHash()));
+
+    mock_cert_verifier()->AddResultForCert(
+        https_set_hpkp_server.GetCertificate(), verify_result, net::OK);
+
+    // Do a navigation where the response should be a valid Public-Key-Pins
+    // header.
+    ui_test_utils::NavigateToURL(
+        browser(), https_set_hpkp_server.GetURL("localhost", "/"));
+
+    CheckSecurityInfoForSecure(
+        browser()->tab_strip_model()->GetActiveWebContents(),
+        security_state::SECURE, false, security_state::CONTENT_STATUS_NONE,
+        false, false);
   }
 
-  void SetUpOnIOThread() {
-    net::URLRequestContext* request_context =
-        url_request_context_getter_->GetURLRequestContext();
-    net::TransportSecurityState* security_state =
-        request_context->transport_security_state();
-
-    base::Time expiration =
-        base::Time::Now() + base::TimeDelta::FromSeconds(10000);
-
-    net::HashValue hash(net::HASH_VALUE_SHA256);
-    memset(hash.data(), 0x99, hash.size());
-    net::HashValueVector hashes;
-    hashes.push_back(hash);
-
-    security_state->AddHPKP(https_server_.host_port_pair().host(), expiration,
-                            true, hashes, GURL(kReportURI));
+ private:
+  // Returns the (bogus) expected SHA-256 hash of the cert set by the
+  // Public-Key-Pins header.
+  static net::SHA256HashValue GetExpectedCertHash() {
+    net::SHA256HashValue hash;
+    memset(&hash.data, 0x99, base::size(hash.data));
+    return hash;
   }
 
- protected:
-  scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
+  // Returns a response with an empty body and a "Public-Key-Pins" header.
+  static std::unique_ptr<net::test_server::HttpResponse>
+  SendPublicKeyPinsResponse(const net::test_server::HttpRequest& request) {
+    std::unique_ptr<net::test_server::BasicHttpResponse> response(
+        new net::test_server::BasicHttpResponse());
+
+    net::SHA256HashValue hash = GetExpectedCertHash();
+    std::string base64_hash;
+    base::Base64Encode(base::StringPiece(reinterpret_cast<char*>(hash.data),
+                                         base::size(hash.data)),
+                       &base64_hash);
+
+    std::string header_value = base::StringPrintf(
+        "max-age=50000;"
+        "pin-sha256=\"%s\";"
+        "pin-sha256=\"nZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZk=\";"
+        "report-uri=\"%s\"",
+        base64_hash.c_str(), kReportURI);
+    response->AddCustomHeader("Public-Key-Pins", header_value);
+    return std::move(response);
+  }
 };
 
 INSTANTIATE_TEST_CASE_P(, PKPModelClientTest, ::testing::Values(false, true));
diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
index f1ad31c..0d69010 100644
--- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
+++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
@@ -23,6 +23,7 @@
 #include "components/safe_browsing/db/database_manager.h"
 #include "components/subresource_filter/content/browser/content_ruleset_service.h"
 #include "components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h"
+#include "components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h"
 #include "components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle.h"
 #include "components/subresource_filter/core/browser/subresource_filter_features.h"
 #include "components/subresource_filter/core/common/activation_level.h"
@@ -39,18 +40,40 @@
 
 ChromeSubresourceFilterClient::ChromeSubresourceFilterClient(
     content::WebContents* web_contents)
-    : web_contents_(web_contents) {
+    : content::WebContentsObserver(web_contents) {
   DCHECK(web_contents);
   SubresourceFilterProfileContext* context =
       SubresourceFilterProfileContextFactory::GetForProfile(
-          Profile::FromBrowserContext(web_contents_->GetBrowserContext()));
+          Profile::FromBrowserContext(web_contents->GetBrowserContext()));
   settings_manager_ = context->settings_manager();
   subresource_filter::ContentSubresourceFilterDriverFactory::
       CreateForWebContents(web_contents, this);
+
+  auto* driver_factory = subresource_filter::
+      ContentSubresourceFilterDriverFactory::FromWebContents(web_contents);
+
+  subresource_filter::ContentRulesetService* ruleset_service =
+      g_browser_process->subresource_filter_ruleset_service();
+  subresource_filter::VerifiedRulesetDealer::Handle* dealer =
+      ruleset_service ? ruleset_service->ruleset_dealer() : nullptr;
+  throttle_manager_ = std::make_unique<
+      subresource_filter::ContentSubresourceFilterThrottleManager>(
+      driver_factory, dealer, web_contents);
 }
 
 ChromeSubresourceFilterClient::~ChromeSubresourceFilterClient() {}
 
+void ChromeSubresourceFilterClient::DidStartNavigation(
+    content::NavigationHandle* navigation_handle) {
+  if (navigation_handle->IsInMainFrame() &&
+      !navigation_handle->IsSameDocument()) {
+    // TODO(csharrison): This should probably be reset at commit time, not at
+    // navigation start.
+    did_show_ui_for_navigation_ = false;
+    LogAction(kActionNavigationStarted);
+  }
+}
+
 void ChromeSubresourceFilterClient::MaybeAppendNavigationThrottles(
     content::NavigationHandle* navigation_handle,
     std::vector<std::unique_ptr<content::NavigationThrottle>>* throttles) {
@@ -66,16 +89,13 @@
             safe_browsing_service->database_manager()));
   }
 
-  auto* driver_factory =
-      subresource_filter::ContentSubresourceFilterDriverFactory::
-          FromWebContents(navigation_handle->GetWebContents());
-  driver_factory->throttle_manager()->MaybeAppendNavigationThrottles(
-      navigation_handle, throttles);
+  throttle_manager_->MaybeAppendNavigationThrottles(navigation_handle,
+                                                    throttles);
 }
 
 void ChromeSubresourceFilterClient::OnReloadRequested() {
   UMA_HISTOGRAM_BOOLEAN("SubresourceFilter.Prompt.NumReloads", true);
-  const GURL& whitelist_url = web_contents_->GetLastCommittedURL();
+  const GURL& whitelist_url = web_contents()->GetLastCommittedURL();
 
   // Only whitelist via content settings when using the experimental UI,
   // otherwise could get into a situation where content settings cannot be
@@ -86,14 +106,14 @@
   } else {
     WhitelistInCurrentWebContents(whitelist_url);
   }
-  web_contents_->GetController().Reload(content::ReloadType::NORMAL, true);
+  web_contents()->GetController().Reload(content::ReloadType::NORMAL, true);
 }
 
 void ChromeSubresourceFilterClient::ShowNotification() {
   if (did_show_ui_for_navigation_)
     return;
 
-  const GURL& top_level_url = web_contents_->GetLastCommittedURL();
+  const GURL& top_level_url = web_contents()->GetLastCommittedURL();
   if (settings_manager_->ShouldShowUIForSite(top_level_url)) {
     ShowUI(top_level_url);
   } else {
@@ -101,11 +121,6 @@
   }
 }
 
-void ChromeSubresourceFilterClient::OnNewNavigationStarted() {
-  did_show_ui_for_navigation_ = false;
-  LogAction(kActionNavigationStarted);
-}
-
 bool ChromeSubresourceFilterClient::OnPageActivationComputed(
     content::NavigationHandle* navigation_handle,
     bool activated) {
@@ -157,22 +172,15 @@
                             kActionLastEntry);
 }
 
-subresource_filter::VerifiedRulesetDealer::Handle*
-ChromeSubresourceFilterClient::GetRulesetDealer() {
-  subresource_filter::ContentRulesetService* ruleset_service =
-      g_browser_process->subresource_filter_ruleset_service();
-  return ruleset_service ? ruleset_service->ruleset_dealer() : nullptr;
-}
-
 void ChromeSubresourceFilterClient::ShowUI(const GURL& url) {
   DCHECK(!activated_via_devtools_);
 #if defined(OS_ANDROID)
   InfoBarService* infobar_service =
-      InfoBarService::FromWebContents(web_contents_);
+      InfoBarService::FromWebContents(web_contents());
   AdsBlockedInfobarDelegate::Create(infobar_service);
 #endif
   TabSpecificContentSettings* content_settings =
-      TabSpecificContentSettings::FromWebContents(web_contents_);
+      TabSpecificContentSettings::FromWebContents(web_contents());
   content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_ADS);
 
   LogAction(kActionUIShown);
diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.h b/chrome/browser/subresource_filter/chrome_subresource_filter_client.h
index 28dc64bb..f252e69 100644
--- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.h
+++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.h
@@ -13,6 +13,7 @@
 #include "base/macros.h"
 #include "components/content_settings/core/common/content_settings.h"
 #include "components/subresource_filter/content/browser/subresource_filter_client.h"
+#include "content/public/browser/web_contents_observer.h"
 #include "content/public/browser/web_contents_user_data.h"
 
 class GURL;
@@ -24,6 +25,10 @@
 class WebContents;
 }  // namespace content
 
+namespace subresource_filter {
+class ContentSubresourceFilterThrottleManager;
+}  // namespace subresource_filter
+
 // This enum backs a histogram. Make sure new elements are only added to the
 // end. Keep histograms.xml up to date with any changes.
 enum SubresourceFilterAction {
@@ -94,10 +99,9 @@
 };
 
 // Chrome implementation of SubresourceFilterClient.
-// TODO(csharrison): Make this a WebContentsObserver and own the throttle
-// manager directly.
 class ChromeSubresourceFilterClient
-    : public content::WebContentsUserData<ChromeSubresourceFilterClient>,
+    : public content::WebContentsObserver,
+      public content::WebContentsUserData<ChromeSubresourceFilterClient>,
       public subresource_filter::SubresourceFilterClient {
  public:
   explicit ChromeSubresourceFilterClient(content::WebContents* web_contents);
@@ -109,13 +113,14 @@
 
   void OnReloadRequested();
 
+  // content::WebContentsObserver:
+  void DidStartNavigation(
+      content::NavigationHandle* navigation_handle) override;
+
   // SubresourceFilterClient:
   void ShowNotification() override;
-  void OnNewNavigationStarted() override;
   bool OnPageActivationComputed(content::NavigationHandle* navigation_handle,
                                 bool activated) override;
-  subresource_filter::VerifiedRulesetDealer::Handle* GetRulesetDealer()
-      override;
   bool ForceActivationInCurrentWebContents() override;
 
   // Should be called by devtools in response to a protocol command to enable ad
@@ -139,10 +144,12 @@
 
   std::set<std::string> whitelisted_hosts_;
 
+  std::unique_ptr<subresource_filter::ContentSubresourceFilterThrottleManager>
+      throttle_manager_;
+
   // Owned by the profile.
   SubresourceFilterContentSettingsManager* settings_manager_ = nullptr;
 
-  content::WebContents* web_contents_ = nullptr;
   bool did_show_ui_for_navigation_ = false;
 
   // Corresponds to a devtools command which triggers filtering on all page
diff --git a/chrome/browser/supervised_user/supervised_user_service.cc b/chrome/browser/supervised_user/supervised_user_service.cc
index 358dee3..9ab9998 100644
--- a/chrome/browser/supervised_user/supervised_user_service.cc
+++ b/chrome/browser/supervised_user/supervised_user_service.cc
@@ -817,11 +817,10 @@
 
 std::string SupervisedUserService::GetDebugPolicyProviderName() const {
   // Save the string space in official builds.
-#ifdef NDEBUG
-  NOTREACHED();
-  return std::string();
-#else
+#if DCHECK_IS_ON()
   return "Supervised User Service";
+#else
+  IMMEDIATE_CRASH();
 #endif
 }
 
diff --git a/chrome/browser/supervised_user/supervised_user_service_unittest.cc b/chrome/browser/supervised_user/supervised_user_service_unittest.cc
index 7df4eb5..7fe2909 100644
--- a/chrome/browser/supervised_user/supervised_user_service_unittest.cc
+++ b/chrome/browser/supervised_user/supervised_user_service_unittest.cc
@@ -505,7 +505,7 @@
     EXPECT_FALSE(error_2.empty());
   }
 
-#ifndef NDEBUG
+#if DCHECK_IS_ON()
   EXPECT_FALSE(supervised_user_service->GetDebugPolicyProviderName().empty());
 #endif
 }
@@ -577,7 +577,7 @@
     EXPECT_FALSE(error_4.empty());
   }
 
-#ifndef NDEBUG
+#if DCHECK_IS_ON()
   EXPECT_FALSE(supervised_user_service->GetDebugPolicyProviderName().empty());
 #endif
 }
diff --git a/chrome/browser/sync/test/integration/two_client_typed_urls_sync_test.cc b/chrome/browser/sync/test/integration/two_client_typed_urls_sync_test.cc
index 14a7ca1..1b865ad 100644
--- a/chrome/browser/sync/test/integration/two_client_typed_urls_sync_test.cc
+++ b/chrome/browser/sync/test/integration/two_client_typed_urls_sync_test.cc
@@ -228,6 +228,14 @@
   urls = GetTypedUrlsFromClient(1);
   ASSERT_EQ(2U, urls.size());
   EXPECT_TRUE(CheckSyncHasURLMetadata(1, url));
+
+  // The first client can add the URL again (regression test for
+  // https://crbug.com/827111).
+  AddUrlToHistoryWithTransition(0, url, ui::PAGE_TRANSITION_TYPED,
+                                history::SOURCE_BROWSED);
+  urls = GetTypedUrlsFromClient(0);
+  EXPECT_EQ(2U, urls.size());
+  EXPECT_TRUE(CheckSyncHasURLMetadata(0, url));
 }
 
 IN_PROC_BROWSER_TEST_F(TwoClientTypedUrlsSyncTest, E2E_ENABLED(AddThenDelete)) {
diff --git a/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura_ash.cc b/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura_ash.cc
index b5e66f6..249207e 100644
--- a/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura_ash.cc
+++ b/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura_ash.cc
@@ -175,14 +175,14 @@
       [ui::mojom::WindowManager::kRemoveStandardFrame_InitProperty] =
       mojo::ConvertTo<std::vector<uint8_t>>(init_params->remove_standard_frame);
   if (HasFrameColor()) {
-    init_params->mus_properties
-        [ui::mojom::WindowManager::kActiveFrameColor_InitProperty] =
+    init_params
+        ->mus_properties[ui::mojom::WindowManager::kFrameActiveColor_Property] =
         mojo::ConvertTo<std::vector<uint8_t>>(
-            static_cast<int32_t>(ActiveFrameColor()));
+            static_cast<int64_t>(ActiveFrameColor()));
     init_params->mus_properties
-        [ui::mojom::WindowManager::kInactiveFrameColor_InitProperty] =
+        [ui::mojom::WindowManager::kFrameInactiveColor_Property] =
         mojo::ConvertTo<std::vector<uint8_t>>(
-            static_cast<int32_t>(InactiveFrameColor()));
+            static_cast<int64_t>(InactiveFrameColor()));
   }
   init_params
       ->mus_properties[ui::mojom::WindowManager::kShelfItemType_Property] =
diff --git a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc
index f2789609..2d7fa5d 100644
--- a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc
+++ b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc
@@ -519,6 +519,7 @@
     views::Widget::InitParams* params) {
   // Ensure the bubble border is not painted on an opaque background.
   params->opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
+  params->shadow_type = views::Widget::InitParams::SHADOW_TYPE_NONE;
 }
 
 std::unique_ptr<views::View> AutofillPopupViewNativeViews::CreateWrapperView() {
diff --git a/chrome/browser/ui/views/confirm_quit_bubble.cc b/chrome/browser/ui/views/confirm_quit_bubble.cc
index 610a92a72..2420ef7 100644
--- a/chrome/browser/ui/views/confirm_quit_bubble.cc
+++ b/chrome/browser/ui/views/confirm_quit_bubble.cc
@@ -8,6 +8,8 @@
 
 #include "base/message_loop/message_loop.h"
 #include "base/strings/utf_string_conversions.h"
+#include "chrome/browser/ui/browser_list.h"
+#include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/subtle_notification_view.h"
 #include "ui/gfx/animation/animation.h"
 #include "ui/gfx/animation/slide_animation.h"
@@ -50,6 +52,12 @@
 
       popup_ = std::make_unique<views::Widget>();
       views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP);
+
+      // Set the bounds to that of the active browser window so that the widget
+      // will be centered on the nearest monitor.
+      params.bounds = BrowserView::GetBrowserViewForBrowser(
+                          BrowserList::GetInstance()->GetLastActive())
+                          ->GetBounds();
       params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
       params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
       params.accept_events = false;
@@ -61,9 +69,7 @@
       view->UpdateContent(
           base::WideToUTF16(L"Hold |Ctrl|+|Shift|+|Q| to quit"));
 
-      gfx::Size size = view->GetPreferredSize();
-      view->SetSize(size);
-      popup_->CenterWindow(size);
+      popup_->CenterWindow(view->GetPreferredSize());
 
       popup_->ShowInactive();
     }
diff --git a/chrome/browser/ui/views/frame/browser_frame_mus.cc b/chrome/browser/ui/views/frame/browser_frame_mus.cc
index 936b0a7f..f246d5c 100644
--- a/chrome/browser/ui/views/frame/browser_frame_mus.cc
+++ b/chrome/browser/ui/views/frame/browser_frame_mus.cc
@@ -80,12 +80,12 @@
           static_cast<int64_t>(browser->is_app()));
   // Set the frame color for WebUI windows, e.g. settings.
   if (!browser->is_type_tabbed() && browser->is_trusted_source()) {
-    properties[ui::mojom::WindowManager::kActiveFrameColor_InitProperty] =
+    properties[ui::mojom::WindowManager::kFrameActiveColor_Property] =
         mojo::ConvertTo<std::vector<uint8_t>>(
-            static_cast<int32_t>(BrowserFrameAsh::kMdWebUiFrameColor));
-    properties[ui::mojom::WindowManager::kInactiveFrameColor_InitProperty] =
+            static_cast<int64_t>(BrowserFrameAsh::kMdWebUiFrameColor));
+    properties[ui::mojom::WindowManager::kFrameInactiveColor_Property] =
         mojo::ConvertTo<std::vector<uint8_t>>(
-            static_cast<int32_t>(BrowserFrameAsh::kMdWebUiFrameColor));
+            static_cast<int64_t>(BrowserFrameAsh::kMdWebUiFrameColor));
   }
 #endif
   aura::WindowTreeHostMusInitParams window_tree_host_init_params =
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
index 2c98dc0f..854e255 100644
--- a/chrome/browser/ui/views/frame/browser_view.cc
+++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -2316,20 +2316,35 @@
   // its bounds.  If it did, we would need to change how ink drops are drawn.
   // TODO(bruthig): Consider a more general mechanism for manipulating the
   // z-order of the ink drops.
+  // TODO(lgrey): Remove this comment when non-MD-refresh code path is removed.
+  // We will still need to order the detached bookmark bar below the infobar
+  // so that the infobar's shadow can draw on top of it, but in MD refresh, the
+  // ink drops in the toolbar mask to their buttons' bounds.
 
   if (new_parent == this) {
     // BookmarkBarView is detached.
-    const int top_container_index = GetIndexOf(top_container_);
-    DCHECK_GE(top_container_index, 0);
+    views::View* target_view = nullptr;
+    if (ui::MaterialDesignController::IsRefreshUi()) {
+      target_view = infobar_container_;
+    } else {
+      target_view = top_container_;
+    }
+    const int target_index = GetIndexOf(target_view);
+    DCHECK_GE(target_index, 0);
     // |top_container_| contains the toolbar, so putting the bookmark bar ahead
     // of it will ensure it's drawn before the toolbar.
-    AddChildViewAt(bookmark_bar_view_.get(), top_container_index);
+    // In MD refresh, the same applies, but for the infobar.
+    AddChildViewAt(bookmark_bar_view_.get(), target_index);
   } else if (new_parent == top_container_) {
     // BookmarkBarView is attached.
 
-    // The toolbar is a child of |top_container_|, so making the bookmark bar
-    // the first child ensures it's drawn before the toolbar.
-    new_parent->AddChildViewAt(bookmark_bar_view_.get(), 0);
+    if (ui::MaterialDesignController::IsRefreshUi()) {
+      new_parent->AddChildView(bookmark_bar_view_.get());
+    } else {
+      // The toolbar is a child of |top_container_|, so making the bookmark bar
+      // the first child ensures it's drawn before the toolbar.
+      new_parent->AddChildViewAt(bookmark_bar_view_.get(), 0);
+    }
   } else {
     DCHECK(!new_parent);
     // Bookmark bar is being detached from all views because it is hidden.
diff --git a/chrome/browser/ui/views/frame/browser_view_unittest.cc b/chrome/browser/ui/views/frame/browser_view_unittest.cc
index 65584858..51edc04 100644
--- a/chrome/browser/ui/views/frame/browser_view_unittest.cc
+++ b/chrome/browser/ui/views/frame/browser_view_unittest.cc
@@ -22,6 +22,7 @@
 #include "components/version_info/channel.h"
 #include "ui/base/accelerators/accelerator.h"
 #include "ui/base/l10n/l10n_util.h"
+#include "ui/base/material_design/material_design_controller.h"
 #include "ui/views/controls/webview/webview.h"
 
 namespace {
@@ -92,12 +93,16 @@
 
   // Find bar host is at the front of the view hierarchy, followed by the
   // infobar container and then top container.
+  // TODO(lgrey): Fix this up when Material Refresh is the default and
+  // investigate if there's a better/more explicit way to test this.
   EXPECT_EQ(browser_view()->child_count() - 1,
             browser_view()->GetIndexOf(browser_view()->find_bar_host_view()));
   EXPECT_EQ(browser_view()->child_count() - 2,
             browser_view()->GetIndexOf(browser_view()->infobar_container()));
-  EXPECT_EQ(browser_view()->child_count() - 3,
-            browser_view()->GetIndexOf(top_container));
+  if (!ui::MaterialDesignController::IsRefreshUi()) {
+    EXPECT_EQ(browser_view()->child_count() - 3,
+              browser_view()->GetIndexOf(top_container));
+  }
 
   // Verify basic layout.
   EXPECT_EQ(0, top_container->x());
@@ -145,8 +150,10 @@
             browser_view()->GetIndexOf(browser_view()->find_bar_host_view()));
   EXPECT_EQ(browser_view()->child_count() - 2,
             browser_view()->GetIndexOf(browser_view()->infobar_container()));
-  EXPECT_EQ(browser_view()->child_count() - 3,
-            browser_view()->GetIndexOf(top_container));
+  if (!ui::MaterialDesignController::IsRefreshUi()) {
+    EXPECT_EQ(browser_view()->child_count() - 3,
+              browser_view()->GetIndexOf(top_container));
+  }
 
   // Bookmark bar layout on NTP.
   EXPECT_EQ(0, bookmark_bar->x());
@@ -163,8 +170,10 @@
   EXPECT_FALSE(bookmark_bar->IsDetached());
   EXPECT_EQ(top_container, bookmark_bar->parent());
   // Top container is still third from front.
-  EXPECT_EQ(browser_view()->child_count() - 3,
-            browser_view()->GetIndexOf(top_container));
+  if (!ui::MaterialDesignController::IsRefreshUi()) {
+    EXPECT_EQ(browser_view()->child_count() - 3,
+              browser_view()->GetIndexOf(top_container));
+  }
 
   BookmarkBarView::DisableAnimationsForTesting(false);
 }
diff --git a/chrome/browser/ui/views/overlay/overlay_window_views.cc b/chrome/browser/ui/views/overlay/overlay_window_views.cc
index 4acfbc0d4..f27ca1f 100644
--- a/chrome/browser/ui/views/overlay/overlay_window_views.cc
+++ b/chrome/browser/ui/views/overlay/overlay_window_views.cc
@@ -35,7 +35,7 @@
 const int kBorderThickness = 5;
 const int kResizeAreaCornerSize = 16;
 
-constexpr gfx::Size kCloseButtonSize = gfx::Size(42, 42);
+constexpr gfx::Size kCloseButtonSize = gfx::Size(36, 36);
 constexpr gfx::Size kPlayPauseButtonSize = gfx::Size(90, 90);
 
 const int kCloseButtonMargin = 8;
@@ -216,7 +216,8 @@
                                           views::ImageButton::ALIGN_MIDDLE);
   close_controls_view_->SetImage(
       views::Button::STATE_NORMAL,
-      gfx::CreateVectorIcon(views::kIcCloseIcon, kCloseButtonSize.width() / 2,
+      gfx::CreateVectorIcon(views::kIcCloseIcon,
+                            kCloseButtonSize.width() * 2 / 3,
                             kControlIconColor));
   close_controls_view_->SetBackgroundImageAlignment(
       views::ImageButton::ALIGN_LEFT, views::ImageButton::ALIGN_TOP);
@@ -422,11 +423,7 @@
     event->SetHandled();
   } else if (event->key_code() == ui::VKEY_RETURN) {
     if (focused_control_button_ == CONTROL_PLAY_PAUSE) {
-      // Retrieve expected active state based on what command was sent in
-      // TogglePlayPause() since the IPC message may not have been propogated
-      // the media player yet.
-      bool is_active = controller_->TogglePlayPause();
-      play_pause_controls_view_->SetToggled(is_active);
+      TogglePlayPause();
     } else /* CONTROL_CLOSE */ {
       controller_->Close();
     }
@@ -436,8 +433,6 @@
 }
 
 void OverlayWindowViews::OnMouseEvent(ui::MouseEvent* event) {
-  // TODO(apacible): Handle touch screen events.
-  // http://crbug.com/836389
   switch (event->type()) {
     // Only show the media controls when the mouse is hovering over the window.
     case ui::ET_MOUSE_ENTERED:
@@ -458,11 +453,7 @@
         controller_->Close();
         event->SetHandled();
       } else if (GetPlayPauseControlsBounds().Contains(event->location())) {
-        // Retrieve expected active state based on what command was sent in
-        // TogglePlayPause() since the IPC message may not have been propogated
-        // the media player yet.
-        bool is_active = controller_->TogglePlayPause();
-        play_pause_controls_view_->SetToggled(is_active);
+        TogglePlayPause();
         event->SetHandled();
       }
       break;
@@ -472,6 +463,19 @@
   }
 }
 
+void OverlayWindowViews::OnGestureEvent(ui::GestureEvent* event) {
+  if (event->type() != ui::ET_GESTURE_TAP)
+    return;
+
+  if (GetCloseControlsBounds().Contains(event->location())) {
+    controller_->Close();
+    event->SetHandled();
+  } else if (GetPlayPauseControlsBounds().Contains(event->location())) {
+    TogglePlayPause();
+    event->SetHandled();
+  }
+}
+
 void OverlayWindowViews::OnNativeFocus() {
   // Show the controls when the window takes focus. This is used for tab and
   // touch interactions. If initialisation happens after the window takes
@@ -514,3 +518,11 @@
   SetBounds(current_bounds_);
   views::Widget::OnNativeWidgetSizeChanged(current_bounds_.size());
 }
+
+void OverlayWindowViews::TogglePlayPause() {
+  // Retrieve expected active state based on what command was sent in
+  // TogglePlayPause() since the IPC message may not have been propogated
+  // the media player yet.
+  bool is_active = controller_->TogglePlayPause();
+  play_pause_controls_view_->SetToggled(is_active);
+}
diff --git a/chrome/browser/ui/views/overlay/overlay_window_views.h b/chrome/browser/ui/views/overlay/overlay_window_views.h
index 3d69279..7ca806d 100644
--- a/chrome/browser/ui/views/overlay/overlay_window_views.h
+++ b/chrome/browser/ui/views/overlay/overlay_window_views.h
@@ -53,6 +53,7 @@
   void OnNativeWidgetWorkspaceChanged() override;
   void OnKeyEvent(ui::KeyEvent* event) override;
   void OnMouseEvent(ui::MouseEvent* event) override;
+  void OnGestureEvent(ui::GestureEvent* event) override;
 
   // views::internal::NativeWidgetDelegate:
   void OnNativeFocus() override;
@@ -77,6 +78,11 @@
   // Updates the controls view::Views to reflect |is_visible|.
   void UpdateControlsVisibility(bool is_visible);
 
+  // Toggles the play/pause control through the |controller_| and updates the
+  // |play_pause_controls_view_| toggled state to reflect the current playing
+  // state.
+  void TogglePlayPause();
+
   // Not owned; |controller_| owns |this|.
   content::PictureInPictureWindowController* controller_;
 
diff --git a/chrome/browser/ui/views/page_action/page_action_icon_view.cc b/chrome/browser/ui/views/page_action/page_action_icon_view.cc
index 061221f..4f795bd 100644
--- a/chrome/browser/ui/views/page_action/page_action_icon_view.cc
+++ b/chrome/browser/ui/views/page_action/page_action_icon_view.cc
@@ -96,14 +96,6 @@
   node_data->SetName(GetTextForTooltipAndAccessibleName());
 }
 
-void PageActionIconView::OnFocus() {
-  InkDropHostView::OnFocus();
-}
-
-void PageActionIconView::OnBlur() {
-  InkDropHostView::OnFocus();
-}
-
 bool PageActionIconView::GetTooltipText(const gfx::Point& p,
                                         base::string16* tooltip) const {
   if (IsBubbleShowing())
diff --git a/chrome/browser/ui/views/page_action/page_action_icon_view.h b/chrome/browser/ui/views/page_action/page_action_icon_view.h
index bd6bb97..490fd7f 100644
--- a/chrome/browser/ui/views/page_action/page_action_icon_view.h
+++ b/chrome/browser/ui/views/page_action/page_action_icon_view.h
@@ -90,8 +90,6 @@
   virtual void OnPressed(bool activated) {}
 
   // views::InkDropHostView:
-  void OnFocus() override;
-  void OnBlur() override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
   bool GetTooltipText(const gfx::Point& p,
                       base::string16* tooltip) const override;
diff --git a/chrome/browser/ui/views/sad_tab_view.cc b/chrome/browser/ui/views/sad_tab_view.cc
index dda7abb..da2fa3d 100644
--- a/chrome/browser/ui/views/sad_tab_view.cc
+++ b/chrome/browser/ui/views/sad_tab_view.cc
@@ -143,7 +143,8 @@
   // put focus on the action button. This causes screen readers to
   // immediately announce the text of this view.
   GetViewAccessibility().OverrideRole(ax::mojom::Role::kDialog);
-  action_button_->RequestFocus();
+  if (action_button_->GetWidget() && action_button_->GetWidget()->IsActive())
+    action_button_->RequestFocus();
 }
 
 SadTabView::~SadTabView() {
diff --git a/chrome/browser/ui/webui/signin/login_ui_service.cc b/chrome/browser/ui/webui/signin/login_ui_service.cc
index 9fe1029..3b88d79 100644
--- a/chrome/browser/ui/webui/signin/login_ui_service.cc
+++ b/chrome/browser/ui/webui/signin/login_ui_service.cc
@@ -35,8 +35,11 @@
 class ConsentBumpActivator : public BrowserListObserver,
                              public LoginUIService::Observer {
  public:
-  explicit ConsentBumpActivator(Profile* profile)
-      : profile_(profile),
+  // Creates a ConsentBumpActivator for |profile| which is owned by
+  // |login_ui_service|.
+  ConsentBumpActivator(LoginUIService* login_ui_service, Profile* profile)
+      : login_ui_service_(login_ui_service),
+        profile_(profile),
         scoped_browser_list_observer_(this),
         scoped_login_ui_service_observer_(this) {
     // Check if there is already an active browser window for |profile|.
@@ -57,8 +60,7 @@
 
     if (ShouldShowConsentBumpFor(profile_)) {
       selected_browser_ = browser;
-      scoped_login_ui_service_observer_.Add(
-          LoginUIServiceFactory::GetForProfile(profile_));
+      scoped_login_ui_service_observer_.Add(login_ui_service_);
       selected_browser_->signin_view_controller()->ShowModalSyncConsentBump(
           selected_browser_);
     }
@@ -108,6 +110,8 @@
   }
 
  private:
+  LoginUIService* login_ui_service_;  // owner
+
   Profile* profile_;
 
   ScopedObserver<BrowserList, ConsentBumpActivator>
@@ -129,8 +133,9 @@
 #endif
 {
 #if !defined(OS_CHROMEOS)
-  if (profile && !profile->IsOffTheRecord() && !profile->IsSupervised()) {
-    consent_bump_activator_ = std::make_unique<ConsentBumpActivator>(profile);
+  if (IsUnifiedConsentBumpEnabled(profile)) {
+    consent_bump_activator_ =
+        std::make_unique<ConsentBumpActivator>(this, profile);
   }
 #endif
 }
diff --git a/chrome/browser/ui/webui/signin/login_ui_service_factory.cc b/chrome/browser/ui/webui/signin/login_ui_service_factory.cc
index 66c7b5c..a36f3c07 100644
--- a/chrome/browser/ui/webui/signin/login_ui_service_factory.cc
+++ b/chrome/browser/ui/webui/signin/login_ui_service_factory.cc
@@ -7,6 +7,8 @@
 #include "base/bind.h"
 #include "base/bind_helpers.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/signin/signin_manager_factory.h"
+#include "chrome/browser/sync/profile_sync_service_factory.h"
 #include "chrome/browser/ui/webui/signin/login_ui_service.h"
 #include "components/keyed_service/content/browser_context_dependency_manager.h"
 #include "components/prefs/pref_service.h"
@@ -16,6 +18,8 @@
     : BrowserContextKeyedServiceFactory(
         "LoginUIServiceFactory",
         BrowserContextDependencyManager::GetInstance()) {
+  DependsOn(SigninManagerFactory::GetInstance());
+  DependsOn(ProfileSyncServiceFactory::GetInstance());
 }
 
 LoginUIServiceFactory::~LoginUIServiceFactory() {}
@@ -43,3 +47,7 @@
     content::BrowserContext* profile) const {
   return new LoginUIService(static_cast<Profile*>(profile));
 }
+
+bool LoginUIServiceFactory::ServiceIsCreatedWithBrowserContext() const {
+  return true;
+}
diff --git a/chrome/browser/ui/webui/signin/login_ui_service_factory.h b/chrome/browser/ui/webui/signin/login_ui_service_factory.h
index d940d34..f6defd3a 100644
--- a/chrome/browser/ui/webui/signin/login_ui_service_factory.h
+++ b/chrome/browser/ui/webui/signin/login_ui_service_factory.h
@@ -39,6 +39,7 @@
   // BrowserContextKeyedServiceFactory:
   KeyedService* BuildServiceInstanceFor(
       content::BrowserContext* profile) const override;
+  bool ServiceIsCreatedWithBrowserContext() const override;
 
   DISALLOW_COPY_AND_ASSIGN(LoginUIServiceFactory);
 };
diff --git a/chrome/browser/ui/webui/signin/login_ui_service_unittest.cc b/chrome/browser/ui/webui/signin/login_ui_service_unittest.cc
index d77bb0d9..bb219c5 100644
--- a/chrome/browser/ui/webui/signin/login_ui_service_unittest.cc
+++ b/chrome/browser/ui/webui/signin/login_ui_service_unittest.cc
@@ -7,8 +7,35 @@
 #include "base/compiler_specific.h"
 #include "base/logging.h"
 #include "base/macros.h"
+#include "chrome/test/base/testing_browser_process.h"
+#include "chrome/test/base/testing_profile.h"
+#include "chrome/test/base/testing_profile_manager.h"
+#include "content/public/test/test_browser_thread_bundle.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+class LoginUIServiceTest : public testing::Test {
+ public:
+  LoginUIServiceTest()
+      : profile_manager_(TestingBrowserProcess::GetGlobal()),
+        profile_(nullptr) {}
+  ~LoginUIServiceTest() override {}
+
+  void SetUp() override {
+    ASSERT_TRUE(profile_manager_.SetUp());
+    profile_ = profile_manager_.CreateTestingProfile("Person 1");
+  }
+
+ protected:
+  content::TestBrowserThreadBundle thread_bundle_;
+
+  TestingProfileManager profile_manager_;
+  // Test profile used by all tests - this is owned by profile_manager_.
+  TestingProfile* profile_;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(LoginUIServiceTest);
+};
+
 class TestLoginUI : public LoginUIService::LoginUI {
  public:
   TestLoginUI() { }
@@ -19,8 +46,8 @@
   DISALLOW_COPY_AND_ASSIGN(TestLoginUI);
 };
 
-TEST(LoginUIServiceTest, CanSetMultipleLoginUIs) {
-  LoginUIService service(nullptr);
+TEST_F(LoginUIServiceTest, CanSetMultipleLoginUIs) {
+  LoginUIService service(profile_);
 
   EXPECT_EQ(nullptr, service.current_login_ui());
 
@@ -48,8 +75,8 @@
   EXPECT_EQ(nullptr, service.current_login_ui());
 }
 
-TEST(LoginUIServiceTest, SetProfileBlockingErrorMessage) {
-  LoginUIService service(nullptr);
+TEST_F(LoginUIServiceTest, SetProfileBlockingErrorMessage) {
+  LoginUIService service(profile_);
 
   service.SetProfileBlockingErrorMessage();
 
diff --git a/chrome/browser/ui/webui/signin/user_manager_ui_browsertest.cc b/chrome/browser/ui/webui/signin/user_manager_ui_browsertest.cc
index 282ee579..8de7fc5 100644
--- a/chrome/browser/ui/webui/signin/user_manager_ui_browsertest.cc
+++ b/chrome/browser/ui/webui/signin/user_manager_ui_browsertest.cc
@@ -33,7 +33,8 @@
 
 class MockLoginUIService : public LoginUIService {
  public:
-  MockLoginUIService() : LoginUIService(nullptr) {}
+  explicit MockLoginUIService(content::BrowserContext* context)
+      : LoginUIService(static_cast<Profile*>(context)) {}
   ~MockLoginUIService() override {}
   MOCK_METHOD3(DisplayLoginResult,
                void(Browser* browser,
@@ -44,7 +45,7 @@
 
 std::unique_ptr<KeyedService> CreateLoginUIService(
     content::BrowserContext* context) {
-  return std::make_unique<MockLoginUIService>();
+  return std::make_unique<MockLoginUIService>(context);
 }
 
 class UserManagerUIBrowserTest : public InProcessBrowserTest,
diff --git a/chrome/browser/ui/window_sizer/window_sizer.h b/chrome/browser/ui/window_sizer/window_sizer.h
index 543e9d73..61594a7 100644
--- a/chrome/browser/ui/window_sizer/window_sizer.h
+++ b/chrome/browser/ui/window_sizer/window_sizer.h
@@ -115,9 +115,6 @@
 
   virtual ~WindowSizer();
 
-  // The edge of the screen to check for out-of-bounds.
-  enum Edge { TOP, LEFT, BOTTOM, RIGHT };
-
   // Gets the size and placement of the last active window. Returns true if this
   // data is valid, false if there is no last window and the application should
   // restore saved state from preferences using RestoreWindowPosition.
diff --git a/chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc b/chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc
index e7e1bd8..881a9da 100644
--- a/chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc
+++ b/chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc
@@ -43,7 +43,7 @@
                        gfx::Rect* out_bounds) {
     auto state_provider = std::make_unique<TestStateProvider>();
     state_provider->SetPersistentState(gfx::Rect(), gfx::Rect(),
-                                       ui::SHOW_STATE_DEFAULT, true);
+                                       ui::SHOW_STATE_DEFAULT);
     shell_state_client_.SetDisplayIdForNewWindows(display_id);
 
     ui::WindowShowState ignored;
@@ -51,7 +51,49 @@
     sizer.DetermineWindowBoundsAndShowState(passed_in, out_bounds, &ignored);
   }
 
+  // Returns browser window |out_bounds| and |out_show_state| for simulated
+  // persisted and last-active window bounds, work area, show state, etc.
+  static void GetBrowserWindowBoundsAndShowState(
+      const gfx::Rect& bounds,
+      const gfx::Rect& work_area,
+      ui::WindowShowState show_state_persisted,
+      ui::WindowShowState show_state_last,
+      Source source,
+      const Browser* browser,
+      const gfx::Rect& passed_in,
+      gfx::Rect* out_bounds,
+      ui::WindowShowState* out_show_state) {
+    DCHECK(out_show_state);
+    auto provider = std::make_unique<TestStateProvider>();
+    if (source == PERSISTED || source == BOTH)
+      provider->SetPersistentState(bounds, work_area, show_state_persisted);
+    if (source == LAST_ACTIVE || source == BOTH)
+      provider->SetLastActiveState(bounds, show_state_last);
+
+    WindowSizer sizer(std::move(provider), browser);
+    sizer.DetermineWindowBoundsAndShowState(passed_in, out_bounds,
+                                            out_show_state);
+  }
+
+  // Returns browser window show state for simulated persisted and last-active
+  // window bounds, work area, show state, etc.
+  static ui::WindowShowState GetBrowserWindowShowState(
+      ui::WindowShowState show_state_persisted,
+      ui::WindowShowState show_state_last,
+      Source source,
+      const Browser* browser,
+      const gfx::Rect& bounds,
+      const gfx::Rect& work_area) {
+    ui::WindowShowState out_show_state = ui::SHOW_STATE_DEFAULT;
+    gfx::Rect ignored;
+    GetBrowserWindowBoundsAndShowState(bounds, work_area, show_state_persisted,
+                                       show_state_last, source, browser,
+                                       gfx::Rect(), &ignored, &out_show_state);
+    return out_show_state;
+  }
+
  protected:
+  TestingProfile profile_;
   ShellStateClient shell_state_client_;
 
  private:
@@ -60,9 +102,6 @@
 
 namespace {
 
-// Copied from window_sizer_ash.cc constant of the same name.
-constexpr int kForceMaximizeWidthLimit = 1366;
-
 // Shorten identifiers to improve line wrapping.
 using util = WindowSizerTestUtil;
 const int kDesktopBorderSize = WindowSizer::kDesktopBorderSize;
@@ -320,35 +359,27 @@
 // Test the placement of newly created windows.
 TEST_F(WindowSizerAshTest, PlaceNewWindows) {
   // Create a browser to pass into the util::GetWindowBounds function.
-  std::unique_ptr<TestingProfile> profile(new TestingProfile());
-  Browser::CreateParams native_params(profile.get(), true);
+  Browser::CreateParams native_params(&profile_, true);
   auto browser = CreateWindowlessBrowser(native_params);
 
   // Creating a popup handler here to make sure it does not interfere with the
   // existing windows.
-  Browser::CreateParams params2(profile.get(), true);
+  Browser::CreateParams params2(&profile_, true);
   std::unique_ptr<Browser> browser2 = (CreateTestBrowser(
       CreateTestWindowInShellWithId(0), gfx::Rect(16, 32, 640, 320), &params2));
   BrowserWindow* browser_window = browser2->window();
 
   // Creating a popup to make sure it does not interfere with the positioning.
-  Browser::CreateParams params_popup(Browser::TYPE_POPUP, profile.get(), true);
+  Browser::CreateParams params_popup(Browser::TYPE_POPUP, &profile_, true);
   std::unique_ptr<Browser> browser_popup(
       CreateTestBrowser(CreateTestWindowInShellWithId(1),
                         gfx::Rect(16, 32, 128, 256), &params_popup));
 
-  // Creating a panel to make sure it does not interfere with the positioning.
-  Browser::CreateParams params_panel(Browser::TYPE_POPUP, profile.get(), true);
-  std::unique_ptr<Browser> browser_panel(
-      CreateTestBrowser(CreateTestWindowInShellWithId(2),
-                        gfx::Rect(32, 48, 256, 512), &params_panel));
-
   browser_window->Show();
 
   // Make sure that popups do not get changed.
   {
-    Browser::CreateParams params_popup(Browser::TYPE_POPUP, profile.get(),
-                                       true);
+    Browser::CreateParams params_popup(Browser::TYPE_POPUP, &profile_, true);
     auto new_popup = CreateWindowlessBrowser(params_popup);
     gfx::Rect window_bounds;
     util::GetWindowBounds(p1600x1200, p1600x1200, gfx::Rect(),
@@ -390,24 +421,19 @@
 // This test supplements "PlaceNewWindows" by testing the creation of a newly
 // created browser window on an empty desktop.
 TEST_F(WindowSizerAshTest, PlaceNewBrowserWindowOnEmptyDesktop) {
-  // Create a browser to pass into the util::GetWindowBoundsAndShowState
-  // function.
-  std::unique_ptr<TestingProfile> profile(new TestingProfile());
-  Browser::CreateParams native_params(profile.get(), true);
+  Browser::CreateParams native_params(&profile_, true);
   auto browser = CreateWindowlessBrowser(native_params);
 
-  // A common screen size for Chrome OS devices where this behavior is
-  // desirable.
-  const gfx::Rect p1366x768(0, 0, kForceMaximizeWidthLimit, 768);
+  // A common screen size for Chrome OS devices where forced-maximized
+  // windows are desirable.
+  UpdateDisplay("1366x768");
+  const gfx::Rect p1366x768(0, 0, 1366, 768);
 
   // If there is no previous state the window should get maximized if the
   // screen is less than or equal to our limit (1366 pixels width).
   gfx::Rect window_bounds;
   ui::WindowShowState out_show_state1 = ui::SHOW_STATE_DEFAULT;
-  util::GetWindowBoundsAndShowState(
-      p1366x768,               // The screen resolution.
-      p1366x768,               // The monitor work area.
-      gfx::Rect(),             // The second monitor.
+  GetBrowserWindowBoundsAndShowState(
       gfx::Rect(),             // The (persisted) bounds.
       p1366x768,               // The overall work area.
       ui::SHOW_STATE_NORMAL,   // The persisted show state.
@@ -415,16 +441,12 @@
       DEFAULT,                 // No persisted values.
       browser.get(),           // Use this browser.
       gfx::Rect(),             // Don't request valid bounds.
-      0u,                      // Display index.
       &window_bounds, &out_show_state1);
   EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED, out_show_state1);
 
   // If there is a stored coordinate however, that should be taken instead.
   ui::WindowShowState out_show_state2 = ui::SHOW_STATE_DEFAULT;
-  util::GetWindowBoundsAndShowState(
-      p1366x768,                     // The screen resolution.
-      p1366x768,                     // The monitor work area.
-      gfx::Rect(),                   // The second monitor.
+  GetBrowserWindowBoundsAndShowState(
       gfx::Rect(50, 100, 300, 150),  // The (persisted) bounds.
       p1366x768,                     // The overall work area.
       ui::SHOW_STATE_NORMAL,         // The persisted show state.
@@ -432,17 +454,20 @@
       PERSISTED,                     // Set the persisted values.
       browser.get(),                 // Use this browser.
       gfx::Rect(),                   // Don't request valid bounds.
-      0u,                            // Display index.
       &window_bounds, &out_show_state2);
   EXPECT_EQ(ui::SHOW_STATE_NORMAL, out_show_state2);
   EXPECT_EQ("50,100 300x150", window_bounds.ToString());
+}
+
+TEST_F(WindowSizerAshTest, PlaceNewBrowserWindowOnLargeDesktop) {
+  Browser::CreateParams native_params(&profile_, true);
+  auto browser = CreateWindowlessBrowser(native_params);
 
   // A larger monitor should not trigger auto-maximize.
-  ui::WindowShowState out_show_state3 = ui::SHOW_STATE_DEFAULT;
-  util::GetWindowBoundsAndShowState(
-      p1600x1200,              // The screen resolution.
-      p1600x1200,              // The monitor work area.
-      gfx::Rect(),             // The second monitor.
+  UpdateDisplay("1600x1200");
+  gfx::Rect window_bounds;
+  ui::WindowShowState out_show_state = ui::SHOW_STATE_DEFAULT;
+  GetBrowserWindowBoundsAndShowState(
       gfx::Rect(),             // The (persisted) bounds.
       p1600x1200,              // The overall work area.
       ui::SHOW_STATE_NORMAL,   // The persisted show state.
@@ -450,9 +475,8 @@
       DEFAULT,                 // No persisted values.
       browser.get(),           // Use this browser.
       gfx::Rect(),             // Don't request valid bounds.
-      0u,                      // Display index.
-      &window_bounds, &out_show_state3);
-  EXPECT_EQ(ui::SHOW_STATE_DEFAULT, out_show_state3);
+      &window_bounds, &out_show_state);
+  EXPECT_EQ(ui::SHOW_STATE_DEFAULT, out_show_state);
 }
 
 // Test the placement of newly created windows on multiple dislays.
@@ -464,10 +488,9 @@
   gfx::Rect primary_bounds = primary_display.bounds();
   gfx::Rect secondary_bounds = second_display.bounds();
 
-  std::unique_ptr<TestingProfile> profile(new TestingProfile());
 
   // Create browser windows that are used as reference.
-  Browser::CreateParams params(profile.get(), true);
+  Browser::CreateParams params(&profile_, true);
   std::unique_ptr<Browser> browser(CreateTestBrowser(
       CreateTestWindowInShellWithId(0), gfx::Rect(10, 10, 200, 200), &params));
   BrowserWindow* browser_window = browser->window();
@@ -476,7 +499,7 @@
   EXPECT_EQ(native_window->GetRootWindow(),
             ash::Shell::GetRootWindowForNewWindows());
 
-  Browser::CreateParams another_params(profile.get(), true);
+  Browser::CreateParams another_params(&profile_, true);
   std::unique_ptr<Browser> another_browser(
       CreateTestBrowser(CreateTestWindowInShellWithId(1),
                         gfx::Rect(400, 10, 300, 300), &another_params));
@@ -486,7 +509,7 @@
   another_browser_window->Show();
 
   // Creating a new window to verify the new placement.
-  Browser::CreateParams new_params(profile.get(), true);
+  Browser::CreateParams new_params(&profile_, true);
   auto new_browser = CreateWindowlessBrowser(new_params);
 
   // Make sure the primary root is active.
@@ -543,100 +566,103 @@
 
 // Test that the show state is properly returned for non default cases.
 TEST_F(WindowSizerAshTest, TestShowState) {
-  std::unique_ptr<TestingProfile> profile(new TestingProfile());
+  UpdateDisplay("1600x1200");
 
   // Creating a browser & window to play with.
-  Browser::CreateParams params(Browser::TYPE_TABBED, profile.get(), true);
+  Browser::CreateParams params(Browser::TYPE_TABBED, &profile_, true);
   auto browser = CreateWindowlessBrowser(params);
 
   // Create also a popup browser since that behaves different.
-  Browser::CreateParams params_popup(Browser::TYPE_POPUP, profile.get(), true);
+  Browser::CreateParams params_popup(Browser::TYPE_POPUP, &profile_, true);
   auto browser_popup = CreateWindowlessBrowser(params_popup);
 
   // Tabbed windows should retrieve the saved window state - since there is a
   // top window.
   EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED,
-            util::GetWindowShowState(ui::SHOW_STATE_MAXIMIZED,
-                                     ui::SHOW_STATE_NORMAL, PERSISTED,
-                                     browser.get(), p1600x1200, p1600x1200));
+            GetBrowserWindowShowState(ui::SHOW_STATE_MAXIMIZED,
+                                      ui::SHOW_STATE_NORMAL, PERSISTED,
+                                      browser.get(), p1600x1200, p1600x1200));
   // A window that is smaller than the whole work area is set to default state.
   EXPECT_EQ(ui::SHOW_STATE_DEFAULT,
-            util::GetWindowShowState(ui::SHOW_STATE_DEFAULT,
-                                     ui::SHOW_STATE_NORMAL, PERSISTED,
-                                     browser.get(), p1280x1024, p1600x1200));
+            GetBrowserWindowShowState(ui::SHOW_STATE_DEFAULT,
+                                      ui::SHOW_STATE_NORMAL, PERSISTED,
+                                      browser.get(), p1280x1024, p1600x1200));
   // A window that is sized to occupy the whole work area is maximized.
   EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED,
-            util::GetWindowShowState(ui::SHOW_STATE_DEFAULT,
-                                     ui::SHOW_STATE_NORMAL, PERSISTED,
-                                     browser.get(), p1600x1200, p1600x1200));
+            GetBrowserWindowShowState(ui::SHOW_STATE_DEFAULT,
+                                      ui::SHOW_STATE_NORMAL, PERSISTED,
+                                      browser.get(), p1600x1200, p1600x1200));
   // Non tabbed windows should always follow the window saved visibility state.
   EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED,
-            util::GetWindowShowState(
+            GetBrowserWindowShowState(
                 ui::SHOW_STATE_MAXIMIZED, ui::SHOW_STATE_NORMAL, BOTH,
                 browser_popup.get(), p1600x1200, p1600x1200));
   // The non tabbed window will take the status of the last active of its kind.
   EXPECT_EQ(ui::SHOW_STATE_NORMAL,
-            util::GetWindowShowState(
+            GetBrowserWindowShowState(
                 ui::SHOW_STATE_DEFAULT, ui::SHOW_STATE_NORMAL, BOTH,
                 browser_popup.get(), p1600x1200, p1600x1200));
 
   // A tabbed window should now take the top level window state.
   EXPECT_EQ(
       ui::SHOW_STATE_NORMAL,
-      util::GetWindowShowState(ui::SHOW_STATE_MAXIMIZED, ui::SHOW_STATE_NORMAL,
-                               BOTH, browser.get(), p1600x1200, p1600x1200));
+      GetBrowserWindowShowState(ui::SHOW_STATE_MAXIMIZED, ui::SHOW_STATE_NORMAL,
+                                BOTH, browser.get(), p1600x1200, p1600x1200));
   // Non tabbed windows should always follow the window saved visibility state.
   EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED,
-            util::GetWindowShowState(
+            GetBrowserWindowShowState(
                 ui::SHOW_STATE_MAXIMIZED, ui::SHOW_STATE_MINIMIZED, BOTH,
                 browser_popup.get(), p1600x1200, p1600x1200));
+}
+
+TEST_F(WindowSizerAshTest, TestShowStateOnTinyScreen) {
+  Browser::CreateParams params(Browser::TYPE_TABBED, &profile_, true);
+  auto browser = CreateWindowlessBrowser(params);
 
   // In smaller screen resolutions we default to maximized if there is no other
   // window visible.
-  int min_size = kForceMaximizeWidthLimit / 2;
-  if (min_size > 0) {
-    const gfx::Rect tiny_screen(0, 0, min_size, min_size);
-    EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED,
-              util::GetWindowShowState(
-                  ui::SHOW_STATE_MAXIMIZED, ui::SHOW_STATE_DEFAULT, BOTH,
-                  browser.get(), tiny_screen, tiny_screen));
-  }
+  UpdateDisplay("640x480");
+  const gfx::Rect tiny_screen(0, 0, 640, 480);
+  EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED,
+            GetBrowserWindowShowState(ui::SHOW_STATE_MAXIMIZED,
+                                      ui::SHOW_STATE_DEFAULT, BOTH,
+                                      browser.get(), tiny_screen, tiny_screen));
 }
 
 // Test that the default show state override behavior is properly handled.
 TEST_F(WindowSizerAshTest, TestShowStateDefaults) {
+  UpdateDisplay("1600x1200");
   // Creating a browser & window to play with.
-  std::unique_ptr<TestingProfile> profile(new TestingProfile());
 
-  Browser::CreateParams params(Browser::TYPE_TABBED, profile.get(), true);
+  Browser::CreateParams params(Browser::TYPE_TABBED, &profile_, true);
   auto browser = CreateWindowlessBrowser(params);
 
   // Create also a popup browser since that behaves slightly different for
   // defaults.
-  Browser::CreateParams params_popup(Browser::TYPE_POPUP, profile.get(), true);
+  Browser::CreateParams params_popup(Browser::TYPE_POPUP, &profile_, true);
   auto browser_popup = CreateWindowlessBrowser(params_popup);
 
   // Check that a browser creation state always get used if not given as
   // SHOW_STATE_DEFAULT.
-  ui::WindowShowState window_show_state = util::GetWindowShowState(
+  ui::WindowShowState window_show_state = GetBrowserWindowShowState(
       ui::SHOW_STATE_MAXIMIZED, ui::SHOW_STATE_MAXIMIZED, DEFAULT,
       browser.get(), p1600x1200, p1600x1200);
   EXPECT_EQ(window_show_state, ui::SHOW_STATE_DEFAULT);
 
   browser->set_initial_show_state(ui::SHOW_STATE_MINIMIZED);
-  EXPECT_EQ(util::GetWindowShowState(ui::SHOW_STATE_MAXIMIZED,
-                                     ui::SHOW_STATE_MAXIMIZED, BOTH,
-                                     browser.get(), p1600x1200, p1600x1200),
+  EXPECT_EQ(GetBrowserWindowShowState(ui::SHOW_STATE_MAXIMIZED,
+                                      ui::SHOW_STATE_MAXIMIZED, BOTH,
+                                      browser.get(), p1600x1200, p1600x1200),
             ui::SHOW_STATE_MINIMIZED);
   browser->set_initial_show_state(ui::SHOW_STATE_NORMAL);
-  EXPECT_EQ(util::GetWindowShowState(ui::SHOW_STATE_MAXIMIZED,
-                                     ui::SHOW_STATE_MAXIMIZED, BOTH,
-                                     browser.get(), p1600x1200, p1600x1200),
+  EXPECT_EQ(GetBrowserWindowShowState(ui::SHOW_STATE_MAXIMIZED,
+                                      ui::SHOW_STATE_MAXIMIZED, BOTH,
+                                      browser.get(), p1600x1200, p1600x1200),
             ui::SHOW_STATE_NORMAL);
   browser->set_initial_show_state(ui::SHOW_STATE_MAXIMIZED);
   EXPECT_EQ(
-      util::GetWindowShowState(ui::SHOW_STATE_NORMAL, ui::SHOW_STATE_NORMAL,
-                               BOTH, browser.get(), p1600x1200, p1600x1200),
+      GetBrowserWindowShowState(ui::SHOW_STATE_NORMAL, ui::SHOW_STATE_NORMAL,
+                                BOTH, browser.get(), p1600x1200, p1600x1200),
       ui::SHOW_STATE_MAXIMIZED);
 
   // Check that setting the maximized command line option is forcing the
@@ -646,12 +672,12 @@
 
   browser->set_initial_show_state(ui::SHOW_STATE_NORMAL);
   EXPECT_EQ(
-      util::GetWindowShowState(ui::SHOW_STATE_NORMAL, ui::SHOW_STATE_NORMAL,
-                               BOTH, browser.get(), p1600x1200, p1600x1200),
+      GetBrowserWindowShowState(ui::SHOW_STATE_NORMAL, ui::SHOW_STATE_NORMAL,
+                                BOTH, browser.get(), p1600x1200, p1600x1200),
       ui::SHOW_STATE_MAXIMIZED);
 
   // The popup should favor the initial show state over the command line.
-  EXPECT_EQ(util::GetWindowShowState(
+  EXPECT_EQ(GetBrowserWindowShowState(
                 ui::SHOW_STATE_NORMAL, ui::SHOW_STATE_NORMAL, BOTH,
                 browser_popup.get(), p1600x1200, p1600x1200),
             ui::SHOW_STATE_NORMAL);
@@ -659,8 +685,7 @@
 
 TEST_F(WindowSizerAshTest, DefaultStateBecomesMaximized) {
   // Create a browser to pass into the util::GetWindowBounds function.
-  std::unique_ptr<TestingProfile> profile(new TestingProfile());
-  Browser::CreateParams native_params(profile.get(), true);
+  Browser::CreateParams native_params(&profile_, true);
   auto browser = CreateWindowlessBrowser(native_params);
 
   gfx::Rect display_bounds =
@@ -722,21 +747,20 @@
 }
 
 TEST_F(WindowSizerAshTest, TrustedPopupBehavior) {
-  std::unique_ptr<TestingProfile> profile(new TestingProfile());
   Browser::CreateParams trusted_popup_create_params(Browser::TYPE_POPUP,
-                                                    profile.get(), true);
+                                                    &profile_, true);
   trusted_popup_create_params.trusted_source = true;
 
   auto trusted_popup = CreateWindowlessBrowser(trusted_popup_create_params);
   // Trusted popup windows should follow the saved show state and ignore the
   // last show state.
   EXPECT_EQ(ui::SHOW_STATE_DEFAULT,
-            util::GetWindowShowState(
+            GetBrowserWindowShowState(
                 ui::SHOW_STATE_DEFAULT, ui::SHOW_STATE_NORMAL, BOTH,
                 trusted_popup.get(), p1280x1024, p1600x1200));
   // A popup that is sized to occupy the whole work area has default state.
   EXPECT_EQ(ui::SHOW_STATE_DEFAULT,
-            util::GetWindowShowState(
+            GetBrowserWindowShowState(
                 ui::SHOW_STATE_DEFAULT, ui::SHOW_STATE_NORMAL, BOTH,
                 trusted_popup.get(), p1600x1200, p1600x1200));
 }
diff --git a/chrome/browser/ui/window_sizer/window_sizer_common_unittest.cc b/chrome/browser/ui/window_sizer/window_sizer_common_unittest.cc
index cca214d..91343898 100644
--- a/chrome/browser/ui/window_sizer/window_sizer_common_unittest.cc
+++ b/chrome/browser/ui/window_sizer/window_sizer_common_unittest.cc
@@ -61,20 +61,18 @@
 
 void TestStateProvider::SetPersistentState(const gfx::Rect& bounds,
                                            const gfx::Rect& work_area,
-                                           ui::WindowShowState show_state,
-                                           bool has_persistent_data) {
+                                           ui::WindowShowState show_state) {
   persistent_bounds_ = bounds;
   persistent_work_area_ = work_area;
   persistent_show_state_ = show_state;
-  has_persistent_data_ = has_persistent_data;
+  has_persistent_data_ = true;
 }
 
 void TestStateProvider::SetLastActiveState(const gfx::Rect& bounds,
-                                           ui::WindowShowState show_state,
-                                           bool has_last_active_data) {
+                                           ui::WindowShowState show_state) {
   last_active_bounds_ = bounds;
   last_active_show_state_ = show_state;
-  has_last_active_data_ = has_last_active_data;
+  has_last_active_data_ = true;
 }
 
 bool TestStateProvider::GetPersistentState(
@@ -100,65 +98,6 @@
 }
 
 // static
-void WindowSizerTestUtil::GetWindowBoundsAndShowState(
-    const gfx::Rect& monitor1_bounds,
-    const gfx::Rect& monitor1_work_area,
-    const gfx::Rect& monitor2_bounds,
-    const gfx::Rect& bounds,
-    const gfx::Rect& work_area,
-    ui::WindowShowState show_state_persisted,
-    ui::WindowShowState show_state_last,
-    Source source,
-    const Browser* browser,
-    const gfx::Rect& passed_in,
-    size_t display_index,
-    gfx::Rect* out_bounds,
-    ui::WindowShowState* out_show_state) {
-  DCHECK(out_show_state);
-  TestScreen test_screen;
-  test_screen.AddDisplay(monitor1_bounds, monitor1_work_area);
-  if (!monitor2_bounds.IsEmpty())
-    test_screen.AddDisplay(monitor2_bounds, monitor2_bounds);
-  std::unique_ptr<TestStateProvider> sp(new TestStateProvider);
-  if (source == PERSISTED || source == BOTH)
-    sp->SetPersistentState(bounds, work_area, show_state_persisted, true);
-  if (source == LAST_ACTIVE || source == BOTH)
-    sp->SetLastActiveState(bounds, show_state_last, true);
-
-  WindowSizer sizer(std::move(sp), browser);
-  sizer.DetermineWindowBoundsAndShowState(passed_in,
-                                          out_bounds,
-                                          out_show_state);
-}
-
-// static
-ui::WindowShowState WindowSizerTestUtil::GetWindowShowState(
-    ui::WindowShowState show_state_persisted,
-    ui::WindowShowState show_state_last,
-    Source source,
-    const Browser* browser,
-    const gfx::Rect& bounds,
-    const gfx::Rect& display_config) {
-  TestScreen test_screen;
-  test_screen.AddDisplay(display_config, display_config);
-  std::unique_ptr<TestStateProvider> sp(new TestStateProvider);
-  if (source == PERSISTED || source == BOTH)
-    sp->SetPersistentState(bounds, display_config, show_state_persisted, true);
-  if (source == LAST_ACTIVE || source == BOTH)
-    sp->SetLastActiveState(bounds, show_state_last, true);
-
-  WindowSizer sizer(std::move(sp), browser);
-
-  ui::WindowShowState out_show_state = ui::SHOW_STATE_DEFAULT;
-  gfx::Rect out_bounds;
-  sizer.DetermineWindowBoundsAndShowState(
-      gfx::Rect(),
-      &out_bounds,
-      &out_show_state);
-  return out_show_state;
-}
-
-// static
 void WindowSizerTestUtil::GetWindowBounds(const gfx::Rect& monitor1_bounds,
                                           const gfx::Rect& monitor1_work_area,
                                           const gfx::Rect& monitor2_bounds,
@@ -168,11 +107,20 @@
                                           const Browser* browser,
                                           const gfx::Rect& passed_in,
                                           gfx::Rect* out_bounds) {
-  ui::WindowShowState out_show_state = ui::SHOW_STATE_DEFAULT;
-  GetWindowBoundsAndShowState(
-      monitor1_bounds, monitor1_work_area, monitor2_bounds, bounds, work_area,
-      ui::SHOW_STATE_DEFAULT, ui::SHOW_STATE_DEFAULT, source, browser,
-      passed_in, 0u, out_bounds, &out_show_state);
+  TestScreen test_screen;
+  test_screen.AddDisplay(monitor1_bounds, monitor1_work_area);
+  if (!monitor2_bounds.IsEmpty())
+    test_screen.AddDisplay(monitor2_bounds, monitor2_bounds);
+
+  auto provider = std::make_unique<TestStateProvider>();
+  if (source == PERSISTED || source == BOTH)
+    provider->SetPersistentState(bounds, work_area, ui::SHOW_STATE_DEFAULT);
+  if (source == LAST_ACTIVE || source == BOTH)
+    provider->SetLastActiveState(bounds, ui::SHOW_STATE_DEFAULT);
+
+  ui::WindowShowState ignored;
+  WindowSizer sizer(std::move(provider), browser);
+  sizer.DetermineWindowBoundsAndShowState(passed_in, out_bounds, &ignored);
 }
 
 #if !defined(OS_MACOSX)
diff --git a/chrome/browser/ui/window_sizer/window_sizer_common_unittest.h b/chrome/browser/ui/window_sizer/window_sizer_common_unittest.h
index e6431a4..cf130fe831 100644
--- a/chrome/browser/ui/window_sizer/window_sizer_common_unittest.h
+++ b/chrome/browser/ui/window_sizer/window_sizer_common_unittest.h
@@ -55,11 +55,9 @@
 
   void SetPersistentState(const gfx::Rect& bounds,
                           const gfx::Rect& work_area,
-                          ui::WindowShowState show_state,
-                          bool has_persistent_data);
+                          ui::WindowShowState show_state);
   void SetLastActiveState(const gfx::Rect& bounds,
-                          ui::WindowShowState show_state,
-                          bool has_last_active_data);
+                          ui::WindowShowState show_state);
 
   // Overridden from WindowSizer::StateProvider:
   bool GetPersistentState(gfx::Rect* bounds,
@@ -88,29 +86,6 @@
 
 class WindowSizerTestUtil {
  public:
-  // Sets up the window bounds, monitor bounds, show states and more to get the
-  // resulting |out_bounds| and |out_show_state| from the WindowSizer.
-  // |source| specifies which type of data gets set for the test: Either the
-  // last active window, the persisted value which was stored earlier, both or
-  // none. For all these states the |bounds| and |work_area| get used, for the
-  // show states either |show_state_persisted| or |show_state_last| will be
-  // used. |display_index| is the index of the display to return from
-  // GetDisplayNearestWindow(), and is only used on aura.
-  static void GetWindowBoundsAndShowState(
-      const gfx::Rect& monitor1_bounds,
-      const gfx::Rect& monitor1_work_area,
-      const gfx::Rect& monitor2_bounds,
-      const gfx::Rect& bounds,
-      const gfx::Rect& work_area,
-      ui::WindowShowState show_state_persisted,
-      ui::WindowShowState show_state_last,
-      Source source,
-      const Browser* browser,
-      const gfx::Rect& passed_in,
-      size_t display_index,
-      gfx::Rect* out_bounds,
-      ui::WindowShowState* out_show_state);
-
   // Sets up the window bounds, monitor bounds, and work area to get the
   // resulting |out_bounds| from the WindowSizer.
   // |source| specifies which type of data gets set for the test: Either the
@@ -128,19 +103,6 @@
                               const gfx::Rect& passed_in,
                               gfx::Rect* out_bounds);
 
-  // Sets up the window |bounds| and various system states which have an
-  // influence on the WindowSizer and then determines the resulting show state
-  // from it. |bounds| specifies the |browser| last or persistent bounds
-  // depending on |source|. The |display_config| is the primary display
-  // configuration used.
-  static ui::WindowShowState GetWindowShowState(
-      ui::WindowShowState show_state_persisted,
-      ui::WindowShowState show_state_last,
-      Source source,
-      const Browser* browser,
-      const gfx::Rect& bounds,
-      const gfx::Rect& display_config);
-
  private:
   DISALLOW_IMPLICIT_CONSTRUCTORS(WindowSizerTestUtil);
 };
diff --git a/chrome/browser/vr/databinding/binding.h b/chrome/browser/vr/databinding/binding.h
index d3195be..ecfb737 100644
--- a/chrome/browser/vr/databinding/binding.h
+++ b/chrome/browser/vr/databinding/binding.h
@@ -27,15 +27,7 @@
 template <typename T>
 class Binding : public BindingBase {
  public:
-  Binding(const base::RepeatingCallback<T()>& getter,
-          const base::RepeatingCallback<void(const T&)>& setter)
-      : getter_(getter), setter_(setter) {}
-
-  Binding(const base::RepeatingCallback<T()>& getter,
-          const base::RepeatingCallback<void(const base::Optional<T>&,
-                                             const T&)>& setter)
-      : getter_(getter), historic_setter_(setter) {}
-
+#ifndef NDEBUG
   Binding(const base::RepeatingCallback<T()>& getter,
           const std::string& getter_text,
           const base::RepeatingCallback<void(const T&)>& setter,
@@ -54,6 +46,17 @@
         historic_setter_(setter),
         getter_text_(getter_text),
         setter_text_(setter_text) {}
+#else
+  Binding(const base::RepeatingCallback<T()>& getter,
+          const base::RepeatingCallback<void(const T&)>& setter)
+      : getter_(getter), setter_(setter) {}
+
+  Binding(const base::RepeatingCallback<T()>& getter,
+          const base::RepeatingCallback<void(const base::Optional<T>&,
+                                             const T&)>& setter)
+      : getter_(getter), historic_setter_(setter) {}
+#endif
+
   ~Binding() override = default;
 
   // This function will check if the getter is producing a different value than
@@ -72,11 +75,15 @@
   }
 
   std::string ToString() override {
+#ifndef NDEBUG
     if (getter_text_.empty() && setter_text_.empty())
       return "";
 
     return base::StringPrintf("%s => %s", getter_text_.c_str(),
                               setter_text_.c_str());
+#else
+    return "";
+#endif
   }
 
  private:
@@ -86,8 +93,10 @@
       historic_setter_;
   base::Optional<T> last_value_;
 
+#ifndef NDEBUG
   std::string getter_text_;
   std::string setter_text_;
+#endif
 
   DISALLOW_COPY_AND_ASSIGN(Binding);
 };
@@ -148,7 +157,11 @@
 #define VR_BIND_FIELD(T, M, m, Get, V, v, f) \
   VR_BIND(T, M, m, Get, V, v, view->f = value)
 
+#ifndef NDEBUG
 #define VR_BIND_LAMBDA(...) base::BindRepeating(__VA_ARGS__), #__VA_ARGS__
+#else
+#define VR_BIND_LAMBDA(...) base::BindRepeating(__VA_ARGS__)
+#endif
 
 }  // namespace vr
 
diff --git a/chrome/browser/vr/databinding/vector_binding_unittest.cc b/chrome/browser/vr/databinding/vector_binding_unittest.cc
index d758e3d..2ca679ad 100644
--- a/chrome/browser/vr/databinding/vector_binding_unittest.cc
+++ b/chrome/browser/vr/databinding/vector_binding_unittest.cc
@@ -56,8 +56,11 @@
   std::unique_ptr<View> view = std::make_unique<View>();
   element->set_view(view.get());
   element->bindings().push_back(std::make_unique<Binding<int>>(
-      base::BindRepeating(&GetValue, base::Unretained(element)),
-      base::BindRepeating(&SetValue, base::Unretained(element))));
+      VR_BIND_LAMBDA([](ElemBinding* e) { return GetValue(e); },
+                     base::Unretained(element)),
+      VR_BIND_LAMBDA(
+          [](ElemBinding* e, const int& value) { SetValue(e, value); },
+          base::Unretained(element))));
   registry->AddView(std::move(view));
 }
 
diff --git a/chrome/browser/vr/elements/ui_element_unittest.cc b/chrome/browser/vr/elements/ui_element_unittest.cc
index d822b62..19e1cea 100644
--- a/chrome/browser/vr/elements/ui_element_unittest.cc
+++ b/chrome/browser/vr/elements/ui_element_unittest.cc
@@ -444,9 +444,9 @@
   parent->SetVisible(false);
   parent->SetTransitionedProperties({OPACITY});
   parent->AddBinding(std::make_unique<Binding<bool>>(
-      base::BindRepeating([](bool* value) { return *value; },
-                          base::Unretained(&value)),
-      base::BindRepeating(
+      VR_BIND_LAMBDA([](bool* value) { return *value; },
+                     base::Unretained(&value)),
+      VR_BIND_LAMBDA(
           [](UiElement* e, const bool& value) { e->SetVisible(value); },
           parent_ptr)));
 
@@ -455,9 +455,9 @@
   child->SetVisible(false);
   child->SetTransitionedProperties({OPACITY});
   child->AddBinding(std::make_unique<Binding<bool>>(
-      base::BindRepeating([](bool* value) { return *value; },
-                          base::Unretained(&value)),
-      base::BindRepeating(
+      VR_BIND_LAMBDA([](bool* value) { return *value; },
+                     base::Unretained(&value)),
+      VR_BIND_LAMBDA(
           [](UiElement* e, const bool& value) { e->SetVisible(value); },
           child_ptr)));
 
diff --git a/chrome/browser/vr/ui_scene_creator.cc b/chrome/browser/vr/ui_scene_creator.cc
index 3c3b43d..a7925e4 100644
--- a/chrome/browser/vr/ui_scene_creator.cc
+++ b/chrome/browser/vr/ui_scene_creator.cc
@@ -92,18 +92,20 @@
   view->AddBinding(std::make_unique<Binding<SkColor>>(
       base::BindRepeating([](Model* m, C c) { return (m->color_scheme()).*c; },
                           base::Unretained(model), color),
+#ifndef NDEBUG
       color_string,
+#endif
       base::BindRepeating(
           [](V* v, S s, const SkColor& value) { (v->*s)(value); },
-          base::Unretained(view), setter),
-      setter_string));
+          base::Unretained(view), setter)
+#ifndef NDEBUG
+          ,
+      setter_string
+#endif
+      ));
 }
 
-#ifndef NDEBUG
 #define VR_BIND_COLOR(m, v, c, s) BindColor(m, v, c, #c, s, #s)
-#else
-#define VR_BIND_COLOR(m, v, c, s) BindColor(m, v, c, "", s, "")
-#endif
 
 template <typename V, typename C, typename S>
 void BindButtonColors(Model* model,
@@ -115,18 +117,20 @@
   view->AddBinding(std::make_unique<Binding<ButtonColors>>(
       base::BindRepeating([](Model* m, C c) { return (m->color_scheme()).*c; },
                           base::Unretained(model), colors),
+#ifndef NDEBUG
       colors_string,
+#endif
       base::BindRepeating(
           [](V* v, S s, const ButtonColors& value) { (v->*s)(value); },
-          base::Unretained(view), setter),
-      setter_string));
+          base::Unretained(view), setter)
+#ifndef NDEBUG
+          ,
+      setter_string
+#endif
+      ));
 }
 
-#ifndef NDEBUG
 #define VR_BIND_BUTTON_COLORS(m, v, c, s) BindButtonColors(m, v, c, #c, s, #s)
-#else
-#define VR_BIND_BUTTON_COLORS(m, v, c, s) BindButtonColors(m, v, c, "", s, "")
-#endif
 
 #define VR_BIND_VISIBILITY(v, c) \
   v->AddBinding(                 \
@@ -808,7 +812,7 @@
               hosted_ui.get(),
               view->SetTranslate(0, 0, value ? 0 : kHostedUiShadowOffset)));
   hosted_ui->AddBinding(std::make_unique<Binding<std::pair<bool, gfx::SizeF>>>(
-      base::BindRepeating(
+      VR_BIND_LAMBDA(
           [](Model* m) {
             return std::pair<bool, gfx::SizeF>(
                 m->hosted_platform_ui.floating,
@@ -816,7 +820,7 @@
                            m->hosted_platform_ui.rect.height()));
           },
           base::Unretained(model)),
-      base::BindRepeating(
+      VR_BIND_LAMBDA(
           [](PlatformUiElement* dialog,
              const std::pair<bool, gfx::SizeF>& value) {
             if (!value.first && value.second.width() > 0) {
@@ -840,7 +844,7 @@
   shadow->SetTransitionedProperties({OPACITY});
   shadow->AddChild(std::move(hosted_ui));
   shadow->AddBinding(std::make_unique<Binding<std::pair<bool, gfx::PointF>>>(
-      base::BindRepeating(
+      VR_BIND_LAMBDA(
           [](Model* m) {
             return std::pair<bool, gfx::PointF>(
                 m->hosted_platform_ui.floating,
@@ -848,7 +852,7 @@
                             m->hosted_platform_ui.rect.y()));
           },
           base::Unretained(model)),
-      base::BindRepeating(
+      VR_BIND_LAMBDA(
           [](Shadow* shadow, const std::pair<bool, gfx::PointF>& value) {
             if (value.first /* floating */) {
               shadow->set_x_centering(LEFT);
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
index 8397f15..b0608e3 100644
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -349,10 +349,6 @@
 #endif
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
-// Enabled or disabled the Material Design version of chrome://extensions.
-const base::Feature kMaterialDesignExtensions{"MaterialDesignExtensions",
-                                              base::FEATURE_ENABLED_BY_DEFAULT};
-
 // Sets whether dismissing the new-tab-page override bubble counts as
 // acknowledgement.
 const base::Feature kAcknowledgeNtpOverrideOnDeactivate{
@@ -659,4 +655,9 @@
 
 #endif  // defined(OS_CHROMEOS)
 
+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
+// Enables all upcoming UI features.
+const base::Feature kUiFood{"UiFood", base::FEATURE_DISABLED_BY_DEFAULT};
+#endif
+
 }  // namespace features
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h
index 7d619f0..2f02059c 100644
--- a/chrome/common/chrome_features.h
+++ b/chrome/common/chrome_features.h
@@ -197,7 +197,6 @@
 #endif
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
-extern const base::Feature kMaterialDesignExtensions;
 extern const base::Feature kAcknowledgeNtpOverrideOnDeactivate;
 #endif
 
@@ -356,6 +355,10 @@
 extern const base::Feature kCrOSEnableUSMUserService;
 #endif  // defined(OS_CHROMEOS)
 
+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
+extern const base::Feature kUiFood;
+#endif
+
 bool PrefServiceEnabled();
 
 // DON'T ADD RANDOM STUFF HERE. Put it in the main section above in
diff --git a/chrome/renderer/page_load_metrics/page_timing_metrics_sender.cc b/chrome/renderer/page_load_metrics/page_timing_metrics_sender.cc
index 9337c26d..ce4b02a6 100644
--- a/chrome/renderer/page_load_metrics/page_timing_metrics_sender.cc
+++ b/chrome/renderer/page_load_metrics/page_timing_metrics_sender.cc
@@ -7,6 +7,8 @@
 #include <utility>
 
 #include "base/callback.h"
+#include "base/feature_list.h"
+#include "base/metrics/field_trial_params.h"
 #include "base/time/time.h"
 #include "base/timer/timer.h"
 #include "chrome/common/page_load_metrics/page_load_metrics_constants.h"
@@ -16,6 +18,8 @@
 
 namespace {
 const int kInitialTimerDelayMillis = 50;
+const base::Feature kPageLoadMetricsTimerDelayFeature{
+    "PageLoadMetricsTimerDelay", base::FEATURE_DISABLED_BY_DEFAULT};
 }  // namespace
 
 PageTimingMetricsSender::PageTimingMetricsSender(
@@ -26,7 +30,11 @@
       timer_(std::move(timer)),
       last_timing_(std::move(initial_timing)),
       metadata_(mojom::PageLoadMetadata::New()),
-      new_features_(mojom::PageLoadFeatures::New()) {
+      new_features_(mojom::PageLoadFeatures::New()),
+      buffer_timer_delay_ms_(kBufferTimerDelayMillis) {
+  buffer_timer_delay_ms_ = base::GetFieldTrialParamByFeatureAsInt(
+      kPageLoadMetricsTimerDelayFeature, "BufferTimerDelayMillis",
+      kBufferTimerDelayMillis /* default value */);
   if (!IsEmpty(*last_timing_)) {
     EnsureSendTimer();
   }
@@ -93,7 +101,7 @@
     // Send the first IPC eagerly to make sure the receiving side knows we're
     // sending metrics as soon as possible.
     int delay_ms =
-        have_sent_ipc_ ? kBufferTimerDelayMillis : kInitialTimerDelayMillis;
+        have_sent_ipc_ ? buffer_timer_delay_ms_ : kInitialTimerDelayMillis;
     timer_->Start(
         FROM_HERE, base::TimeDelta::FromMilliseconds(delay_ms),
         base::Bind(&PageTimingMetricsSender::SendNow, base::Unretained(this)));
diff --git a/chrome/renderer/page_load_metrics/page_timing_metrics_sender.h b/chrome/renderer/page_load_metrics/page_timing_metrics_sender.h
index 427392f2d..730e3e3 100644
--- a/chrome/renderer/page_load_metrics/page_timing_metrics_sender.h
+++ b/chrome/renderer/page_load_metrics/page_timing_metrics_sender.h
@@ -64,6 +64,10 @@
 
   bool have_sent_ipc_ = false;
 
+  // Field trial for alternating page timing metrics sender buffer timer delay.
+  // https://crbug.com/847269.
+  int buffer_timer_delay_ms_;
+
   DISALLOW_COPY_AND_ASSIGN(PageTimingMetricsSender);
 };
 
diff --git a/chrome/renderer/resources/extensions/automation/automation_node.js b/chrome/renderer/resources/extensions/automation/automation_node.js
index ef5a3573..251cdc2 100644
--- a/chrome/renderer/resources/extensions/automation/automation_node.js
+++ b/chrome/renderer/resources/extensions/automation/automation_node.js
@@ -1160,7 +1160,6 @@
   $Function.call(AutomationNodeImpl, this, this);
   this.treeID = treeID;
   this.axNodeDataCache_ = {__proto__: null};
-  this.actionRequestIDToCallback_ = {__proto__: null};
 }
 
 utils.defineProperty(AutomationRootNodeImpl, 'idToAutomationRootNode_',
@@ -1190,6 +1189,18 @@
   delete AutomationRootNodeImpl.idToAutomationRootNode_[treeID];
 });
 
+/**
+ * A counter keeping track of IDs to use for mapping action requests to
+ * their callback function.
+ */
+AutomationRootNodeImpl.actionRequestCounter = 0;
+
+/**
+ * A map from a request ID to the corresponding callback function to call
+ * when the action response event is received.
+ */
+AutomationRootNodeImpl.actionRequestIDToCallback = {};
+
 AutomationRootNodeImpl.prototype = {
   __proto__: AutomationNodeImpl.prototype,
 
@@ -1210,10 +1221,6 @@
    */
   axNodeDataCache_: null,
 
-  actionRequestCounter_: 0,
-
-  actionRequestIDToCallback_: null,
-
   get id() {
     var result = GetRootID(this.treeID);
 
@@ -1341,14 +1348,15 @@
   },
 
   addActionResultCallback: function(callback) {
-    this.actionRequestIDToCallback_[++this.actionRequestCounter_] = callback;
-    return this.actionRequestCounter_;
+    AutomationRootNodeImpl.actionRequestIDToCallback[
+        ++AutomationRootNodeImpl.actionRequestCounter] = callback;
+    return AutomationRootNodeImpl.actionRequestCounter;
   },
 
   onActionResult: function(requestID, result) {
-    if (requestID in this.actionRequestIDToCallback_) {
-      this.actionRequestIDToCallback_[requestID](result);
-      delete this.actionRequestIDToCallback_[requestID];
+    if (requestID in AutomationRootNodeImpl.actionRequestIDToCallback) {
+      AutomationRootNodeImpl.actionRequestIDToCallback[requestID](result);
+      delete AutomationRootNodeImpl.actionRequestIDToCallback[requestID];
     }
   },
 
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 81377ea..a76e6ba 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -4468,13 +4468,6 @@
       "//chrome/install_static/test:test_support",
     ]
   }
-
-  if (is_chromeos) {
-    deps = [
-      "//ash:test_support_with_content",
-      "//ash/public/cpp",
-    ]
-  }
 }
 
 if (is_win) {
diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/test/ChromeJUnit4ClassRunner.java b/chrome/test/android/javatests/src/org/chromium/chrome/test/ChromeJUnit4ClassRunner.java
index 3e642fab..64c2db27 100644
--- a/chrome/test/android/javatests/src/org/chromium/chrome/test/ChromeJUnit4ClassRunner.java
+++ b/chrome/test/android/javatests/src/org/chromium/chrome/test/ChromeJUnit4ClassRunner.java
@@ -11,59 +11,55 @@
 import com.google.android.gms.common.ConnectionResult;
 import com.google.android.gms.common.GoogleApiAvailability;
 
+import org.junit.rules.TestRule;
 import org.junit.runners.model.InitializationError;
 
-import org.chromium.base.CollectionUtil;
 import org.chromium.base.CommandLine;
-import org.chromium.base.CommandLineInitUtil;
 import org.chromium.base.ThreadUtils;
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.BaseTestResult.PreTestHook;
-import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.RestrictionSkipCheck;
 import org.chromium.base.test.util.SkipCheck;
 import org.chromium.chrome.browser.ChromeVersionInfo;
+import org.chromium.chrome.browser.vr_shell.VrDaydreamApi;
 import org.chromium.chrome.browser.vr_shell.VrShellDelegate;
 import org.chromium.chrome.test.util.ChromeRestriction;
-import org.chromium.content.browser.test.ChildProcessAllocatorSettingsHook;
+import org.chromium.chrome.test.util.browser.ChromeModernDesign;
+import org.chromium.chrome.test.util.browser.Features;
+import org.chromium.content.browser.test.ContentJUnit4ClassRunner;
 import org.chromium.policy.test.annotations.Policies;
-import org.chromium.ui.test.util.UiDisableIfSkipCheck;
-import org.chromium.ui.test.util.UiRestrictionSkipCheck;
 
 import java.util.List;
-import java.util.concurrent.Callable;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.FutureTask;
 
 /**
  * A custom runner for //chrome JUnit4 tests.
  */
-public class ChromeJUnit4ClassRunner extends BaseJUnit4ClassRunner {
+public class ChromeJUnit4ClassRunner extends ContentJUnit4ClassRunner {
     /**
      * Create a ChromeJUnit4ClassRunner to run {@code klass} and initialize values
      *
      * @throws InitializationError if the test class malformed
      */
     public ChromeJUnit4ClassRunner(final Class<?> klass) throws InitializationError {
-        super(klass, defaultSkipChecks(), defaultPreTestHooks());
-    }
-
-    private static List<SkipCheck> defaultSkipChecks() {
-        return CollectionUtil.newArrayList(
-                new ChromeRestrictionSkipCheck(InstrumentationRegistry.getTargetContext()),
-                new UiRestrictionSkipCheck(InstrumentationRegistry.getTargetContext()),
-                new UiDisableIfSkipCheck(InstrumentationRegistry.getTargetContext()));
-    }
-
-    private static List<PreTestHook> defaultPreTestHooks() {
-        return CollectionUtil.newArrayList(CommandLineFlags.getRegistrationHook(),
-                new ChildProcessAllocatorSettingsHook(), Policies.getRegistrationHook());
+        super(klass);
     }
 
     @Override
-    protected void initCommandLineForTest() {
-        CommandLineInitUtil.initCommandLine(CommandLineFlags.getTestCmdLineFile());
+    protected List<SkipCheck> getSkipChecks() {
+        return addToList(super.getSkipChecks(),
+                new ChromeRestrictionSkipCheck(InstrumentationRegistry.getTargetContext()));
+    }
+
+    @Override
+    protected List<PreTestHook> getPreTestHooks() {
+        return addToList(super.getPreTestHooks(), Policies.getRegistrationHook());
+    }
+
+    @Override
+    protected List<TestRule> getDefaultTestRules() {
+        return addToList(super.getDefaultTestRules(), new Features.InstrumentationProcessor(),
+                new ChromeModernDesign.Processor());
     }
 
     private static class ChromeRestrictionSkipCheck extends RestrictionSkipCheck {
@@ -76,22 +72,16 @@
         }
 
         private boolean isDaydreamViewPaired() {
-            if (VrShellDelegate.getVrDaydreamApi() == null) {
+            final VrDaydreamApi daydreamApi = VrShellDelegate.getVrDaydreamApi();
+            if (daydreamApi == null) {
                 return false;
             }
+
             // isDaydreamCurrentViewer() creates a concrete instance of DaydreamApi,
             // which can only be done on the main thread
-            FutureTask<Boolean> checker = new FutureTask<>(new Callable<Boolean>() {
-                @Override
-                public Boolean call() {
-                    return VrShellDelegate.getVrDaydreamApi().isDaydreamCurrentViewer();
-                }
-            });
-            ThreadUtils.runOnUiThreadBlocking(checker);
             try {
-                return checker.get().booleanValue();
-            } catch (CancellationException | InterruptedException | ExecutionException
-                    | IllegalArgumentException e) {
+                return ThreadUtils.runOnUiThreadBlocking(daydreamApi::isDaydreamCurrentViewer);
+            } catch (CancellationException | ExecutionException | IllegalArgumentException e) {
                 return false;
             }
         }
diff --git a/chrome/test/base/chrome_unit_test_suite.cc b/chrome/test/base/chrome_unit_test_suite.cc
index b5f2d5ba..95610db 100644
--- a/chrome/test/base/chrome_unit_test_suite.cc
+++ b/chrome/test/base/chrome_unit_test_suite.cc
@@ -31,11 +31,7 @@
 #include "ui/gl/test/gl_surface_test_support.h"
 
 #if defined(OS_CHROMEOS)
-#include "ash/public/cpp/config.h"
-#include "ash/test/ash_test_helper.h"
 #include "chromeos/chromeos_paths.h"
-#include "ui/aura/env.h"
-#include "ui/aura/test/aura_test_context_factory.h"
 #endif
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
@@ -116,16 +112,6 @@
 
   base::DiscardableMemoryAllocator::SetInstance(&discardable_memory_allocator_);
   ProfileShortcutManager::DisableForUnitTests();
-
-#if defined(OS_CHROMEOS)
-  aura::Env* env = aura::Env::GetInstance();
-  if (env->mode() == aura::Env::Mode::MUS) {
-    ash::AshTestHelper::set_config(ash::Config::MUS);
-    context_factory_ = std::make_unique<aura::test::AuraTestContextFactory>();
-    env->set_context_factory(context_factory_.get());
-    env->set_context_factory_private(nullptr);
-  }
-#endif
 }
 
 void ChromeUnitTestSuite::Shutdown() {
diff --git a/chrome/test/base/chrome_unit_test_suite.h b/chrome/test/base/chrome_unit_test_suite.h
index 1e2121f..42dc9c3a 100644
--- a/chrome/test/base/chrome_unit_test_suite.h
+++ b/chrome/test/base/chrome_unit_test_suite.h
@@ -5,20 +5,12 @@
 #ifndef CHROME_TEST_BASE_CHROME_UNIT_TEST_SUITE_H_
 #define CHROME_TEST_BASE_CHROME_UNIT_TEST_SUITE_H_
 
-#include <memory>
-
 #include "base/compiler_specific.h"
 #include "base/files/file_path.h"
 #include "base/macros.h"
 #include "base/test/test_discardable_memory_allocator.h"
 #include "chrome/test/base/chrome_test_suite.h"
 
-#if defined(OS_CHROMEOS)
-namespace ui {
-class ContextFactory;
-}
-#endif
-
 // Test suite for unit tests. Creates additional stub services that are not
 // needed for browser tests (e.g. a TestingBrowserProcess).
 class ChromeUnitTestSuite : public ChromeTestSuite {
@@ -39,12 +31,6 @@
  private:
   base::TestDiscardableMemoryAllocator discardable_memory_allocator_;
 
-#if defined(OS_CHROMEOS)
-  // Only used when running in mus/mash, and is set as the context_factory
-  // on aura::Env.
-  std::unique_ptr<ui::ContextFactory> context_factory_;
-#endif
-
   DISALLOW_COPY_AND_ASSIGN(ChromeUnitTestSuite);
 };
 
diff --git a/chrome/test/chromedriver/BUILD.gn b/chrome/test/chromedriver/BUILD.gn
index c4ade783..b22e8f6e 100644
--- a/chrome/test/chromedriver/BUILD.gn
+++ b/chrome/test/chromedriver/BUILD.gn
@@ -424,7 +424,6 @@
     "net/test_http_server.cc",
     "net/test_http_server.h",
     "net/websocket_unittest.cc",
-    "run_all_unittests.cc",
   ]
 
   # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
@@ -433,12 +432,10 @@
   deps = [
     ":lib",
     "//base",
-    "//mojo/edk",
+    "//base/test:run_all_unittests",
     "//net",
+    "//net:http_server",
     "//net:test_support",
-    "//services/network:network_service",
-    "//services/network/public/cpp",
-    "//services/network/public/mojom",
     "//testing/gtest",
     "//ui/events:test_support",
     "//url",
diff --git a/chrome/test/chromedriver/OWNERS b/chrome/test/chromedriver/OWNERS
index 65e456d..cf039e3 100644
--- a/chrome/test/chromedriver/OWNERS
+++ b/chrome/test/chromedriver/OWNERS
@@ -1,6 +1,7 @@
 # primary reviewer
 johnchen@chromium.org
 kereliuk@chromium.org
+crouleau@chromium.org
 
 # backup reviewer
 jbudorick@chromium.org
diff --git a/chrome/test/chromedriver/chrome/adb_impl.cc b/chrome/test/chromedriver/chrome/adb_impl.cc
index e685a7d..acd002e0 100644
--- a/chrome/test/chromedriver/chrome/adb_impl.cc
+++ b/chrome/test/chromedriver/chrome/adb_impl.cc
@@ -140,9 +140,14 @@
                                      adb_command_status.message());
   base::StringToInt(response, local_port_output);
   if (*local_port_output == 0) {
-    return Status(kUnknownError, "Failed to forward ports to device " +
-                                     device_serial +
-                                     ". No port chosen: " + response + ".");
+    return Status(
+        kUnknownError,
+        "Failed to forward ports to device " + device_serial +
+            ". No port chosen: " + response +
+            ". Perhaps your adb version is out of date. "
+            "ChromeDriver 2.39 and newer require adb version 1.0.38 or newer. "
+            "Run 'adb version' in your terminal of the host device to find "
+            "your version of adb.");
   }
 
   return Status(kOk);
diff --git a/chrome/test/chromedriver/chrome/chrome_desktop_impl.cc b/chrome/test/chromedriver/chrome/chrome_desktop_impl.cc
index dcd9006..79927bea 100644
--- a/chrome/test/chromedriver/chrome/chrome_desktop_impl.cc
+++ b/chrome/test/chromedriver/chrome/chrome_desktop_impl.cc
@@ -204,15 +204,6 @@
 }
 
 Status ChromeDesktopImpl::QuitImpl() {
-  Status status = devtools_websocket_client_->ConnectIfNecessary();
-  if (status.IsOk()) {
-    status = devtools_websocket_client_->SendCommandAndIgnoreResponse(
-        "Browser.close", base::DictionaryValue());
-    if (status.IsOk() && process_.WaitForExitWithTimeout(
-                             base::TimeDelta::FromSeconds(10), nullptr))
-      return status;
-  }
-
   // If the Chrome session uses a custom user data directory, try sending a
   // SIGTERM signal before SIGKILL, so that Chrome has a chance to write
   // everything back out to the user data directory and exit cleanly. If we're
diff --git a/chrome/test/chromedriver/net/net_util_unittest.cc b/chrome/test/chromedriver/net/net_util_unittest.cc
index b3e74b6..2107f8306 100644
--- a/chrome/test/chromedriver/net/net_util_unittest.cc
+++ b/chrome/test/chromedriver/net/net_util_unittest.cc
@@ -15,27 +15,23 @@
 #include "base/single_thread_task_runner.h"
 #include "base/strings/stringprintf.h"
 #include "base/synchronization/waitable_event.h"
-#include "base/test/bind_test_util.h"
 #include "base/test/scoped_task_environment.h"
 #include "base/threading/thread.h"
 #include "chrome/test/chromedriver/net/url_request_context_getter.h"
-#include "mojo/public/cpp/bindings/interface_request.h"
 #include "net/base/ip_endpoint.h"
 #include "net/base/net_errors.h"
 #include "net/log/net_log_source.h"
+#include "net/server/http_server.h"
+#include "net/server/http_server_request_info.h"
 #include "net/socket/tcp_server_socket.h"
 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
 #include "net/url_request/url_request_context_getter.h"
-#include "services/network/network_context.h"
-#include "services/network/network_service.h"
-#include "services/network/public/cpp/server/http_server.h"
-#include "services/network/public/cpp/server/http_server_request_info.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace {
 
 class FetchUrlTest : public testing::Test,
-                     public network::server::HttpServer::Delegate {
+                     public net::HttpServer::Delegate {
  public:
   FetchUrlTest()
       : io_thread_("io"),
@@ -45,79 +41,44 @@
     base::Thread::Options options(base::MessageLoop::TYPE_IO, 0);
     CHECK(io_thread_.StartWithOptions(options));
     context_getter_ = new URLRequestContextGetter(io_thread_.task_runner());
-  }
-
-  void StartOnServerThread(base::WaitableEvent* event) {
-    network_service_ = network::NetworkService::CreateForTesting();
-
-    network::mojom::NetworkContextParamsPtr context_params =
-        network::mojom::NetworkContextParams::New();
-    // Use a fixed proxy config, to avoid dependencies on local network
-    // configuration.
-    context_params->initial_proxy_config =
-        net::ProxyConfigWithAnnotation::CreateDirect();
-    network_context_ = std::make_unique<network::NetworkContext>(
-        network_service_.get(), mojo::MakeRequest(&network_context_ptr_),
-        std::move(context_params));
-
-    int net_error = net::ERR_FAILED;
-    base::Optional<net::IPEndPoint> local_address;
-    network::mojom::TCPServerSocketPtr server_socket;
-    base::RunLoop run_loop;
-    network_context_->CreateTCPServerSocket(
-        net::IPEndPoint(net::IPAddress::IPv6Localhost(), 0), 1 /* backlog */,
-        net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS),
-        mojo::MakeRequest(&server_socket),
-        base::BindLambdaForTesting(
-            [&](int result, const base::Optional<net::IPEndPoint>& local_addr) {
-              net_error = result;
-              local_address = local_addr;
-              run_loop.Quit();
-            }));
-    run_loop.Run();
-    EXPECT_EQ(net::OK, net_error);
-
-    server_url_ = base::StringPrintf("http://[::1]:%d", local_address->port());
-
-    server_.reset(
-        new network::server::HttpServer(std::move(server_socket), this));
-    event->Signal();
-  }
-
-  void StopOnServerThread(base::WaitableEvent* event) {
-    server_.reset(nullptr);
-    network_context_.reset(nullptr);
-    network_service_.reset(nullptr);
-    event->Signal();
-  }
-
-  void SetUp() override {
     base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC,
                               base::WaitableEvent::InitialState::NOT_SIGNALED);
     io_thread_.task_runner()->PostTask(
-        FROM_HERE, base::BindOnce(&FetchUrlTest::StartOnServerThread,
+        FROM_HERE, base::BindOnce(&FetchUrlTest::InitOnIO,
                                   base::Unretained(this), &event));
     event.Wait();
   }
 
-  void TearDown() override {
-    if (!io_thread_.IsRunning())
-      return;
+  ~FetchUrlTest() override {
     base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC,
                               base::WaitableEvent::InitialState::NOT_SIGNALED);
     io_thread_.task_runner()->PostTask(
-        FROM_HERE, base::BindOnce(&FetchUrlTest::StopOnServerThread,
+        FROM_HERE, base::BindOnce(&FetchUrlTest::DestroyServerOnIO,
                                   base::Unretained(this), &event));
     event.Wait();
-    io_thread_.Stop();
   }
 
-  // Overridden from network::server::HttpServer::Delegate:
+  void InitOnIO(base::WaitableEvent* event) {
+    std::unique_ptr<net::ServerSocket> server_socket(
+        new net::TCPServerSocket(NULL, net::NetLogSource()));
+    server_socket->ListenWithAddressAndPort("127.0.0.1", 0, 1);
+    server_.reset(new net::HttpServer(std::move(server_socket), this));
+    net::IPEndPoint address;
+    CHECK_EQ(net::OK, server_->GetLocalAddress(&address));
+    server_url_ = base::StringPrintf("http://127.0.0.1:%d", address.port());
+    event->Signal();
+  }
+
+  void DestroyServerOnIO(base::WaitableEvent* event) {
+    server_.reset(NULL);
+    event->Signal();
+  }
+
+  // Overridden from net::HttpServer::Delegate:
   void OnConnect(int connection_id) override {}
 
-  void OnHttpRequest(
-      int connection_id,
-      const network::server::HttpServerRequestInfo& info) override {
+  void OnHttpRequest(int connection_id,
+                     const net::HttpServerRequestInfo& info) override {
     switch (response_) {
       case kSendHello:
         server_->Send200(connection_id, "hello", "text/plain",
@@ -134,9 +95,8 @@
     }
   }
 
-  void OnWebSocketRequest(
-      int connection_id,
-      const network::server::HttpServerRequestInfo& info) override {}
+  void OnWebSocketRequest(int connection_id,
+                          const net::HttpServerRequestInfo& info) override {}
   void OnWebSocketMessage(int connection_id, const std::string& data) override {
   }
   void OnClose(int connection_id) override {}
@@ -150,20 +110,15 @@
 
   base::Thread io_thread_;
   ServerResponse response_;
-  std::unique_ptr<network::server::HttpServer> server_;
-  base::test::ScopedTaskEnvironment scoped_task_environment_;
-  std::unique_ptr<network::NetworkService> network_service_;
-  std::unique_ptr<network::NetworkContext> network_context_;
-
-  network::mojom::NetworkContextPtr network_context_ptr_;
+  std::unique_ptr<net::HttpServer> server_;
   scoped_refptr<URLRequestContextGetter> context_getter_;
   std::string server_url_;
+  base::test::ScopedTaskEnvironment scoped_task_environment_;
 };
 
 }  // namespace
 
 TEST_F(FetchUrlTest, Http200) {
-  response_ = kSendHello;
   std::string response("stuff");
   ASSERT_TRUE(FetchUrl(server_url_, context_getter_.get(), &response));
   ASSERT_STREQ("hello", response.c_str());
diff --git a/chrome/test/chromedriver/net/sync_websocket_impl_unittest.cc b/chrome/test/chromedriver/net/sync_websocket_impl_unittest.cc
index 24d4ca9..362fca0 100644
--- a/chrome/test/chromedriver/net/sync_websocket_impl_unittest.cc
+++ b/chrome/test/chromedriver/net/sync_websocket_impl_unittest.cc
@@ -8,7 +8,6 @@
 #include "base/memory/ref_counted.h"
 #include "base/message_loop/message_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/test/scoped_task_environment.h"
 #include "base/threading/platform_thread.h"
 #include "base/threading/thread.h"
 #include "base/time/time.h"
@@ -24,9 +23,7 @@
 class SyncWebSocketImplTest : public testing::Test {
  protected:
   SyncWebSocketImplTest()
-      : task_environment_(
-            base::test::ScopedTaskEnvironment::MainThreadType::IO),
-        client_thread_("ClientThread"),
+      : client_thread_("ClientThread"),
         long_timeout_(base::TimeDelta::FromMinutes(1)) {}
   ~SyncWebSocketImplTest() override {}
 
@@ -41,7 +38,6 @@
 
   Timeout long_timeout() const { return Timeout(long_timeout_); }
 
-  base::test::ScopedTaskEnvironment task_environment_;
   base::Thread client_thread_;
   TestHttpServer server_;
   scoped_refptr<URLRequestContextGetter> context_getter_;
diff --git a/chrome/test/chromedriver/net/test_http_server.cc b/chrome/test/chromedriver/net/test_http_server.cc
index eeb7e4c..235b260 100644
--- a/chrome/test/chromedriver/net/test_http_server.cc
+++ b/chrome/test/chromedriver/net/test_http_server.cc
@@ -10,18 +10,15 @@
 #include "base/callback_helpers.h"
 #include "base/location.h"
 #include "base/message_loop/message_loop.h"
+#include "base/single_thread_task_runner.h"
 #include "base/strings/stringprintf.h"
-#include "base/test/bind_test_util.h"
-#include "base/test/scoped_task_environment.h"
 #include "base/time/time.h"
 #include "net/base/ip_endpoint.h"
 #include "net/base/net_errors.h"
 #include "net/log/net_log_source.h"
+#include "net/server/http_server_request_info.h"
 #include "net/socket/tcp_server_socket.h"
 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
-#include "services/network/network_context.h"
-#include "services/network/network_service.h"
-#include "services/network/public/cpp/server/http_server_request_info.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 const int kBufferSize = 100 * 1024 * 1024;  // 100 MB
@@ -95,7 +92,7 @@
 
 void TestHttpServer::OnWebSocketRequest(
     int connection_id,
-    const network::server::HttpServerRequestInfo& info) {
+    const net::HttpServerRequestInfo& info) {
   WebSocketRequestAction action;
   {
     base::AutoLock lock(action_lock_);
@@ -148,53 +145,26 @@
 
 void TestHttpServer::StartOnServerThread(bool* success,
                                          base::WaitableEvent* event) {
-  network_service_ = network::NetworkService::CreateForTesting();
+  std::unique_ptr<net::ServerSocket> server_socket(
+      new net::TCPServerSocket(NULL, net::NetLogSource()));
+  server_socket->ListenWithAddressAndPort("127.0.0.1", 0, 1);
+  server_.reset(new net::HttpServer(std::move(server_socket), this));
 
-  network::mojom::NetworkContextParamsPtr context_params =
-      network::mojom::NetworkContextParams::New();
-  // Use a fixed proxy config, to avoid dependencies on local network
-  // configuration.
-  context_params->initial_proxy_config =
-      net::ProxyConfigWithAnnotation::CreateDirect();
-
-  network_context_ = std::make_unique<network::NetworkContext>(
-      network_service_.get(), mojo::MakeRequest(&network_context_ptr_),
-      std::move(context_params));
-
-  int net_error = net::ERR_FAILED;
   net::IPEndPoint address;
-  base::RunLoop run_loop(base::RunLoop::Type::kNestableTasksAllowed);
-  network::mojom::TCPServerSocketPtr server_socket;
-  network_context_ptr_->CreateTCPServerSocket(
-      net::IPEndPoint(net::IPAddress::IPv6Localhost(), 0), 1 /* backlog */,
-      net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS),
-      mojo::MakeRequest(&server_socket),
-      base::BindLambdaForTesting(
-          [&](int result, const base::Optional<net::IPEndPoint>& local_addr) {
-            net_error = result;
-            address = local_addr.value();
-            run_loop.Quit();
-          }));
-  run_loop.Run();
-  EXPECT_EQ(net::OK, net_error);
-
-  server_ = std::make_unique<network::server::HttpServer>(
-      std::move(server_socket), this);
-
-  if (net_error == net::OK) {
+  int error = server_->GetLocalAddress(&address);
+  EXPECT_EQ(net::OK, error);
+  if (error == net::OK) {
     base::AutoLock lock(url_lock_);
-    web_socket_url_ = GURL(base::StringPrintf("ws://[::1]:%d", address.port()));
+    web_socket_url_ = GURL(base::StringPrintf("ws://127.0.0.1:%d",
+                                              address.port()));
   } else {
-    server_.reset(nullptr);
+    server_.reset(NULL);
   }
   *success = server_.get();
   event->Signal();
 }
 
 void TestHttpServer::StopOnServerThread(base::WaitableEvent* event) {
-  server_ = nullptr;
-  network_context_ptr_.reset();
-  network_context_ = nullptr;
-  network_service_ = nullptr;
+  server_.reset(NULL);
   event->Signal();
 }
diff --git a/chrome/test/chromedriver/net/test_http_server.h b/chrome/test/chromedriver/net/test_http_server.h
index 9579ad97..570e4b2 100644
--- a/chrome/test/chromedriver/net/test_http_server.h
+++ b/chrome/test/chromedriver/net/test_http_server.h
@@ -12,11 +12,8 @@
 #include "base/memory/ref_counted.h"
 #include "base/synchronization/lock.h"
 #include "base/synchronization/waitable_event.h"
-#include "base/test/scoped_task_environment.h"
 #include "base/threading/thread.h"
-#include "services/network/network_context.h"
-#include "services/network/network_service.h"
-#include "services/network/public/cpp/server/http_server.h"
+#include "net/server/http_server.h"
 #include "url/gurl.h"
 
 namespace base {
@@ -26,7 +23,7 @@
 // HTTP server for web socket testing purposes that runs on its own thread.
 // All public methods are thread safe and may be called on any thread, unless
 // noted otherwise.
-class TestHttpServer : public network::server::HttpServer::Delegate {
+class TestHttpServer : public net::HttpServer::Delegate {
  public:
   enum WebSocketRequestAction {
     kAccept,
@@ -66,14 +63,12 @@
   // Returns the web socket URL that points to the server.
   GURL web_socket_url() const;
 
-  // Overridden from network::server::HttpServer::Delegate:
+  // Overridden from net::HttpServer::Delegate:
   void OnConnect(int connection_id) override;
-  void OnHttpRequest(
-      int connection_id,
-      const network::server::HttpServerRequestInfo& info) override {}
-  void OnWebSocketRequest(
-      int connection_id,
-      const network::server::HttpServerRequestInfo& info) override;
+  void OnHttpRequest(int connection_id,
+                     const net::HttpServerRequestInfo& info) override {}
+  void OnWebSocketRequest(int connection_id,
+                          const net::HttpServerRequestInfo& info) override;
   void OnWebSocketMessage(int connection_id, const std::string& data) override;
   void OnClose(int connection_id) override;
 
@@ -84,7 +79,7 @@
   base::Thread thread_;
 
   // Access only on the server thread.
-  std::unique_ptr<network::server::HttpServer> server_;
+  std::unique_ptr<net::HttpServer> server_;
 
   // Access only on the server thread.
   std::set<int> connections_;
@@ -95,11 +90,6 @@
   mutable base::Lock url_lock_;
   GURL web_socket_url_;
 
-  std::unique_ptr<network::NetworkService> network_service_;
-  std::unique_ptr<network::NetworkContext> network_context_;
-
-  network::mojom::NetworkContextPtr network_context_ptr_;
-
   // Protects the action flags and |message_callback_|.
   base::Lock action_lock_;
   WebSocketRequestAction request_action_;
diff --git a/chrome/test/chromedriver/net/websocket_unittest.cc b/chrome/test/chromedriver/net/websocket_unittest.cc
index 72a353f..352a89f8 100644
--- a/chrome/test/chromedriver/net/websocket_unittest.cc
+++ b/chrome/test/chromedriver/net/websocket_unittest.cc
@@ -31,6 +31,12 @@
   run_loop->Quit();
 }
 
+void RunPending(base::MessageLoop* loop) {
+  base::RunLoop run_loop;
+  loop->task_runner()->PostTask(FROM_HERE, run_loop.QuitClosure());
+  run_loop.Run();
+}
+
 class Listener : public WebSocketListener {
  public:
   explicit Listener(const std::vector<std::string>& messages)
@@ -74,9 +80,7 @@
 
 class WebSocketTest : public testing::Test {
  public:
-  WebSocketTest()
-      : task_environment_(
-            base::test::ScopedTaskEnvironment::MainThreadType::IO) {}
+  WebSocketTest() {}
   ~WebSocketTest() override {}
 
   void SetUp() override { ASSERT_TRUE(server_.Start()); }
@@ -90,8 +94,8 @@
     std::unique_ptr<WebSocket> sock(new WebSocket(url, listener));
     base::RunLoop run_loop;
     sock->Connect(base::Bind(&OnConnectFinished, &run_loop, &error));
-    task_environment_.GetMainThreadTaskRunner()->PostDelayedTask(
-        FROM_HERE, run_loop.QuitClosure(), base::TimeDelta::FromSeconds(10));
+    loop_.task_runner()->PostDelayedTask(FROM_HERE, run_loop.QuitClosure(),
+                                         base::TimeDelta::FromSeconds(10));
     run_loop.Run();
     if (error == net::OK)
       return sock;
@@ -111,12 +115,12 @@
       ASSERT_TRUE(sock->Send(messages[i]));
     }
     base::RunLoop run_loop;
-    task_environment_.GetMainThreadTaskRunner()->PostDelayedTask(
-        FROM_HERE, run_loop.QuitClosure(), base::TimeDelta::FromSeconds(10));
+    loop_.task_runner()->PostDelayedTask(FROM_HERE, run_loop.QuitClosure(),
+                                         base::TimeDelta::FromSeconds(10));
     run_loop.Run();
   }
 
-  base::test::ScopedTaskEnvironment task_environment_;
+  base::MessageLoopForIO loop_;
   TestHttpServer server_;
 };
 
@@ -130,6 +134,7 @@
 TEST_F(WebSocketTest, Connect) {
   CloseListener listener(NULL);
   ASSERT_TRUE(CreateWebSocket(server_.web_socket_url(), &listener));
+  RunPending(&loop_);
   ASSERT_TRUE(server_.WaitForConnectionsToClose());
 }
 
@@ -142,6 +147,7 @@
   server_.SetRequestAction(TestHttpServer::kNotFound);
   CloseListener listener(NULL);
   ASSERT_FALSE(CreateWebSocket(server_.web_socket_url(), NULL));
+  RunPending(&loop_);
   ASSERT_TRUE(server_.WaitForConnectionsToClose());
 }
 
@@ -158,8 +164,8 @@
   std::unique_ptr<WebSocket> sock(CreateConnectedWebSocket(&listener));
   ASSERT_TRUE(sock);
   ASSERT_TRUE(sock->Send("hi"));
-  task_environment_.GetMainThreadTaskRunner()->PostDelayedTask(
-      FROM_HERE, run_loop.QuitClosure(), base::TimeDelta::FromSeconds(10));
+  loop_.task_runner()->PostDelayedTask(FROM_HERE, run_loop.QuitClosure(),
+                                       base::TimeDelta::FromSeconds(10));
   run_loop.Run();
 }
 
@@ -171,8 +177,8 @@
   server_.Stop();
 
   sock->Send("hi");
-  task_environment_.GetMainThreadTaskRunner()->PostDelayedTask(
-      FROM_HERE, run_loop.QuitClosure(), base::TimeDelta::FromSeconds(10));
+  loop_.task_runner()->PostDelayedTask(FROM_HERE, run_loop.QuitClosure(),
+                                       base::TimeDelta::FromSeconds(10));
   run_loop.Run();
   ASSERT_FALSE(sock->Send("hi"));
 }
diff --git a/chrome/test/chromedriver/run_all_unittests.cc b/chrome/test/chromedriver/run_all_unittests.cc
deleted file mode 100644
index 5b10a44..0000000
--- a/chrome/test/chromedriver/run_all_unittests.cc
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <memory>
-
-#include "base/bind.h"
-#include "base/message_loop/message_loop.h"
-#include "base/test/launcher/unit_test_launcher.h"
-#include "base/test/test_io_thread.h"
-#include "base/test/test_suite.h"
-#include "build/build_config.h"
-#include "mojo/edk/embedder/embedder.h"
-
-int main(int argc, char** argv) {
-  base::TestSuite test_suite(argc, argv);
-
-  mojo::edk::Init();
-
-  return base::LaunchUnitTests(
-      argc, argv,
-      base::BindOnce(&base::TestSuite::Run, base::Unretained(&test_suite)));
-}
diff --git a/chrome/test/data/extensions/api_test/webrequest/test_auth_required.js b/chrome/test/data/extensions/api_test/webrequest/test_auth_required.js
index 7e6b779..6b6c5ac 100644
--- a/chrome/test/data/extensions/api_test/webrequest/test_auth_required.js
+++ b/chrome/test/data/extensions/api_test/webrequest/test_auth_required.js
@@ -55,6 +55,7 @@
             challenger: {host: testServer, port: testServerPort},
             responseHeadersExist: true,
             statusLine: "HTTP/1.1 401 Unauthorized",
+            statusCode: 401,
           }
         },
         { label: "onResponseStarted",
@@ -134,6 +135,7 @@
             challenger: {host: testServer, port: testServerPort},
             responseHeadersExist: true,
             statusLine: "HTTP/1.1 401 Unauthorized",
+            statusCode: 401,
           }
         },
         { label: "onResponseStarted",
@@ -215,6 +217,7 @@
             challenger: {host: testServer, port: testServerPort},
             responseHeadersExist: true,
             statusLine: "HTTP/1.1 401 Unauthorized",
+            statusCode: 401,
           },
           retval: {cancel: true}
         },
@@ -298,6 +301,7 @@
             challenger: {host: testServer, port: testServerPort},
             responseHeadersExist: true,
             statusLine: "HTTP/1.1 401 Unauthorized",
+            statusCode: 401,
           },
           retval: {authCredentials: {username: "foo", password: "secret"}}
         },
@@ -379,6 +383,7 @@
             challenger: {host: testServer, port: testServerPort},
             responseHeadersExist: true,
             statusLine: "HTTP/1.1 401 Unauthorized",
+            statusCode: 401,
           }
         },
         { label: "onResponseStarted",
@@ -460,6 +465,7 @@
             challenger: {host: testServer, port: testServerPort},
             responseHeadersExist: true,
             statusLine: "HTTP/1.1 401 Unauthorized",
+            statusCode: 401,
           },
           retval: {cancel: true}
         },
@@ -543,6 +549,7 @@
             challenger: {host: testServer, port: testServerPort},
             responseHeadersExist: true,
             statusLine: "HTTP/1.1 401 Unauthorized",
+            statusCode: 401,
           },
           retval: {authCredentials: {username: "foo", password: "secret"}}
         },
diff --git a/chrome/test/data/webui/extensions/a11y/extensions_a11y_test.js b/chrome/test/data/webui/extensions/a11y/extensions_a11y_test.js
index 4afcb538..8086d6a 100644
--- a/chrome/test/data/webui/extensions/a11y/extensions_a11y_test.js
+++ b/chrome/test/data/webui/extensions/a11y/extensions_a11y_test.js
@@ -12,7 +12,6 @@
 ]);
 GEN('#include "chrome/browser/ui/webui/extensions/' +
     'extension_settings_browsertest.h"');
-GEN('#include "chrome/common/chrome_features.h"');
 
 /**
  * Test fixture for Accessibility of Chrome Extensions.
@@ -25,11 +24,6 @@
     return 'chrome://extensions/';
   }
 
-  /** @override */
-  get featureList() {
-    return ['features::kMaterialDesignExtensions', ''];
-  }
-
   // Include files that define the mocha tests.
   get extraLibraries() {
     return PolymerTest.getLibraries(ROOT_PATH);
diff --git a/chrome/test/data/webui/extensions/cr_extensions_browsertest.js b/chrome/test/data/webui/extensions/cr_extensions_browsertest.js
index cc8b1b3..6751296f 100644
--- a/chrome/test/data/webui/extensions/cr_extensions_browsertest.js
+++ b/chrome/test/data/webui/extensions/cr_extensions_browsertest.js
@@ -12,7 +12,6 @@
     [ROOT_PATH + 'chrome/test/data/webui/polymer_browser_test_base.js']);
 GEN('#include "chrome/browser/ui/webui/extensions/' +
     'extension_settings_browsertest.h"');
-GEN('#include "chrome/common/chrome_features.h"');
 
 /**
  * Basic test fixture for the MD chrome://extensions page. Installs no
@@ -25,11 +24,6 @@
   }
 
   /** @override */
-  get featureList() {
-    return ['features::kMaterialDesignExtensions', ''];
-  }
-
-  /** @override */
   get extraLibraries() {
     return PolymerTest.getLibraries(ROOT_PATH).concat([
       ROOT_PATH + 'ui/webui/resources/js/assert.js',
diff --git a/chromecast/renderer/DEPS b/chromecast/renderer/DEPS
index 89ffb09..cb91a00 100644
--- a/chromecast/renderer/DEPS
+++ b/chromecast/renderer/DEPS
@@ -14,6 +14,5 @@
   "+media/renderers",
   "+mojo/public",
   "+services/service_manager/public",
-  "+third_party/blink/public/platform",
-  "+third_party/blink/public/web",
+  "+third_party/blink/public",
 ]
diff --git a/chromecast/renderer/cast_media_load_deferrer.cc b/chromecast/renderer/cast_media_load_deferrer.cc
index ab688a6e..1da4a61 100644
--- a/chromecast/renderer/cast_media_load_deferrer.cc
+++ b/chromecast/renderer/cast_media_load_deferrer.cc
@@ -9,6 +9,9 @@
 
 #include "base/callback.h"
 #include "base/logging.h"
+#include "content/public/renderer/render_frame.h"
+#include "mojo/public/cpp/bindings/associated_binding_set.h"
+#include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
 
 namespace chromecast {
 
@@ -16,9 +19,10 @@
     : content::RenderFrameObserver(render_frame),
       content::RenderFrameObserverTracker<CastMediaLoadDeferrer>(render_frame),
       render_frame_action_blocked_(false) {
-  registry_.AddInterface(
-      base::BindRepeating(&CastMediaLoadDeferrer::OnMediaLoadDeferrerRequest,
-                          base::Unretained(this)));
+  render_frame->GetAssociatedInterfaceRegistry()->AddInterface(
+      base::BindRepeating(
+          &CastMediaLoadDeferrer::OnMediaLoadDeferrerAssociatedRequest,
+          base::Unretained(this)));
 }
 
 CastMediaLoadDeferrer::~CastMediaLoadDeferrer() {
@@ -30,11 +34,6 @@
   delete this;
 }
 
-void CastMediaLoadDeferrer::OnInterfaceRequestForFrame(
-    const std::string& interface_name,
-    mojo::ScopedMessagePipeHandle* interface_pipe) {
-  registry_.TryBindInterface(interface_name, interface_pipe);
-}
 
 bool CastMediaLoadDeferrer::RunWhenInForeground(base::OnceClosure closure) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -66,8 +65,8 @@
   LOG(INFO) << "Render frame actions are unblocked.";
 }
 
-void CastMediaLoadDeferrer::OnMediaLoadDeferrerRequest(
-    chromecast::shell::mojom::MediaLoadDeferrerRequest request) {
+void CastMediaLoadDeferrer::OnMediaLoadDeferrerAssociatedRequest(
+    chromecast::shell::mojom::MediaLoadDeferrerAssociatedRequest request) {
   bindings_.AddBinding(this, std::move(request));
 }
 
diff --git a/chromecast/renderer/cast_media_load_deferrer.h b/chromecast/renderer/cast_media_load_deferrer.h
index 9054244..2ef879d1 100644
--- a/chromecast/renderer/cast_media_load_deferrer.h
+++ b/chromecast/renderer/cast_media_load_deferrer.h
@@ -13,7 +13,7 @@
 #include "chromecast/common/mojom/media_load_deferrer.mojom.h"
 #include "content/public/renderer/render_frame_observer.h"
 #include "content/public/renderer/render_frame_observer_tracker.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/associated_binding_set.h"
 #include "services/service_manager/public/cpp/binder_registry.h"
 
 namespace content {
@@ -31,7 +31,6 @@
       public content::RenderFrameObserverTracker<CastMediaLoadDeferrer> {
  public:
   explicit CastMediaLoadDeferrer(content::RenderFrame* render_frame);
-  ~CastMediaLoadDeferrer() override;
 
   // Runs |closure| if the page/frame is switched to foreground. Returns true if
   // the running of |closure| is deferred (not yet in foreground); false
@@ -39,24 +38,23 @@
   bool RunWhenInForeground(base::OnceClosure closure);
 
  private:
+  ~CastMediaLoadDeferrer() override;
+
   // content::RenderFrameObserver implementation:
   void OnDestruct() override;
-  void OnInterfaceRequestForFrame(
-      const std::string& interface_name,
-      mojo::ScopedMessagePipeHandle* interface_pipe) override;
 
   // MediaLoadDeferrer implementation
   void UpdateMediaLoadStatus(bool blocked) override;
 
-  void OnMediaLoadDeferrerRequest(
-      chromecast::shell::mojom::MediaLoadDeferrerRequest request);
+  void OnMediaLoadDeferrerAssociatedRequest(
+      chromecast::shell::mojom::MediaLoadDeferrerAssociatedRequest request);
 
   bool render_frame_action_blocked_;
+
   std::vector<base::OnceClosure> pending_closures_;
 
-  mojo::BindingSet<chromecast::shell::mojom::MediaLoadDeferrer> bindings_;
-
-  service_manager::BinderRegistry registry_;
+  mojo::AssociatedBindingSet<chromecast::shell::mojom::MediaLoadDeferrer>
+      bindings_;
 
   SEQUENCE_CHECKER(sequence_checker_);
 
diff --git a/chromeos/resources/BUILD.gn b/chromeos/resources/BUILD.gn
index 4b64e4e5..ee86fdde 100644
--- a/chromeos/resources/BUILD.gn
+++ b/chromeos/resources/BUILD.gn
@@ -3,6 +3,7 @@
 # found in the LICENSE file.
 
 import("//tools/grit/grit_rule.gni")
+import("//chromeos/assistant/assistant.gni")
 
 assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos")
 
@@ -17,6 +18,8 @@
   ]
   output_dir = "$root_gen_dir/chromeos"
 
+  defines = [ "enable_cros_libassistant=$enable_cros_libassistant" ]
+
   grit_flags = [
     "-E",
     "mojom_root=" + rebase_path(root_gen_dir, root_build_dir),
diff --git a/chromeos/resources/assistant_resources.grdp b/chromeos/resources/assistant_resources.grdp
new file mode 100644
index 0000000..ff7c613
--- /dev/null
+++ b/chromeos/resources/assistant_resources.grdp
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grit-part>
+  <!-- Resources for Google Assistant. -->
+  <include name="IDR_ASSISTANT_HOTWORD_MODEL" file="../assistant/internal/resources/hotwords/c_20170314/hotword.data" type="BINDATA" />
+  <include name="IDR_ASSISTANT_SPEECH_RECOGNITION_ERROR" file="../assistant/internal/resources/sounds/en_hol_err_speech_recognition_error.opus" type="BINDATA" />
+  <include name="IDR_ASSISTANT_NO_INTERNET_ERROR" file="../assistant/internal/resources/sounds/en_hol_err_no_internet.opus" type="BINDATA" />
+</grit-part>
diff --git a/chromeos/resources/chromeos_resources.grd b/chromeos/resources/chromeos_resources.grd
index 960294d..d0a8316f 100644
--- a/chromeos/resources/chromeos_resources.grd
+++ b/chromeos/resources/chromeos_resources.grd
@@ -17,6 +17,9 @@
           use_base_dir="false"
           type="BINDATA" />
       <part file="proximity_auth_resources.grdp" />
+      <if expr="enable_cros_libassistant">
+        <part file="assistant_resources.grdp" />
+      </if>
     </includes>
   </release>
 </grit>
diff --git a/chromeos/services/assistant/BUILD.gn b/chromeos/services/assistant/BUILD.gn
index 6efe2b86..43598b4 100644
--- a/chromeos/services/assistant/BUILD.gn
+++ b/chromeos/services/assistant/BUILD.gn
@@ -51,6 +51,8 @@
       "platform/file_provider_impl.h",
       "platform/network_provider_impl.cc",
       "platform/network_provider_impl.h",
+      "platform/resource_provider_impl.cc",
+      "platform/resource_provider_impl.h",
       "platform/system_provider_impl.cc",
       "platform/system_provider_impl.h",
       "platform_api_impl.cc",
@@ -69,6 +71,7 @@
       "//libassistant/shared/proto:assistant_proto",
       "//libassistant/shared/public",
       "//libassistant/shared/public:export",
+      "//ui/base",
     ]
 
     if (enable_cros_libassistant_so) {
diff --git a/chromeos/services/assistant/DEPS b/chromeos/services/assistant/DEPS
index 63e8f4f..2a44cee 100644
--- a/chromeos/services/assistant/DEPS
+++ b/chromeos/services/assistant/DEPS
@@ -7,4 +7,5 @@
   "+services/device/public",
   "+services/identity/public",
   "+services/service_manager/public",
+  "+ui/base",
 ]
diff --git a/chromeos/services/assistant/platform/resource_provider_impl.cc b/chromeos/services/assistant/platform/resource_provider_impl.cc
new file mode 100644
index 0000000..16bfb19
--- /dev/null
+++ b/chromeos/services/assistant/platform/resource_provider_impl.cc
@@ -0,0 +1,77 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromeos/services/assistant/platform/resource_provider_impl.h"
+
+#include "chromeos/grit/chromeos_resources.h"
+#include "ui/base/resource/resource_bundle.h"
+
+namespace {
+
+constexpr char kHotwordModelName[] = "ok google";
+
+}  // namespace
+
+namespace chromeos {
+namespace assistant {
+
+ResourceProviderImpl::ResourceProviderImpl() = default;
+
+ResourceProviderImpl::~ResourceProviderImpl() = default;
+
+bool ResourceProviderImpl::GetResource(uint16_t resource_id, std::string* out) {
+  int chrome_resource_id = -1;
+  switch (resource_id) {
+    case assistant_client::resource_ids::kGeneralError:
+      chrome_resource_id = IDR_ASSISTANT_SPEECH_RECOGNITION_ERROR;
+      break;
+    case assistant_client::resource_ids::kWifiNeedsSetupError:
+    case assistant_client::resource_ids::kWifiNotConnectedError:
+    case assistant_client::resource_ids::kWifiCannotConnectError:
+    case assistant_client::resource_ids::kNetworkConnectingError:
+    // These above do not apply to ChromeOS, but let it fall through to get a
+    // generic error.
+    case assistant_client::resource_ids::kNetworkCannotReachServerError:
+      chrome_resource_id = IDR_ASSISTANT_NO_INTERNET_ERROR;
+      break;
+    case assistant_client::resource_ids::kDefaultHotwordResourceId:
+      return GetHotwordData(GetDefaultHotwordName(), out);
+    default:
+      break;
+  }
+
+  if (chrome_resource_id < 0)
+    return false;
+
+  auto data = ui::ResourceBundle::GetSharedInstance().GetRawDataResource(
+      chrome_resource_id);
+  out->assign(data.data(), data.length());
+  return true;
+}
+
+std::vector<std::string> ResourceProviderImpl::GetHotwordNameList() {
+  std::vector<std::string> result;
+  std::string name = GetDefaultHotwordName();
+  if (!name.empty())
+    result.push_back(name);
+  return result;
+}
+
+std::string ResourceProviderImpl::GetDefaultHotwordName() {
+  return kHotwordModelName;
+}
+
+bool ResourceProviderImpl::GetHotwordData(const std::string& name,
+                                          std::string* result) {
+  if (name != kHotwordModelName)
+    return false;
+
+  auto data = ui::ResourceBundle::GetSharedInstance().GetRawDataResource(
+      IDR_ASSISTANT_HOTWORD_MODEL);
+  result->assign(data.data(), data.length());
+  return true;
+}
+
+}  // namespace assistant
+}  // namespace chromeos
diff --git a/chromeos/services/assistant/platform/resource_provider_impl.h b/chromeos/services/assistant/platform/resource_provider_impl.h
new file mode 100644
index 0000000..00fd9535
--- /dev/null
+++ b/chromeos/services/assistant/platform/resource_provider_impl.h
@@ -0,0 +1,35 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMEOS_SERVICES_ASSISTANT_PLATFORM_RESOURCE_PROVIDER_IMPL_H_
+#define CHROMEOS_SERVICES_ASSISTANT_PLATFORM_RESOURCE_PROVIDER_IMPL_H_
+
+#include <string>
+#include <vector>
+
+#include "base/macros.h"
+#include "libassistant/shared/public/platform_resources.h"
+
+namespace chromeos {
+namespace assistant {
+
+class ResourceProviderImpl : public assistant_client::ResourceProvider {
+ public:
+  ResourceProviderImpl();
+  ~ResourceProviderImpl() override;
+
+  // assistant_client::ResourceProvider implementation:
+  bool GetResource(uint16_t resource_id, std::string* out) override;
+  std::vector<std::string> GetHotwordNameList() override;
+  std::string GetDefaultHotwordName() override;
+  bool GetHotwordData(const std::string& name, std::string* result) override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ResourceProviderImpl);
+};
+
+}  // namespace assistant
+}  // namespace chromeos
+
+#endif  // CHROMEOS_SERVICES_ASSISTANT_PLATFORM_RESOURCE_PROVIDER_IMPL_H_
diff --git a/chromeos/services/assistant/platform_api_impl.cc b/chromeos/services/assistant/platform_api_impl.cc
index b67fec2..373e3d3 100644
--- a/chromeos/services/assistant/platform_api_impl.cc
+++ b/chromeos/services/assistant/platform_api_impl.cc
@@ -78,7 +78,6 @@
     device::mojom::BatteryMonitorPtr battery_monitor)
     : audio_input_provider_(std::move(audio_input)),
       audio_output_provider_(config, this),
-      resource_provider_(config),
       system_provider_(std::move(battery_monitor)) {}
 
 PlatformApiImpl::~PlatformApiImpl() = default;
diff --git a/chromeos/services/assistant/platform_api_impl.h b/chromeos/services/assistant/platform_api_impl.h
index 18eabc85..db0cd41 100644
--- a/chromeos/services/assistant/platform_api_impl.h
+++ b/chromeos/services/assistant/platform_api_impl.h
@@ -13,13 +13,13 @@
 #include "chromeos/services/assistant/platform/audio_input_provider_impl.h"
 #include "chromeos/services/assistant/platform/file_provider_impl.h"
 #include "chromeos/services/assistant/platform/network_provider_impl.h"
+#include "chromeos/services/assistant/platform/resource_provider_impl.h"
 #include "chromeos/services/assistant/platform/system_provider_impl.h"
 #include "chromeos/services/assistant/public/mojom/assistant.mojom.h"
 // TODO(xiaohuic): replace with "base/macros.h" once we remove
 // libassistant/contrib dependency.
 #include "libassistant/contrib/core/macros.h"
 #include "libassistant/contrib/platform/audio/output/audio_output_provider_impl.h"
-#include "libassistant/contrib/platform/resources/resource_provider.h"
 #include "libassistant/shared/public/platform_api.h"
 #include "libassistant/shared/public/platform_auth.h"
 #include "services/device/public/mojom/battery_monitor.mojom.h"
@@ -82,7 +82,7 @@
   DummyAuthProvider auth_provider_;
   FileProviderImpl file_provider_;
   NetworkProviderImpl network_provider_;
-  assistant_contrib::ResourceProviderImpl resource_provider_;
+  ResourceProviderImpl resource_provider_;
   SystemProviderImpl system_provider_;
 
   DISALLOW_COPY_AND_ASSIGN(PlatformApiImpl);
diff --git a/components/arc/common/timer.typemap b/components/arc/common/timer.typemap
index 6f46f6c..97b7357c 100644
--- a/components/arc/common/timer.typemap
+++ b/components/arc/common/timer.typemap
@@ -4,9 +4,9 @@
 
 mojom = "//components/arc/common/timer.mojom"
 public_headers = [ "//components/arc/timer/create_timer_request.h" ]
-traits_headers = [ "//components/arc/timer/arc_timer_traits.h" ]
+traits_headers = [ "//components/arc/timer/arc_timer_struct_traits.h" ]
 sources = [
-  "//components/arc/timer/arc_timer_traits.cc",
+  "//components/arc/timer/arc_timer_struct_traits.cc",
 ]
 type_mappings =
     [ "arc.mojom.CreateTimerRequest=arc::CreateTimerRequest[move_only]" ]
diff --git a/components/arc/common/volume_mounter.typemap b/components/arc/common/volume_mounter.typemap
index 0b905728..4a025cf0 100644
--- a/components/arc/common/volume_mounter.typemap
+++ b/components/arc/common/volume_mounter.typemap
@@ -9,9 +9,10 @@
   "//chromeos/dbus/dbus_client_implementation_type.h",
   "//chromeos/disks/disk_mount_manager.h",
 ]
-traits_headers = [ "//components/arc/volume_mounter/volume_mounter_traits.h" ]
+traits_headers =
+    [ "//components/arc/volume_mounter/volume_mounter_struct_traits.h" ]
 sources = [
-  "//components/arc/volume_mounter/volume_mounter_traits.cc",
+  "//components/arc/volume_mounter/volume_mounter_struct_traits.cc",
 ]
 type_mappings = [
   "arc.mojom.DeviceType=chromeos::DeviceType",
diff --git a/components/arc/ime/OWNERS b/components/arc/timer/OWNERS
similarity index 100%
rename from components/arc/ime/OWNERS
rename to components/arc/timer/OWNERS
diff --git a/components/arc/timer/arc_timer_bridge.cc b/components/arc/timer/arc_timer_bridge.cc
index 9206c22..28f7e19 100644
--- a/components/arc/timer/arc_timer_bridge.cc
+++ b/components/arc/timer/arc_timer_bridge.cc
@@ -15,7 +15,7 @@
 #include "components/arc/arc_service_manager.h"
 #include "components/arc/timer/arc_timer.h"
 #include "components/arc/timer/arc_timer_bridge.h"
-#include "components/arc/timer/arc_timer_traits.h"
+#include "components/arc/timer/arc_timer_struct_traits.h"
 
 namespace arc {
 
diff --git a/components/arc/timer/arc_timer_bridge_unittest.cc b/components/arc/timer/arc_timer_bridge_unittest.cc
index f3f4fc8..08e72af 100644
--- a/components/arc/timer/arc_timer_bridge_unittest.cc
+++ b/components/arc/timer/arc_timer_bridge_unittest.cc
@@ -23,7 +23,7 @@
 #include "components/arc/test/fake_timer_instance.h"
 #include "components/arc/test/test_browser_context.h"
 #include "components/arc/timer/arc_timer_bridge.h"
-#include "components/arc/timer/arc_timer_traits.h"
+#include "components/arc/timer/arc_timer_struct_traits.h"
 #include "components/arc/timer/create_timer_request.h"
 #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
 #include "content/public/test/test_browser_thread_bundle.h"
diff --git a/components/arc/timer/arc_timer_struct_traits.cc b/components/arc/timer/arc_timer_struct_traits.cc
new file mode 100644
index 0000000..3f27fd3
--- /dev/null
+++ b/components/arc/timer/arc_timer_struct_traits.cc
@@ -0,0 +1,96 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <utility>
+
+#include "components/arc/timer/arc_timer_struct_traits.h"
+#include "mojo/public/cpp/system/handle.h"
+#include "mojo/public/cpp/system/platform_handle.h"
+
+namespace {
+
+// Unwraps a mojo handle to a file descriptor on the system.
+base::ScopedFD UnwrapPlatformHandle(mojo::ScopedHandle handle) {
+  base::PlatformFile platform_file;
+  if (mojo::UnwrapPlatformFile(std::move(handle), &platform_file) !=
+      MOJO_RESULT_OK) {
+    LOG(ERROR) << "Failed to unwrap mojo handle";
+    return base::ScopedFD();
+  }
+  return base::ScopedFD(platform_file);
+}
+
+// Converts a system file descriptor to a mojo handle that can be sent to the
+// host.
+mojo::ScopedHandle WrapPlatformFd(base::ScopedFD scoped_fd) {
+  mojo::ScopedHandle handle = mojo::WrapPlatformFile(scoped_fd.release());
+  if (!handle.is_valid()) {
+    LOG(ERROR) << "Failed to wrap platform handle";
+    return mojo::ScopedHandle();
+  }
+  return handle;
+}
+
+}  // namespace
+
+namespace mojo {
+
+// static
+arc::mojom::ClockId EnumTraits<arc::mojom::ClockId, int32_t>::ToMojom(
+    int32_t clock_id) {
+  switch (clock_id) {
+    case CLOCK_REALTIME_ALARM:
+      return arc::mojom::ClockId::REALTIME_ALARM;
+    case CLOCK_BOOTTIME_ALARM:
+      return arc::mojom::ClockId::BOOTTIME_ALARM;
+  }
+  NOTREACHED();
+  return arc::mojom::ClockId::BOOTTIME_ALARM;
+}
+
+// static
+bool EnumTraits<arc::mojom::ClockId, int32_t>::FromMojom(
+    arc::mojom::ClockId input,
+    int32_t* output) {
+  switch (input) {
+    case arc::mojom::ClockId::REALTIME_ALARM:
+      *output = CLOCK_REALTIME_ALARM;
+      return true;
+    case arc::mojom::ClockId::BOOTTIME_ALARM:
+      *output = CLOCK_BOOTTIME_ALARM;
+      return true;
+  }
+  NOTREACHED();
+  return false;
+}
+
+// static
+arc::mojom::ClockId
+StructTraits<arc::mojom::CreateTimerRequestDataView, arc::CreateTimerRequest>::
+    clock_id(const arc::CreateTimerRequest& arc_timer_request) {
+  return EnumTraits<arc::mojom::ClockId, int32_t>::ToMojom(
+      arc_timer_request.clock_id);
+}
+
+// static
+mojo::ScopedHandle
+StructTraits<arc::mojom::CreateTimerRequestDataView, arc::CreateTimerRequest>::
+    expiration_fd(arc::CreateTimerRequest& arc_timer_request) {
+  return WrapPlatformFd(std::move(arc_timer_request.expiration_fd));
+}
+
+// static
+bool StructTraits<
+    arc::mojom::CreateTimerRequestDataView,
+    arc::CreateTimerRequest>::Read(arc::mojom::CreateTimerRequestDataView input,
+                                   arc::CreateTimerRequest* output) {
+  if (!EnumTraits<arc::mojom::ClockId, int32_t>::FromMojom(input.clock_id(),
+                                                           &output->clock_id)) {
+    return false;
+  }
+  output->expiration_fd = UnwrapPlatformHandle(input.TakeExpirationFd());
+  return true;
+}
+
+}  // namespace mojo
diff --git a/components/arc/timer/arc_timer_struct_traits.h b/components/arc/timer/arc_timer_struct_traits.h
new file mode 100644
index 0000000..99b929b
--- /dev/null
+++ b/components/arc/timer/arc_timer_struct_traits.h
@@ -0,0 +1,36 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_ARC_TIMER_ARC_TIMER_STRUCT_TRAITS_H_
+#define COMPONENTS_ARC_TIMER_ARC_TIMER_STRUCT_TRAITS_H_
+
+#include "components/arc/common/timer.mojom.h"
+#include "components/arc/timer/create_timer_request.h"
+
+namespace mojo {
+
+template <>
+struct EnumTraits<arc::mojom::ClockId, int32_t> {
+  static arc::mojom::ClockId ToMojom(int32_t clock_id);
+  static bool FromMojom(arc::mojom::ClockId input, int32_t* output);
+};
+
+template <>
+struct StructTraits<arc::mojom::CreateTimerRequestDataView,
+                    arc::CreateTimerRequest> {
+  // Due to already defined EnumTraits for |ClockId| the return type is int32_t
+  // and not |arc::mojom::ClockId|.
+  static arc::mojom::ClockId clock_id(
+      const arc::CreateTimerRequest& arc_timer_request);
+
+  static mojo::ScopedHandle expiration_fd(
+      arc::CreateTimerRequest& arc_timer_request);
+
+  static bool Read(arc::mojom::CreateTimerRequestDataView input,
+                   arc::CreateTimerRequest* output);
+};
+
+}  // namespace mojo
+
+#endif  // COMPONENTS_ARC_TIMER_ARC_TIMER_STRUCT_TRAITS_H_
diff --git a/components/arc/timer/arc_timer_traits.cc b/components/arc/timer/arc_timer_traits.cc
deleted file mode 100644
index d2feb07..0000000
--- a/components/arc/timer/arc_timer_traits.cc
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <utility>
-
-#include "base/posix/unix_domain_socket.h"
-#include "components/arc/timer/arc_timer_traits.h"
-#include "mojo/public/cpp/system/handle.h"
-#include "mojo/public/cpp/system/platform_handle.h"
-
-namespace {
-
-// Unwraps a mojo handle to a file descriptor on the system.
-base::ScopedFD UnwrapPlatformHandle(mojo::ScopedHandle handle) {
-  base::PlatformFile platform_file;
-  if (mojo::UnwrapPlatformFile(std::move(handle), &platform_file) !=
-      MOJO_RESULT_OK) {
-    LOG(ERROR) << "Failed to unwrap mojo handle";
-    return base::ScopedFD();
-  }
-  return base::ScopedFD(platform_file);
-}
-
-// Converts a system file descriptor to a mojo handle that can be sent to the
-// host.
-mojo::ScopedHandle WrapPlatformFd(base::ScopedFD scoped_fd) {
-  mojo::ScopedHandle handle = mojo::WrapPlatformFile(scoped_fd.release());
-  if (!handle.is_valid()) {
-    LOG(ERROR) << "Failed to wrap platform handle";
-    return mojo::ScopedHandle();
-  }
-  return handle;
-}
-
-}  // namespace
-
-namespace mojo {
-
-// static
-arc::mojom::ClockId EnumTraits<arc::mojom::ClockId, int32_t>::ToMojom(
-    int32_t clock_id) {
-  switch (clock_id) {
-    case CLOCK_REALTIME_ALARM:
-      return arc::mojom::ClockId::REALTIME_ALARM;
-    case CLOCK_BOOTTIME_ALARM:
-      return arc::mojom::ClockId::BOOTTIME_ALARM;
-  }
-  NOTREACHED();
-  return arc::mojom::ClockId::BOOTTIME_ALARM;
-}
-
-// static
-bool EnumTraits<arc::mojom::ClockId, int32_t>::FromMojom(
-    arc::mojom::ClockId input,
-    int32_t* output) {
-  switch (input) {
-    case arc::mojom::ClockId::REALTIME_ALARM:
-      *output = CLOCK_REALTIME_ALARM;
-      return true;
-    case arc::mojom::ClockId::BOOTTIME_ALARM:
-      *output = CLOCK_BOOTTIME_ALARM;
-      return true;
-  }
-  NOTREACHED();
-  return false;
-}
-
-// static
-arc::mojom::ClockId
-StructTraits<arc::mojom::CreateTimerRequestDataView, arc::CreateTimerRequest>::
-    clock_id(const arc::CreateTimerRequest& arc_timer_request) {
-  return EnumTraits<arc::mojom::ClockId, int32_t>::ToMojom(
-      arc_timer_request.clock_id);
-}
-
-// static
-mojo::ScopedHandle
-StructTraits<arc::mojom::CreateTimerRequestDataView, arc::CreateTimerRequest>::
-    expiration_fd(arc::CreateTimerRequest& arc_timer_request) {
-  return WrapPlatformFd(std::move(arc_timer_request.expiration_fd));
-}
-
-// static
-bool StructTraits<
-    arc::mojom::CreateTimerRequestDataView,
-    arc::CreateTimerRequest>::Read(arc::mojom::CreateTimerRequestDataView input,
-                                   arc::CreateTimerRequest* output) {
-  if (!EnumTraits<arc::mojom::ClockId, int32_t>::FromMojom(input.clock_id(),
-                                                           &output->clock_id)) {
-    return false;
-  }
-  output->expiration_fd = UnwrapPlatformHandle(input.TakeExpirationFd());
-  return true;
-}
-
-}  // namespace mojo
diff --git a/components/arc/timer/arc_timer_traits.h b/components/arc/timer/arc_timer_traits.h
deleted file mode 100644
index 252791ec..0000000
--- a/components/arc/timer/arc_timer_traits.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_ARC_TIMER_ARC_TIMER_TRAITS_H_
-#define COMPONENTS_ARC_TIMER_ARC_TIMER_TRAITS_H_
-
-#include "components/arc/common/timer.mojom.h"
-#include "components/arc/timer/create_timer_request.h"
-
-namespace mojo {
-
-template <>
-struct EnumTraits<arc::mojom::ClockId, int32_t> {
-  static arc::mojom::ClockId ToMojom(int32_t clock_id);
-  static bool FromMojom(arc::mojom::ClockId input, int32_t* output);
-};
-
-template <>
-struct StructTraits<arc::mojom::CreateTimerRequestDataView,
-                    arc::CreateTimerRequest> {
-  // Due to already defined EnumTraits for |ClockId| the return type is int32_t
-  // and not |arc::mojom::ClockId|.
-  static arc::mojom::ClockId clock_id(
-      const arc::CreateTimerRequest& arc_timer_request);
-
-  static mojo::ScopedHandle expiration_fd(
-      arc::CreateTimerRequest& arc_timer_request);
-
-  static bool Read(arc::mojom::CreateTimerRequestDataView input,
-                   arc::CreateTimerRequest* output);
-};
-
-}  // namespace mojo
-
-#endif  // COMPONENTS_ARC_TIMER_ARC_TIMER_TRAITS_H_
diff --git a/components/arc/ime/OWNERS b/components/arc/volume_mounter/OWNERS
similarity index 100%
copy from components/arc/ime/OWNERS
copy to components/arc/volume_mounter/OWNERS
diff --git a/components/arc/volume_mounter/volume_mounter_struct_traits.cc b/components/arc/volume_mounter/volume_mounter_struct_traits.cc
new file mode 100644
index 0000000..b516fd7
--- /dev/null
+++ b/components/arc/volume_mounter/volume_mounter_struct_traits.cc
@@ -0,0 +1,79 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/arc/volume_mounter/volume_mounter_struct_traits.h"
+
+#include "base/logging.h"
+
+namespace mojo {
+
+arc::mojom::DeviceType
+EnumTraits<arc::mojom::DeviceType, chromeos::DeviceType>::ToMojom(
+    chromeos::DeviceType device_type) {
+  switch (device_type) {
+    case chromeos::DeviceType::DEVICE_TYPE_USB:
+      return arc::mojom::DeviceType::DEVICE_TYPE_USB;
+    case chromeos::DeviceType::DEVICE_TYPE_SD:
+      return arc::mojom::DeviceType::DEVICE_TYPE_SD;
+    case chromeos::DeviceType::DEVICE_TYPE_UNKNOWN:
+    case chromeos::DeviceType::DEVICE_TYPE_OPTICAL_DISC:
+    case chromeos::DeviceType::DEVICE_TYPE_MOBILE:
+    case chromeos::DeviceType::DEVICE_TYPE_DVD:
+      // Android doesn't recognize this device natively. So, propagating
+      // UNKNOWN and let Android decides how to handle this.
+      return arc::mojom::DeviceType::DEVICE_TYPE_UNKNOWN;
+  }
+  NOTREACHED();
+  return arc::mojom::DeviceType::DEVICE_TYPE_UNKNOWN;
+}
+
+bool EnumTraits<arc::mojom::DeviceType, chromeos::DeviceType>::FromMojom(
+    arc::mojom::DeviceType input,
+    chromeos::DeviceType* out) {
+  switch (input) {
+    case arc::mojom::DeviceType::DEVICE_TYPE_USB:
+      *out = chromeos::DeviceType::DEVICE_TYPE_USB;
+      return true;
+    case arc::mojom::DeviceType::DEVICE_TYPE_SD:
+      *out = chromeos::DeviceType::DEVICE_TYPE_SD;
+      return true;
+    case arc::mojom::DeviceType::DEVICE_TYPE_UNKNOWN:
+      *out = chromeos::DeviceType::DEVICE_TYPE_UNKNOWN;
+      return true;
+  }
+  NOTREACHED();
+  return false;
+}
+
+arc::mojom::MountEvent
+EnumTraits<arc::mojom::MountEvent,
+           chromeos::disks::DiskMountManager::MountEvent>::
+    ToMojom(chromeos::disks::DiskMountManager::MountEvent mount_event) {
+  switch (mount_event) {
+    case chromeos::disks::DiskMountManager::MountEvent::MOUNTING:
+      return arc::mojom::MountEvent::MOUNTING;
+    case chromeos::disks::DiskMountManager::MountEvent::UNMOUNTING:
+      return arc::mojom::MountEvent::UNMOUNTING;
+  }
+  NOTREACHED();
+  return arc::mojom::MountEvent::MOUNTING;
+}
+
+bool EnumTraits<arc::mojom::MountEvent,
+                chromeos::disks::DiskMountManager::MountEvent>::
+    FromMojom(arc::mojom::MountEvent input,
+              chromeos::disks::DiskMountManager::MountEvent* out) {
+  switch (input) {
+    case arc::mojom::MountEvent::MOUNTING:
+      *out = chromeos::disks::DiskMountManager::MountEvent::MOUNTING;
+      return true;
+    case arc::mojom::MountEvent::UNMOUNTING:
+      *out = chromeos::disks::DiskMountManager::MountEvent::UNMOUNTING;
+      return true;
+  }
+  NOTREACHED();
+  return false;
+}
+
+}  // namespace mojo
diff --git a/components/arc/volume_mounter/volume_mounter_struct_traits.h b/components/arc/volume_mounter/volume_mounter_struct_traits.h
new file mode 100644
index 0000000..e235db2
--- /dev/null
+++ b/components/arc/volume_mounter/volume_mounter_struct_traits.h
@@ -0,0 +1,31 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_ARC_VOLUME_MOUNTER_VOLUME_MOUNTER_STRUCT_TRAITS_H_
+#define COMPONENTS_ARC_VOLUME_MOUNTER_VOLUME_MOUNTER_STRUCT_TRAITS_H_
+
+#include "chromeos/disks/disk_mount_manager.h"
+#include "components/arc/common/volume_mounter.mojom.h"
+
+namespace mojo {
+
+template <>
+struct EnumTraits<arc::mojom::DeviceType, chromeos::DeviceType> {
+  static arc::mojom::DeviceType ToMojom(chromeos::DeviceType device_type);
+  static bool FromMojom(arc::mojom::DeviceType input,
+                        chromeos::DeviceType* out);
+};
+
+template <>
+struct EnumTraits<arc::mojom::MountEvent,
+                  chromeos::disks::DiskMountManager::MountEvent> {
+  static arc::mojom::MountEvent ToMojom(
+      chromeos::disks::DiskMountManager::MountEvent mount_event);
+  static bool FromMojom(arc::mojom::MountEvent input,
+                        chromeos::disks::DiskMountManager::MountEvent* out);
+};
+
+}  // namespace mojo
+
+#endif  // COMPONENTS_ARC_VOLUME_MOUNTER_VOLUME_MOUNTER_STRUCT_TRAITS_H_
diff --git a/components/arc/volume_mounter/volume_mounter_traits.cc b/components/arc/volume_mounter/volume_mounter_traits.cc
deleted file mode 100644
index c98edf3..0000000
--- a/components/arc/volume_mounter/volume_mounter_traits.cc
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/arc/volume_mounter/volume_mounter_traits.h"
-
-namespace mojo {
-
-arc::mojom::DeviceType
-EnumTraits<arc::mojom::DeviceType, chromeos::DeviceType>::ToMojom(
-    chromeos::DeviceType device_type) {
-  switch (device_type) {
-    case chromeos::DeviceType::DEVICE_TYPE_USB:
-      return arc::mojom::DeviceType::DEVICE_TYPE_USB;
-    case chromeos::DeviceType::DEVICE_TYPE_SD:
-      return arc::mojom::DeviceType::DEVICE_TYPE_SD;
-    case chromeos::DeviceType::DEVICE_TYPE_UNKNOWN:
-    case chromeos::DeviceType::DEVICE_TYPE_OPTICAL_DISC:
-    case chromeos::DeviceType::DEVICE_TYPE_MOBILE:
-    case chromeos::DeviceType::DEVICE_TYPE_DVD:
-      // Android doesn't recognize this device natively. So, propagating
-      // UNKNOWN and let Android decides how to handle this.
-      return arc::mojom::DeviceType::DEVICE_TYPE_UNKNOWN;
-  }
-  NOTREACHED();
-  return arc::mojom::DeviceType::DEVICE_TYPE_UNKNOWN;
-}
-
-bool EnumTraits<arc::mojom::DeviceType, chromeos::DeviceType>::FromMojom(
-    arc::mojom::DeviceType input,
-    chromeos::DeviceType* out) {
-  switch (input) {
-    case arc::mojom::DeviceType::DEVICE_TYPE_USB:
-      *out = chromeos::DeviceType::DEVICE_TYPE_USB;
-      return true;
-    case arc::mojom::DeviceType::DEVICE_TYPE_SD:
-      *out = chromeos::DeviceType::DEVICE_TYPE_SD;
-      return true;
-    case arc::mojom::DeviceType::DEVICE_TYPE_UNKNOWN:
-      *out = chromeos::DeviceType::DEVICE_TYPE_UNKNOWN;
-      return true;
-  }
-  NOTREACHED();
-  return false;
-}
-
-arc::mojom::MountEvent
-EnumTraits<arc::mojom::MountEvent,
-           chromeos::disks::DiskMountManager::MountEvent>::
-    ToMojom(chromeos::disks::DiskMountManager::MountEvent mount_event) {
-  switch (mount_event) {
-    case chromeos::disks::DiskMountManager::MountEvent::MOUNTING:
-      return arc::mojom::MountEvent::MOUNTING;
-    case chromeos::disks::DiskMountManager::MountEvent::UNMOUNTING:
-      return arc::mojom::MountEvent::UNMOUNTING;
-  }
-  NOTREACHED();
-  return arc::mojom::MountEvent::MOUNTING;
-}
-
-bool EnumTraits<arc::mojom::MountEvent,
-                chromeos::disks::DiskMountManager::MountEvent>::
-    FromMojom(arc::mojom::MountEvent input,
-              chromeos::disks::DiskMountManager::MountEvent* out) {
-  switch (input) {
-    case arc::mojom::MountEvent::MOUNTING:
-      *out = chromeos::disks::DiskMountManager::MountEvent::MOUNTING;
-      return true;
-    case arc::mojom::MountEvent::UNMOUNTING:
-      *out = chromeos::disks::DiskMountManager::MountEvent::UNMOUNTING;
-      return true;
-  }
-  NOTREACHED();
-  return false;
-}
-
-}  // namespace mojo
diff --git a/components/arc/volume_mounter/volume_mounter_traits.h b/components/arc/volume_mounter/volume_mounter_traits.h
deleted file mode 100644
index 974d66b..0000000
--- a/components/arc/volume_mounter/volume_mounter_traits.h
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_ARC_VOLUME_MOUNTER_VOLUME_MOUNTER_TRAITS_H_
-#define COMPONENTS_ARC_VOLUME_MOUNTER_VOLUME_MOUNTER_TRAITS_H_
-
-#include "chromeos/disks/disk_mount_manager.h"
-#include "components/arc/common/volume_mounter.mojom.h"
-
-namespace mojo {
-
-template <>
-struct EnumTraits<arc::mojom::DeviceType, chromeos::DeviceType> {
-  static arc::mojom::DeviceType ToMojom(chromeos::DeviceType device_type);
-  static bool FromMojom(arc::mojom::DeviceType input,
-                        chromeos::DeviceType* out);
-};
-
-template <>
-struct EnumTraits<arc::mojom::MountEvent,
-                  chromeos::disks::DiskMountManager::MountEvent> {
-  static arc::mojom::MountEvent ToMojom(
-      chromeos::disks::DiskMountManager::MountEvent mount_event);
-  static bool FromMojom(arc::mojom::MountEvent input,
-                        chromeos::disks::DiskMountManager::MountEvent* out);
-};
-
-}  // namespace mojo
-
-#endif  // COMPONENTS_ARC_VOLUME_MOUNTER_VOLUME_MOUNTER_TRAITS_H_
diff --git a/components/autofill/android/java/res/values/colors.xml b/components/autofill/android/java/res/values/colors.xml
index 416737f2f..3d03d8b3 100644
--- a/components/autofill/android/java/res/values/colors.xml
+++ b/components/autofill/android/java/res/values/colors.xml
@@ -5,7 +5,6 @@
      found in the LICENSE file.
 -->
 <resources>
-    <!-- Text colors of warning messages for credit card and password forms. -->
-    <color name="http_bad_warning_message_text">#C53929</color>
+    <!-- Text colors of warning messages for credit card forms. -->
     <color name="insecure_context_payment_disabled_message_text">#646464</color>
 </resources>
diff --git a/components/autofill/android/java/res/values/dimens.xml b/components/autofill/android/java/res/values/dimens.xml
index a4700f7..1327d16e 100644
--- a/components/autofill/android/java/res/values/dimens.xml
+++ b/components/autofill/android/java/res/values/dimens.xml
@@ -5,12 +5,4 @@
      found in the LICENSE file.
 -->
 <resources>
-    <!--
-         Larger label and icon sizes for Form-Not-Secure experiment
-         (warning messages on credit card and password forms when users
-         are on HTTP sites).
-    -->
-    <dimen name="dropdown_item_larger_sublabel_font_size">18sp</dimen>
-    <dimen name="dropdown_large_icon_size">24dp</dimen>
-    <dimen name="dropdown_large_icon_margin">10dp</dimen>
 </resources>
diff --git a/components/autofill/android/java/src/org/chromium/components/autofill/AutofillSuggestion.java b/components/autofill/android/java/src/org/chromium/components/autofill/AutofillSuggestion.java
index 21d4b89..1b6ae0e5 100644
--- a/components/autofill/android/java/src/org/chromium/components/autofill/AutofillSuggestion.java
+++ b/components/autofill/android/java/src/org/chromium/components/autofill/AutofillSuggestion.java
@@ -16,7 +16,6 @@
      * components/autofill/core/browser/popup_item_ids.h
      */
     private static final int ITEM_ID_INSECURE_CONTEXT_PAYMENT_DISABLED_MESSAGE = -1;
-    private static final int ITEM_ID_HTTP_NOT_SECURE_WARNING_MESSAGE = -10;
 
     private final String mLabel;
     private final String mSublabel;
@@ -79,31 +78,13 @@
 
     @Override
     public int getLabelFontColorResId() {
-        if (mSuggestionId == ITEM_ID_HTTP_NOT_SECURE_WARNING_MESSAGE) {
-            return R.color.http_bad_warning_message_text;
-        } else if (mSuggestionId == ITEM_ID_INSECURE_CONTEXT_PAYMENT_DISABLED_MESSAGE) {
+        if (mSuggestionId == ITEM_ID_INSECURE_CONTEXT_PAYMENT_DISABLED_MESSAGE) {
             return R.color.insecure_context_payment_disabled_message_text;
         }
         return super.getLabelFontColorResId();
     }
 
     @Override
-    public int getSublabelFontSizeResId() {
-        if (mSuggestionId == ITEM_ID_HTTP_NOT_SECURE_WARNING_MESSAGE) {
-            return R.dimen.dropdown_item_larger_sublabel_font_size;
-        }
-        return super.getSublabelFontSizeResId();
-    }
-
-    @Override
-    public boolean isLabelAndSublabelOnSameLine() {
-        if (mSuggestionId == ITEM_ID_HTTP_NOT_SECURE_WARNING_MESSAGE) {
-            return true;
-        }
-        return super.isLabelAndSublabelOnSameLine();
-    }
-
-    @Override
     public boolean isIconAtStart() {
         if (mIsIconAtStart) {
             return true;
@@ -111,22 +92,6 @@
         return super.isIconAtStart();
     }
 
-    @Override
-    public int getIconSizeResId() {
-        if (mSuggestionId == ITEM_ID_HTTP_NOT_SECURE_WARNING_MESSAGE) {
-            return R.dimen.dropdown_large_icon_size;
-        }
-        return super.getIconSizeResId();
-    }
-
-    @Override
-    public int getIconMarginResId() {
-        if (mSuggestionId == ITEM_ID_HTTP_NOT_SECURE_WARNING_MESSAGE) {
-            return R.dimen.dropdown_large_icon_margin;
-        }
-        return super.getIconMarginResId();
-    }
-
     public int getSuggestionId() {
         return mSuggestionId;
     }
diff --git a/components/autofill/core/browser/autofill_download_manager_unittest.cc b/components/autofill/core/browser/autofill_download_manager_unittest.cc
index cccf4753b..5ba0e02 100644
--- a/components/autofill/core/browser/autofill_download_manager_unittest.cc
+++ b/components/autofill/core/browser/autofill_download_manager_unittest.cc
@@ -11,16 +11,19 @@
 #include <utility>
 #include <vector>
 
+#include "base/format_macros.h"
 #include "base/message_loop/message_loop.h"
 #include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task_scheduler/post_task.h"
 #include "base/test/histogram_tester.h"
 #include "base/test/scoped_command_line.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/scoped_task_environment.h"
+#include "base/test/simple_test_clock.h"
 #include "base/test/test_timeouts.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "components/autofill/core/browser/autofill_field.h"
@@ -767,10 +770,15 @@
         server_.base_url().Resolve("/tbproxy/af/").spec().c_str());
 
     // Intialize the autofill driver.
-    request_context_ = base::MakeRefCounted<net::TestURLRequestContextGetter>(
-        scoped_task_environment_.GetMainThreadTaskRunner());
+    request_context_getter_ =
+        base::MakeRefCounted<net::TestURLRequestContextGetter>(
+            scoped_task_environment_.GetMainThreadTaskRunner());
+    request_context_getter_->GetURLRequestContext()
+        ->http_transaction_factory()
+        ->GetCache()
+        ->SetClockForTesting(&clock_);
     driver_ = std::make_unique<TestAutofillDriver>();
-    driver_->SetURLRequestContext(request_context_.get());
+    driver_->SetURLRequestContext(request_context_getter_.get());
   }
 
   void TearDown() override {
@@ -800,7 +808,10 @@
     response->set_code(net::HTTP_OK);
     response->set_content(proto.SerializeAsString());
     response->set_content_type("text/proto");
-    response->AddCustomHeader("Cache-Control", "max-age=86400");
+    response->AddCustomHeader(
+        "Cache-Control",
+        base::StringPrintf("max-age=%" PRId64,
+                           base::TimeDelta::FromDays(2).InSeconds()));
     return response;
   }
 
@@ -823,7 +834,8 @@
   EmbeddedTestServer server_;
   std::unique_ptr<base::RunLoop> run_loop_;
   size_t call_count_ = 0;
-  scoped_refptr<net::TestURLRequestContextGetter> request_context_;
+  base::SimpleTestClock clock_;
+  scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_;
   std::unique_ptr<TestAutofillDriver> driver_;
 };
 
@@ -841,10 +853,13 @@
   std::vector<std::unique_ptr<FormStructure>> form_structures;
   form_structures.push_back(std::make_unique<FormStructure>(form));
 
+  clock_.SetNow(base::Time::Now());
+
   // Query for the form. This should go to the embedded server.
   {
-    SCOPED_TRACE("Firstl Query");
+    SCOPED_TRACE("First Query");
     base::HistogramTester histogram;
+    call_count_ = 0;
     ASSERT_NO_FATAL_FAILURE(SendQueryRequest(form_structures));
     EXPECT_EQ(1u, call_count_);
     histogram.ExpectBucketCount("Autofill.ServerQueryResponse",
@@ -853,15 +868,36 @@
     histogram.ExpectBucketCount("Autofill.Query.WasInCache", CACHE_MISS, 1);
   }
 
-  // Query again for the form. This should go to the local cache.
+  // Query again the next day. This should go to the cache, since the max-age
+  // for the cached response is 2 days.
   {
+    clock_.Advance(base::TimeDelta::FromDays(1));
     SCOPED_TRACE("Second Query");
     base::HistogramTester histogram;
+    call_count_ = 0;
     ASSERT_NO_FATAL_FAILURE(SendQueryRequest(form_structures));
-    EXPECT_EQ(1u, call_count_);
+    EXPECT_EQ(0u, call_count_);
+    histogram.ExpectBucketCount("Autofill.ServerQueryResponse",
+                                AutofillMetrics::QUERY_SENT, 1);
     histogram.ExpectBucketCount("Autofill.Query.Method", METHOD_GET, 1);
     histogram.ExpectBucketCount("Autofill.Query.WasInCache", CACHE_HIT, 1);
   }
+
+  // Query after another 2 days (a total of 3 days since the entry was cached).
+  // The cache entry had a max age of 2 days, so it should be expired. This
+  // should go to the embedded server.
+  {
+    clock_.Advance(base::TimeDelta::FromDays(2));
+    SCOPED_TRACE("Third Query");
+    base::HistogramTester histogram;
+    call_count_ = 0;
+    ASSERT_NO_FATAL_FAILURE(SendQueryRequest(form_structures));
+    EXPECT_EQ(1u, call_count_);
+    histogram.ExpectBucketCount("Autofill.ServerQueryResponse",
+                                AutofillMetrics::QUERY_SENT, 1);
+    histogram.ExpectBucketCount("Autofill.Query.Method", METHOD_GET, 1);
+    histogram.ExpectBucketCount("Autofill.Query.WasInCache", CACHE_MISS, 1);
+  }
 }
 
 }  // namespace autofill
diff --git a/components/autofill/core/browser/proto/BUILD.gn b/components/autofill/core/browser/proto/BUILD.gn
index 2a8069f6..495bd8b2 100644
--- a/components/autofill/core/browser/proto/BUILD.gn
+++ b/components/autofill/core/browser/proto/BUILD.gn
@@ -7,6 +7,7 @@
 proto_library("proto") {
   sources = [
     "autofill_sync.proto",
+    "password_requirements.proto",
     "server.proto",
   ]
 }
diff --git a/components/autofill/core/browser/proto/password_requirements.proto b/components/autofill/core/browser/proto/password_requirements.proto
new file mode 100644
index 0000000..f49ab7e
--- /dev/null
+++ b/components/autofill/core/browser/proto/password_requirements.proto
@@ -0,0 +1,89 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
+
+package autofill;
+
+// Requirements for generating passwords.
+message PasswordRequirementsSpec {
+  // A CharacterClass represents a type of characters (e.g. upper case,
+  // lower case, numbers, special symbols, ...).
+  //
+  // With min and max it is possible to specify the desired frequency:
+  // - Allowed: min = 0, max = MAX_INT32
+  // - Required: min = 1, max = MAX_INT32
+  // - Prohibited: min = 0, max = 0
+  //
+  // Note that character classes are meant to be handled independently of each
+  // other. Therefore, it is recommended not to set max > 0 for two overlapping
+  // character classes.
+  //
+  // It is also possible to express special rules like "at least two numbers"
+  // via min = 2, max = MAX_INT32, or "only numbers" by setting min = max = 0
+  // for all other character classes.
+  message CharacterClass {
+    // This is the pool of characters that make up the character set. For
+    // brevity, some defaults are assumed given the name/identity of the
+    // character class member (i.e., lower case vs upper case).
+    // Anything in UTF-8 is deemed acceptable here.
+    optional string character_set = 1;
+    // Minimum number of characters from this class.
+    optional uint32 min = 2;
+    // Maximum number of characters from this class.
+    optional uint32 max = 3;
+  }
+
+  // The priority of this specification.
+  //
+  // Autofill uses crowdsourcing to learn the requirements of passwords.
+  // It is possible to manually override the requirements for an entire domain
+  // or for a specific form. The priority field can be used to determine which
+  // specification wins. If multiple specificaitons are available, the one with
+  // the highest priority value wins. In that case all other specifications
+  // are discarded (i.e. completely overridden as if they were never there).
+  //
+  // Values:
+  // - 10 default for crowd sourced data.
+  // - 20 for hard-coded overrides by domain.
+  // - 30 for hard-coded overrides for a specific form.
+  optional uint32 priority = 1;
+
+  // A version number to allow older versions of Chrome to notice that they
+  // don't understand a new revision of the requirements spec.
+  optional uint32 spec_version = 2;
+
+  // Minimum and maximum length of generated passwords for a site. Note that
+  // these defaults may override the required minimum occurrences of character
+  // classes if the two contradict.
+  //
+  // Defaults may change over time.
+  optional uint32 min_length = 4;
+  optional uint32 max_length = 5;
+
+  // The following fields allow overriding requirements for specific character
+  // classes. If attributes of a CharacterClass are not set, the following
+  // defaults apply:
+
+  // All default character sets below are taken from 7-bit ASCII.
+
+  // Default: character_set = [a-z], min = 1, max = MAX_INT32
+  optional CharacterClass lower_case = 6;
+  // Default: character_set = [A-Z], min = 1, max = MAX_INT32
+  optional CharacterClass upper_case = 7;
+  // Alphabetic should not be used together with lower_case and upper_case.
+  // This is just an option for sites that don't differentiate the cases.
+  // If you wish to use alphabetic, you should set lower_case and upper_case
+  // to min = max = 0.
+  // Default: character_set = [a-zA-Z], min = 0, max = 0
+  optional CharacterClass alphabetic = 8;
+  // Default: character_set = [0-9], min = 1, max = MAX_INT32
+  optional CharacterClass numeric = 9;
+  // Default: character_set = some default that works often
+  // (e.g. [!@#$%^&*()_-+=]) but the default value may change over time!),
+  // min = 0, max = 0
+  optional CharacterClass symbols = 10;
+}
diff --git a/components/autofill/core/browser/proto/server.proto b/components/autofill/core/browser/proto/server.proto
index 11e9367a..991b82e 100644
--- a/components/autofill/core/browser/proto/server.proto
+++ b/components/autofill/core/browser/proto/server.proto
@@ -8,6 +8,8 @@
 
 package autofill;
 
+import "password_requirements.proto";
+
 // The message is sent when a client needs to autofill forms on web pages and
 // asks the server about known field types.
 // Next available id: 11
@@ -25,7 +27,7 @@
 
 // This message is the result of an Autofill query. It holds the field type
 // information.
-// Next available id: 8
+// Next available id: 10
 message AutofillQueryResponseContents {
   optional bool upload_required = 1;
   repeated group Field = 2 {
@@ -34,6 +36,10 @@
     // |overall_type_prediction| as the first item).
     message FieldPrediction { optional fixed32 type = 1; }
     repeated FieldPrediction predictions = 7;
+
+    // For fields of type NEW_PASSWORD and ACCOUNT_CREATION_PASSWORD, this may
+    // specify requirements for the generation of passwords.
+    optional PasswordRequirementsSpec password_requirements = 9;
   }
 }
 
diff --git a/components/bookmarks/browser/bookmark_storage.cc b/components/bookmarks/browser/bookmark_storage.cc
index 1633ba1d..3ae0c62 100644
--- a/components/bookmarks/browser/bookmark_storage.cc
+++ b/components/bookmarks/browser/bookmark_storage.cc
@@ -158,6 +158,10 @@
   url_index_ = std::make_unique<UrlIndex>(std::move(root_node_));
 }
 
+std::unique_ptr<UrlIndex> BookmarkLoadDetails::owned_url_index() {
+  return std::move(url_index_);
+}
+
 BookmarkPermanentNode* BookmarkLoadDetails::CreatePermanentNode(
     BookmarkClient* client,
     BookmarkNode::Type type) {
diff --git a/components/bookmarks/browser/bookmark_storage.h b/components/bookmarks/browser/bookmark_storage.h
index 08df5bb..0a1b1a1 100644
--- a/components/bookmarks/browser/bookmark_storage.h
+++ b/components/bookmarks/browser/bookmark_storage.h
@@ -104,7 +104,7 @@
   bool ids_reassigned() const { return ids_reassigned_; }
 
   void CreateUrlIndex();
-  std::unique_ptr<UrlIndex> owned_url_index() { return std::move(url_index_); }
+  std::unique_ptr<UrlIndex> owned_url_index();
 
  private:
   // Creates one of the possible permanent nodes (bookmark bar node, other node
diff --git a/components/cronet/BUILD.gn b/components/cronet/BUILD.gn
index 8665bc2..5d528ff 100644
--- a/components/cronet/BUILD.gn
+++ b/components/cronet/BUILD.gn
@@ -24,6 +24,8 @@
     "cronet_global_state.h",
     "cronet_prefs_manager.cc",
     "cronet_prefs_manager.h",
+    "cronet_upload_data_stream.cc",
+    "cronet_upload_data_stream.h",
     "cronet_url_request.cc",
     "cronet_url_request.h",
     "cronet_url_request_context.cc",
diff --git a/components/cronet/android/BUILD.gn b/components/cronet/android/BUILD.gn
index ab72633d..02870147 100644
--- a/components/cronet/android/BUILD.gn
+++ b/components/cronet/android/BUILD.gn
@@ -183,8 +183,6 @@
     "//components/cronet/android/cronet_bidirectional_stream_adapter.h",
     "//components/cronet/android/cronet_library_loader.cc",
     "//components/cronet/android/cronet_library_loader.h",
-    "//components/cronet/android/cronet_upload_data_stream.cc",
-    "//components/cronet/android/cronet_upload_data_stream.h",
     "//components/cronet/android/cronet_upload_data_stream_adapter.cc",
     "//components/cronet/android/cronet_upload_data_stream_adapter.h",
     "//components/cronet/android/cronet_url_request_adapter.cc",
diff --git a/components/cronet/android/cronet_upload_data_stream.cc b/components/cronet/android/cronet_upload_data_stream.cc
deleted file mode 100644
index dbed54b2..0000000
--- a/components/cronet/android/cronet_upload_data_stream.cc
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/cronet/android/cronet_upload_data_stream.h"
-
-#include "net/base/io_buffer.h"
-#include "net/base/net_errors.h"
-
-namespace cronet {
-
-CronetUploadDataStream::CronetUploadDataStream(Delegate* delegate, int64_t size)
-    : UploadDataStream(size < 0, 0),
-      size_(size),
-      waiting_on_read_(false),
-      read_in_progress_(false),
-      waiting_on_rewind_(false),
-      rewind_in_progress_(false),
-      at_front_of_stream_(true),
-      delegate_(delegate),
-      weak_factory_(this) {}
-
-CronetUploadDataStream::~CronetUploadDataStream() {
-  delegate_->OnUploadDataStreamDestroyed();
-}
-
-int CronetUploadDataStream::InitInternal(const net::NetLogWithSource& net_log) {
-  // ResetInternal should have been called before init, if the stream was in
-  // use.
-  DCHECK(!waiting_on_read_);
-  DCHECK(!waiting_on_rewind_);
-
-  if (!weak_factory_.HasWeakPtrs())
-    delegate_->InitializeOnNetworkThread(weak_factory_.GetWeakPtr());
-
-  // Set size of non-chunked uploads.
-  if (size_ >= 0)
-    SetSize(static_cast<uint64_t>(size_));
-
-  // If already at the front of the stream, nothing to do.
-  if (at_front_of_stream_) {
-    // Being at the front of the stream implies there's no read or rewind in
-    // progress.
-    DCHECK(!read_in_progress_);
-    DCHECK(!rewind_in_progress_);
-    return net::OK;
-  }
-
-  // Otherwise, the request is now waiting for the stream to be rewound.
-  waiting_on_rewind_ = true;
-
-  // Start rewinding the stream if no operation is in progress.
-  if (!read_in_progress_ && !rewind_in_progress_)
-    StartRewind();
-  return net::ERR_IO_PENDING;
-}
-
-int CronetUploadDataStream::ReadInternal(net::IOBuffer* buf, int buf_len) {
-  // All pending operations should have completed before a read can start.
-  DCHECK(!waiting_on_read_);
-  DCHECK(!read_in_progress_);
-  DCHECK(!waiting_on_rewind_);
-  DCHECK(!rewind_in_progress_);
-
-  DCHECK(buf);
-  DCHECK_GT(buf_len, 0);
-
-  read_in_progress_ = true;
-  waiting_on_read_ = true;
-  at_front_of_stream_ = false;
-  delegate_->Read(buf, buf_len);
-  return net::ERR_IO_PENDING;
-}
-
-void CronetUploadDataStream::ResetInternal() {
-  // Consumer is not waiting on any operation.  Note that the active operation,
-  // if any, will continue.
-  waiting_on_read_ = false;
-  waiting_on_rewind_ = false;
-}
-
-void CronetUploadDataStream::OnReadSuccess(int bytes_read, bool final_chunk) {
-  DCHECK(read_in_progress_);
-  DCHECK(!rewind_in_progress_);
-  DCHECK(bytes_read > 0 || (final_chunk && bytes_read == 0));
-  if (!is_chunked()) {
-    DCHECK(!final_chunk);
-  }
-
-  read_in_progress_ = false;
-
-  if (waiting_on_rewind_) {
-    DCHECK(!waiting_on_read_);
-    // Since a read just completed, can't be at the front of the stream.
-    StartRewind();
-    return;
-  }
-  // ResetInternal has been called, but still waiting on InitInternal.
-  if (!waiting_on_read_)
-    return;
-
-  waiting_on_read_ = false;
-  if (final_chunk)
-    SetIsFinalChunk();
-  OnReadCompleted(bytes_read);
-}
-
-void CronetUploadDataStream::OnRewindSuccess() {
-  DCHECK(!waiting_on_read_);
-  DCHECK(!read_in_progress_);
-  DCHECK(rewind_in_progress_);
-  DCHECK(!at_front_of_stream_);
-
-  rewind_in_progress_ = false;
-  at_front_of_stream_ = true;
-
-  // Possible that ResetInternal was called since the rewind was started, but
-  // InitInternal has not been.
-  if (!waiting_on_rewind_)
-    return;
-
-  waiting_on_rewind_ = false;
-  OnInitCompleted(net::OK);
-}
-
-void CronetUploadDataStream::StartRewind() {
-  DCHECK(!waiting_on_read_);
-  DCHECK(!read_in_progress_);
-  DCHECK(waiting_on_rewind_);
-  DCHECK(!rewind_in_progress_);
-  DCHECK(!at_front_of_stream_);
-
-  rewind_in_progress_ = true;
-  delegate_->Rewind();
-}
-
-}  // namespace cronet
diff --git a/components/cronet/android/cronet_upload_data_stream.h b/components/cronet/android/cronet_upload_data_stream.h
deleted file mode 100644
index 1fa103f0..0000000
--- a/components/cronet/android/cronet_upload_data_stream.h
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_CRONET_ANDROID_CRONET_UPLOAD_DATA_STREAM_H_
-#define COMPONENTS_CRONET_ANDROID_CRONET_UPLOAD_DATA_STREAM_H_
-
-#include <stdint.h>
-
-#include <memory>
-
-#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-#include "net/base/upload_data_stream.h"
-
-namespace net {
-class IOBuffer;
-}  // namespace net
-
-namespace cronet {
-
-// The CronetUploadDataStream is created on a Java thread, but afterwards, lives
-// and is deleted on the network thread. It's responsible for ensuring only one
-// read/rewind request sent to Java is outstanding at a time. The main
-// complexity is around Reset/Initialize calls while there's a pending read or
-// rewind.
-class CronetUploadDataStream : public net::UploadDataStream {
- public:
-  class Delegate {
-   public:
-    // Called once during initial setup on the network thread, called before
-    // all other methods.
-    virtual void InitializeOnNetworkThread(
-        base::WeakPtr<CronetUploadDataStream> upload_data_stream) = 0;
-
-    // Called for each read request. Delegate must respond by calling
-    // OnReadSuccess on the network thread asynchronous, or failing the request.
-    // Only called when there's no other pending read or rewind operation.
-    virtual void Read(net::IOBuffer* buffer, int buf_len) = 0;
-
-    // Called to rewind the stream. Not called when already at the start of the
-    // stream. The delegate must respond by calling OnRewindSuccess
-    // asynchronously on the network thread, or failing the request. Only called
-    // when there's no other pending read or rewind operation.
-    virtual void Rewind() = 0;
-
-    // Called when the CronetUploadDataStream is destroyed. The Delegate is then
-    // responsible for destroying itself. May be called when there's a pending
-    // read or rewind operation.
-    virtual void OnUploadDataStreamDestroyed() = 0;
-
-   protected:
-    Delegate() {}
-    virtual ~Delegate() {}
-
-   private:
-    DISALLOW_COPY_AND_ASSIGN(Delegate);
-  };
-
-  CronetUploadDataStream(Delegate* delegate, int64_t size);
-  ~CronetUploadDataStream() override;
-
-  // Failure is handled at the Java layer. These two success callbacks are
-  // invoked by Java UploadDataSink upon completion of the operation.
-  void OnReadSuccess(int bytes_read, bool final_chunk);
-  void OnRewindSuccess();
-
- private:
-  // net::UploadDataStream implementation:
-  int InitInternal(const net::NetLogWithSource& net_log) override;
-  int ReadInternal(net::IOBuffer* buf, int buf_len) override;
-  void ResetInternal() override;
-
-  // Starts rewinding the stream. Only called when not already at the front of
-  // the stream, and no operation is pending. Completes asynchronously.
-  void StartRewind();
-
-  // Size of the upload. -1 if chunked.
-  const int64_t size_;
-
-  // True if ReadInternal has been called, the read hasn't completed, and there
-  // hasn't been a ResetInternal call yet.
-  bool waiting_on_read_;
-  // True if there's a read operation in progress. This will always be true
-  // when |waiting_on_read_| is true. This will only be set to false once it
-  // completes, even though ResetInternal may have been called since the read
-  // started.
-  bool read_in_progress_;
-
-  // True if InitInternal has been called, the rewind hasn't completed, and
-  // there hasn't been a ResetInternal call yet. Note that this may be true
-  // even when the rewind hasn't yet started, if there's a read in progress.
-  bool waiting_on_rewind_;
-  // True if there's a rewind operation in progress. Rewinding will only start
-  // when |waiting_on_rewind_| is true, and |read_in_progress_| is false. This
-  // will only be set to false once it completes, even though ResetInternal may
-  // have been called since the rewind started.
-  bool rewind_in_progress_;
-
-  // Set to false when a read starts, true when a rewind completes.
-  bool at_front_of_stream_;
-
-  Delegate* const delegate_;
-
-  // Vends pointers on the network thread, though created on a Java thread.
-  base::WeakPtrFactory<CronetUploadDataStream> weak_factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(CronetUploadDataStream);
-};
-
-}  // namespace cronet
-
-#endif  // COMPONENTS_CRONET_ANDROID_CRONET_UPLOAD_DATA_STREAM_H_
diff --git a/components/cronet/android/cronet_upload_data_stream_adapter.h b/components/cronet/android/cronet_upload_data_stream_adapter.h
index 7519305..e171137 100644
--- a/components/cronet/android/cronet_upload_data_stream_adapter.h
+++ b/components/cronet/android/cronet_upload_data_stream_adapter.h
@@ -11,7 +11,7 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
-#include "components/cronet/android/cronet_upload_data_stream.h"
+#include "components/cronet/cronet_upload_data_stream.h"
 #include "net/base/io_buffer.h"
 
 namespace base {
diff --git a/components/cronet/cronet_upload_data_stream.cc b/components/cronet/cronet_upload_data_stream.cc
new file mode 100644
index 0000000..9da66f8
--- /dev/null
+++ b/components/cronet/cronet_upload_data_stream.cc
@@ -0,0 +1,137 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/cronet/cronet_upload_data_stream.h"
+
+#include "net/base/io_buffer.h"
+#include "net/base/net_errors.h"
+
+namespace cronet {
+
+CronetUploadDataStream::CronetUploadDataStream(Delegate* delegate, int64_t size)
+    : UploadDataStream(size < 0, 0),
+      size_(size),
+      waiting_on_read_(false),
+      read_in_progress_(false),
+      waiting_on_rewind_(false),
+      rewind_in_progress_(false),
+      at_front_of_stream_(true),
+      delegate_(delegate),
+      weak_factory_(this) {}
+
+CronetUploadDataStream::~CronetUploadDataStream() {
+  delegate_->OnUploadDataStreamDestroyed();
+}
+
+int CronetUploadDataStream::InitInternal(const net::NetLogWithSource& net_log) {
+  // ResetInternal should have been called before init, if the stream was in
+  // use.
+  DCHECK(!waiting_on_read_);
+  DCHECK(!waiting_on_rewind_);
+
+  if (!weak_factory_.HasWeakPtrs())
+    delegate_->InitializeOnNetworkThread(weak_factory_.GetWeakPtr());
+
+  // Set size of non-chunked uploads.
+  if (size_ >= 0)
+    SetSize(static_cast<uint64_t>(size_));
+
+  // If already at the front of the stream, nothing to do.
+  if (at_front_of_stream_) {
+    // Being at the front of the stream implies there's no read or rewind in
+    // progress.
+    DCHECK(!read_in_progress_);
+    DCHECK(!rewind_in_progress_);
+    return net::OK;
+  }
+
+  // Otherwise, the request is now waiting for the stream to be rewound.
+  waiting_on_rewind_ = true;
+
+  // Start rewinding the stream if no operation is in progress.
+  if (!read_in_progress_ && !rewind_in_progress_)
+    StartRewind();
+  return net::ERR_IO_PENDING;
+}
+
+int CronetUploadDataStream::ReadInternal(net::IOBuffer* buf, int buf_len) {
+  // All pending operations should have completed before a read can start.
+  DCHECK(!waiting_on_read_);
+  DCHECK(!read_in_progress_);
+  DCHECK(!waiting_on_rewind_);
+  DCHECK(!rewind_in_progress_);
+
+  DCHECK(buf);
+  DCHECK_GT(buf_len, 0);
+
+  read_in_progress_ = true;
+  waiting_on_read_ = true;
+  at_front_of_stream_ = false;
+  delegate_->Read(buf, buf_len);
+  return net::ERR_IO_PENDING;
+}
+
+void CronetUploadDataStream::ResetInternal() {
+  // Consumer is not waiting on any operation.  Note that the active operation,
+  // if any, will continue.
+  waiting_on_read_ = false;
+  waiting_on_rewind_ = false;
+}
+
+void CronetUploadDataStream::OnReadSuccess(int bytes_read, bool final_chunk) {
+  DCHECK(read_in_progress_);
+  DCHECK(!rewind_in_progress_);
+  DCHECK(bytes_read > 0 || (final_chunk && bytes_read == 0));
+  if (!is_chunked()) {
+    DCHECK(!final_chunk);
+  }
+
+  read_in_progress_ = false;
+
+  if (waiting_on_rewind_) {
+    DCHECK(!waiting_on_read_);
+    // Since a read just completed, can't be at the front of the stream.
+    StartRewind();
+    return;
+  }
+  // ResetInternal has been called, but still waiting on InitInternal.
+  if (!waiting_on_read_)
+    return;
+
+  waiting_on_read_ = false;
+  if (final_chunk)
+    SetIsFinalChunk();
+  OnReadCompleted(bytes_read);
+}
+
+void CronetUploadDataStream::OnRewindSuccess() {
+  DCHECK(!waiting_on_read_);
+  DCHECK(!read_in_progress_);
+  DCHECK(rewind_in_progress_);
+  DCHECK(!at_front_of_stream_);
+
+  rewind_in_progress_ = false;
+  at_front_of_stream_ = true;
+
+  // Possible that ResetInternal was called since the rewind was started, but
+  // InitInternal has not been.
+  if (!waiting_on_rewind_)
+    return;
+
+  waiting_on_rewind_ = false;
+  OnInitCompleted(net::OK);
+}
+
+void CronetUploadDataStream::StartRewind() {
+  DCHECK(!waiting_on_read_);
+  DCHECK(!read_in_progress_);
+  DCHECK(waiting_on_rewind_);
+  DCHECK(!rewind_in_progress_);
+  DCHECK(!at_front_of_stream_);
+
+  rewind_in_progress_ = true;
+  delegate_->Rewind();
+}
+
+}  // namespace cronet
diff --git a/components/cronet/cronet_upload_data_stream.h b/components/cronet/cronet_upload_data_stream.h
new file mode 100644
index 0000000..248e8c1
--- /dev/null
+++ b/components/cronet/cronet_upload_data_stream.h
@@ -0,0 +1,113 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_CRONET_CRONET_UPLOAD_DATA_STREAM_H_
+#define COMPONENTS_CRONET_CRONET_UPLOAD_DATA_STREAM_H_
+
+#include <stdint.h>
+
+#include <memory>
+
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "net/base/upload_data_stream.h"
+
+namespace net {
+class IOBuffer;
+}  // namespace net
+
+namespace cronet {
+
+// The CronetUploadDataStream is created on a client thread, but afterwards,
+// lives and is deleted on the network thread. It's responsible for ensuring
+// only one read/rewind request sent to client is outstanding at a time.
+// The main complexity is around Reset/Initialize calls while there's a pending
+// read or rewind.
+class CronetUploadDataStream : public net::UploadDataStream {
+ public:
+  class Delegate {
+   public:
+    // Called once during initial setup on the network thread, called before
+    // all other methods.
+    virtual void InitializeOnNetworkThread(
+        base::WeakPtr<CronetUploadDataStream> upload_data_stream) = 0;
+
+    // Called for each read request. Delegate must respond by calling
+    // OnReadSuccess on the network thread asynchronous, or failing the request.
+    // Only called when there's no other pending read or rewind operation.
+    virtual void Read(net::IOBuffer* buffer, int buf_len) = 0;
+
+    // Called to rewind the stream. Not called when already at the start of the
+    // stream. The delegate must respond by calling OnRewindSuccess
+    // asynchronously on the network thread, or failing the request. Only called
+    // when there's no other pending read or rewind operation.
+    virtual void Rewind() = 0;
+
+    // Called when the CronetUploadDataStream is destroyed. The Delegate is then
+    // responsible for destroying itself. May be called when there's a pending
+    // read or rewind operation.
+    virtual void OnUploadDataStreamDestroyed() = 0;
+
+   protected:
+    Delegate() {}
+    virtual ~Delegate() {}
+
+   private:
+    DISALLOW_COPY_AND_ASSIGN(Delegate);
+  };
+
+  CronetUploadDataStream(Delegate* delegate, int64_t size);
+  ~CronetUploadDataStream() override;
+
+  // Failure is handled at the Java layer. These two success callbacks are
+  // invoked by client UploadDataSink upon completion of the operation.
+  void OnReadSuccess(int bytes_read, bool final_chunk);
+  void OnRewindSuccess();
+
+ private:
+  // net::UploadDataStream implementation:
+  int InitInternal(const net::NetLogWithSource& net_log) override;
+  int ReadInternal(net::IOBuffer* buf, int buf_len) override;
+  void ResetInternal() override;
+
+  // Starts rewinding the stream. Only called when not already at the front of
+  // the stream, and no operation is pending. Completes asynchronously.
+  void StartRewind();
+
+  // Size of the upload. -1 if chunked.
+  const int64_t size_;
+
+  // True if ReadInternal has been called, the read hasn't completed, and there
+  // hasn't been a ResetInternal call yet.
+  bool waiting_on_read_;
+  // True if there's a read operation in progress. This will always be true
+  // when |waiting_on_read_| is true. This will only be set to false once it
+  // completes, even though ResetInternal may have been called since the read
+  // started.
+  bool read_in_progress_;
+
+  // True if InitInternal has been called, the rewind hasn't completed, and
+  // there hasn't been a ResetInternal call yet. Note that this may be true
+  // even when the rewind hasn't yet started, if there's a read in progress.
+  bool waiting_on_rewind_;
+  // True if there's a rewind operation in progress. Rewinding will only start
+  // when |waiting_on_rewind_| is true, and |read_in_progress_| is false. This
+  // will only be set to false once it completes, even though ResetInternal may
+  // have been called since the rewind started.
+  bool rewind_in_progress_;
+
+  // Set to false when a read starts, true when a rewind completes.
+  bool at_front_of_stream_;
+
+  Delegate* const delegate_;
+
+  // Vends pointers on the network thread, though created on a client thread.
+  base::WeakPtrFactory<CronetUploadDataStream> weak_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(CronetUploadDataStream);
+};
+
+}  // namespace cronet
+
+#endif  // COMPONENTS_CRONET_CRONET_UPLOAD_DATA_STREAM_H_
diff --git a/components/drive/chromeos/file_system_interface.h b/components/drive/chromeos/file_system_interface.h
index 9332d32..66bb335 100644
--- a/components/drive/chromeos/file_system_interface.h
+++ b/components/drive/chromeos/file_system_interface.h
@@ -194,7 +194,7 @@
 // The interface is defined to make FileSystem mockable.
 class FileSystemInterface {
  public:
-  virtual ~FileSystemInterface() {}
+  virtual ~FileSystemInterface() = default;
 
   // Adds and removes the observer.
   virtual void AddObserver(FileSystemObserver* observer) = 0;
diff --git a/components/drive/chromeos/file_system_observer.h b/components/drive/chromeos/file_system_observer.h
index 7b9379f..714943c3 100644
--- a/components/drive/chromeos/file_system_observer.h
+++ b/components/drive/chromeos/file_system_observer.h
@@ -33,7 +33,7 @@
                                 const base::FilePath& file_path) {}
 
  protected:
-  virtual ~FileSystemObserver() {}
+  virtual ~FileSystemObserver() = default;
 };
 
 }  // namespace drive
diff --git a/components/drive/drive_app_registry.cc b/components/drive/drive_app_registry.cc
index 37c976d..1de986a 100644
--- a/components/drive/drive_app_registry.cc
+++ b/components/drive/drive_app_registry.cc
@@ -54,8 +54,7 @@
 
 namespace drive {
 
-DriveAppInfo::DriveAppInfo() {
-}
+DriveAppInfo::DriveAppInfo() = default;
 
 DriveAppInfo::DriveAppInfo(
     const std::string& app_id,
@@ -76,8 +75,7 @@
 
 DriveAppInfo::DriveAppInfo(const DriveAppInfo& other) = default;
 
-DriveAppInfo::~DriveAppInfo() {
-}
+DriveAppInfo::~DriveAppInfo() = default;
 
 DriveAppRegistry::DriveAppRegistry(DriveServiceInterface* drive_service)
     : drive_service_(drive_service),
@@ -85,8 +83,7 @@
       weak_ptr_factory_(this) {
 }
 
-DriveAppRegistry::~DriveAppRegistry() {
-}
+DriveAppRegistry::~DriveAppRegistry() = default;
 
 void DriveAppRegistry::GetAppsForFile(
     const base::FilePath::StringType& file_extension,
diff --git a/components/drive/drive_app_registry_observer.h b/components/drive/drive_app_registry_observer.h
index d22781f3..30913f9 100644
--- a/components/drive/drive_app_registry_observer.h
+++ b/components/drive/drive_app_registry_observer.h
@@ -13,7 +13,7 @@
   virtual void OnDriveAppRegistryUpdated() = 0;
 
  protected:
-  virtual ~DriveAppRegistryObserver() {}
+  virtual ~DriveAppRegistryObserver() = default;
 };
 
 }  // namespace drive
diff --git a/components/drive/drive_notification_manager.cc b/components/drive/drive_notification_manager.cc
index 0c3bdd1..c0e4d0d 100644
--- a/components/drive/drive_notification_manager.cc
+++ b/components/drive/drive_notification_manager.cc
@@ -39,7 +39,7 @@
   RestartPollingTimer();
 }
 
-DriveNotificationManager::~DriveNotificationManager() {}
+DriveNotificationManager::~DriveNotificationManager() = default;
 
 void DriveNotificationManager::Shutdown() {
   // Unregister for Drive notifications.
diff --git a/components/drive/drive_notification_observer.h b/components/drive/drive_notification_observer.h
index b04a06b6..3cce39a 100644
--- a/components/drive/drive_notification_observer.h
+++ b/components/drive/drive_notification_observer.h
@@ -18,7 +18,7 @@
   virtual void OnPushNotificationEnabled(bool enabled) {}
 
  protected:
-  virtual ~DriveNotificationObserver() {}
+  virtual ~DriveNotificationObserver() = default;
 };
 
 }  // namespace drive
diff --git a/components/drive/drive_uploader.cc b/components/drive/drive_uploader.cc
index bc7d5f2..0e4eed48 100644
--- a/components/drive/drive_uploader.cc
+++ b/components/drive/drive_uploader.cc
@@ -111,8 +111,7 @@
     }
   }
 
-  ~UploadFileInfo() {
-  }
+  ~UploadFileInfo() = default;
 
   // Useful for printf debugging.
   std::string DebugString() const {
@@ -181,7 +180,7 @@
       wake_lock_provider_(std::move(wake_lock_provider)),
       weak_ptr_factory_(this) {}
 
-DriveUploader::~DriveUploader() {}
+DriveUploader::~DriveUploader() = default;
 
 CancelCallback DriveUploader::UploadNewFile(
     const std::string& parent_resource_id,
diff --git a/components/drive/drive_uploader.h b/components/drive/drive_uploader.h
index db3ca3c0..6673f81 100644
--- a/components/drive/drive_uploader.h
+++ b/components/drive/drive_uploader.h
@@ -44,7 +44,7 @@
 
 class DriveUploaderInterface {
  public:
-  virtual ~DriveUploaderInterface() {}
+  virtual ~DriveUploaderInterface() = default;
 
   // Starts batch processing for upload requests. All requests which upload
   // small files (less than kMaxMultipartUploadSize) between
diff --git a/components/drive/event_logger.cc b/components/drive/event_logger.cc
index 9815c11..bf91f13 100644
--- a/components/drive/event_logger.cc
+++ b/components/drive/event_logger.cc
@@ -22,8 +22,7 @@
       next_event_id_(0) {
 }
 
-EventLogger::~EventLogger() {
-}
+EventLogger::~EventLogger() = default;
 
 void EventLogger::LogRawString(logging::LogSeverity severity,
                                const std::string& what) {
diff --git a/components/drive/file_change.cc b/components/drive/file_change.cc
index 1321cf5..dde2962 100644
--- a/components/drive/file_change.cc
+++ b/components/drive/file_change.cc
@@ -87,10 +87,9 @@
   return ss.str();
 }
 
-FileChange::FileChange() {
-}
+FileChange::FileChange() = default;
 FileChange::FileChange(const FileChange& other) = default;
-FileChange::~FileChange() {}
+FileChange::~FileChange() = default;
 
 void FileChange::Update(const base::FilePath file_path,
                         const FileChange::Change& new_change) {
diff --git a/components/drive/file_system_metadata.cc b/components/drive/file_system_metadata.cc
index def3d7b..67cb98f8 100644
--- a/components/drive/file_system_metadata.cc
+++ b/components/drive/file_system_metadata.cc
@@ -9,7 +9,6 @@
 FileSystemMetadata::FileSystemMetadata()
     : refreshing(false), last_update_check_error(FILE_ERROR_OK) {}
 
-FileSystemMetadata::~FileSystemMetadata() {
-}
+FileSystemMetadata::~FileSystemMetadata() = default;
 
 }  // namespace drive
diff --git a/components/drive/file_system_unittest.cc b/components/drive/file_system_unittest.cc
index 279effb..6ac989d3 100644
--- a/components/drive/file_system_unittest.cc
+++ b/components/drive/file_system_unittest.cc
@@ -74,8 +74,8 @@
 // This class is used to record directory changes and examine them later.
 class MockDirectoryChangeObserver : public FileSystemObserver {
  public:
-  MockDirectoryChangeObserver() {}
-  ~MockDirectoryChangeObserver() override {}
+  MockDirectoryChangeObserver() = default;
+  ~MockDirectoryChangeObserver() override = default;
 
   // FileSystemObserver overrides.
   void OnDirectoryChanged(const base::FilePath& directory_path) override {
diff --git a/components/drive/file_write_watcher.cc b/components/drive/file_write_watcher.cc
index 621f4cb..0b3b55793 100644
--- a/components/drive/file_write_watcher.cc
+++ b/components/drive/file_write_watcher.cc
@@ -113,8 +113,7 @@
                  google_apis::CreateRelayCallback(on_write_callback)));
 }
 
-FileWriteWatcher::FileWriteWatcherImpl::~FileWriteWatcherImpl() {
-}
+FileWriteWatcher::FileWriteWatcherImpl::~FileWriteWatcherImpl() = default;
 
 void FileWriteWatcher::FileWriteWatcherImpl::DestroyOnBlockingThread() {
   delete this;
diff --git a/components/drive/job_list.h b/components/drive/job_list.h
index e06382a..ce178448 100644
--- a/components/drive/job_list.h
+++ b/components/drive/job_list.h
@@ -115,13 +115,13 @@
   virtual void OnJobUpdated(const JobInfo& job_info) {}
 
  protected:
-  virtual ~JobListObserver() {}
+  virtual ~JobListObserver() = default;
 };
 
 // The interface to expose the list of issued Drive jobs.
 class JobListInterface {
  public:
-  virtual ~JobListInterface() {}
+  virtual ~JobListInterface() = default;
 
   // Returns the list of jobs currently managed by the scheduler.
   virtual std::vector<JobInfo> GetJobInfoList() = 0;
diff --git a/components/drive/job_queue.cc b/components/drive/job_queue.cc
index c6a4fe4..5a5aa8b 100644
--- a/components/drive/job_queue.cc
+++ b/components/drive/job_queue.cc
@@ -17,8 +17,7 @@
 JobQueue::Item::Item(JobID id, bool batchable, uint64_t size)
     : id(id), batchable(batchable), size(size) {}
 
-JobQueue::Item::~Item() {
-}
+JobQueue::Item::~Item() = default;
 
 JobQueue::JobQueue(size_t num_max_concurrent_jobs,
                    size_t num_priority_levels,
@@ -30,8 +29,7 @@
       max_batch_size_(max_batch_size) {
 }
 
-JobQueue::~JobQueue() {
-}
+JobQueue::~JobQueue() = default;
 
 void JobQueue::PopForRun(int accepted_priority, std::vector<JobID>* jobs) {
   DCHECK_LT(accepted_priority, static_cast<int>(queue_.size()));
diff --git a/components/drive/local_file_reader.cc b/components/drive/local_file_reader.cc
index de03e7f..b4bcd3b4 100644
--- a/components/drive/local_file_reader.cc
+++ b/components/drive/local_file_reader.cc
@@ -20,8 +20,7 @@
       weak_ptr_factory_(this) {
 }
 
-LocalFileReader::~LocalFileReader() {
-}
+LocalFileReader::~LocalFileReader() = default;
 
 void LocalFileReader::Open(const base::FilePath& file_path,
                            int64_t offset,
diff --git a/components/drive/resource_metadata_storage.cc b/components/drive/resource_metadata_storage.cc
index 3524a7d..7e46cb56 100644
--- a/components/drive/resource_metadata_storage.cc
+++ b/components/drive/resource_metadata_storage.cc
@@ -1023,7 +1023,7 @@
 ResourceMetadataStorage::RecoveredCacheInfo::RecoveredCacheInfo()
     : is_dirty(false) {}
 
-ResourceMetadataStorage::RecoveredCacheInfo::~RecoveredCacheInfo() {}
+ResourceMetadataStorage::RecoveredCacheInfo::~RecoveredCacheInfo() = default;
 
 ResourceMetadataStorage::~ResourceMetadataStorage() {
   base::AssertBlockingAllowed();
diff --git a/components/drive/resource_metadata_storage_unittest.cc b/components/drive/resource_metadata_storage_unittest.cc
index d41cda85..e01ecf4 100644
--- a/components/drive/resource_metadata_storage_unittest.cc
+++ b/components/drive/resource_metadata_storage_unittest.cc
@@ -30,8 +30,8 @@
 
 class ResourceMetadataStorageTest : public testing::Test {
  protected:
-  ResourceMetadataStorageTest() {}
-  ~ResourceMetadataStorageTest() override {}
+  ResourceMetadataStorageTest() = default;
+  ~ResourceMetadataStorageTest() override = default;
 
   void SetUp() override {
     ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
diff --git a/components/drive/service/drive_service_interface.cc b/components/drive/service/drive_service_interface.cc
index 199a2cc..21a4208 100644
--- a/components/drive/service/drive_service_interface.cc
+++ b/components/drive/service/drive_service_interface.cc
@@ -13,25 +13,20 @@
 AddNewDirectoryOptions::AddNewDirectoryOptions(
     const AddNewDirectoryOptions& other) = default;
 
-AddNewDirectoryOptions::~AddNewDirectoryOptions() {
-}
+AddNewDirectoryOptions::~AddNewDirectoryOptions() = default;
 
-UploadNewFileOptions::UploadNewFileOptions() {
-}
+UploadNewFileOptions::UploadNewFileOptions() = default;
 
 UploadNewFileOptions::UploadNewFileOptions(const UploadNewFileOptions& other) =
     default;
 
-UploadNewFileOptions::~UploadNewFileOptions() {
-}
+UploadNewFileOptions::~UploadNewFileOptions() = default;
 
-UploadExistingFileOptions::UploadExistingFileOptions() {
-}
+UploadExistingFileOptions::UploadExistingFileOptions() = default;
 
 UploadExistingFileOptions::UploadExistingFileOptions(
     const UploadExistingFileOptions& other) = default;
 
-UploadExistingFileOptions::~UploadExistingFileOptions() {
-}
+UploadExistingFileOptions::~UploadExistingFileOptions() = default;
 
 }  // namespace drive
diff --git a/components/drive/service/drive_service_interface.h b/components/drive/service/drive_service_interface.h
index 92582f23..6c21596 100644
--- a/components/drive/service/drive_service_interface.h
+++ b/components/drive/service/drive_service_interface.h
@@ -32,7 +32,7 @@
   virtual void OnRefreshTokenInvalid() {}
 
  protected:
-  virtual ~DriveServiceObserver() {}
+  virtual ~DriveServiceObserver() = default;
 };
 
 // Optional parameters for AddNewDirectory().
@@ -111,7 +111,7 @@
 // Interface where we define operations that can be sent in batch requests.
 class DriveServiceBatchOperationsInterface {
  public:
-  virtual ~DriveServiceBatchOperationsInterface() {}
+  virtual ~DriveServiceBatchOperationsInterface() = default;
 
   // Uploads a file by a single request with multipart body. It's more efficient
   // for small files than using |InitiateUploadNewFile| and |ResumeUpload|.
@@ -145,7 +145,7 @@
 class BatchRequestConfiguratorInterface
     : public DriveServiceBatchOperationsInterface {
  public:
-  ~BatchRequestConfiguratorInterface() override {}
+  ~BatchRequestConfiguratorInterface() override = default;
 
   // Commits and sends the batch request.
   virtual void Commit() = 0;
@@ -158,7 +158,7 @@
 // URLFetcher that runs on UI thread.
 class DriveServiceInterface : public DriveServiceBatchOperationsInterface {
  public:
-  ~DriveServiceInterface() override {}
+  ~DriveServiceInterface() override = default;
 
   // Common service:
 
diff --git a/components/drive/service/dummy_drive_service.cc b/components/drive/service/dummy_drive_service.cc
index eab3802..cf74ebd 100644
--- a/components/drive/service/dummy_drive_service.cc
+++ b/components/drive/service/dummy_drive_service.cc
@@ -27,9 +27,9 @@
 
 namespace drive {
 
-DummyDriveService::DummyDriveService() {}
+DummyDriveService::DummyDriveService() = default;
 
-DummyDriveService::~DummyDriveService() {}
+DummyDriveService::~DummyDriveService() = default;
 
 void DummyDriveService::Initialize(const std::string& account_id) {}
 
diff --git a/components/drive/service/fake_drive_service.cc b/components/drive/service/fake_drive_service.cc
index 7363301..0cb89b2 100644
--- a/components/drive/service/fake_drive_service.cc
+++ b/components/drive/service/fake_drive_service.cc
@@ -163,8 +163,8 @@
 }
 
 struct CallResumeUpload {
-  CallResumeUpload() {}
-  ~CallResumeUpload() {}
+  CallResumeUpload() = default;
+  ~CallResumeUpload() = default;
 
   void Run(DriveApiErrorCode code, const GURL& upload_url) {
     if (service) {
diff --git a/components/drive/service/fake_drive_service.h b/components/drive/service/fake_drive_service.h
index 7ea7b1f8..c838c04 100644
--- a/components/drive/service/fake_drive_service.h
+++ b/components/drive/service/fake_drive_service.h
@@ -42,7 +42,7 @@
  public:
   class ChangeObserver {
    public:
-    virtual ~ChangeObserver() {}
+    virtual ~ChangeObserver() = default;
     virtual void OnNewChangeAvailable() = 0;
   };
 
diff --git a/components/exo/pointer.cc b/components/exo/pointer.cc
index 6b6fd69f..6257a956 100644
--- a/components/exo/pointer.cc
+++ b/components/exo/pointer.cc
@@ -334,6 +334,9 @@
 
 void Pointer::OnCursorDisplayChanged(const display::Display& display) {
   auto* cursor_client = WMHelper::GetInstance()->GetCursorClient();
+  // TODO(crbug.com/631103): CursorClient does not exist in mash yet.
+  if (!cursor_client)
+    return;
   if (cursor_ == ui::CursorType::kCustom &&
       cursor_client->GetCursor() == cursor_client->GetCursor()) {
     // If the current cursor is still the one created by us,
@@ -459,6 +462,9 @@
 void Pointer::UpdateCursor() {
   auto* helper = WMHelper::GetInstance();
   aura::client::CursorClient* cursor_client = helper->GetCursorClient();
+  // TODO(crbug.com/631103): CursorClient does not exist in mash yet.
+  if (!cursor_client)
+    return;
 
   if (cursor_ == ui::CursorType::kCustom) {
     SkBitmap bitmap = cursor_bitmap_;
diff --git a/components/heap_profiling/supervisor.cc b/components/heap_profiling/supervisor.cc
index ed21ae90..64b1a94 100644
--- a/components/heap_profiling/supervisor.cc
+++ b/components/heap_profiling/supervisor.cc
@@ -151,16 +151,25 @@
       },
       std::move(callback));
 
-  memory_instrumentation::MemoryInstrumentation::GetInstance()
-      ->RequestGlobalDumpAndAppendToTrace(
-          base::trace_event::MemoryDumpType::EXPLICITLY_TRIGGERED,
-          base::trace_event::MemoryDumpLevelOfDetail::BACKGROUND,
-          base::AdaptCallbackForRepeating(std::move(finished_dump_callback)));
+  auto trigger_memory_dump_callback = base::BindOnce(
+      [](base::OnceCallback<void(bool success, uint64_t dump_guid)>
+             finished_dump_callback) {
+        memory_instrumentation::MemoryInstrumentation::GetInstance()
+            ->RequestGlobalDumpAndAppendToTrace(
+                base::trace_event::MemoryDumpType::EXPLICITLY_TRIGGERED,
+                base::trace_event::MemoryDumpLevelOfDetail::BACKGROUND,
+                base::AdaptCallbackForRepeating(
+                    std::move(finished_dump_callback)));
+      },
+      std::move(finished_dump_callback));
 
   // The only reason this should return false is if tracing is already enabled,
   // which we've already checked.
+  // Use AdaptCallbackForRepeating since the argument passed to StartTracing()
+  // is intended to be a OnceCallback, but the code has not yet been migrated.
   bool result = content::TracingController::GetInstance()->StartTracing(
-      GetBackgroundTracingConfig(anonymize), base::Closure());
+      GetBackgroundTracingConfig(anonymize),
+      base::AdaptCallbackForRepeating(std::move(trigger_memory_dump_callback)));
   DCHECK(result);
 }
 
diff --git a/components/heap_profiling/test_driver.cc b/components/heap_profiling/test_driver.cc
index 7c841bc5..8befe95 100644
--- a/components/heap_profiling/test_driver.cc
+++ b/components/heap_profiling/test_driver.cc
@@ -8,6 +8,7 @@
 
 #include "base/bind.h"
 #include "base/command_line.h"
+#include "base/files/file_path.h"
 #include "base/json/json_reader.h"
 #include "base/process/process_handle.h"
 #include "base/run_loop.h"
@@ -518,17 +519,34 @@
                           bool should_have_contents) {
   base::Value* vm_regions = process_mmaps->FindKey("vm_regions");
   size_t count = vm_regions->GetList().size();
-  if (should_have_contents) {
-    if (count == 0) {
-      LOG(ERROR) << "vm_regions should have contents, but doesn't";
-      return false;
-    }
-  } else {
+  if (!should_have_contents) {
     if (count != 0) {
       LOG(ERROR) << "vm_regions should be empty, but has contents";
       return false;
     }
+    return true;
   }
+
+  if (count == 0) {
+    LOG(ERROR) << "vm_regions should have contents, but doesn't";
+    return false;
+  }
+
+  // File paths may contain PII. Make sure that "mf" entries only contain the
+  // basename, rather than a full path.
+  for (const base::Value& vm_region : vm_regions->GetList()) {
+    const base::Value* file_path_value = vm_region.FindKey("mf");
+    if (file_path_value) {
+      std::string file_path = file_path_value->GetString();
+
+      base::FilePath::StringType path(file_path.begin(), file_path.end());
+      if (base::FilePath(path).BaseName().AsUTF8Unsafe() != file_path) {
+        LOG(ERROR) << "vm_region should not contain file path: " << file_path;
+        return false;
+      }
+    }
+  }
+
   return true;
 }
 
@@ -830,7 +848,7 @@
   Supervisor::GetInstance()->RequestTraceWithHeapDump(
       base::Bind(&TestDriver::TraceFinished, base::Unretained(this),
                  std::move(finish_tracing_closure)),
-      false /* strip_path_from_mapped_files */);
+      /* anonymize= */ true);
 
   if (synchronous)
     run_loop->Run();
@@ -1029,6 +1047,11 @@
     wait_for_ui_thread_.Signal();
     return;
   }
+
+  // Brief sleep to prevent spamming the task queue, since this code is called
+  // in a tight loop.
+  base::PlatformThread::Sleep(base::TimeDelta::FromMicroseconds(100));
+
   WaitForProfilingToStartForAllRenderersUIThreadAndSignal();
 }
 
diff --git a/components/history/core/browser/BUILD.gn b/components/history/core/browser/BUILD.gn
index a57bb3e..141a0e7 100644
--- a/components/history/core/browser/BUILD.gn
+++ b/components/history/core/browser/BUILD.gn
@@ -11,6 +11,8 @@
     "default_top_sites_provider.h",
     "delete_directive_handler.cc",
     "delete_directive_handler.h",
+    "domain_mixing_metrics.cc",
+    "domain_mixing_metrics.h",
     "download_constants.h",
     "download_database.cc",
     "download_database.h",
@@ -193,6 +195,7 @@
   testonly = true
   sources = [
     "browsing_history_service_unittest.cc",
+    "domain_mixing_metrics_unittest.cc",
     "download_slice_info_unittest.cc",
     "expire_history_backend_unittest.cc",
     "history_backend_db_unittest.cc",
diff --git a/components/history/core/browser/domain_mixing_metrics.cc b/components/history/core/browser/domain_mixing_metrics.cc
new file mode 100644
index 0000000..88742939
--- /dev/null
+++ b/components/history/core/browser/domain_mixing_metrics.cc
@@ -0,0 +1,150 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/history/core/browser/domain_mixing_metrics.h"
+
+#include "base/containers/flat_map.h"
+#include "base/logging.h"
+#include "base/metrics/histogram_macros.h"
+#include "ui/gfx/geometry/safe_integer_conversions.h"
+
+namespace history {
+namespace {
+
+// For readability, represents days as times rounded down to a multiple in
+// days from begin_time.
+using Day = base::Time;
+using DomainVisits = base::flat_map<std::string, int>;
+using DomainVisitsPerDay = base::flat_map<Day, DomainVisits>;
+
+// The time intervals in days to compute domain mixing metrics for, sorted
+// in ascending order.
+std::vector<int> NumDaysForMetrics() {
+  return {1, 7, 14, 30};
+}
+
+// Maps a time to the start of a day using ref_start_of_day as the reference
+// time for the start of a day. Some examples:
+//
+// time = 2018-01-02 13:00:00 UTC
+// ref = 2018-01-04 04:00:00 UTC
+// result = 2018-01-02 04:00:00 UTC
+//
+// time = 2018-01-06 03:00:00 UTC
+// ref = 2018-01-04 04:00:00 UTC
+// result = 2018-01-05 04:00:00 UTC
+Day ToStartOfDay(base::Time time, Day ref_start_of_day) {
+  return ref_start_of_day +
+         base::TimeDelta::FromDays((time - ref_start_of_day).InDaysFloored());
+}
+
+// Counts the number of visits per day and per domain as a nested map
+// day -> domain -> num_visits.
+// start_of_day is used as the reference time for the start of a day.
+DomainVisitsPerDay CountDomainVisitsPerDay(
+    base::Time start_of_day,
+    const std::vector<DomainVisit>& domain_visits) {
+  DomainVisitsPerDay domain_visits_per_day;
+  for (const DomainVisit& visit : domain_visits) {
+    const Day day = ToStartOfDay(visit.visit_time(), start_of_day);
+    DomainVisits& domain_visits_for_day = domain_visits_per_day[day];
+    ++domain_visits_for_day[visit.domain()];
+  }
+  return domain_visits_per_day;
+}
+
+// Computes the domain mixing ratio given the number of visits for each domain.
+double ComputeDomainMixingRatio(const DomainVisits& domain_visits) {
+  // First, we extract the domain with the most visits.
+  const auto top_domain = std::max_element(
+      domain_visits.begin(), domain_visits.end(),
+      [](const DomainVisits::value_type& a, const DomainVisits::value_type& b) {
+        return a.second < b.second;
+      });
+
+  // Then we compute the number of visits that are not on the top domain
+  // (secondary domains).
+  int other_visits = 0;
+  for (const auto& domain_num_visits : domain_visits) {
+    if (domain_num_visits.first != top_domain->first)
+      other_visits += domain_num_visits.second;
+  }
+
+  // Finally, we compute the domain mixing ratio which is the ratio of the
+  // number of visits on secondary domains to the total number of visits.
+  // This ratio is equal to 0 if all visits are on the top domain (no domain
+  // mixing) and is close to 1 if most visits are on secondary domains.
+  DCHECK_GT(other_visits + top_domain->second, 0)
+      << "Tried to compute domain mixing for a time range with no domain "
+         "visits, this should never happen as we only compute domain mixing "
+         "for active days.";
+  return static_cast<double>(other_visits) /
+         (other_visits + top_domain->second);
+}
+
+void EmitDomainMixingMetric(const DomainVisits& domain_visits, int num_days) {
+  double domain_mixing_ratio = ComputeDomainMixingRatio(domain_visits);
+  int percentage = gfx::ToRoundedInt(100 * domain_mixing_ratio);
+  switch (num_days) {
+    case 1:
+      UMA_HISTOGRAM_PERCENTAGE("DomainMixing.OneDay", percentage);
+      break;
+    case 7:
+      UMA_HISTOGRAM_PERCENTAGE("DomainMixing.OneWeek", percentage);
+      break;
+    case 14:
+      UMA_HISTOGRAM_PERCENTAGE("DomainMixing.TwoWeeks", percentage);
+      break;
+    case 30:
+      UMA_HISTOGRAM_PERCENTAGE("DomainMixing.OneMonth", percentage);
+      break;
+    default:
+      // This should never happen.
+      NOTREACHED();
+  }
+}
+
+void EmitDomainMixingMetricsForDay(
+    const DomainVisitsPerDay::const_iterator& active_day,
+    const DomainVisitsPerDay& domain_visits_per_day) {
+  DomainVisits domain_visits = active_day->second;
+  // To efficiently compute domain mixing for each of the time periods, we
+  // aggregate domain visits preceding the active day in a single pass.
+  // The metrics to emit are sorted by increasing time period lengths.
+  // We take them in order, aggregate the number of activity days required
+  // for the current one, then move on to the next one.
+  // Reverse iterator, starting at the day before active_day.
+  auto it = std::make_reverse_iterator(active_day);
+  for (const int num_days : NumDaysForMetrics()) {
+    const Day first_day =
+        active_day->first - base::TimeDelta::FromDays(num_days - 1);
+    for (; it != domain_visits_per_day.rend() && it->first >= first_day; ++it) {
+      for (const auto& domain_num_visits : it->second) {
+        domain_visits[domain_num_visits.first] += domain_num_visits.second;
+      }
+    }
+    // We have aggregated all the days within the time window for the current
+    // metric.
+    EmitDomainMixingMetric(domain_visits, num_days);
+  }
+}
+
+}  // namespace
+
+void EmitDomainMixingMetrics(const std::vector<DomainVisit>& domain_visits,
+                             base::Time start_of_first_day_to_emit) {
+  // We count the visits per domain for each day of user activity.
+  DomainVisitsPerDay domain_visits_per_day =
+      CountDomainVisitsPerDay(start_of_first_day_to_emit, domain_visits);
+
+  // We then compute domain mixing metrics for each day of activity within
+  // [start_of_first_day_to_emit, last_day].
+  for (auto active_day_it =
+           domain_visits_per_day.lower_bound(start_of_first_day_to_emit);
+       active_day_it != domain_visits_per_day.end(); ++active_day_it) {
+    EmitDomainMixingMetricsForDay(active_day_it, domain_visits_per_day);
+  }
+}
+
+}  // namespace history
\ No newline at end of file
diff --git a/components/history/core/browser/domain_mixing_metrics.h b/components/history/core/browser/domain_mixing_metrics.h
new file mode 100644
index 0000000..7ae2e514
--- /dev/null
+++ b/components/history/core/browser/domain_mixing_metrics.h
@@ -0,0 +1,35 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_HISTORY_CORE_BROWSER_DOMAIN_MIXING_METRICS_H_
+#define COMPONENTS_HISTORY_CORE_BROWSER_DOMAIN_MIXING_METRICS_H_
+
+#include <memory>
+
+#include "base/callback.h"
+#include "base/time/time.h"
+#include "components/history/core/browser/history_types.h"
+
+namespace history {
+
+// Emits domain mixing metrics given a list of domain visits and the start of
+// the first day to compute metrics for.
+//
+// See http://goto.google.com/chrome-no-searchdomaincheck for more details on
+// what domain mixing metrics are and how they are computed.
+//
+// The domain_visits vector is expected to contain exactly all the domain visits
+// made by the user from start_of_first_day_to_emit - 29 days (to compute the 30
+// day domain mixing metric for the first day) until the end of the last day to
+// compute metrics for.
+//
+// This method wraps the business logic required to compute domain mixing
+// metrics and is exposed for testing purposes to decouple testing the logic
+// that computes the metrics from the database logic.
+void EmitDomainMixingMetrics(const std::vector<DomainVisit>& domain_visits,
+                             base::Time start_of_first_day_to_emit);
+
+}  // namespace history
+
+#endif
\ No newline at end of file
diff --git a/components/history/core/browser/domain_mixing_metrics_unittest.cc b/components/history/core/browser/domain_mixing_metrics_unittest.cc
new file mode 100644
index 0000000..b03bdbf4
--- /dev/null
+++ b/components/history/core/browser/domain_mixing_metrics_unittest.cc
@@ -0,0 +1,89 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/history/core/browser/domain_mixing_metrics.h"
+
+#include <memory>
+#include <vector>
+
+#include "base/bind.h"
+#include "base/test/histogram_tester.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace history {
+
+class DomainMixingMetricsTest : public testing::Test {
+ protected:
+  base::HistogramTester tester_;
+};
+
+TEST_F(DomainMixingMetricsTest, NoVisits) {
+  base::Time now =
+      base::Time::UnixEpoch() + base::TimeDelta::FromSeconds(1523432317);
+  EmitDomainMixingMetrics({}, now);
+
+  // Check that no metrics were emitted.
+  tester_.ExpectTotalCount("DomainMixing.OneDay", 0);
+  tester_.ExpectTotalCount("DomainMixing.OneWeek", 0);
+  tester_.ExpectTotalCount("DomainMixing.TwoWeeks", 0);
+  tester_.ExpectTotalCount("DomainMixing.OneMonth", 0);
+}
+
+TEST_F(DomainMixingMetricsTest, WithVisits) {
+  // Given the following Google domain visits:
+  // - Day 1, 1am, www.google.com
+  // - Day 2, 11pm, www.google.ch
+  // - Day 8, 2am, www.google.ch
+  // - Day 8, 10pm, www.google.fr
+  // this test checks that the correct domain mixing metrics for Day 8 are
+  // emitted:
+  // DomainMixing.OneDay 50% (Day 8 has one query on .ch, one on .fr)
+  // DomainMixing.OneWeek 33% (2 on .ch, 1 on .fr, day 1 is out of range)
+  // DomainMixing.TwoWeeks 50% (2 on .ch, 2 on other domains - 1.fr and 1 .com)
+  // DomainMixing.OneMonth 50% (ditto)
+  base::Time day1 =
+      base::Time::UnixEpoch() + base::TimeDelta::FromSeconds(1523432317);
+  base::Time day2 = day1 + base::TimeDelta::FromDays(1);
+  base::Time day8 = day1 + base::TimeDelta::FromDays(7);
+  EmitDomainMixingMetrics(
+      {
+          DomainVisit("www.google.com", day1 + base::TimeDelta::FromHours(1)),
+          DomainVisit("www.google.ch", day2 + base::TimeDelta::FromHours(23)),
+          DomainVisit("www.google.ch", day8 + base::TimeDelta::FromHours(2)),
+          DomainVisit("www.google.fr", day8 + base::TimeDelta::FromHours(22)),
+      },
+      day8);
+
+  tester_.ExpectUniqueSample("DomainMixing.OneDay", 50, 1);
+  tester_.ExpectUniqueSample("DomainMixing.OneWeek", 33, 1);
+  tester_.ExpectUniqueSample("DomainMixing.TwoWeeks", 50, 1);
+  tester_.ExpectUniqueSample("DomainMixing.OneMonth", 50, 1);
+}
+
+TEST_F(DomainMixingMetricsTest, WithInactiveDays) {
+  base::Time day1 =
+      base::Time::UnixEpoch() + base::TimeDelta::FromSeconds(1523432317);
+  base::Time day3 = day1 + base::TimeDelta::FromDays(2);
+  EmitDomainMixingMetrics(
+      {
+          DomainVisit("www.google.com", day1),
+          DomainVisit("www.google.ch", day3),
+      },
+      day1);
+
+  // Check that no metrics are emitted for day2 when the user was inactive.
+  tester_.ExpectTotalCount("DomainMixing.OneDay", 2);
+  tester_.ExpectBucketCount("DomainMixing.OneDay", 0, 2);  // Day 1 and 3.
+  tester_.ExpectTotalCount("DomainMixing.OneWeek", 2);
+  tester_.ExpectBucketCount("DomainMixing.OneWeek", 0, 1);   // Day 1.
+  tester_.ExpectBucketCount("DomainMixing.OneWeek", 50, 1);  // Day 3.
+  tester_.ExpectTotalCount("DomainMixing.TwoWeeks", 2);
+  tester_.ExpectBucketCount("DomainMixing.TwoWeeks", 0, 1);   // Day 1.
+  tester_.ExpectBucketCount("DomainMixing.TwoWeeks", 50, 1);  // Day 3.
+  tester_.ExpectTotalCount("DomainMixing.OneMonth", 2);
+  tester_.ExpectBucketCount("DomainMixing.OneMonth", 0, 1);   // Day 1.
+  tester_.ExpectBucketCount("DomainMixing.OneMonth", 50, 1);  // Day 3.
+}
+
+}  // namespace history
\ No newline at end of file
diff --git a/components/history/core/browser/history_types.h b/components/history/core/browser/history_types.h
index b36053f7..5e72a01 100644
--- a/components/history/core/browser/history_types.h
+++ b/components/history/core/browser/history_types.h
@@ -703,6 +703,21 @@
   DISALLOW_COPY_AND_ASSIGN(DeletionInfo);
 };
 
+// Represents a visit to a domain.
+class DomainVisit {
+ public:
+  DomainVisit(const std::string& domain, base::Time visit_time)
+      : domain_(domain), visit_time_(visit_time) {}
+
+  const std::string& domain() const { return domain_; }
+
+  const base::Time visit_time() const { return visit_time_; }
+
+ private:
+  std::string domain_;
+  base::Time visit_time_;
+};
+
 }  // namespace history
 
 #endif  // COMPONENTS_HISTORY_CORE_BROWSER_HISTORY_TYPES_H_
diff --git a/components/history/core/browser/typed_url_sync_bridge.cc b/components/history/core/browser/typed_url_sync_bridge.cc
index edbd2b4e..dd0170a 100644
--- a/components/history/core/browser/typed_url_sync_bridge.cc
+++ b/components/history/core/browser/typed_url_sync_bridge.cc
@@ -416,11 +416,7 @@
       std::string storage_key = GetStorageKeyFromURLRow(row);
       sync_metadata_database_->ClearSyncMetadata(syncer::TYPED_URLS,
                                                  storage_key);
-      // TODO(jkrcal): Untrack the entity from the processor, too (by
-      // introducing UntrackEntityForStorageKey() function into the change
-      // processor). Extend the integration tests to cover the crash in
-      // https://crbug.com/827111. Also add unit-test coverage for expired
-      // deletions (needs some refactoring in the tests).
+      change_processor()->UntrackEntityForStorageKey(storage_key);
     }
     return;
   }
diff --git a/components/history/core/browser/typed_url_sync_bridge_unittest.cc b/components/history/core/browser/typed_url_sync_bridge_unittest.cc
index 6eb285e..5ecb994 100644
--- a/components/history/core/browser/typed_url_sync_bridge_unittest.cc
+++ b/components/history/core/browser/typed_url_sync_bridge_unittest.cc
@@ -1034,10 +1034,11 @@
                             EntityChange::ACTION_ADD);
   }
 
-  // Check all the metadata is here.
+  // Check all the metadata is here, no need to untrack anything so far.
   MetadataBatch metadata_batch;
   metadata_store()->GetAllSyncMetadata(&metadata_batch);
   ASSERT_EQ(5u, metadata_batch.TakeAllMetadata().size());
+  ASSERT_EQ(0U, processor().untrack_for_storage_key_set().size());
 
   // Simulate expiration - delete some urls from the backend and create deleted
   // row vector.
@@ -1057,6 +1058,8 @@
   // This does not propagate to the processor.
   EXPECT_EQ(0U, processor().put_multimap().size() - previous_put_size);
   EXPECT_EQ(0U, processor().delete_set().size());
+  // The processor is still informed to clear its in-memory maps.
+  EXPECT_EQ(3U, processor().untrack_for_storage_key_set().size());
 
   // The urls are removed from the metadata store.
   MetadataBatch smaller_metadata_batch;
diff --git a/components/omnibox/browser/shortcuts_backend.cc b/components/omnibox/browser/shortcuts_backend.cc
index 6fed9dd..49fb469 100644
--- a/components/omnibox/browser/shortcuts_backend.cc
+++ b/components/omnibox/browser/shortcuts_backend.cc
@@ -162,22 +162,27 @@
     TemplateURLService* template_url_service,
     SearchTermsData* search_terms_data) {
   const AutocompleteMatch::Type match_type = GetTypeForShortcut(match.type);
-  const AutocompleteMatch& normalized_match =
-      AutocompleteMatch::IsSpecializedSearchType(match.type)
-          ? BaseSearchProvider::CreateSearchSuggestion(
-                match.search_terms_args->search_terms, match_type,
-                ui::PageTransitionCoreTypeIs(match.transition,
-                                             ui::PAGE_TRANSITION_KEYWORD),
-                match.GetTemplateURL(template_url_service, false),
-                *search_terms_data)
-          : match;
+
+  const AutocompleteMatch* normalized_match = &match;
+  AutocompleteMatch temp;
+
+  if (AutocompleteMatch::IsSpecializedSearchType(match.type)) {
+    DCHECK(match.search_terms_args);
+    temp = BaseSearchProvider::CreateSearchSuggestion(
+        match.search_terms_args->search_terms, match_type,
+        ui::PageTransitionCoreTypeIs(match.transition,
+                                     ui::PAGE_TRANSITION_KEYWORD),
+        match.GetTemplateURL(template_url_service, false), *search_terms_data);
+    normalized_match = &temp;
+  }
+
   return ShortcutsDatabase::Shortcut::MatchCore(
-      normalized_match.fill_into_edit, normalized_match.destination_url,
-      normalized_match.contents,
-      StripMatchMarkers(normalized_match.contents_class),
-      normalized_match.description,
-      StripMatchMarkers(normalized_match.description_class),
-      normalized_match.transition, match_type, normalized_match.keyword);
+      normalized_match->fill_into_edit, normalized_match->destination_url,
+      normalized_match->contents,
+      StripMatchMarkers(normalized_match->contents_class),
+      normalized_match->description,
+      StripMatchMarkers(normalized_match->description_class),
+      normalized_match->transition, match_type, normalized_match->keyword);
 }
 
 void ShortcutsBackend::ShutdownOnUIThread() {
diff --git a/components/os_crypt/os_crypt_win.cc b/components/os_crypt/os_crypt_win.cc
index b62323b..beff2c7 100644
--- a/components/os_crypt/os_crypt_win.cc
+++ b/components/os_crypt/os_crypt_win.cc
@@ -34,8 +34,10 @@
   DATA_BLOB output;
   BOOL result =
       CryptProtectData(&input, L"", nullptr, nullptr, nullptr, 0, &output);
-  if (!result)
+  if (!result) {
+    PLOG(ERROR) << "Failed to encrypt";
     return false;
+  }
 
   // this does a copy
   ciphertext->assign(reinterpret_cast<std::string::value_type*>(output.pbData),
@@ -55,8 +57,10 @@
   DATA_BLOB output;
   BOOL result = CryptUnprotectData(&input, nullptr, nullptr, nullptr, nullptr,
                                    0, &output);
-  if (!result)
+  if (!result) {
+    PLOG(ERROR) << "Failed to decrypt";
     return false;
+  }
 
   plaintext->assign(reinterpret_cast<char*>(output.pbData), output.cbData);
   LocalFree(output.pbData);
diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc
index 3279db23..731a03d 100644
--- a/components/password_manager/core/browser/password_form_manager.cc
+++ b/components/password_manager/core/browser/password_form_manager.cc
@@ -899,7 +899,11 @@
     autofill::AutofillField* field = form_structure->field(i);
     if (field->name == generation_element_) {
       field->set_generation_type(type);
-      field->set_generated_password_changed(generated_password_changed_);
+      if (has_generated_password_) {
+        field->set_generated_password_changed(generated_password_changed_);
+        UMA_HISTOGRAM_BOOLEAN("PasswordGeneration.GeneratedPasswordWasEdited",
+                              generated_password_changed_);
+      }
       break;
     }
   }
diff --git a/components/password_manager/core/browser/password_form_manager_unittest.cc b/components/password_manager/core/browser/password_form_manager_unittest.cc
index 876a90a..cada9b25 100644
--- a/components/password_manager/core/browser/password_form_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_form_manager_unittest.cc
@@ -843,6 +843,7 @@
                   UploadedGenerationTypesAre(expected_generation_types,
                                              generated_password_changed)),
             false, expected_available_field_types, std::string(), true));
+    base::HistogramTester histogram_tester;
 
     form_manager.ProvisionallySave(submitted_form);
     switch (interaction) {
@@ -856,6 +857,11 @@
         form_manager.OnNoInteraction(false /* not an update prompt*/);
         break;
     }
+    if (has_generated_password) {
+      histogram_tester.ExpectUniqueSample(
+          "PasswordGeneration.GeneratedPasswordWasEdited",
+          generated_password_changed /* sample */, 1);
+    }
     Mock::VerifyAndClearExpectations(
         client()->mock_driver()->mock_autofill_download_manager());
   }
diff --git a/components/policy/core/common/cloud/cloud_policy_util.cc b/components/policy/core/common/cloud/cloud_policy_util.cc
index 54732839..11052f5 100644
--- a/components/policy/core/common/cloud/cloud_policy_util.cc
+++ b/components/policy/core/common/cloud/cloud_policy_util.cc
@@ -8,6 +8,12 @@
 
 #if defined(OS_WIN)
 #include <Windows.h>  // For GetComputerNameW()
+// SECURITY_WIN32 must be defined in order to get
+// EXTENDED_NAME_FORMAT enumeration.
+#define SECURITY_WIN32 1
+#include <security.h>
+#undef SECURITY_WIN32
+#include <wincred.h>
 #endif
 
 #if defined(OS_MACOSX)
@@ -23,6 +29,7 @@
 #include <utility>
 
 #include "base/logging.h"
+#include "base/sys_info.h"
 #include "components/version_info/version_info.h"
 
 #if defined(OS_WIN)
@@ -113,4 +120,29 @@
   return version_info::GetOSType();
 }
 
+std::string GetOSArchitecture() {
+  return base::SysInfo::OperatingSystemArchitecture();
+}
+
+std::string GetOSUsername() {
+#if defined(OS_WIN)
+  WCHAR username[CREDUI_MAX_USERNAME_LENGTH + 1] = {};
+  DWORD username_length = sizeof(username);
+
+  // The SAM compatible username works on both standalone workstations and
+  // domain joined machines.  The form is "DOMAIN\username", where DOMAIN is the
+  // the name of the machine for standalone workstations.
+  if (!::GetUserNameEx(::NameSamCompatible, username, &username_length) ||
+      username_length <= 0) {
+    return std::string();
+  }
+
+  return base::WideToUTF8(username);
+#else
+  // TODO(crbug.com/847265): For now, this is only supported on Windows. Other
+  // platforms will be added when enabled.
+  return std::string();
+#endif  // OS_WIN
+}
+
 }  // namespace policy
diff --git a/components/policy/core/common/cloud/cloud_policy_util.h b/components/policy/core/common/cloud/cloud_policy_util.h
index 5a26b9c..09563c6f 100644
--- a/components/policy/core/common/cloud/cloud_policy_util.h
+++ b/components/policy/core/common/cloud/cloud_policy_util.h
@@ -11,15 +11,22 @@
 
 namespace policy {
 
-// Returns the name of the machine.  This function is platform specific.
+// Returns the name of the machine. This function is platform specific.
 POLICY_EXPORT std::string GetMachineName();
 
-// Returns the OS version of the machine.  This function is platform specific.
+// Returns the OS version of the machine. This function is platform specific.
 POLICY_EXPORT std::string GetOSVersion();
 
-// Returns the OS platform of the machine.  This function is platform specific.
+// Returns the OS platform of the machine. This function is platform specific.
 POLICY_EXPORT std::string GetOSPlatform();
 
+// Returns the bitness of the OS. This function is platform specific.
+POLICY_EXPORT std::string GetOSArchitecture();
+
+// Returns the username of the logged in user in the OS. This function is
+// platform specific.
+POLICY_EXPORT std::string GetOSUsername();
+
 }  // namespace policy
 
 #endif  // COMPONENTS_POLICY_CORE_COMMON_CLOUD_CLOUD_POLICY_UTIL_H_
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index dc921ec6..b7179e1 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -3529,7 +3529,7 @@
           'caption': '''Do not allow any site to show images''',
         },
       ],
-      'supported_on': ['chrome.*:10-', 'chrome_os:11-', 'android:30-'],
+      'supported_on': ['chrome.*:10-', 'chrome_os:11-'],
       'features': {
         'dynamic_refresh': True,
         'per_profile': True,
@@ -3540,7 +3540,9 @@
       'tags': [],
       'desc': '''Allows you to set whether websites are allowed to display images. Displaying images can be either allowed for all websites or denied for all websites.
 
-          If this policy is left not set, 'AllowImages' will be used and the user will be able to change it.''',
+          If this policy is left not set, 'AllowImages' will be used and the user will be able to change it.
+
+          Note that previously this policy was erroneously enabled on Android, but this functionality has never been fully supported on Android.''',
     },
     {
       'name': 'DefaultJavaScriptSetting',
@@ -4034,7 +4036,7 @@
         'type': 'array',
         'items': { 'type': 'string' },
       },
-      'supported_on': ['chrome.*:11-', 'chrome_os:11-', 'android:30-'],
+      'supported_on': ['chrome.*:11-', 'chrome_os:11-'],
       'features': {
         'dynamic_refresh': True,
         'per_profile': True,
@@ -4045,7 +4047,9 @@
       'tags': [],
       'desc': '''Allows you to set a list of url patterns that specify sites which are allowed to display images.
 
-          If this policy is left not set the global default value will be used for all sites either from the 'DefaultImagesSetting' policy if it is set, or the user's personal configuration otherwise.''',
+          If this policy is left not set the global default value will be used for all sites either from the 'DefaultImagesSetting' policy if it is set, or the user's personal configuration otherwise.
+
+          Note that previously this policy was erroneously enabled on Android, but this functionality has never been fully supported on Android.''',
     },
     {
       'name': 'ImagesBlockedForUrls',
@@ -4054,7 +4058,7 @@
         'type': 'array',
         'items': { 'type': 'string' },
       },
-      'supported_on': ['chrome.*:11-', 'chrome_os:11-', 'android:30-'],
+      'supported_on': ['chrome.*:11-', 'chrome_os:11-'],
       'features': {
         'dynamic_refresh': True,
         'per_profile': True,
@@ -4065,7 +4069,9 @@
       'tags': [],
       'desc': '''Allows you to set a list of url patterns that specify sites which are not allowed to display images.
 
-          If this policy is left not set the global default value will be used for all sites either from the 'DefaultImagesSetting' policy if it is set, or the user's personal configuration otherwise.''',
+          If this policy is left not set the global default value will be used for all sites either from the 'DefaultImagesSetting' policy if it is set, or the user's personal configuration otherwise.
+
+          Note that previously this policy was erroneously enabled on Android, but this functionality has never been fully supported on Android.''',
     },
     {
       'name': 'JavaScriptAllowedForUrls',
@@ -12001,7 +12007,7 @@
           }
         }
       },
-      'supported_on': ['chrome_os:68-'],
+      'supported_on': ['chrome_os:69-'],
       'features': {
         'dynamic_refresh': True,
         'per_profile': True
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc
index 4122bd6..f99eeed2b 100644
--- a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc
+++ b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc
@@ -28,12 +28,6 @@
 
 namespace subresource_filter {
 
-namespace {
-
-// Returns true with a probability given by |performance_measurement_rate| if
-// ThreadTicks is supported, otherwise returns false.
-}  // namespace
-
 // static
 void ContentSubresourceFilterDriverFactory::CreateForWebContents(
     content::WebContents* web_contents,
@@ -49,13 +43,7 @@
 ContentSubresourceFilterDriverFactory::ContentSubresourceFilterDriverFactory(
     content::WebContents* web_contents,
     SubresourceFilterClient* client)
-    : content::WebContentsObserver(web_contents),
-      client_(client),
-      throttle_manager_(
-          std::make_unique<ContentSubresourceFilterThrottleManager>(
-              this,
-              client_->GetRulesetDealer(),
-              web_contents)) {}
+    : content::WebContentsObserver(web_contents), client_(client) {}
 
 ContentSubresourceFilterDriverFactory::
     ~ContentSubresourceFilterDriverFactory() {}
@@ -124,7 +112,6 @@
   if (navigation_handle->IsInMainFrame() &&
       !navigation_handle->IsSameDocument()) {
     activation_decision_ = ActivationDecision::UNKNOWN;
-    client_->OnNewNavigationStarted();
   }
 }
 
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h
index 0659e57..9d9240b 100644
--- a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h
+++ b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h
@@ -56,10 +56,6 @@
   // ContentSubresourceFilterThrottleManager::Delegate:
   void OnFirstSubresourceLoadDisallowed() override;
 
-  ContentSubresourceFilterThrottleManager* throttle_manager() {
-    return throttle_manager_.get();
-  }
-
   SubresourceFilterClient* client() { return client_; }
 
  private:
@@ -75,8 +71,6 @@
   // Must outlive this class.
   SubresourceFilterClient* client_;
 
-  std::unique_ptr<ContentSubresourceFilterThrottleManager> throttle_manager_;
-
   // The activation decision corresponding to the most recently _started_
   // non-same-document navigation in the main frame.
   //
diff --git a/components/subresource_filter/content/browser/navigation_console_logger_unittest.cc b/components/subresource_filter/content/browser/navigation_console_logger_unittest.cc
index 7e3214e8..53a65d9 100644
--- a/components/subresource_filter/content/browser/navigation_console_logger_unittest.cc
+++ b/components/subresource_filter/content/browser/navigation_console_logger_unittest.cc
@@ -135,4 +135,23 @@
   EXPECT_EQ(2u, GetConsoleMessages(main_rfh()).size());
 }
 
+TEST_F(NavigationConsoleLoggerTest, SyncNavigationDuringNavigation) {
+  NavigateAndCommit(GURL("http://example.test/"));
+
+  auto navigation = content::NavigationSimulator::CreateRendererInitiated(
+      GURL("http://example.test/path"), main_rfh());
+  navigation->Start();
+  NavigationConsoleLogger::LogMessageOnCommit(
+      navigation->GetNavigationHandle(), content::CONSOLE_MESSAGE_LEVEL_WARNING,
+      "foo");
+
+  content::NavigationSimulator::CreateRendererInitiated(
+      GURL("http://example.test/#hash"), main_rfh())
+      ->CommitSameDocument();
+  EXPECT_EQ(0u, GetConsoleMessages(main_rfh()).size());
+
+  navigation->Commit();
+  EXPECT_EQ(1u, GetConsoleMessages(main_rfh()).size());
+}
+
 }  // namespace subresource_filter
diff --git a/components/subresource_filter/content/browser/subframe_navigation_filtering_throttle_unittest.cc b/components/subresource_filter/content/browser/subframe_navigation_filtering_throttle_unittest.cc
index f96ccfa9..c824e52 100644
--- a/components/subresource_filter/content/browser/subframe_navigation_filtering_throttle_unittest.cc
+++ b/components/subresource_filter/content/browser/subframe_navigation_filtering_throttle_unittest.cc
@@ -5,6 +5,8 @@
 #include "components/subresource_filter/content/browser/subframe_navigation_filtering_throttle.h"
 
 #include <memory>
+#include <sstream>
+#include <string>
 
 #include "base/callback.h"
 #include "base/message_loop/message_loop_current.h"
@@ -14,6 +16,7 @@
 #include "components/subresource_filter/content/browser/async_document_subresource_filter.h"
 #include "components/subresource_filter/content/browser/async_document_subresource_filter_test_utils.h"
 #include "components/subresource_filter/content/browser/subresource_filter_observer_test_utils.h"
+#include "components/subresource_filter/core/browser/subresource_filter_constants.h"
 #include "components/subresource_filter/core/common/activation_level.h"
 #include "components/subresource_filter/core/common/activation_state.h"
 #include "components/subresource_filter/core/common/test_ruleset_creator.h"
@@ -22,6 +25,8 @@
 #include "content/public/test/navigation_simulator.h"
 #include "content/public/test/test_renderer_host.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+#include "url/origin.h"
 
 namespace subresource_filter {
 
@@ -71,13 +76,16 @@
     // The |parent_filter_| is the parent frame's filter. Do not register a
     // throttle if the parent is not activated with a valid filter.
     if (parent_filter_) {
-      navigation_handle->RegisterThrottleForTesting(
-          std::make_unique<SubframeNavigationFilteringThrottle>(
-              navigation_handle, parent_filter_.get(), &mock_delegate_));
+      auto throttle = std::make_unique<SubframeNavigationFilteringThrottle>(
+          navigation_handle, parent_filter_.get(), &mock_delegate_);
+      ASSERT_NE(nullptr, throttle->GetNameForLogging());
+      navigation_handle->RegisterThrottleForTesting(std::move(throttle));
     }
   }
 
-  void InitializeDocumentSubresourceFilter(const GURL& document_url) {
+  void InitializeDocumentSubresourceFilter(
+      const GURL& document_url,
+      ActivationLevel parent_level = ActivationLevel::ENABLED) {
     ASSERT_NO_FATAL_FAILURE(
         test_ruleset_creator_.CreateRulesetToDisallowURLsWithPathSuffix(
             "disallowed.html", &test_ruleset_pair_));
@@ -93,15 +101,16 @@
         std::make_unique<VerifiedRuleset::Handle>(dealer_handle_.get());
 
     testing::TestActivationStateCallbackReceiver activation_state;
+    ActivationState parent_activation_state(parent_level);
+    parent_activation_state.enable_logging = true;
     parent_filter_ = std::make_unique<AsyncDocumentSubresourceFilter>(
         ruleset_handle_.get(),
         AsyncDocumentSubresourceFilter::InitializationParams(
-            document_url, ActivationLevel::ENABLED,
-            false /* measure_performance */),
+            document_url, url::Origin::Create(document_url),
+            parent_activation_state),
         activation_state.GetCallback());
     RunUntilIdle();
-    activation_state.ExpectReceivedOnce(
-        ActivationState(ActivationLevel::ENABLED));
+    activation_state.ExpectReceivedOnce(parent_activation_state);
   }
 
   void RunUntilIdle() { base::RunLoop().RunUntilIdle(); }
@@ -142,6 +151,18 @@
     navigation_simulator_->CommitErrorPage();
   }
 
+  const std::vector<std::string>& GetConsoleMessages() {
+    return content::RenderFrameHostTester::For(main_rfh())
+        ->GetConsoleMessages();
+  }
+
+  std::string GetFilterConsoleMessage(const GURL& filtered_url) {
+    std::ostringstream oss(kDisallowSubframeConsoleMessagePrefix);
+    oss << filtered_url;
+    oss << kDisallowSubframeConsoleMessageSuffix;
+    return oss.str();
+  }
+
  private:
   testing::TestRulesetCreator test_ruleset_creator_;
   testing::TestRulesetPair test_ruleset_pair_;
@@ -159,10 +180,12 @@
 
 TEST_F(SubframeNavigationFilteringThrottleTest, FilterOnStart) {
   InitializeDocumentSubresourceFilter(GURL("https://example.test"));
-  CreateTestSubframeAndInitNavigation(
-      GURL("https://example.test/disallowed.html"), main_rfh());
+  const GURL url("https://example.test/disallowed.html");
+  CreateTestSubframeAndInitNavigation(url, main_rfh());
   SimulateStartAndExpectResult(
       content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE);
+  EXPECT_TRUE(
+      base::ContainsValue(GetConsoleMessages(), GetFilterConsoleMessage(url)));
 }
 
 TEST_F(SubframeNavigationFilteringThrottleTest, FilterOnRedirect) {
@@ -177,6 +200,28 @@
                                   expected_result);
 }
 
+TEST_F(SubframeNavigationFilteringThrottleTest, DryRunOnStart) {
+  InitializeDocumentSubresourceFilter(GURL("https://example.test"),
+                                      ActivationLevel::DRYRUN);
+  const GURL url("https://example.test/disallowed.html");
+  CreateTestSubframeAndInitNavigation(url, main_rfh());
+
+  SimulateStartAndExpectResult(content::NavigationThrottle::PROCEED);
+  EXPECT_FALSE(
+      base::ContainsValue(GetConsoleMessages(), GetFilterConsoleMessage(url)));
+}
+
+TEST_F(SubframeNavigationFilteringThrottleTest, DryRunOnRedirect) {
+  InitializeDocumentSubresourceFilter(GURL("https://example.test"),
+                                      ActivationLevel::DRYRUN);
+  CreateTestSubframeAndInitNavigation(GURL("https://example.test/allowed.html"),
+                                      main_rfh());
+
+  SimulateStartAndExpectResult(content::NavigationThrottle::PROCEED);
+  SimulateRedirectAndExpectResult(GURL("https://example.test/disallowed.html"),
+                                  content::NavigationThrottle::PROCEED);
+}
+
 TEST_F(SubframeNavigationFilteringThrottleTest, FilterOnSecondRedirect) {
   InitializeDocumentSubresourceFilter(GURL("https://example.test"));
   CreateTestSubframeAndInitNavigation(GURL("https://example.test/allowed.html"),
diff --git a/components/subresource_filter/content/browser/subresource_filter_client.h b/components/subresource_filter/content/browser/subresource_filter_client.h
index bfd241c..ced9043f 100644
--- a/components/subresource_filter/content/browser/subresource_filter_client.h
+++ b/components/subresource_filter/content/browser/subresource_filter_client.h
@@ -22,9 +22,6 @@
   // blocked.
   virtual void ShowNotification() = 0;
 
-  // Called when the component is starting to observe a new navigation.
-  virtual void OnNewNavigationStarted() = 0;
-
   // Called when the activation decision is otherwise completely computed by the
   // subresource filter. At this point, the embedder still has a chance to
   // return false to suppress the activation. Returns whether the activation
@@ -35,8 +32,6 @@
       content::NavigationHandle* navigation_handle,
       bool activated) = 0;
 
-  virtual VerifiedRulesetDealer::Handle* GetRulesetDealer() = 0;
-
   // Returns whether this navigation should be forced to be activated. This is
   // currently only used for devtools.
   virtual bool ForceActivationInCurrentWebContents() = 0;
diff --git a/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc b/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc
index aeef18c..27641e5 100644
--- a/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc
+++ b/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc
@@ -72,24 +72,13 @@
   MockSubresourceFilterClient() = default;
   ~MockSubresourceFilterClient() override = default;
 
-  // Mocks have trouble with move-only types passed in the constructor.
-  void set_ruleset_dealer(
-      std::unique_ptr<VerifiedRulesetDealer::Handle> ruleset_dealer) {
-    ruleset_dealer_ = std::move(ruleset_dealer);
-  }
-
   bool OnPageActivationComputed(content::NavigationHandle* handle,
                                 bool activated) override {
     DCHECK(handle->IsInMainFrame());
     return whitelisted_hosts_.count(handle->GetURL().host());
   }
 
-  VerifiedRulesetDealer::Handle* GetRulesetDealer() override {
-    return ruleset_dealer_.get();
-  }
-
   MOCK_METHOD0(ShowNotification, void());
-  MOCK_METHOD0(OnNewNavigationStarted, void());
   MOCK_METHOD0(ForceActivationInCurrentWebContents, bool());
 
   void WhitelistInCurrentWebContents(const GURL& url) {
@@ -102,8 +91,6 @@
  private:
   std::set<std::string> whitelisted_hosts_;
 
-  std::unique_ptr<VerifiedRulesetDealer::Handle> ruleset_dealer_;
-
   DISALLOW_COPY_AND_ASSIGN(MockSubresourceFilterClient);
 };
 
@@ -175,21 +162,26 @@
     rules.push_back(testing::CreateSuffixRule("disallowed.html"));
     ASSERT_NO_FATAL_FAILURE(test_ruleset_creator_.CreateRulesetWithRules(
         rules, &test_ruleset_pair_));
-    auto ruleset_dealer = std::make_unique<VerifiedRulesetDealer::Handle>(
+    ruleset_dealer_ = std::make_unique<VerifiedRulesetDealer::Handle>(
         base::MessageLoopCurrent::Get()->task_runner());
-    ruleset_dealer->TryOpenAndSetRulesetFile(test_ruleset_pair_.indexed.path,
-                                             base::DoNothing());
+    ruleset_dealer_->TryOpenAndSetRulesetFile(test_ruleset_pair_.indexed.path,
+                                              base::DoNothing());
+
+    auto* contents = RenderViewHostTestHarness::web_contents();
     client_ =
         std::make_unique<::testing::NiceMock<MockSubresourceFilterClient>>();
-    client_->set_ruleset_dealer(std::move(ruleset_dealer));
-    ContentSubresourceFilterDriverFactory::CreateForWebContents(
-        RenderViewHostTestHarness::web_contents(), client_.get());
+    ContentSubresourceFilterDriverFactory::CreateForWebContents(contents,
+                                                                client_.get());
+    auto* driver_factory =
+        ContentSubresourceFilterDriverFactory::FromWebContents(contents);
+    throttle_manager_ =
+        std::make_unique<ContentSubresourceFilterThrottleManager>(
+            driver_factory, ruleset_dealer_.get(), contents);
     fake_safe_browsing_database_ = new FakeSafeBrowsingDatabaseManager();
     NavigateAndCommit(GURL("https://test.com"));
-    Observe(RenderViewHostTestHarness::web_contents());
+    Observe(contents);
 
-    observer_ = std::make_unique<TestSubresourceFilterObserver>(
-        RenderViewHostTestHarness::web_contents());
+    observer_ = std::make_unique<TestSubresourceFilterObserver>(contents);
   }
 
   virtual void Configure() {
@@ -199,7 +191,7 @@
   }
 
   void TearDown() override {
-    client_.reset();
+    ruleset_dealer_.reset();
 
     // RunUntilIdle() must be called multiple times to flush any outstanding
     // cross-thread interactions.
@@ -226,10 +218,8 @@
               fake_safe_browsing_database_));
     }
     std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
-    auto* factory = ContentSubresourceFilterDriverFactory::FromWebContents(
-        navigation_handle->GetWebContents());
-    factory->throttle_manager()->MaybeAppendNavigationThrottles(
-        navigation_handle, &throttles);
+    throttle_manager_->MaybeAppendNavigationThrottles(navigation_handle,
+                                                      &throttles);
     for (auto& it : throttles) {
       navigation_handle->RegisterThrottleForTesting(std::move(it));
     }
@@ -357,6 +347,10 @@
   testing::TestRulesetCreator test_ruleset_creator_;
   testing::TestRulesetPair test_ruleset_pair_;
 
+  std::unique_ptr<VerifiedRulesetDealer::Handle> ruleset_dealer_;
+
+  std::unique_ptr<ContentSubresourceFilterThrottleManager> throttle_manager_;
+
   std::unique_ptr<content::NavigationSimulator> navigation_simulator_;
   std::unique_ptr<MockSubresourceFilterClient> client_;
   std::unique_ptr<TestSubresourceFilterObserver> observer_;
@@ -562,7 +556,6 @@
        NotificationVisibility) {
   GURL url(kURL);
   ConfigureForMatch(url);
-  EXPECT_CALL(*client(), OnNewNavigationStarted()).Times(1);
   content::RenderFrameHost* rfh = SimulateNavigateAndCommit({url}, main_rfh());
 
   EXPECT_CALL(*client(), ShowNotification()).Times(1);
diff --git a/components/subresource_filter/content/common/subresource_filter_utils.cc b/components/subresource_filter/content/common/subresource_filter_utils.cc
index a84ae2a..ae1cb5d 100644
--- a/components/subresource_filter/content/common/subresource_filter_utils.cc
+++ b/components/subresource_filter/content/common/subresource_filter_utils.cc
@@ -4,23 +4,12 @@
 
 #include "components/subresource_filter/content/common/subresource_filter_utils.h"
 
-#include "content/public/common/browser_side_navigation_policy.h"
-#include "content/public/common/url_constants.h"
 #include "content/public/common/url_utils.h"
-#include "url/gurl.h"
 
 namespace subresource_filter {
 
 bool ShouldUseParentActivation(const GURL& url) {
-  if (content::IsBrowserSideNavigationEnabled())
-    return !content::IsURLHandledByNetworkStack(url);
-
-  // TODO(csharrison): It is not always true that a data URL can use its
-  // parent's activation in OOPIF mode, where the resulting data frame will
-  // be same-process to its initiator. See crbug.com/739777 for more
-  // information.
-  return (url.SchemeIs(url::kDataScheme) || url == url::kAboutBlankURL ||
-          url == content::kAboutSrcDocURL);
+  return !content::IsURLHandledByNetworkStack(url);
 }
 
 }  // namespace subresource_filter
diff --git a/components/sync/model/fake_model_type_change_processor.cc b/components/sync/model/fake_model_type_change_processor.cc
index 93fec679..0eb8f15b 100644
--- a/components/sync/model/fake_model_type_change_processor.cc
+++ b/components/sync/model/fake_model_type_change_processor.cc
@@ -43,6 +43,9 @@
 void FakeModelTypeChangeProcessor::UntrackEntity(
     const EntityData& entity_data) {}
 
+void FakeModelTypeChangeProcessor::UntrackEntityForStorageKey(
+    const std::string& storage_key) {}
+
 void FakeModelTypeChangeProcessor::OnModelStarting(
     ModelTypeSyncBridge* bridge) {}
 
diff --git a/components/sync/model/fake_model_type_change_processor.h b/components/sync/model/fake_model_type_change_processor.h
index 5698747..581abb0 100644
--- a/components/sync/model/fake_model_type_change_processor.h
+++ b/components/sync/model/fake_model_type_change_processor.h
@@ -36,6 +36,7 @@
                         const std::string& storage_key,
                         MetadataChangeList* metadata_change_list) override;
   void UntrackEntity(const EntityData& entity_data) override;
+  void UntrackEntityForStorageKey(const std::string& storage_key) override;
   void OnModelStarting(ModelTypeSyncBridge* bridge) override;
   void ModelReadyToSync(std::unique_ptr<MetadataBatch> batch) override;
   bool IsTrackingMetadata() override;
diff --git a/components/sync/model/mock_model_type_change_processor.cc b/components/sync/model/mock_model_type_change_processor.cc
index 8c6dc76..80dbd23 100644
--- a/components/sync/model/mock_model_type_change_processor.cc
+++ b/components/sync/model/mock_model_type_change_processor.cc
@@ -44,6 +44,10 @@
     other_->UntrackEntity(entity_data);
   }
 
+  void UntrackEntityForStorageKey(const std::string& storage_key) override {
+    other_->UntrackEntityForStorageKey(storage_key);
+  }
+
   void OnModelStarting(ModelTypeSyncBridge* bridge) override {
     other_->OnModelStarting(bridge);
   }
@@ -98,6 +102,9 @@
   ON_CALL(*this, UntrackEntity(_))
       .WillByDefault(
           Invoke(delegate, &ModelTypeChangeProcessor::UntrackEntity));
+  ON_CALL(*this, UntrackEntityForStorageKey(_))
+      .WillByDefault(Invoke(
+          delegate, &ModelTypeChangeProcessor::UntrackEntityForStorageKey));
   ON_CALL(*this, OnModelStarting(_))
       .WillByDefault(
           Invoke(delegate, &ModelTypeChangeProcessor::OnModelStarting));
diff --git a/components/sync/model/mock_model_type_change_processor.h b/components/sync/model/mock_model_type_change_processor.h
index df5babc..0b9ad6f 100644
--- a/components/sync/model/mock_model_type_change_processor.h
+++ b/components/sync/model/mock_model_type_change_processor.h
@@ -31,6 +31,8 @@
                     const std::string& storage_key,
                     MetadataChangeList* metadata_change_list));
   MOCK_METHOD1(UntrackEntity, void(const EntityData& entity_data));
+  MOCK_METHOD1(UntrackEntityForStorageKey,
+               void(const std::string& storage_key));
   MOCK_METHOD1(OnModelStarting, void(ModelTypeSyncBridge* bridge));
   MOCK_METHOD1(ModelReadyToSync, void(std::unique_ptr<MetadataBatch> batch));
   MOCK_METHOD0(IsTrackingMetadata, bool());
diff --git a/components/sync/model/model_type_change_processor.h b/components/sync/model/model_type_change_processor.h
index c143892..aa0735d 100644
--- a/components/sync/model/model_type_change_processor.h
+++ b/components/sync/model/model_type_change_processor.h
@@ -57,6 +57,12 @@
   // change_processor()->Delete() instead.
   virtual void UntrackEntity(const EntityData& entity_data) = 0;
 
+  // Remove entity metadata and do not track the entity. Applies to datatypes
+  // that support local deletions that should not get synced up (e.g. TYPED_URL
+  // does not sync up deletions of expired URLs). If the deletion should get
+  // synced up, use change_processor()->Delete() instead.
+  virtual void UntrackEntityForStorageKey(const std::string& storage_key) = 0;
+
   // Pass the pointer to the processor so that the processor can notify the
   // bridge of various events; |bridge| must not be nullptr and must outlive
   // this object.
diff --git a/components/sync/model/recording_model_type_change_processor.cc b/components/sync/model/recording_model_type_change_processor.cc
index d9c770c..0e1c1a5 100644
--- a/components/sync/model/recording_model_type_change_processor.cc
+++ b/components/sync/model/recording_model_type_change_processor.cc
@@ -43,6 +43,11 @@
   untrack_set_.insert(FakeModelTypeSyncBridge::CopyEntityData(entity_data));
 }
 
+void RecordingModelTypeChangeProcessor::UntrackEntityForStorageKey(
+    const std::string& storage_key) {
+  untrack_for_storage_key_set_.insert(storage_key);
+}
+
 void RecordingModelTypeChangeProcessor::ModelReadyToSync(
     std::unique_ptr<MetadataBatch> batch) {
   std::swap(metadata_, batch);
diff --git a/components/sync/model/recording_model_type_change_processor.h b/components/sync/model/recording_model_type_change_processor.h
index 550102c..c7853c0 100644
--- a/components/sync/model/recording_model_type_change_processor.h
+++ b/components/sync/model/recording_model_type_change_processor.h
@@ -32,6 +32,7 @@
                         const std::string& storage_key,
                         MetadataChangeList* metadata_change_list) override;
   void UntrackEntity(const EntityData& entity_data) override;
+  void UntrackEntityForStorageKey(const std::string& storage_key) override;
   void ModelReadyToSync(std::unique_ptr<MetadataBatch> batch) override;
   bool IsTrackingMetadata() override;
 
@@ -53,6 +54,10 @@
     return untrack_set_;
   }
 
+  const std::set<std::string>& untrack_for_storage_key_set() const {
+    return untrack_for_storage_key_set_;
+  }
+
   MetadataBatch* metadata() const { return metadata_.get(); }
 
   // Constructs the processor and assigns its raw pointer to the given address.
@@ -68,6 +73,7 @@
   std::multimap<std::string, std::unique_ptr<EntityData>> update_multimap_;
   std::set<std::string> delete_set_;
   std::set<std::unique_ptr<EntityData>> untrack_set_;
+  std::set<std::string> untrack_for_storage_key_set_;
   std::unique_ptr<MetadataBatch> metadata_;
   bool is_tracking_metadata_ = true;
 };
diff --git a/components/sync/model_impl/client_tag_based_model_type_processor.cc b/components/sync/model_impl/client_tag_based_model_type_processor.cc
index 9b7046ef..11fbdbd 100644
--- a/components/sync/model_impl/client_tag_based_model_type_processor.cc
+++ b/components/sync/model_impl/client_tag_based_model_type_processor.cc
@@ -341,6 +341,14 @@
   entities_.erase(client_tag_hash);
 }
 
+void ClientTagBasedModelTypeProcessor::UntrackEntityForStorageKey(
+    const std::string& storage_key) {
+  ProcessorEntityTracker* entity = GetEntityForStorageKey(storage_key);
+  DCHECK_NE(entity, nullptr);
+  entities_.erase(entity->metadata().client_tag_hash());
+  storage_key_to_tag_hash_.erase(storage_key);
+}
+
 void ClientTagBasedModelTypeProcessor::NudgeForCommitIfNeeded() {
   // Don't bother sending anything if there's no one to send to.
   if (!IsConnected())
diff --git a/components/sync/model_impl/client_tag_based_model_type_processor.h b/components/sync/model_impl/client_tag_based_model_type_processor.h
index 65d863b..84eacee 100644
--- a/components/sync/model_impl/client_tag_based_model_type_processor.h
+++ b/components/sync/model_impl/client_tag_based_model_type_processor.h
@@ -63,6 +63,7 @@
                         const std::string& storage_key,
                         MetadataChangeList* metadata_change_list) override;
   void UntrackEntity(const EntityData& entity_data) override;
+  void UntrackEntityForStorageKey(const std::string& storage_key) override;
   void OnModelStarting(ModelTypeSyncBridge* bridge) override;
   void ModelReadyToSync(std::unique_ptr<MetadataBatch> batch) override;
   bool IsTrackingMetadata() override;
diff --git a/components/sync/model_impl/client_tag_based_model_type_processor_unittest.cc b/components/sync/model_impl/client_tag_based_model_type_processor_unittest.cc
index 7dda5839..cf97f809 100644
--- a/components/sync/model_impl/client_tag_based_model_type_processor_unittest.cc
+++ b/components/sync/model_impl/client_tag_based_model_type_processor_unittest.cc
@@ -62,6 +62,12 @@
   *dst = std::move(src);
 }
 
+void CaptureStatusCounters(StatusCounters* dst,
+                           ModelType model_type,
+                           const StatusCounters& counters) {
+  *dst = counters;
+}
+
 class TestModelTypeSyncBridge : public FakeModelTypeSyncBridge {
  public:
   explicit TestModelTypeSyncBridge(bool commit_only)
@@ -242,6 +248,11 @@
     return;
   }
 
+  ProcessorEntityTracker* GetEntityForStorageKey(
+      const std::string& storage_key) {
+    return type_processor()->GetEntityForStorageKey(storage_key);
+  }
+
   void ResetState(bool keep_db) {
     bridge_ = keep_db
                   ? std::make_unique<TestModelTypeSyncBridge>(
@@ -1513,6 +1524,35 @@
   EXPECT_EQ(0, bridge()->get_storage_key_call_count());
 }
 
+// Tests that UntrackEntityForStorage won't propagate storage key to
+// ProcessorEntityTracker, and no entity's metadata are added into
+// MetadataChangeList.
+TEST_F(ClientTagBasedModelTypeProcessorTest, UntrackEntityForStorageKey) {
+  InitializeToReadyState();
+  bridge()->WriteItem(kKey1, kValue1);
+  worker()->VerifyPendingCommits({{kHash1}});
+  worker()->AckOnePendingCommit();
+
+  // Check the processor tracks the entity.
+  StatusCounters status_counters;
+  type_processor()->GetStatusCountersForDebugging(
+      base::BindOnce(&CaptureStatusCounters, &status_counters));
+  ASSERT_EQ(1u, status_counters.num_entries);
+  ASSERT_NE(nullptr, GetEntityForStorageKey(kKey1));
+
+  // The bridge deletes the data locally and does not want to sync the deletion.
+  // It only untracks the entity.
+  type_processor()->UntrackEntityForStorageKey(kKey1);
+
+  // The deletion is not synced up.
+  worker()->VerifyPendingCommits({});
+  // The processor tracks no entity any more.
+  type_processor()->GetStatusCountersForDebugging(
+      base::BindOnce(&CaptureStatusCounters, &status_counters));
+  EXPECT_EQ(status_counters.num_entries, 0U);
+  EXPECT_EQ(nullptr, GetEntityForStorageKey(kKey1));
+}
+
 // Tests that ClientTagBasedModelTypeProcessor can do garbage collection by
 // version. Create 2 entries, one is version 1, another is version 3. Check if
 // sync will delete version 1 entry when server set expired version is 2.
diff --git a/components/ukm/ukm_service.h b/components/ukm/ukm_service.h
index a7e8f3b..40be605 100644
--- a/components/ukm/ukm_service.h
+++ b/components/ukm/ukm_service.h
@@ -84,6 +84,7 @@
   friend ::metrics::UkmBrowserTest;
   friend ::metrics::UkmEGTestHelper;
   friend ::ukm::debug::UkmDebugDataExtractor;
+  friend ::ukm::UkmUtilsForTest;
 
   // Starts metrics client initialization.
   void StartInitTask();
diff --git a/components/url_formatter/idn_spoof_checker.cc b/components/url_formatter/idn_spoof_checker.cc
index 3c50dd2..ce8ba7c 100644
--- a/components/url_formatter/idn_spoof_checker.cc
+++ b/components/url_formatter/idn_spoof_checker.cc
@@ -167,7 +167,8 @@
   //     U+0525 and U+0153.
   //   - {U+0167 (ŧ), U+0442 (т), U+04AD (ҭ), U+050F (ԏ)} => t
   //   - {U+0185 (ƅ), U+044C (ь), U+048D (ҍ), U+0432 (в)} => b
-  //   - {U+03C9 (ω), U+0448 (ш), U+0449 (щ), U+0E1F (ฟ)} => w
+  //   - {U+03C9 (ω), U+0448 (ш), U+0449 (щ), U+0E1E (พ),
+  //      U+0E1F (ฟ), U+0E9E (ພ), U+0E9F (ຟ)} => w
   //   - {U+043C (м), U+04CE (ӎ)} => m
   //   - {U+0454 (є), U+04BD (ҽ), U+04BF (ҿ), U+1054 (ၔ)} => e
   //   - U+0491 (ґ) => r
@@ -177,19 +178,20 @@
   //   - U+03C7 (χ), U+04B3 (ҳ), U+04FD (ӽ), U+04FF (ӿ) => x
   //   - U+0503 (ԃ) => d
   //   - {U+050D (ԍ), U+100c (ဌ)} => g
-  //   - {U+0D1F (ട), U+0E23 (ร)} => s
+  //   - {U+0D1F (ട), U+0E23 (ร), U+0EA3 (ຣ), U+0EAE (ຮ)} => s
   //   - U+1042 (၂) => j
   //   - {U+0437 (з), U+0499 (ҙ), U+04E1 (ӡ)} => 3
+  //   - {U+0E1A (บ), U+0E9A (ບ)} => u
   extra_confusable_mapper_.reset(icu::Transliterator::createFromRules(
       UNICODE_STRING_SIMPLE("ExtraConf"),
       icu::UnicodeString::fromUTF8(
           "[æӕ] > ae; [þϼҏ] > p; [ħнћңҥӈӊԋԧԩ] > h;"
           "[ĸκкқҝҟҡӄԟ] > k; [ŋпԥ] > n; œ > ce;"
-          "[ŧтҭԏ] > t; [ƅьҍв] > b;  [ωшщฟ] > w;"
+          "[ŧтҭԏ] > t; [ƅьҍв] > b;  [ωшщพฟພຟ] > w;"
           "[мӎ] > m; [єҽҿၔ] > e; ґ > r; [ғӻ] > f;"
           "[ҫင] > c; ұ > y; [χҳӽӿ] > x;"
-          "ԃ  > d; [ԍဌ] > g; [ടร] > s; ၂ > j;"
-          "[зҙӡ] > 3"),
+          "ԃ  > d; [ԍဌ] > g; [ടรຣຮ] > s; ၂ > j;"
+          "[зҙӡ] > 3; [บບ] > u"),
       UTRANS_FORWARD, parse_error, status));
   DCHECK(U_SUCCESS(status))
       << "Spoofchecker initalization failed due to an error: "
diff --git a/components/url_formatter/top_domains/test_domains.list b/components/url_formatter/top_domains/test_domains.list
index 7f5df3d..0a65446 100644
--- a/components/url_formatter/top_domains/test_domains.list
+++ b/components/url_formatter/top_domains/test_domains.list
@@ -17,6 +17,8 @@
 1gd.com
 cegjo.com
 wsws.com
+wsu.com
+wsou.com
 1234567890.com
 aece.com
 aen.com
diff --git a/components/url_formatter/top_domains/test_skeletons.gperf b/components/url_formatter/top_domains/test_skeletons.gperf
index 9d508ad..f59caf6 100644
--- a/components/url_formatter/top_domains/test_skeletons.gperf
+++ b/components/url_formatter/top_domains/test_skeletons.gperf
@@ -27,6 +27,8 @@
 lgd.corn, 1
 cegjo.corn, 1
 wsws.corn, 1
+wsu.corn, 1
+wsou.corn, 1
 l23456789O.corn, 1
 aece.corn, 1
 aen.corn, 1
diff --git a/components/url_formatter/url_formatter_unittest.cc b/components/url_formatter/url_formatter_unittest.cc
index a01a52a..87f14ec7 100644
--- a/components/url_formatter/url_formatter_unittest.cc
+++ b/components/url_formatter/url_formatter_unittest.cc
@@ -557,6 +557,20 @@
     // ฟรฟร.com (made of two Thai characters. similar to wsws.com in
     // some fonts)
     {"xn--w3calb.com", L"\x0e1f\x0e23\x0e1f\x0e23.com", false},
+    // พรบ.com
+    {"xn--r3chp.com", L"\x0e1e\x0e23\x0e1a.com", false},
+    // ฟรบ.com
+    {"xn--r3cjm.com", L"\x0e1f\x0e23\x0e1a.com", false},
+
+    // Lao characters that look like w, s, o, and u.
+    // ພຣບ.com
+    {"xn--f7chp.com", L"\x0e9e\x0ea3\x0e9a.com", false},
+    // ຟຣບ.com
+    {"xn--f7cjm.com", L"\x0e9f\x0ea3\x0e9a.com", false},
+    // ຟຮບ.com
+    {"xn--f7cj9b.com", L"\x0e9f\x0eae\x0e9a.com", false},
+    // ຟຮ໐ບ.com
+    {"xn--f7cj9b5h.com", L"\x0e9f\x0eae" L"\x0ed0\x0e9a.com", false},
 
     // At one point the skeleton of 'w' was 'vv', ensure that
     // that it's treated as 'w'.
diff --git a/components/viz/client/BUILD.gn b/components/viz/client/BUILD.gn
index 7a70c1e..d2341865 100644
--- a/components/viz/client/BUILD.gn
+++ b/components/viz/client/BUILD.gn
@@ -6,6 +6,8 @@
 
 viz_component("client") {
   sources = [
+    "client_resource_provider.cc",
+    "client_resource_provider.h",
     "frame_eviction_manager.cc",
     "frame_eviction_manager.h",
     "frame_evictor.cc",
@@ -15,6 +17,8 @@
     "hit_test_data_provider_draw_quad.h",
     "local_surface_id_provider.cc",
     "local_surface_id_provider.h",
+    "shared_bitmap_reporter.cc",
+    "shared_bitmap_reporter.h",
   ]
 
   defines = [ "VIZ_CLIENT_IMPLEMENTATION" ]
@@ -22,15 +26,20 @@
   public_deps = [
     "//base",
     "//components/viz/common",
+    "//mojo/public/cpp/system",
+    "//skia",
   ]
   deps = [
     "//cc/base",
+    "//gpu/command_buffer/client:gles2_interface",
+    "//gpu/command_buffer/client:raster_interface",
   ]
 }
 
 viz_source_set("unit_tests") {
   testonly = true
   sources = [
+    "client_resource_provider_unittest.cc",
     "hit_test_data_provider_draw_quad_unittest.cc",
   ]
 
@@ -42,6 +51,7 @@
     "//components/viz/test:test_support",
     "//mojo/public/cpp/bindings",
     "//services/viz/public/interfaces",
+    "//testing/gmock",
     "//testing/gtest",
   ]
 }
diff --git a/components/viz/client/DEPS b/components/viz/client/DEPS
index 8c795b8..f701df5 100644
--- a/components/viz/client/DEPS
+++ b/components/viz/client/DEPS
@@ -4,6 +4,12 @@
   "-components/viz/common/features.h",
   "-components/viz/common/switches.h",
   "+components/viz/client",
+  "+gpu/GLES2/gl2extchromium.h",
+  "+gpu/command_buffer/client",
+  "+gpu/command_buffer/common",
+  "+mojo/public/cpp/system/buffer.h",
+  "+third_party/skia",
+  "+third_party/khronos/GLES2",
 
   # Do not use mojo bindings in viz/client/. This library should be agnostic
   # about how to communicate with viz.
diff --git a/components/viz/client/client_resource_provider.cc b/components/viz/client/client_resource_provider.cc
new file mode 100644
index 0000000..cc5f914
--- /dev/null
+++ b/components/viz/client/client_resource_provider.cc
@@ -0,0 +1,305 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/viz/client/client_resource_provider.h"
+
+#include "base/bits.h"
+#include "base/threading/thread_task_runner_handle.h"
+#include "build/build_config.h"
+#include "components/viz/common/gpu/context_provider.h"
+#include "components/viz/common/resources/resource_format_utils.h"
+#include "components/viz/common/resources/resource_sizes.h"
+#include "components/viz/common/resources/returned_resource.h"
+#include "gpu/GLES2/gl2extchromium.h"
+#include "gpu/command_buffer/client/context_support.h"
+#include "gpu/command_buffer/client/gles2_interface.h"
+#include "gpu/command_buffer/client/raster_interface.h"
+#include "gpu/command_buffer/common/capabilities.h"
+#include "third_party/skia/include/core/SkCanvas.h"
+
+namespace viz {
+
+struct ClientResourceProvider::ImportedResource {
+  TransferableResource resource;
+  std::unique_ptr<SingleReleaseCallback> release_callback;
+  int exported_count = 0;
+  bool marked_for_deletion = false;
+
+  gpu::SyncToken returned_sync_token;
+  bool returned_lost = false;
+
+  ImportedResource(ResourceId id,
+                   const TransferableResource& resource,
+                   std::unique_ptr<SingleReleaseCallback> release_callback)
+      : resource(resource),
+        release_callback(std::move(release_callback)),
+        // If the resource is immediately deleted, it returns the same SyncToken
+        // it came with. The client may need to wait on that before deleting the
+        // backing or reusing it.
+        returned_sync_token(resource.mailbox_holder.sync_token) {
+    // Replace the |resource| id with the local id from this
+    // ClientResourceProvider.
+    this->resource.id = id;
+  }
+  ~ImportedResource() = default;
+
+  ImportedResource(ImportedResource&&) = default;
+  ImportedResource& operator=(ImportedResource&&) = default;
+};
+
+ClientResourceProvider::ClientResourceProvider(
+    ContextProvider* compositor_context_provider,
+    bool delegated_sync_points_required)
+    : delegated_sync_points_required_(delegated_sync_points_required),
+      compositor_context_provider_(compositor_context_provider) {
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+}
+
+ClientResourceProvider::~ClientResourceProvider() {
+  for (auto& pair : imported_resources_) {
+    ImportedResource& imported = pair.second;
+    // If the resource is exported we can't report when it can be used again
+    // once this class is destroyed, so consider the resource lost.
+    bool is_lost = imported.exported_count || imported.returned_lost;
+    imported.release_callback->Run(imported.returned_sync_token, is_lost);
+  }
+}
+
+gpu::SyncToken ClientResourceProvider::GenerateSyncTokenHelper(
+    gpu::gles2::GLES2Interface* gl) {
+  DCHECK(gl);
+  gpu::SyncToken sync_token;
+  gl->GenUnverifiedSyncTokenCHROMIUM(sync_token.GetData());
+  DCHECK(sync_token.HasData() ||
+         gl->GetGraphicsResetStatusKHR() != GL_NO_ERROR);
+  return sync_token;
+}
+
+gpu::SyncToken ClientResourceProvider::GenerateSyncTokenHelper(
+    gpu::raster::RasterInterface* ri) {
+  DCHECK(ri);
+  gpu::SyncToken sync_token;
+  ri->GenUnverifiedSyncTokenCHROMIUM(sync_token.GetData());
+  DCHECK(sync_token.HasData() ||
+         ri->GetGraphicsResetStatusKHR() != GL_NO_ERROR);
+  return sync_token;
+}
+
+void ClientResourceProvider::PrepareSendToParent(
+    const std::vector<ResourceId>& export_ids,
+    std::vector<TransferableResource>* list,
+    ContextProvider* context_provider) {
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+
+  // This function goes through the array multiple times, store the resources
+  // as pointers so we don't have to look up the resource id multiple times.
+  // Make sure the maps do not change while these vectors are alive or they
+  // will become invalid.
+  std::vector<ImportedResource*> imports;
+  imports.reserve(export_ids.size());
+  for (const ResourceId id : export_ids) {
+    auto it = imported_resources_.find(id);
+    DCHECK(it != imported_resources_.end());
+    imports.push_back(&it->second);
+  }
+
+  // Lazily create any mailboxes and verify all unverified sync tokens.
+  std::vector<GLbyte*> unverified_sync_tokens;
+  if (delegated_sync_points_required_) {
+    for (ImportedResource* imported : imports) {
+      if (!imported->resource.is_software &&
+          !imported->resource.mailbox_holder.sync_token.verified_flush()) {
+        unverified_sync_tokens.push_back(
+            imported->resource.mailbox_holder.sync_token.GetData());
+      }
+    }
+  }
+
+  if (!unverified_sync_tokens.empty()) {
+    DCHECK(delegated_sync_points_required_);
+    DCHECK(context_provider);
+    context_provider->ContextGL()->VerifySyncTokensCHROMIUM(
+        unverified_sync_tokens.data(), unverified_sync_tokens.size());
+  }
+
+  for (ImportedResource* imported : imports) {
+    list->push_back(imported->resource);
+    imported->exported_count++;
+  }
+}
+
+void ClientResourceProvider::ReceiveReturnsFromParent(
+    const std::vector<ReturnedResource>& resources) {
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+
+  for (const ReturnedResource& returned : resources) {
+    ResourceId local_id = returned.id;
+
+    auto import_it = imported_resources_.find(local_id);
+    DCHECK(import_it != imported_resources_.end());
+    ImportedResource& imported = import_it->second;
+
+    DCHECK_GE(imported.exported_count, returned.count);
+    imported.exported_count -= returned.count;
+    imported.returned_lost |= returned.lost;
+
+    if (imported.exported_count)
+      continue;
+
+    if (returned.sync_token.HasData()) {
+      DCHECK(!imported.resource.is_software);
+      imported.returned_sync_token = returned.sync_token;
+    }
+
+    if (imported.marked_for_deletion) {
+      imported.release_callback->Run(imported.returned_sync_token,
+                                     imported.returned_lost);
+      imported_resources_.erase(import_it);
+    }
+  }
+}
+
+ResourceId ClientResourceProvider::ImportResource(
+    const TransferableResource& resource,
+    std::unique_ptr<SingleReleaseCallback> release_callback) {
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+  ResourceId id = next_id_++;
+  auto result = imported_resources_.emplace(
+      id, ImportedResource(id, resource, std::move(release_callback)));
+  DCHECK(result.second);  // If false, the id was already in the map.
+  return id;
+}
+
+void ClientResourceProvider::RemoveImportedResource(ResourceId id) {
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+  auto it = imported_resources_.find(id);
+  DCHECK(it != imported_resources_.end());
+  ImportedResource& imported = it->second;
+  imported.marked_for_deletion = true;
+  if (imported.exported_count == 0) {
+    imported.release_callback->Run(imported.returned_sync_token,
+                                   imported.returned_lost);
+    imported_resources_.erase(it);
+  }
+}
+
+bool ClientResourceProvider::IsTextureFormatSupported(
+    ResourceFormat format) const {
+  gpu::Capabilities caps;
+  if (compositor_context_provider_)
+    caps = compositor_context_provider_->ContextCapabilities();
+
+  switch (format) {
+    case ALPHA_8:
+    case RGBA_4444:
+    case RGBA_8888:
+    case RGB_565:
+    case LUMINANCE_8:
+      return true;
+    case BGRA_8888:
+      return caps.texture_format_bgra8888;
+    case ETC1:
+      return caps.texture_format_etc1;
+    case RED_8:
+      return caps.texture_rg;
+    case R16_EXT:
+      return caps.texture_norm16;
+    case LUMINANCE_F16:
+    case RGBA_F16:
+      return caps.texture_half_float_linear;
+  }
+
+  NOTREACHED();
+  return false;
+}
+
+bool ClientResourceProvider::IsRenderBufferFormatSupported(
+    ResourceFormat format) const {
+  gpu::Capabilities caps;
+  if (compositor_context_provider_)
+    caps = compositor_context_provider_->ContextCapabilities();
+
+  switch (format) {
+    case RGBA_4444:
+    case RGBA_8888:
+    case RGB_565:
+      return true;
+    case BGRA_8888:
+      return caps.render_buffer_format_bgra8888;
+    case RGBA_F16:
+      // TODO(ccameron): This will always return false on pixel tests, which
+      // makes it un-test-able until we upgrade Mesa.
+      // https://crbug.com/687720
+      return caps.texture_half_float_linear &&
+             caps.color_buffer_half_float_rgba;
+    case LUMINANCE_8:
+    case ALPHA_8:
+    case RED_8:
+    case ETC1:
+    case LUMINANCE_F16:
+    case R16_EXT:
+      // We don't currently render into these formats. If we need to render into
+      // these eventually, we should expand this logic.
+      return false;
+  }
+
+  NOTREACHED();
+  return false;
+}
+
+ClientResourceProvider::ScopedSkSurface::ScopedSkSurface(
+    GrContext* gr_context,
+    GLuint texture_id,
+    GLenum texture_target,
+    const gfx::Size& size,
+    ResourceFormat format,
+    bool can_use_lcd_text,
+    int msaa_sample_count) {
+  GrGLTextureInfo texture_info;
+  texture_info.fID = texture_id;
+  texture_info.fTarget = texture_target;
+  texture_info.fFormat = TextureStorageFormat(format);
+  GrBackendTexture backend_texture(size.width(), size.height(),
+                                   GrMipMapped::kNo, texture_info);
+  SkSurfaceProps surface_props = ComputeSurfaceProps(can_use_lcd_text);
+  // This type is used only for gpu raster, which implies gpu compositing.
+  bool gpu_compositing = true;
+  surface_ = SkSurface::MakeFromBackendTextureAsRenderTarget(
+      gr_context, backend_texture, kTopLeft_GrSurfaceOrigin, msaa_sample_count,
+      ResourceFormatToClosestSkColorType(gpu_compositing, format), nullptr,
+      &surface_props);
+}
+
+ClientResourceProvider::ScopedSkSurface::~ScopedSkSurface() {
+  if (surface_)
+    surface_->prepareForExternalIO();
+}
+
+SkSurfaceProps ClientResourceProvider::ScopedSkSurface::ComputeSurfaceProps(
+    bool can_use_lcd_text) {
+  uint32_t flags = 0;
+  // Use unknown pixel geometry to disable LCD text.
+  SkSurfaceProps surface_props(flags, kUnknown_SkPixelGeometry);
+  if (can_use_lcd_text) {
+    // LegacyFontHost will get LCD text and skia figures out what type to use.
+    surface_props =
+        SkSurfaceProps(flags, SkSurfaceProps::kLegacyFontHost_InitType);
+  }
+  return surface_props;
+}
+
+void ClientResourceProvider::ValidateResource(ResourceId id) const {
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+  DCHECK(id);
+  DCHECK(imported_resources_.find(id) != imported_resources_.end());
+}
+
+bool ClientResourceProvider::InUseByConsumer(ResourceId id) {
+  auto it = imported_resources_.find(id);
+  DCHECK(it != imported_resources_.end());
+  ImportedResource& imported = it->second;
+  return imported.exported_count > 0 || imported.returned_lost;
+}
+
+}  // namespace viz
diff --git a/components/viz/client/client_resource_provider.h b/components/viz/client/client_resource_provider.h
new file mode 100644
index 0000000..a66c65b
--- /dev/null
+++ b/components/viz/client/client_resource_provider.h
@@ -0,0 +1,131 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_VIZ_CLIENT_CLIENT_RESOURCE_PROVIDER_H_
+#define COMPONENTS_VIZ_CLIENT_CLIENT_RESOURCE_PROVIDER_H_
+
+#include <vector>
+
+#include "base/threading/thread_checker.h"
+#include "components/viz/client/viz_client_export.h"
+#include "components/viz/common/display/renderer_settings.h"
+#include "components/viz/common/resources/release_callback.h"
+#include "components/viz/common/resources/resource_id.h"
+#include "components/viz/common/resources/resource_settings.h"
+#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/common/resources/transferable_resource.h"
+#include "third_party/khronos/GLES2/gl2.h"
+#include "third_party/skia/include/core/SkSurface.h"
+#include "third_party/skia/include/gpu/GrBackendSurface.h"
+#include "third_party/skia/include/gpu/GrContext.h"
+
+namespace gpu {
+namespace gles2 {
+class GLES2Interface;
+}
+namespace raster {
+class RasterInterface;
+}
+}  // namespace gpu
+
+namespace viz {
+class ContextProvider;
+
+// This class is used to give an integer name (ResourceId) to a gpu or software
+// resource (shipped as a TransferableResource), in order to use that name in
+// DrawQuads and give the resource to the viz display compositor. When the
+// resource is removed from the ClientResourceProvider, the
+// SingleReleaseCallback will be called once the resource is no longer in use by
+// the display compositor.
+//
+// This class is not thread-safe and can only be called from the thread it was
+// created on (in practice, the impl thread).
+class VIZ_CLIENT_EXPORT ClientResourceProvider {
+ public:
+  ClientResourceProvider(ContextProvider* compositor_context_provider,
+                         bool delegated_sync_points_required);
+  ~ClientResourceProvider();
+
+  static gpu::SyncToken GenerateSyncTokenHelper(gpu::gles2::GLES2Interface* gl);
+  static gpu::SyncToken GenerateSyncTokenHelper(
+      gpu::raster::RasterInterface* ri);
+
+  // Prepares resources to be transfered to the parent, moving them to
+  // mailboxes and serializing meta-data into TransferableResources.
+  // Resources are not removed from the ResourceProvider, but are marked as
+  // "in use".
+  void PrepareSendToParent(
+      const std::vector<ResourceId>& resource_ids,
+      std::vector<TransferableResource>* transferable_resources,
+      ContextProvider* context_provider);
+
+  // Receives resources from the parent, moving them from mailboxes. ResourceIds
+  // passed are in the child namespace.
+  // NOTE: if the sync_token is set on any TransferableResource, this will
+  // wait on it.
+  void ReceiveReturnsFromParent(
+      const std::vector<ReturnedResource>& transferable_resources);
+
+  // Receives a resource from an external client that can be used in compositor
+  // frames, via the returned ResourceId.
+  ResourceId ImportResource(const TransferableResource&,
+                            std::unique_ptr<SingleReleaseCallback>);
+  // Removes an imported resource, which will call the ReleaseCallback given
+  // originally, once the resource is no longer in use by any compositor frame.
+  void RemoveImportedResource(ResourceId);
+
+  // Verify that the ResourceId is valid and is known to this class, for debug
+  // checks.
+  void ValidateResource(ResourceId id) const;
+
+  // Checks whether a resource is in use by a consumer.
+  bool InUseByConsumer(ResourceId id);
+
+  bool IsTextureFormatSupported(ResourceFormat format) const;
+
+  // Returns true if the provided |format| can be used as a render buffer.
+  // Note that render buffer support implies texture support.
+  bool IsRenderBufferFormatSupported(ResourceFormat format) const;
+
+  bool IsSoftware() const { return !compositor_context_provider_; }
+
+  class VIZ_CLIENT_EXPORT ScopedSkSurface {
+   public:
+    ScopedSkSurface(GrContext* gr_context,
+                    GLuint texture_id,
+                    GLenum texture_target,
+                    const gfx::Size& size,
+                    ResourceFormat format,
+                    bool can_use_lcd_text,
+                    int msaa_sample_count);
+    ~ScopedSkSurface();
+
+    SkSurface* surface() const { return surface_.get(); }
+
+    static SkSurfaceProps ComputeSurfaceProps(bool can_use_lcd_text);
+
+   private:
+    sk_sp<SkSurface> surface_;
+
+    DISALLOW_COPY_AND_ASSIGN(ScopedSkSurface);
+  };
+
+ private:
+  struct ImportedResource;
+
+  THREAD_CHECKER(thread_checker_);
+  const bool delegated_sync_points_required_;
+  ContextProvider* const compositor_context_provider_;
+
+  base::flat_map<ResourceId, ImportedResource> imported_resources_;
+  // The ResourceIds in ClientResourceProvider start from 1 to avoid
+  // conflicts with id from DisplayResourceProvider.
+  ResourceId next_id_ = 1;
+
+  DISALLOW_COPY_AND_ASSIGN(ClientResourceProvider);
+};
+
+}  // namespace viz
+
+#endif  // COMPONENTS_VIZ_CLIENT_CLIENT_RESOURCE_PROVIDER_H_
diff --git a/components/viz/client/client_resource_provider_unittest.cc b/components/viz/client/client_resource_provider_unittest.cc
new file mode 100644
index 0000000..dcdb409
--- /dev/null
+++ b/components/viz/client/client_resource_provider_unittest.cc
@@ -0,0 +1,551 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/viz/client/client_resource_provider.h"
+
+#include <memory>
+
+#include "base/bind.h"
+#include "base/bind_helpers.h"
+#include "components/viz/common/resources/returned_resource.h"
+#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/test/test_context_provider.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using testing::_;
+
+namespace viz {
+namespace {
+
+class ClientResourceProviderTest : public testing::TestWithParam<bool> {
+ protected:
+  ClientResourceProviderTest()
+      : use_gpu_(GetParam()),
+        context_provider_(TestContextProvider::Create()),
+        bound_(context_provider_->BindToCurrentThread()),
+        provider_(std::make_unique<ClientResourceProvider>(
+            use_gpu_ ? context_provider_.get() : nullptr,
+            delegated_sync_points_required_)) {
+    DCHECK_EQ(bound_, gpu::ContextResult::kSuccess);
+  }
+
+  gpu::Mailbox MailboxFromChar(char value) {
+    gpu::Mailbox mailbox;
+    memset(mailbox.name, value, sizeof(mailbox.name));
+    return mailbox;
+  }
+
+  gpu::SyncToken SyncTokenFromUInt(uint32_t value) {
+    return gpu::SyncToken(gpu::CommandBufferNamespace::GPU_IO,
+                          gpu::CommandBufferId::FromUnsafeValue(0x123), value);
+  }
+
+  TransferableResource MakeTransferableResource(bool gpu,
+                                                char mailbox_char,
+                                                uint32_t sync_token_value) {
+    TransferableResource r;
+    r.id = mailbox_char;
+    r.is_software = !gpu;
+    r.filter = 456;
+    r.size = gfx::Size(10, 11);
+    r.mailbox_holder.mailbox = MailboxFromChar(mailbox_char);
+    if (gpu) {
+      r.mailbox_holder.sync_token = SyncTokenFromUInt(sync_token_value);
+      r.mailbox_holder.texture_target = 6;
+    }
+    return r;
+  }
+
+  void Shutdown() { provider_.reset(); }
+
+  bool use_gpu() const { return use_gpu_; }
+  ClientResourceProvider& provider() const { return *provider_; }
+  ContextProvider* context_provider() const { return context_provider_.get(); }
+
+  void DestroyProvider() { provider_.reset(); }
+
+ private:
+  bool use_gpu_;
+  scoped_refptr<TestContextProvider> context_provider_;
+  gpu::ContextResult bound_;
+  bool delegated_sync_points_required_ = true;
+  std::unique_ptr<ClientResourceProvider> provider_;
+};
+
+INSTANTIATE_TEST_CASE_P(ClientResourceProviderTests,
+                        ClientResourceProviderTest,
+                        ::testing::Values(false, true));
+
+class MockReleaseCallback {
+ public:
+  MOCK_METHOD2(Released, void(const gpu::SyncToken& token, bool lost));
+};
+
+TEST_P(ClientResourceProviderTest, TransferableResourceReleased) {
+  MockReleaseCallback release;
+  TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
+  ResourceId id = provider().ImportResource(
+      tran, SingleReleaseCallback::Create(base::BindOnce(
+                &MockReleaseCallback::Released, base::Unretained(&release))));
+  // The local id is different.
+  EXPECT_NE(id, tran.id);
+
+  // The same SyncToken that was sent is returned when the resource was never
+  // exported. The SyncToken may be from any context, and the ReleaseCallback
+  // may need to wait on it before interacting with the resource on its context.
+  EXPECT_CALL(release, Released(tran.mailbox_holder.sync_token, false));
+  provider().RemoveImportedResource(id);
+}
+
+TEST_P(ClientResourceProviderTest, TransferableResourceSendToParent) {
+  MockReleaseCallback release;
+  TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
+  tran.buffer_format = gfx::BufferFormat::RGBX_8888;
+  ResourceId id = provider().ImportResource(
+      tran, SingleReleaseCallback::Create(base::BindOnce(
+                &MockReleaseCallback::Released, base::Unretained(&release))));
+
+  // Export the resource.
+  std::vector<ResourceId> to_send = {id};
+  std::vector<TransferableResource> exported;
+  provider().PrepareSendToParent(to_send, &exported, context_provider());
+  ASSERT_EQ(exported.size(), 1u);
+
+  // Exported resource matches except for the id which was mapped
+  // to the local ResourceProvider, and the sync token should be
+  // verified if it's a gpu resource.
+  gpu::SyncToken verified_sync_token = tran.mailbox_holder.sync_token;
+  if (!tran.is_software)
+    verified_sync_token.SetVerifyFlush();
+  EXPECT_EQ(exported[0].id, id);
+  EXPECT_EQ(exported[0].is_software, tran.is_software);
+  EXPECT_EQ(exported[0].filter, tran.filter);
+  EXPECT_EQ(exported[0].size, tran.size);
+  EXPECT_EQ(exported[0].mailbox_holder.mailbox, tran.mailbox_holder.mailbox);
+  EXPECT_EQ(exported[0].mailbox_holder.sync_token, verified_sync_token);
+  EXPECT_EQ(exported[0].mailbox_holder.texture_target,
+            tran.mailbox_holder.texture_target);
+  EXPECT_EQ(exported[0].buffer_format, tran.buffer_format);
+
+  // Exported resources are not released when removed, until the export returns.
+  EXPECT_CALL(release, Released(_, _)).Times(0);
+  provider().RemoveImportedResource(id);
+
+  // Return the resource, with a sync token if using gpu.
+  std::vector<ReturnedResource> returned;
+  returned.push_back({});
+  returned.back().id = exported[0].id;
+  if (use_gpu())
+    returned.back().sync_token = SyncTokenFromUInt(31);
+  returned.back().count = 1;
+  returned.back().lost = false;
+
+  // The sync token is given to the ReleaseCallback.
+  EXPECT_CALL(release, Released(returned[0].sync_token, false));
+  provider().ReceiveReturnsFromParent(returned);
+}
+
+TEST_P(ClientResourceProviderTest, TransferableResourceSendTwoToParent) {
+  TransferableResource tran[] = {MakeTransferableResource(use_gpu(), 'a', 15),
+                                 MakeTransferableResource(use_gpu(), 'b', 16)};
+  ResourceId id1 = provider().ImportResource(
+      tran[0], SingleReleaseCallback::Create(base::DoNothing()));
+  ResourceId id2 = provider().ImportResource(
+      tran[1], SingleReleaseCallback::Create(base::DoNothing()));
+
+  // Export the resource.
+  std::vector<ResourceId> to_send = {id1, id2};
+  std::vector<TransferableResource> exported;
+  provider().PrepareSendToParent(to_send, &exported, context_provider());
+  ASSERT_EQ(exported.size(), 2u);
+
+  // Exported resource matches except for the id which was mapped
+  // to the local ResourceProvider, and the sync token should be
+  // verified if it's a gpu resource.
+  for (int i = 0; i < 2; ++i) {
+    gpu::SyncToken verified_sync_token = tran[i].mailbox_holder.sync_token;
+    if (!tran[i].is_software)
+      verified_sync_token.SetVerifyFlush();
+    EXPECT_EQ(exported[i].id, to_send[i]);
+    EXPECT_EQ(exported[i].is_software, tran[i].is_software);
+    EXPECT_EQ(exported[i].filter, tran[i].filter);
+    EXPECT_EQ(exported[i].size, tran[i].size);
+    EXPECT_EQ(exported[i].mailbox_holder.mailbox,
+              tran[i].mailbox_holder.mailbox);
+    EXPECT_EQ(exported[i].mailbox_holder.sync_token, verified_sync_token);
+    EXPECT_EQ(exported[i].mailbox_holder.texture_target,
+              tran[i].mailbox_holder.texture_target);
+    EXPECT_EQ(exported[i].buffer_format, tran[i].buffer_format);
+  }
+}
+
+TEST_P(ClientResourceProviderTest, TransferableResourceSendToParentTwoTimes) {
+  TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
+  ResourceId id = provider().ImportResource(
+      tran, SingleReleaseCallback::Create(base::DoNothing()));
+
+  // Export the resource.
+  std::vector<ResourceId> to_send = {id};
+  std::vector<TransferableResource> exported;
+  provider().PrepareSendToParent(to_send, &exported, context_provider());
+  ASSERT_EQ(exported.size(), 1u);
+  EXPECT_EQ(exported[0].id, id);
+
+  // Return the resource, with a sync token if using gpu.
+  std::vector<ReturnedResource> returned;
+  returned.push_back({});
+  returned.back().id = exported[0].id;
+  if (use_gpu())
+    returned.back().sync_token = SyncTokenFromUInt(31);
+  returned.back().count = 1;
+  returned.back().lost = false;
+  provider().ReceiveReturnsFromParent(returned);
+
+  // Then export again, it still sends.
+  exported.clear();
+  provider().PrepareSendToParent(to_send, &exported, context_provider());
+  ASSERT_EQ(exported.size(), 1u);
+  EXPECT_EQ(exported[0].id, id);
+}
+
+TEST_P(ClientResourceProviderTest,
+       TransferableResourceLostOnShutdownIfExported) {
+  MockReleaseCallback release;
+  TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
+  ResourceId id = provider().ImportResource(
+      tran, SingleReleaseCallback::Create(base::BindOnce(
+                &MockReleaseCallback::Released, base::Unretained(&release))));
+
+  // Export the resource.
+  std::vector<ResourceId> to_send = {id};
+  std::vector<TransferableResource> exported;
+  provider().PrepareSendToParent(to_send, &exported, context_provider());
+
+  EXPECT_CALL(release, Released(_, true));
+  Shutdown();
+}
+
+TEST_P(ClientResourceProviderTest, TransferableResourceRemovedAfterReturn) {
+  MockReleaseCallback release;
+  TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
+  ResourceId id = provider().ImportResource(
+      tran, SingleReleaseCallback::Create(base::BindOnce(
+                &MockReleaseCallback::Released, base::Unretained(&release))));
+
+  // Export the resource.
+  std::vector<ResourceId> to_send = {id};
+  std::vector<TransferableResource> exported;
+  provider().PrepareSendToParent(to_send, &exported, context_provider());
+
+  // Return the resource. This does not release the resource back to
+  // the client.
+  std::vector<ReturnedResource> returned;
+  returned.push_back({});
+  returned.back().id = exported[0].id;
+  if (use_gpu())
+    returned.back().sync_token = SyncTokenFromUInt(31);
+  returned.back().count = 1;
+  returned.back().lost = false;
+
+  EXPECT_CALL(release, Released(_, _)).Times(0);
+  provider().ReceiveReturnsFromParent(returned);
+
+  // Once removed, the resource is released.
+  EXPECT_CALL(release, Released(returned[0].sync_token, false));
+  provider().RemoveImportedResource(id);
+}
+
+TEST_P(ClientResourceProviderTest, TransferableResourceExportedTwice) {
+  MockReleaseCallback release;
+  TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
+  ResourceId id = provider().ImportResource(
+      tran, SingleReleaseCallback::Create(base::BindOnce(
+                &MockReleaseCallback::Released, base::Unretained(&release))));
+
+  // Export the resource once.
+  std::vector<ResourceId> to_send = {id};
+  std::vector<TransferableResource> exported;
+  provider().PrepareSendToParent(to_send, &exported, context_provider());
+
+  // Exported resources are not released when removed, until all exports are
+  // returned.
+  EXPECT_CALL(release, Released(_, _)).Times(0);
+  provider().RemoveImportedResource(id);
+
+  // Export the resource twice.
+  exported = {};
+  provider().PrepareSendToParent(to_send, &exported, context_provider());
+
+  // Return the resource the first time.
+  std::vector<ReturnedResource> returned;
+  returned.push_back({});
+  returned.back().id = exported[0].id;
+  if (use_gpu())
+    returned.back().sync_token = SyncTokenFromUInt(31);
+  returned.back().count = 1;
+  returned.back().lost = false;
+  provider().ReceiveReturnsFromParent(returned);
+
+  // And a second time, with a different sync token. Now the ReleaseCallback can
+  // happen, using the latest sync token.
+  if (use_gpu())
+    returned.back().sync_token = SyncTokenFromUInt(47);
+  EXPECT_CALL(release, Released(returned[0].sync_token, false));
+  provider().ReceiveReturnsFromParent(returned);
+}
+
+TEST_P(ClientResourceProviderTest, TransferableResourceReturnedTwiceAtOnce) {
+  MockReleaseCallback release;
+  TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
+  ResourceId id = provider().ImportResource(
+      tran, SingleReleaseCallback::Create(base::BindOnce(
+                &MockReleaseCallback::Released, base::Unretained(&release))));
+
+  // Export the resource once.
+  std::vector<ResourceId> to_send = {id};
+  std::vector<TransferableResource> exported;
+  provider().PrepareSendToParent(to_send, &exported, context_provider());
+
+  // Exported resources are not released when removed, until all exports are
+  // returned.
+  EXPECT_CALL(release, Released(_, _)).Times(0);
+  provider().RemoveImportedResource(id);
+
+  // Export the resource twice.
+  exported = {};
+  provider().PrepareSendToParent(to_send, &exported, context_provider());
+
+  // Return both exports at once.
+  std::vector<ReturnedResource> returned;
+  returned.push_back({});
+  returned.back().id = exported[0].id;
+  if (use_gpu())
+    returned.back().sync_token = SyncTokenFromUInt(31);
+  returned.back().count = 2;
+  returned.back().lost = false;
+
+  // When returned, the ReleaseCallback can happen, using the latest sync token.
+  EXPECT_CALL(release, Released(returned[0].sync_token, false));
+  provider().ReceiveReturnsFromParent(returned);
+}
+
+TEST_P(ClientResourceProviderTest, TransferableResourceLostOnReturn) {
+  MockReleaseCallback release;
+  TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
+  ResourceId id = provider().ImportResource(
+      tran, SingleReleaseCallback::Create(base::BindOnce(
+                &MockReleaseCallback::Released, base::Unretained(&release))));
+
+  // Export the resource once.
+  std::vector<ResourceId> to_send = {id};
+  std::vector<TransferableResource> exported;
+  provider().PrepareSendToParent(to_send, &exported, context_provider());
+
+  // Exported resources are not released when removed, until all exports are
+  // returned.
+  EXPECT_CALL(release, Released(_, _)).Times(0);
+  provider().RemoveImportedResource(id);
+
+  // Export the resource twice.
+  exported = {};
+  provider().PrepareSendToParent(to_send, &exported, context_provider());
+
+  // Return the resource the first time, not lost.
+  std::vector<ReturnedResource> returned;
+  returned.push_back({});
+  returned.back().id = exported[0].id;
+  returned.back().count = 1;
+  returned.back().lost = false;
+  provider().ReceiveReturnsFromParent(returned);
+
+  // Return a second time, as lost. The ReturnCallback should report it
+  // lost.
+  returned.back().lost = true;
+  EXPECT_CALL(release, Released(_, true));
+  provider().ReceiveReturnsFromParent(returned);
+}
+
+TEST_P(ClientResourceProviderTest, TransferableResourceLostOnFirstReturn) {
+  MockReleaseCallback release;
+  TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
+  ResourceId id = provider().ImportResource(
+      tran, SingleReleaseCallback::Create(base::BindOnce(
+                &MockReleaseCallback::Released, base::Unretained(&release))));
+
+  // Export the resource once.
+  std::vector<ResourceId> to_send = {id};
+  std::vector<TransferableResource> exported;
+  provider().PrepareSendToParent(to_send, &exported, context_provider());
+
+  // Exported resources are not released when removed, until all exports are
+  // returned.
+  EXPECT_CALL(release, Released(_, _)).Times(0);
+  provider().RemoveImportedResource(id);
+
+  // Export the resource twice.
+  exported = {};
+  provider().PrepareSendToParent(to_send, &exported, context_provider());
+
+  // Return the resource the first time, marked as lost.
+  std::vector<ReturnedResource> returned;
+  returned.push_back({});
+  returned.back().id = exported[0].id;
+  returned.back().count = 1;
+  returned.back().lost = true;
+  provider().ReceiveReturnsFromParent(returned);
+
+  // Return a second time, not lost. The first lost signal should not be lost.
+  returned.back().lost = false;
+  EXPECT_CALL(release, Released(_, true));
+  provider().ReceiveReturnsFromParent(returned);
+}
+
+TEST_P(ClientResourceProviderTest, ReturnedSyncTokensArePassedToClient) {
+  // SyncTokens are gpu-only.
+  if (!use_gpu())
+    return;
+
+  MockReleaseCallback release;
+
+  GLuint texture;
+  context_provider()->ContextGL()->GenTextures(1, &texture);
+  context_provider()->ContextGL()->BindTexture(GL_TEXTURE_2D, texture);
+  gpu::Mailbox mailbox;
+  context_provider()->ContextGL()->GenMailboxCHROMIUM(mailbox.name);
+  context_provider()->ContextGL()->ProduceTextureDirectCHROMIUM(texture,
+                                                                mailbox.name);
+  gpu::SyncToken sync_token;
+  context_provider()->ContextGL()->GenSyncTokenCHROMIUM(sync_token.GetData());
+
+  auto tran = TransferableResource::MakeGL(mailbox, GL_LINEAR, GL_TEXTURE_2D,
+                                           sync_token);
+  ResourceId resource = provider().ImportResource(
+      tran, SingleReleaseCallback::Create(base::BindOnce(
+                &MockReleaseCallback::Released, base::Unretained(&release))));
+
+  EXPECT_TRUE(tran.mailbox_holder.sync_token.HasData());
+  // All the logic below assumes that the sync token releases are all positive.
+  EXPECT_LT(0u, tran.mailbox_holder.sync_token.release_count());
+
+  // Transfer the resource, expect the sync points to be consistent.
+  std::vector<TransferableResource> list;
+  provider().PrepareSendToParent({resource}, &list, context_provider());
+  ASSERT_EQ(1u, list.size());
+  EXPECT_LE(sync_token.release_count(),
+            list[0].mailbox_holder.sync_token.release_count());
+  EXPECT_EQ(0, memcmp(mailbox.name, list[0].mailbox_holder.mailbox.name,
+                      sizeof(mailbox.name)));
+
+  // Make a new texture id from the mailbox.
+  context_provider()->ContextGL()->WaitSyncTokenCHROMIUM(
+      list[0].mailbox_holder.sync_token.GetConstData());
+  unsigned other_texture =
+      context_provider()->ContextGL()->CreateAndConsumeTextureCHROMIUM(
+          mailbox.name);
+  // Then delete it and make a new SyncToken.
+  context_provider()->ContextGL()->DeleteTextures(1, &other_texture);
+  context_provider()->ContextGL()->GenSyncTokenCHROMIUM(
+      list[0].mailbox_holder.sync_token.GetData());
+  EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData());
+
+  // Receive the resource, then delete it, expect the SyncTokens to be
+  // consistent.
+  provider().ReceiveReturnsFromParent(
+      TransferableResource::ReturnResources(list));
+
+  gpu::SyncToken returned_sync_token;
+  EXPECT_CALL(release, Released(_, false))
+      .WillOnce(testing::SaveArg<0>(&returned_sync_token));
+  provider().RemoveImportedResource(resource);
+  EXPECT_GE(returned_sync_token.release_count(),
+            list[0].mailbox_holder.sync_token.release_count());
+}
+
+TEST_P(ClientResourceProviderTest, LostResourcesAreReturnedLost) {
+  MockReleaseCallback release;
+  TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
+  ResourceId resource = provider().ImportResource(
+      tran, SingleReleaseCallback::Create(base::BindOnce(
+                &MockReleaseCallback::Released, base::Unretained(&release))));
+
+  // Transfer the resource to the parent.
+  std::vector<TransferableResource> list;
+  provider().PrepareSendToParent({resource}, &list, context_provider());
+  EXPECT_EQ(1u, list.size());
+
+  // Receive it back marked lost.
+  std::vector<ReturnedResource> returned_to_child;
+  returned_to_child.push_back(list[0].ToReturnedResource());
+  returned_to_child.back().lost = true;
+  provider().ReceiveReturnsFromParent(returned_to_child);
+
+  // Delete the resource in the child. Expect the resource to be lost.
+  EXPECT_CALL(release, Released(_, true));
+  provider().RemoveImportedResource(resource);
+}
+
+TEST_P(ClientResourceProviderTest, ShutdownPreservesLostState) {
+  MockReleaseCallback release;
+  TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
+  ResourceId resource = provider().ImportResource(
+      tran, SingleReleaseCallback::Create(base::BindOnce(
+                &MockReleaseCallback::Released, base::Unretained(&release))));
+
+  // Transfer the resource to the parent.
+  std::vector<TransferableResource> list;
+  provider().PrepareSendToParent({resource}, &list, context_provider());
+  EXPECT_EQ(1u, list.size());
+
+  // Receive it back marked lost.
+  std::vector<ReturnedResource> returned_to_child;
+  returned_to_child.push_back(list[0].ToReturnedResource());
+  returned_to_child.back().lost = true;
+  provider().ReceiveReturnsFromParent(returned_to_child);
+
+  // Shutdown, and expect the resource to be lost..
+  EXPECT_CALL(release, Released(_, true));
+  DestroyProvider();
+}
+
+TEST_P(ClientResourceProviderTest, ShutdownLosesExportedResources) {
+  MockReleaseCallback release;
+  TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
+  ResourceId resource = provider().ImportResource(
+      tran, SingleReleaseCallback::Create(base::BindOnce(
+                &MockReleaseCallback::Released, base::Unretained(&release))));
+
+  // Transfer the resource to the parent.
+  std::vector<TransferableResource> list;
+  provider().PrepareSendToParent({resource}, &list, context_provider());
+  EXPECT_EQ(1u, list.size());
+
+  // Destroy the ClientResourceProvider, the resource is returned lost.
+  EXPECT_CALL(release, Released(_, true));
+  DestroyProvider();
+}
+
+TEST_P(ClientResourceProviderTest, ShutdownDoesNotLoseUnexportedResources) {
+  MockReleaseCallback release;
+  TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
+  ResourceId resource = provider().ImportResource(
+      tran, SingleReleaseCallback::Create(base::BindOnce(
+                &MockReleaseCallback::Released, base::Unretained(&release))));
+
+  // Transfer the resource to the parent.
+  std::vector<TransferableResource> list;
+  provider().PrepareSendToParent({resource}, &list, context_provider());
+  EXPECT_EQ(1u, list.size());
+
+  // Receive it back.
+  provider().ReceiveReturnsFromParent(
+      TransferableResource::ReturnResources(list));
+
+  // Destroy the ClientResourceProvider, the resource is not lost.
+  EXPECT_CALL(release, Released(_, false));
+  DestroyProvider();
+}
+
+}  // namespace
+}  // namespace viz
diff --git a/components/viz/client/shared_bitmap_reporter.cc b/components/viz/client/shared_bitmap_reporter.cc
new file mode 100644
index 0000000..597a8a9
--- /dev/null
+++ b/components/viz/client/shared_bitmap_reporter.cc
@@ -0,0 +1,11 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/viz/client/shared_bitmap_reporter.h"
+
+namespace viz {
+
+SharedBitmapReporter::~SharedBitmapReporter() = default;
+
+}  // namespace viz
diff --git a/components/viz/client/shared_bitmap_reporter.h b/components/viz/client/shared_bitmap_reporter.h
new file mode 100644
index 0000000..11d530f
--- /dev/null
+++ b/components/viz/client/shared_bitmap_reporter.h
@@ -0,0 +1,35 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_VIZ_CLIENT_SHARED_BITMAP_REPORTER_H_
+#define COMPONENTS_VIZ_CLIENT_SHARED_BITMAP_REPORTER_H_
+
+#include "components/viz/client/viz_client_export.h"
+#include "components/viz/common/quads/shared_bitmap.h"
+#include "mojo/public/cpp/system/buffer.h"
+
+namespace viz {
+
+// An interface that can be used for code without a direct connection to the viz
+// display compositor, as an intermediary in order to notify the display
+// compositor about SharedMemory allocated for shared bitmaps. The
+// implementation of this interface would be responsible to passing the
+// notifications on to the display compositor via the CompositorFrameSink.
+class VIZ_CLIENT_EXPORT SharedBitmapReporter {
+ public:
+  // Associates a SharedBitmapId with a shared buffer handle.
+  virtual void DidAllocateSharedBitmap(mojo::ScopedSharedBufferHandle buffer,
+                                       const SharedBitmapId& id) = 0;
+
+  // Disassociates a SharedBitmapId previously passed to
+  // DidAllocateSharedBitmap.
+  virtual void DidDeleteSharedBitmap(const SharedBitmapId& id) = 0;
+
+ protected:
+  virtual ~SharedBitmapReporter();
+};
+
+}  // namespace viz
+
+#endif  // COMPONENTS_VIZ_CLIENT_SHARED_BITMAP_REPORTER_H_
diff --git a/components/viz/common/BUILD.gn b/components/viz/common/BUILD.gn
index 26f76875..03425b5 100644
--- a/components/viz/common/BUILD.gn
+++ b/components/viz/common/BUILD.gn
@@ -122,8 +122,6 @@
     "resources/return_callback.h",
     "resources/returned_resource.h",
     "resources/shared_bitmap_manager.h",
-    "resources/shared_bitmap_reporter.cc",
-    "resources/shared_bitmap_reporter.h",
     "resources/single_release_callback.cc",
     "resources/single_release_callback.h",
     "resources/transferable_resource.cc",
@@ -159,13 +157,12 @@
     # cc::MathUtil. Remove it once cc/base/math_util* are moved to viz.
     "//cc/base",
     "//cc/paint",
-    "//gpu",
     "//gpu/command_buffer/client:gles2_implementation",
     "//gpu/command_buffer/client:gles2_interface",
     "//gpu/command_buffer/client:raster",
     "//gpu/command_buffer/client:raster_interface",
     "//gpu/vulkan:buildflags",
-    "//mojo/public/cpp/bindings",
+    "//mojo/public/cpp/system",
     "//third_party/libyuv",
     "//ui/gfx",
     "//ui/gfx:color_space",
diff --git a/components/viz/common/DEPS b/components/viz/common/DEPS
index eb42d45..7ccd5e03 100644
--- a/components/viz/common/DEPS
+++ b/components/viz/common/DEPS
@@ -1,5 +1,13 @@
 # Please consult components/viz/README.md about allowable dependencies.
 
+include_rules = [
+  # Do not use mojo bindings in viz/client/. This library should be agnostic
+  # about how to communicate with viz.
+  "-mojo/public/cpp/bindings",
+  # Exception is struct_traits.h which is used for defining friends only.
+  "+mojo/public/cpp/bindings/struct_traits.h",
+]
+
 specific_include_rules = {
   "skia_helper.(cc|h)": [
     "+cc/base",
@@ -12,7 +20,6 @@
     "+gpu/command_buffer/common",
     "+gpu/command_buffer/service",
     "+gpu/ipc/common",
-    "+mojo/public/cpp/bindings",
     "+third_party/skia",
   ],
   ".*_unittest\.cc": [
diff --git a/components/viz/common/resources/shared_bitmap_reporter.cc b/components/viz/common/resources/shared_bitmap_reporter.cc
deleted file mode 100644
index fcd80364..0000000
--- a/components/viz/common/resources/shared_bitmap_reporter.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/viz/common/resources/shared_bitmap_reporter.h"
-
-namespace viz {
-
-SharedBitmapReporter::~SharedBitmapReporter() = default;
-
-}  // namespace viz
diff --git a/components/viz/common/resources/shared_bitmap_reporter.h b/components/viz/common/resources/shared_bitmap_reporter.h
deleted file mode 100644
index 2494a2f..0000000
--- a/components/viz/common/resources/shared_bitmap_reporter.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_VIZ_COMMON_RESOURCES_SHARED_BITMAP_REPORTER_H_
-#define COMPONENTS_VIZ_COMMON_RESOURCES_SHARED_BITMAP_REPORTER_H_
-
-#include "components/viz/common/quads/shared_bitmap.h"
-#include "components/viz/common/viz_common_export.h"
-#include "mojo/public/cpp/system/buffer.h"
-
-namespace viz {
-
-// Used by clients to notify the display compositor about SharedMemory allocated
-// for shared bitmaps.
-// TODO(kylechar): This should be //components/viz/client but because of deps
-// issues that isn't possible. Fix and move there.
-class VIZ_COMMON_EXPORT SharedBitmapReporter {
- public:
-  // Associates a SharedBitmapId with a shared buffer handle.
-  virtual void DidAllocateSharedBitmap(mojo::ScopedSharedBufferHandle buffer,
-                                       const SharedBitmapId& id) = 0;
-
-  // Disassociates a SharedBitmapId previously passed to
-  // DidAllocateSharedBitmap.
-  virtual void DidDeleteSharedBitmap(const SharedBitmapId& id) = 0;
-
- protected:
-  virtual ~SharedBitmapReporter();
-};
-
-}  // namespace viz
-
-#endif  // COMPONENTS_VIZ_COMMON_RESOURCES_SHARED_BITMAP_REPORTER_H_
diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn
index cfec9fbe..c7e69233 100644
--- a/components/viz/service/BUILD.gn
+++ b/components/viz/service/BUILD.gn
@@ -328,6 +328,7 @@
     "//base/test:test_support",
     "//cc:test_support",
     "//cc/paint",
+    "//components/viz/client",
     "//components/viz/common",
     "//components/viz/host",
     "//components/viz/test:test_support",
diff --git a/components/viz/service/display/DEPS b/components/viz/service/display/DEPS
index 3560a35a..2735fde 100644
--- a/components/viz/service/display/DEPS
+++ b/components/viz/service/display/DEPS
@@ -30,10 +30,12 @@
   ],
   ".*_(unit|pixel|perf)test\.cc": [
     "+cc/test",
+    "+components/viz/client",
     "+components/viz/service/display_embedder",
     "+components/viz/service/frame_sinks",
     "+components/viz/test",
     "+gpu/GLES2",
+    "+media",
     "+third_party/libyuv",
   ],
 }
diff --git a/components/viz/service/display/display_resource_provider.h b/components/viz/service/display/display_resource_provider.h
index d81e561..30f20ace 100644
--- a/components/viz/service/display/display_resource_provider.h
+++ b/components/viz/service/display/display_resource_provider.h
@@ -376,7 +376,7 @@
   // modified by this class are now in an indeterminate state.
   bool lost_context_provider_ = false;
   // The ResourceIds in DisplayResourceProvider start from 2 to avoid
-  // conflicts with id from LayerTreeResourceProvider.
+  // conflicts with id from ClientResourceProvider.
   ResourceId next_id_ = 2;
   // Used as child id when creating a child.
   int next_child_ = 1;
diff --git a/components/viz/service/display/display_resource_provider_unittest.cc b/components/viz/service/display/display_resource_provider_unittest.cc
index 3a8efc6..40b1fd92 100644
--- a/components/viz/service/display/display_resource_provider_unittest.cc
+++ b/components/viz/service/display/display_resource_provider_unittest.cc
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 #include "components/viz/service/display/display_resource_provider.h"
-#include "cc/resources/layer_tree_resource_provider.h"
+#include "components/viz/client/client_resource_provider.h"
 
 #include <stddef.h>
 #include <stdint.h>
@@ -364,7 +364,7 @@
   bool use_gpu() const { return use_gpu_; }
 
   void MakeChildResourceProvider() {
-    child_resource_provider_ = std::make_unique<cc::LayerTreeResourceProvider>(
+    child_resource_provider_ = std::make_unique<ClientResourceProvider>(
         child_context_provider_.get(), child_needs_sync_token_);
   }
 
@@ -436,7 +436,7 @@
   scoped_refptr<TestContextProvider> child_context_provider_;
   std::unique_ptr<TestGpuMemoryBufferManager> gpu_memory_buffer_manager_;
   std::unique_ptr<DisplayResourceProvider> resource_provider_;
-  std::unique_ptr<cc::LayerTreeResourceProvider> child_resource_provider_;
+  std::unique_ptr<ClientResourceProvider> child_resource_provider_;
   std::unique_ptr<TestSharedBitmapManager> shared_bitmap_manager_;
 };
 
@@ -740,9 +740,8 @@
     return;
 
   bool need_sync_tokens = false;
-  auto no_token_resource_provider =
-      std::make_unique<cc::LayerTreeResourceProvider>(
-          child_context_provider_.get(), need_sync_tokens);
+  auto no_token_resource_provider = std::make_unique<ClientResourceProvider>(
+      child_context_provider_.get(), need_sync_tokens);
 
   GLuint external_texture_id = child_gl_->CreateExternalTexture();
 
@@ -1000,10 +999,9 @@
         TestContextProvider::Create(std::move(child_gl_owned));
     child_context_provider->BindToCurrentThread();
 
-    auto child_resource_provider =
-        std::make_unique<cc::LayerTreeResourceProvider>(
-            child_context_provider.get(),
-            /*delegated_sync_points_required=*/true);
+    auto child_resource_provider = std::make_unique<ClientResourceProvider>(
+        child_context_provider.get(),
+        /*delegated_sync_points_required=*/true);
 
     unsigned texture_id = 1;
     gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO,
@@ -1047,7 +1045,7 @@
     ResourceId mapped_resource_id = resource_map[resource_id];
     {
       // The verified flush flag will be set by
-      // cc::LayerTreeResourceProvider::PrepareSendToParent. Before checking if
+      // ClientResourceProvider::PrepareSendToParent. Before checking if
       // the gpu::SyncToken matches, set this flag first.
       sync_token.SetVerifyFlush();
 
@@ -1157,10 +1155,9 @@
       TestContextProvider::Create(std::move(child_gl_owned));
   child_context_provider->BindToCurrentThread();
 
-  auto child_resource_provider =
-      std::make_unique<cc::LayerTreeResourceProvider>(
-          child_context_provider.get(),
-          /*delegated_sync_points_required=*/true);
+  auto child_resource_provider = std::make_unique<ClientResourceProvider>(
+      child_context_provider.get(),
+      /*delegated_sync_points_required=*/true);
 
   gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO,
                             gpu::CommandBufferId::FromUnsafeValue(0x12), 0x34);
@@ -1202,7 +1199,7 @@
   ResourceId mapped_resource_id = resource_map[resource_id];
   {
     // The verified flush flag will be set by
-    // cc::LayerTreeResourceProvider::PrepareSendToParent. Before checking if
+    // ClientResourceProvider::PrepareSendToParent. Before checking if
     // the gpu::SyncToken matches, set this flag first.
     sync_token.SetVerifyFlush();
 
diff --git a/components/viz/service/display/gl_renderer_unittest.cc b/components/viz/service/display/gl_renderer_unittest.cc
index 195f93c9..d57fcca2 100644
--- a/components/viz/service/display/gl_renderer_unittest.cc
+++ b/components/viz/service/display/gl_renderer_unittest.cc
@@ -17,7 +17,6 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "build/build_config.h"
 #include "cc/base/math_util.h"
-#include "cc/resources/layer_tree_resource_provider.h"
 #include "cc/test/fake_impl_task_runner_provider.h"
 #include "cc/test/fake_layer_tree_host_impl.h"
 #include "cc/test/fake_output_surface_client.h"
@@ -25,6 +24,7 @@
 #include "cc/test/pixel_test.h"
 #include "cc/test/render_pass_test_utils.h"
 #include "cc/test/resource_provider_test_utils.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/display/renderer_settings.h"
 #include "components/viz/common/frame_sinks/copy_output_request.h"
 #include "components/viz/common/frame_sinks/copy_output_result.h"
@@ -541,7 +541,7 @@
     child_context_provider_ = TestContextProvider::Create();
     child_context_provider_->BindToCurrentThread();
     child_resource_provider_ =
-        cc::FakeResourceProvider::CreateLayerTreeResourceProvider(
+        cc::FakeResourceProvider::CreateClientResourceProvider(
             child_context_provider_.get());
   }
 
@@ -634,7 +634,7 @@
   std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_;
   std::unique_ptr<DisplayResourceProvider> resource_provider_;
   scoped_refptr<TestContextProvider> child_context_provider_;
-  std::unique_ptr<cc::LayerTreeResourceProvider> child_resource_provider_;
+  std::unique_ptr<ClientResourceProvider> child_resource_provider_;
   std::unique_ptr<FakeRendererGL> renderer_;
 };
 
@@ -1007,14 +1007,14 @@
       TestContextProvider::Create(std::move(child_gl_owned));
   child_context_provider->BindToCurrentThread();
   auto child_resource_provider =
-      cc::FakeResourceProvider::CreateLayerTreeResourceProvider(
+      cc::FakeResourceProvider::CreateClientResourceProvider(
           child_context_provider.get());
 
   RenderPass* root_pass =
       cc::AddRenderPass(&render_passes_in_draw_order_, 1, gfx::Rect(100, 100),
                         gfx::Transform(), cc::FilterOperations());
   gpu::SyncToken mailbox_sync_token;
-  AddOneOfEveryQuadTypeInDisplayResourceProvider(
+  cc::AddOneOfEveryQuadTypeInDisplayResourceProvider(
       root_pass, resource_provider.get(), child_resource_provider.get(),
       child_context_provider.get(), 0, &mailbox_sync_token);
 
@@ -1027,7 +1027,7 @@
   {
     InSequence sequence;
     // The verified flush flag will be set by
-    // cc::LayerTreeResourceProvider::PrepareSendToParent. Before checking if
+    // ClientResourceProvider::PrepareSendToParent. Before checking if
     // the gpu::SyncToken matches, set this flag first.
     mailbox_sync_token.SetVerifyFlush();
     // In AddOneOfEveryQuadTypeInDisplayResourceProvider, resources are added
@@ -1630,9 +1630,9 @@
 
   // Return the mapped resource id.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap({mask}, resource_provider_.get(),
-                                         child_resource_provider_.get(),
-                                         child_context_provider_.get());
+      cc::SendResourceAndGetChildToParentMap({mask}, resource_provider_.get(),
+                                             child_resource_provider_.get(),
+                                             child_context_provider_.get());
   ResourceId mapped_mask = resource_map[mask];
 
   SkScalar matrix[20];
@@ -2076,7 +2076,7 @@
   auto child_context_provider = TestContextProvider::Create();
   child_context_provider->BindToCurrentThread();
   auto child_resource_provider =
-      cc::FakeResourceProvider::CreateLayerTreeResourceProvider(
+      cc::FakeResourceProvider::CreateClientResourceProvider(
           child_context_provider.get());
 
   auto transfer_resource = TransferableResource::MakeGLOverlay(
@@ -2270,7 +2270,7 @@
   auto child_context_provider = TestContextProvider::Create();
   child_context_provider->BindToCurrentThread();
   auto child_resource_provider =
-      cc::FakeResourceProvider::CreateLayerTreeResourceProvider(
+      cc::FakeResourceProvider::CreateClientResourceProvider(
           child_context_provider.get());
 
   gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO,
@@ -2339,7 +2339,7 @@
                        flipped, nearest_neighbor, false);
 
   // The verified flush flag will be set by
-  // cc::LayerTreeResourceProvider::PrepareSendToParent. Before checking if the
+  // ClientResourceProvider::PrepareSendToParent. Before checking if the
   // gpu::SyncToken matches, set this flag first.
   sync_token.SetVerifyFlush();
 
@@ -2653,7 +2653,7 @@
   auto child_context_provider = TestContextProvider::Create();
   child_context_provider->BindToCurrentThread();
   auto child_resource_provider =
-      cc::FakeResourceProvider::CreateLayerTreeResourceProvider(
+      cc::FakeResourceProvider::CreateClientResourceProvider(
           child_context_provider.get());
 
   auto transfer_resource = TransferableResource::MakeGLOverlay(
diff --git a/components/viz/service/display/overlay_unittest.cc b/components/viz/service/display/overlay_unittest.cc
index ae55616..1fcf743 100644
--- a/components/viz/service/display/overlay_unittest.cc
+++ b/components/viz/service/display/overlay_unittest.cc
@@ -9,11 +9,11 @@
 
 #include "base/containers/flat_map.h"
 #include "base/test/scoped_feature_list.h"
-#include "cc/resources/layer_tree_resource_provider.h"
 #include "cc/test/fake_output_surface_client.h"
 #include "cc/test/fake_resource_provider.h"
 #include "cc/test/geometry_test_utils.h"
 #include "cc/test/resource_provider_test_utils.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/quads/render_pass.h"
 #include "components/viz/common/quads/render_pass_draw_quad.h"
 #include "components/viz/common/quads/solid_color_draw_quad.h"
@@ -266,7 +266,7 @@
 }
 
 static ResourceId CreateResourceInLayerTree(
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     const gfx::Size& size,
     bool is_overlay_candidate) {
   auto resource = TransferableResource::MakeGLOverlay(
@@ -281,12 +281,11 @@
   return resource_id;
 }
 
-ResourceId CreateResource(
-    DisplayResourceProvider* parent_resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
-    ContextProvider* child_context_provider,
-    const gfx::Size& size,
-    bool is_overlay_candidate) {
+ResourceId CreateResource(DisplayResourceProvider* parent_resource_provider,
+                          ClientResourceProvider* child_resource_provider,
+                          ContextProvider* child_context_provider,
+                          const gfx::Size& size,
+                          bool is_overlay_candidate) {
   ResourceId resource_id = CreateResourceInLayerTree(
       child_resource_provider, size, is_overlay_candidate);
 
@@ -320,7 +319,7 @@
 
 TextureDrawQuad* CreateCandidateQuadAt(
     DisplayResourceProvider* parent_resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     ContextProvider* child_context_provider,
     const SharedQuadState* shared_quad_state,
     RenderPass* render_pass,
@@ -348,7 +347,7 @@
 
 TextureDrawQuad* CreateTransparentCandidateQuadAt(
     DisplayResourceProvider* parent_resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     ContextProvider* child_context_provider,
     const SharedQuadState* shared_quad_state,
     RenderPass* render_pass,
@@ -376,7 +375,7 @@
 
 StreamVideoDrawQuad* CreateCandidateVideoQuadAt(
     DisplayResourceProvider* parent_resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     ContextProvider* child_context_provider,
     const SharedQuadState* shared_quad_state,
     RenderPass* render_pass,
@@ -399,7 +398,7 @@
 
 TextureDrawQuad* CreateFullscreenCandidateQuad(
     DisplayResourceProvider* parent_resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     ContextProvider* child_context_provider,
     const SharedQuadState* shared_quad_state,
     RenderPass* render_pass) {
@@ -410,7 +409,7 @@
 
 StreamVideoDrawQuad* CreateFullscreenCandidateVideoQuad(
     DisplayResourceProvider* parent_resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     ContextProvider* child_context_provider,
     const SharedQuadState* shared_quad_state,
     RenderPass* render_pass,
@@ -422,7 +421,7 @@
 
 YUVVideoDrawQuad* CreateFullscreenCandidateYUVVideoQuad(
     DisplayResourceProvider* parent_resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     ContextProvider* child_context_provider,
     const SharedQuadState* shared_quad_state,
     RenderPass* render_pass) {
@@ -531,7 +530,7 @@
     child_provider_ = TestContextProvider::Create();
     child_provider_->BindToCurrentThread();
     child_resource_provider_ =
-        cc::FakeResourceProvider::CreateLayerTreeResourceProvider(
+        cc::FakeResourceProvider::CreateClientResourceProvider(
             child_provider_.get());
 
     overlay_processor_ =
@@ -545,7 +544,7 @@
   std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_;
   std::unique_ptr<DisplayResourceProvider> resource_provider_;
   scoped_refptr<TestContextProvider> child_provider_;
-  std::unique_ptr<cc::LayerTreeResourceProvider> child_resource_provider_;
+  std::unique_ptr<ClientResourceProvider> child_resource_provider_;
   std::unique_ptr<OverlayProcessor> overlay_processor_;
   gfx::Rect damage_rect_;
   std::vector<gfx::Rect> content_bounds_;
@@ -2595,7 +2594,7 @@
     child_provider_ = TestContextProvider::Create();
     child_provider_->BindToCurrentThread();
     child_resource_provider_ =
-        cc::FakeResourceProvider::CreateLayerTreeResourceProvider(
+        cc::FakeResourceProvider::CreateClientResourceProvider(
             child_provider_.get());
   }
 
@@ -2638,7 +2637,7 @@
   std::unique_ptr<OverlayInfoRendererGL> renderer_;
   scoped_refptr<TestContextProvider> provider_;
   scoped_refptr<TestContextProvider> child_provider_;
-  std::unique_ptr<cc::LayerTreeResourceProvider> child_resource_provider_;
+  std::unique_ptr<ClientResourceProvider> child_resource_provider_;
   MockOverlayScheduler scheduler_;
 };
 
@@ -2829,7 +2828,7 @@
 
   // Return the resource map.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap(
+      cc::SendResourceAndGetChildToParentMap(
           {resource1, resource2, resource3}, resource_provider_.get(),
           child_resource_provider_.get(), child_provider_.get());
 
@@ -3018,7 +3017,7 @@
 
   // Return the resource map.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap(
+      cc::SendResourceAndGetChildToParentMap(
           {resource1, resource2, resource3}, resource_provider_.get(),
           child_resource_provider_.get(), child_provider_.get());
   ResourceId mapped_resource1 = resource_map[resource1];
diff --git a/components/viz/service/display/renderer_pixeltest.cc b/components/viz/service/display/renderer_pixeltest.cc
index a05cd5b29..ae457b4 100644
--- a/components/viz/service/display/renderer_pixeltest.cc
+++ b/components/viz/service/display/renderer_pixeltest.cc
@@ -12,14 +12,13 @@
 #include "cc/base/math_util.h"
 #include "cc/paint/paint_flags.h"
 #include "cc/paint/skia_paint_canvas.h"
-#include "cc/resources/layer_tree_resource_provider.h"
-#include "cc/resources/video_resource_updater.h"
 #include "cc/test/fake_raster_source.h"
 #include "cc/test/fake_recording_source.h"
 #include "cc/test/pixel_test.h"
 #include "cc/test/render_pass_test_utils.h"
 #include "cc/test/resource_provider_test_utils.h"
 #include "cc/test/test_in_process_context_provider.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/gpu/texture_allocation.h"
 #include "components/viz/common/quads/picture_draw_quad.h"
 #include "components/viz/common/quads/texture_draw_quad.h"
@@ -29,6 +28,7 @@
 #include "components/viz/test/test_shared_bitmap_manager.h"
 #include "gpu/command_buffer/client/gles2_interface.h"
 #include "media/base/video_frame.h"
+#include "media/renderers/video_resource_updater.h"
 #include "third_party/skia/include/core/SkColorPriv.h"
 #include "third_party/skia/include/core/SkColorSpaceXform.h"
 #include "third_party/skia/include/core/SkMatrix.h"
@@ -73,7 +73,7 @@
 }
 
 ResourceId CreateGpuResource(scoped_refptr<ContextProvider> context_provider,
-                             cc::LayerTreeResourceProvider* resource_provider,
+                             ClientResourceProvider* resource_provider,
                              const gfx::Size& size,
                              ResourceFormat format,
                              gfx::ColorSpace color_space,
@@ -197,7 +197,7 @@
     bool premultiplied_alpha,
     const SharedQuadState* shared_state,
     DisplayResourceProvider* resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     SharedBitmapManager* shared_bitmap_manager,
     scoped_refptr<ContextProvider> child_context_provider,
     RenderPass* render_pass) {
@@ -242,9 +242,9 @@
 
   // Return the mapped resource id.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap({resource}, resource_provider,
-                                         child_resource_provider,
-                                         child_context_provider.get());
+      cc::SendResourceAndGetChildToParentMap({resource}, resource_provider,
+                                             child_resource_provider,
+                                             child_context_provider.get());
   ResourceId mapped_resource = resource_map[resource];
 
   bool needs_blending = true;
@@ -269,7 +269,7 @@
     bool premultiplied_alpha,
     const SharedQuadState* shared_state,
     DisplayResourceProvider* resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     SharedBitmapManager* shared_bitmap_manager,
     scoped_refptr<ContextProvider> child_context_provider,
     RenderPass* render_pass) {
@@ -303,9 +303,9 @@
 
   // Return the mapped resource id.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap({resource}, resource_provider,
-                                         child_resource_provider,
-                                         child_context_provider.get());
+      cc::SendResourceAndGetChildToParentMap({resource}, resource_provider,
+                                             child_resource_provider,
+                                             child_context_provider.get());
   ResourceId mapped_resource = resource_map[resource];
 
   bool needs_blending = true;
@@ -328,7 +328,7 @@
     bool premultiplied_alpha,
     const SharedQuadState* shared_state,
     DisplayResourceProvider* resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     SharedBitmapManager* shared_bitmap_manager,
     scoped_refptr<ContextProvider> child_context_provider,
     RenderPass* render_pass) {
@@ -346,11 +346,11 @@
     uint8_t alpha_value,
     const gfx::RectF& tex_coord_rect,
     RenderPass* render_pass,
-    cc::VideoResourceUpdater* video_resource_updater,
+    media::VideoResourceUpdater* video_resource_updater,
     const gfx::Rect& rect,
     const gfx::Rect& visible_rect,
     DisplayResourceProvider* resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     ContextProvider* child_context_provider) {
   const bool with_alpha = (video_frame->format() == media::PIXEL_FORMAT_I420A);
 
@@ -365,11 +365,11 @@
                video_frame->rows(media::VideoFrame::kAPlane));
   }
 
-  cc::VideoFrameExternalResources resources =
+  media::VideoFrameExternalResources resources =
       video_resource_updater->CreateExternalResourcesFromVideoFrame(
           video_frame);
 
-  EXPECT_EQ(cc::VideoFrameResourceType::YUV, resources.type);
+  EXPECT_EQ(media::VideoFrameResourceType::YUV, resources.type);
   EXPECT_EQ(media::VideoFrame::NumPlanes(video_frame->format()),
             resources.resources.size());
   EXPECT_EQ(media::VideoFrame::NumPlanes(video_frame->format()),
@@ -403,7 +403,7 @@
     resource_ids_to_transfer.push_back(resource_a);
   // Transfer resources to the parent, and get the resource map.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap(
+      cc::SendResourceAndGetChildToParentMap(
           resource_ids_to_transfer, resource_provider, child_resource_provider,
           child_context_provider);
 
@@ -465,17 +465,17 @@
     scoped_refptr<media::VideoFrame> video_frame,
     const gfx::RectF& tex_coord_rect,
     RenderPass* render_pass,
-    cc::VideoResourceUpdater* video_resource_updater,
+    media::VideoResourceUpdater* video_resource_updater,
     const gfx::Rect& rect,
     const gfx::Rect& visible_rect,
     DisplayResourceProvider* resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     ContextProvider* child_context_provider) {
-  cc::VideoFrameExternalResources resources =
+  media::VideoFrameExternalResources resources =
       video_resource_updater->CreateExternalResourcesFromVideoFrame(
           video_frame);
 
-  EXPECT_EQ(cc::VideoFrameResourceType::RGBA, resources.type);
+  EXPECT_EQ(media::VideoFrameResourceType::RGBA, resources.type);
   EXPECT_EQ(1u, resources.resources.size());
   EXPECT_EQ(1u, resources.release_callbacks.size());
 
@@ -485,9 +485,9 @@
 
   // Transfer resources to the parent, and get the resource map.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap({resource_y}, resource_provider,
-                                         child_resource_provider,
-                                         child_context_provider);
+      cc::SendResourceAndGetChildToParentMap({resource_y}, resource_provider,
+                                             child_resource_provider,
+                                             child_context_provider);
   ResourceId mapped_resource_y = resource_map[resource_y];
 
   auto* quad = render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
@@ -550,11 +550,11 @@
     bool highbit,
     const gfx::RectF& tex_coord_rect,
     RenderPass* render_pass,
-    cc::VideoResourceUpdater* video_resource_updater,
+    media::VideoResourceUpdater* video_resource_updater,
     const gfx::Rect& rect,
     const gfx::Rect& visible_rect,
     DisplayResourceProvider* resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     ContextProvider* child_context_provider) {
   scoped_refptr<media::VideoFrame> video_frame = media::VideoFrame::CreateFrame(
       format, rect.size(), rect, rect.size(), base::TimeDelta());
@@ -616,9 +616,9 @@
     uint8_t u_foreground,
     uint8_t v_foreground,
     RenderPass* render_pass,
-    cc::VideoResourceUpdater* video_resource_updater,
+    media::VideoResourceUpdater* video_resource_updater,
     DisplayResourceProvider* resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     ContextProvider* child_context_provider) {
   const gfx::Rect rect(background_size);
 
@@ -676,11 +676,11 @@
     uint8_t u,
     uint8_t v,
     RenderPass* render_pass,
-    cc::VideoResourceUpdater* video_resource_updater,
+    media::VideoResourceUpdater* video_resource_updater,
     const gfx::Rect& rect,
     const gfx::Rect& visible_rect,
     DisplayResourceProvider* resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     ContextProvider* child_context_provider) {
   scoped_refptr<media::VideoFrame> video_frame = media::VideoFrame::CreateFrame(
       format, rect.size(), rect, rect.size(), base::TimeDelta());
@@ -715,11 +715,11 @@
     uint8_t u,
     uint8_t v,
     RenderPass* render_pass,
-    cc::VideoResourceUpdater* video_resource_updater,
+    media::VideoResourceUpdater* video_resource_updater,
     const gfx::Rect& rect,
     const gfx::Rect& visible_rect,
     DisplayResourceProvider* resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     scoped_refptr<ContextProvider> child_context_provider) {
   gfx::ColorSpace gfx_color_space = gfx::ColorSpace::CreateREC601();
   if (video_frame_color_space == media::COLOR_SPACE_JPEG) {
@@ -748,7 +748,7 @@
 
   // Transfer resources to the parent, and get the resource map.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap(
+      cc::SendResourceAndGetChildToParentMap(
           {resource_y, resource_u, resource_v}, resource_provider,
           child_resource_provider, child_context_provider.get());
 
@@ -779,12 +779,12 @@
     uint8_t g_foreground,
     uint8_t g_background,
     RenderPass* render_pass,
-    cc::VideoResourceUpdater* video_resource_updater,
+    media::VideoResourceUpdater* video_resource_updater,
     const gfx::Rect& rect,
     const gfx::Rect& visible_rect,
     const gfx::Rect& foreground_rect,
     DisplayResourceProvider* resource_provider,
-    cc::LayerTreeResourceProvider* child_resource_provider,
+    ClientResourceProvider* child_resource_provider,
     ContextProvider* child_context_provider) {
   std::unique_ptr<unsigned char, base::AlignedFreeDeleter> memory(
       static_cast<unsigned char*>(
@@ -1228,19 +1228,19 @@
     constexpr bool kUseR16Texture = false;
     constexpr int kMaxResourceSize = 10000;
 
-    video_resource_updater_ = std::make_unique<cc::VideoResourceUpdater>(
+    video_resource_updater_ = std::make_unique<media::VideoResourceUpdater>(
         this->child_context_provider_.get(), nullptr,
         this->child_resource_provider_.get(), kUseStreamVideoDrawQuad,
         kUseGpuMemoryBufferResources, kUseR16Texture, kMaxResourceSize);
-    video_resource_updater2_ = std::make_unique<cc::VideoResourceUpdater>(
+    video_resource_updater2_ = std::make_unique<media::VideoResourceUpdater>(
         this->child_context_provider_.get(), nullptr,
         this->child_resource_provider_.get(), kUseStreamVideoDrawQuad,
         kUseGpuMemoryBufferResources, kUseR16Texture, kMaxResourceSize);
   }
 
  protected:
-  std::unique_ptr<cc::VideoResourceUpdater> video_resource_updater_;
-  std::unique_ptr<cc::VideoResourceUpdater> video_resource_updater2_;
+  std::unique_ptr<media::VideoResourceUpdater> video_resource_updater_;
+  std::unique_ptr<media::VideoResourceUpdater> video_resource_updater2_;
 };
 
 template <typename TypeParam>
@@ -1583,13 +1583,13 @@
     constexpr bool kUseGpuMemoryBufferResources = false;
     constexpr bool kUseR16Texture = false;
     constexpr int kMaxResourceSize = 10000;
-    video_resource_updater_ = std::make_unique<cc::VideoResourceUpdater>(
+    video_resource_updater_ = std::make_unique<media::VideoResourceUpdater>(
         child_context_provider_.get(), nullptr, child_resource_provider_.get(),
         kUseStreamVideoDrawQuad, kUseGpuMemoryBufferResources, kUseR16Texture,
         kMaxResourceSize);
   }
 
-  std::unique_ptr<cc::VideoResourceUpdater> video_resource_updater_;
+  std::unique_ptr<media::VideoResourceUpdater> video_resource_updater_;
 };
 
 class VideoGLRendererPixelHiLoTest : public VideoGLRendererPixelTest,
@@ -2326,10 +2326,10 @@
 
   // Return the mapped resource id.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap({mask_resource_id},
-                                         this->resource_provider_.get(),
-                                         this->child_resource_provider_.get(),
-                                         this->child_context_provider_.get());
+      cc::SendResourceAndGetChildToParentMap(
+          {mask_resource_id}, this->resource_provider_.get(),
+          this->child_resource_provider_.get(),
+          this->child_context_provider_.get());
   ResourceId mapped_mask_resource_id = resource_map[mask_resource_id];
 
   // This RenderPassDrawQuad does not include the full |viewport_rect|
@@ -2422,10 +2422,10 @@
 
   // Return the mapped resource id.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap({mask_resource_id},
-                                         this->resource_provider_.get(),
-                                         this->child_resource_provider_.get(),
-                                         this->child_context_provider_.get());
+      cc::SendResourceAndGetChildToParentMap(
+          {mask_resource_id}, this->resource_provider_.get(),
+          this->child_resource_provider_.get(),
+          this->child_context_provider_.get());
   ResourceId mapped_mask_resource_id = resource_map[mask_resource_id];
 
   // This RenderPassDrawQuad does not include the full |viewport_rect|
@@ -2902,10 +2902,10 @@
 
   // Return the mapped resource id.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap({resource},
-                                         this->resource_provider_.get(),
-                                         this->child_resource_provider_.get(),
-                                         this->child_context_provider_.get());
+      cc::SendResourceAndGetChildToParentMap(
+          {resource}, this->resource_provider_.get(),
+          this->child_resource_provider_.get(),
+          this->child_context_provider_.get());
   ResourceId mapped_resource = resource_map[resource];
 
   int id = 1;
@@ -3335,10 +3335,10 @@
   }
   // Return the mapped resource id.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap({resource},
-                                         this->resource_provider_.get(),
-                                         this->child_resource_provider_.get(),
-                                         this->child_context_provider_.get());
+      cc::SendResourceAndGetChildToParentMap(
+          {resource}, this->resource_provider_.get(),
+          this->child_resource_provider_.get(),
+          this->child_context_provider_.get());
   ResourceId mapped_resource = resource_map[resource];
 
   int id = 1;
@@ -3386,10 +3386,10 @@
 
   // Return the mapped resource id.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap({resource},
-                                         this->resource_provider_.get(),
-                                         this->child_resource_provider_.get(),
-                                         this->child_context_provider_.get());
+      cc::SendResourceAndGetChildToParentMap(
+          {resource}, this->resource_provider_.get(),
+          this->child_resource_provider_.get(),
+          this->child_context_provider_.get());
   ResourceId mapped_resource = resource_map[resource];
 
   int id = 1;
@@ -3439,10 +3439,10 @@
 
   // Return the mapped resource id.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap({resource},
-                                         this->resource_provider_.get(),
-                                         this->child_resource_provider_.get(),
-                                         this->child_context_provider_.get());
+      cc::SendResourceAndGetChildToParentMap(
+          {resource}, this->resource_provider_.get(),
+          this->child_resource_provider_.get(),
+          this->child_context_provider_.get());
   ResourceId mapped_resource = resource_map[resource];
 
   int id = 1;
@@ -3787,10 +3787,10 @@
 
   // Return the mapped resource id.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap({resource},
-                                         this->resource_provider_.get(),
-                                         this->child_resource_provider_.get(),
-                                         this->child_context_provider_.get());
+      cc::SendResourceAndGetChildToParentMap(
+          {resource}, this->resource_provider_.get(),
+          this->child_resource_provider_.get(),
+          this->child_context_provider_.get());
   ResourceId mapped_resource = resource_map[resource];
 
   // Arbitrary dividing lengths to divide up the resource into 16 quads.
@@ -3867,10 +3867,10 @@
   }
   // Return the mapped resource id.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap({resource},
-                                         this->resource_provider_.get(),
-                                         this->child_resource_provider_.get(),
-                                         this->child_context_provider_.get());
+      cc::SendResourceAndGetChildToParentMap(
+          {resource}, this->resource_provider_.get(),
+          this->child_resource_provider_.get(),
+          this->child_context_provider_.get());
   ResourceId mapped_resource = resource_map[resource];
 
   int id = 1;
@@ -4057,10 +4057,10 @@
 
     // Return the mapped resource id.
     std::unordered_map<ResourceId, ResourceId> resource_map =
-        SendResourceAndGetChildToParentMap({resource},
-                                           this->resource_provider_.get(),
-                                           this->child_resource_provider_.get(),
-                                           this->child_context_provider_.get());
+        cc::SendResourceAndGetChildToParentMap(
+            {resource}, this->resource_provider_.get(),
+            this->child_resource_provider_.get(),
+            this->child_context_provider_.get());
     ResourceId mapped_resource = resource_map[resource];
 
     bool needs_blending = true;
diff --git a/components/viz/service/display/software_renderer_unittest.cc b/components/viz/service/display/software_renderer_unittest.cc
index 86210a1..a7916a8 100644
--- a/components/viz/service/display/software_renderer_unittest.cc
+++ b/components/viz/service/display/software_renderer_unittest.cc
@@ -56,14 +56,14 @@
     renderer_->SetVisible(true);
 
     child_resource_provider_ =
-        cc::FakeResourceProvider::CreateLayerTreeResourceProvider(nullptr);
+        cc::FakeResourceProvider::CreateClientResourceProvider(nullptr);
   }
 
   DisplayResourceProvider* resource_provider() const {
     return resource_provider_.get();
   }
 
-  cc::LayerTreeResourceProvider* child_resource_provider() const {
+  ClientResourceProvider* child_resource_provider() const {
     return child_resource_provider_.get();
   }
 
@@ -121,7 +121,7 @@
   std::unique_ptr<FakeOutputSurface> output_surface_;
   std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_;
   std::unique_ptr<DisplayResourceProvider> resource_provider_;
-  std::unique_ptr<cc::LayerTreeResourceProvider> child_resource_provider_;
+  std::unique_ptr<ClientResourceProvider> child_resource_provider_;
   std::unique_ptr<SoftwareRenderer> renderer_;
 };
 
@@ -194,9 +194,9 @@
 
   // Transfer resources to the parent, and get the resource map.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap({resource_yellow, resource_cyan},
-                                         resource_provider(),
-                                         child_resource_provider(), nullptr);
+      cc::SendResourceAndGetChildToParentMap(
+          {resource_yellow, resource_cyan}, resource_provider(),
+          child_resource_provider(), nullptr);
   ResourceId mapped_resource_yellow = resource_map[resource_yellow];
   ResourceId mapped_resource_cyan = resource_map[resource_cyan];
 
@@ -257,8 +257,9 @@
 
   // Transfer resources to the parent, and get the resource map.
   std::unordered_map<ResourceId, ResourceId> resource_map =
-      SendResourceAndGetChildToParentMap({resource_cyan}, resource_provider(),
-                                         child_resource_provider(), nullptr);
+      cc::SendResourceAndGetChildToParentMap(
+          {resource_cyan}, resource_provider(), child_resource_provider(),
+          nullptr);
   ResourceId mapped_resource_cyan = resource_map[resource_cyan];
 
   gfx::Rect root_rect(tile_size);
diff --git a/components/viz/test/DEPS b/components/viz/test/DEPS
index 627f1e0..a50c2f581 100644
--- a/components/viz/test/DEPS
+++ b/components/viz/test/DEPS
@@ -11,6 +11,7 @@
   "+gpu/config/gpu_feature_info.h",
   "+gpu/GLES2",
   "+gpu/skia_bindings/grcontext_for_gles2_interface.h",
+  "+media",
   "+mojo/public/cpp/bindings",
   "+mojo/public/cpp/system",
   "+services/viz/privileged/interfaces",
diff --git a/components/zucchini/disassembler_no_op.cc b/components/zucchini/disassembler_no_op.cc
index 3bc24d0..b17979c7 100644
--- a/components/zucchini/disassembler_no_op.cc
+++ b/components/zucchini/disassembler_no_op.cc
@@ -24,6 +24,7 @@
 }
 
 bool DisassemblerNoOp::Parse(ConstBufferView image) {
+  image_ = image;
   return true;
 }
 
diff --git a/components/zucchini/zucchini_apply.cc b/components/zucchini/zucchini_apply.cc
index 8969e3b..af4eab9 100644
--- a/components/zucchini/zucchini_apply.cc
+++ b/components/zucchini/zucchini_apply.cc
@@ -101,6 +101,11 @@
     LOG(ERROR) << "Failed to create Disassembler";
     return false;
   }
+  if (old_disasm->size() != old_image.size() ||
+      new_disasm->size() != new_image.size()) {
+    LOG(ERROR) << "Disassembler and element size mismatch";
+    return false;
+  }
 
   ReferenceDeltaSource ref_delta_source = patch.GetReferenceDeltaSource();
   std::map<PoolTag, std::vector<ReferenceGroup>> pool_groups;
diff --git a/content/browser/background_fetch/background_fetch_context.cc b/content/browser/background_fetch/background_fetch_context.cc
index 0ddea26..649d459 100644
--- a/content/browser/background_fetch/background_fetch_context.cc
+++ b/content/browser/background_fetch/background_fetch_context.cc
@@ -22,9 +22,13 @@
 
 BackgroundFetchContext::BackgroundFetchContext(
     BrowserContext* browser_context,
-    const scoped_refptr<ServiceWorkerContextWrapper>& service_worker_context)
+    const scoped_refptr<ServiceWorkerContextWrapper>& service_worker_context,
+    const scoped_refptr<content::CacheStorageContextImpl>&
+        cache_storage_context)
     : browser_context_(browser_context),
-      data_manager_(browser_context, service_worker_context),
+      data_manager_(browser_context,
+                    service_worker_context,
+                    cache_storage_context),
       event_dispatcher_(service_worker_context),
       registration_notifier_(
           std::make_unique<BackgroundFetchRegistrationNotifier>()),
@@ -218,7 +222,10 @@
 
   scheduler_->AddJobController(controller.get());
 
-  job_controllers_.insert({unique_id, std::move(controller)});
+  // Workaround for GLIBC C++ < 7.3 that fails to insert with braces
+  // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82522
+  auto pair = std::make_pair(unique_id, std::move(controller));
+  job_controllers_.insert(std::move(pair));
   std::move(done_closure).Run();
 }
 
diff --git a/content/browser/background_fetch/background_fetch_context.h b/content/browser/background_fetch/background_fetch_context.h
index fe0892d..bb7f84ac 100644
--- a/content/browser/background_fetch/background_fetch_context.h
+++ b/content/browser/background_fetch/background_fetch_context.h
@@ -47,7 +47,9 @@
   // that it can respond to service worker events such as unregister.
   BackgroundFetchContext(
       BrowserContext* browser_context,
-      const scoped_refptr<ServiceWorkerContextWrapper>& service_worker_context);
+      const scoped_refptr<ServiceWorkerContextWrapper>& service_worker_context,
+      const scoped_refptr<content::CacheStorageContextImpl>&
+          cache_storage_context);
 
   // Gets the active Background Fetch registration identified by |developer_id|
   // for the given |service_worker_id| and |origin|. The |callback| will be
diff --git a/content/browser/background_fetch/background_fetch_data_manager.cc b/content/browser/background_fetch/background_fetch_data_manager.cc
index a8cb4f6d..c72e39253 100644
--- a/content/browser/background_fetch/background_fetch_data_manager.cc
+++ b/content/browser/background_fetch/background_fetch_data_manager.cc
@@ -26,7 +26,10 @@
 #include "content/browser/background_fetch/storage/start_next_pending_request_task.h"
 #include "content/browser/background_fetch/storage/update_registration_ui_task.h"
 #include "content/browser/blob_storage/chrome_blob_storage_context.h"
+#include "content/browser/cache_storage/cache_storage_manager.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
+#include "content/browser/storage_partition_impl.h"
+#include "content/public/browser/browser_context.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/common/content_features.h"
 #include "content/public/common/content_switches.h"
@@ -171,8 +174,10 @@
 
 BackgroundFetchDataManager::BackgroundFetchDataManager(
     BrowserContext* browser_context,
-    scoped_refptr<ServiceWorkerContextWrapper> service_worker_context)
+    scoped_refptr<ServiceWorkerContextWrapper> service_worker_context,
+    scoped_refptr<CacheStorageContextImpl> cache_storage_context)
     : service_worker_context_(std::move(service_worker_context)),
+      cache_storage_context_(std::move(cache_storage_context)),
       weak_ptr_factory_(this) {
   // Constructed on the UI thread, then used on the IO thread.
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -405,7 +410,8 @@
   if (base::CommandLine::ForCurrentProcess()->HasSwitch(
           switches::kEnableBackgroundFetchPersistence)) {
     AddDatabaseTask(std::make_unique<background_fetch::MarkRequestCompleteTask>(
-        this, registration_id, request, std::move(callback)));
+        this, registration_id, request, GetCacheStorageManager(),
+        std::move(callback)));
     return;
   }
 
@@ -426,7 +432,7 @@
   if (base::CommandLine::ForCurrentProcess()->HasSwitch(
           switches::kEnableBackgroundFetchPersistence)) {
     AddDatabaseTask(std::make_unique<background_fetch::GetSettledFetchesTask>(
-        this, registration_id, std::move(callback)));
+        this, registration_id, GetCacheStorageManager(), std::move(callback)));
     return;
   }
 
@@ -619,6 +625,15 @@
                               ->second->GetNumCompletedRequests());
 }
 
+CacheStorageManager* BackgroundFetchDataManager::GetCacheStorageManager() {
+  DCHECK_CURRENTLY_ON(BrowserThread::IO);
+
+  CacheStorageManager* manager = cache_storage_context_->cache_manager();
+  DCHECK(manager);
+
+  return manager;
+}
+
 bool BackgroundFetchDataManager::IsActive(
     const BackgroundFetchRegistrationId& registration_id) {
   auto developer_id_tuple =
diff --git a/content/browser/background_fetch/background_fetch_data_manager.h b/content/browser/background_fetch/background_fetch_data_manager.h
index 6b70bbf..86e3de6 100644
--- a/content/browser/background_fetch/background_fetch_data_manager.h
+++ b/content/browser/background_fetch/background_fetch_data_manager.h
@@ -20,6 +20,7 @@
 #include "content/browser/background_fetch/background_fetch_registration_id.h"
 #include "content/browser/background_fetch/background_fetch_scheduler.h"
 #include "content/browser/background_fetch/storage/database_task.h"
+#include "content/browser/cache_storage/cache_storage_context_impl.h"
 #include "content/common/content_export.h"
 #include "third_party/blink/public/platform/modules/background_fetch/background_fetch.mojom.h"
 #include "url/origin.h"
@@ -33,6 +34,7 @@
 class BackgroundFetchRequestInfo;
 struct BackgroundFetchSettledFetch;
 class BrowserContext;
+class CacheStorageManager;
 class ChromeBlobStorageContext;
 class ServiceWorkerContextWrapper;
 
@@ -67,7 +69,8 @@
 
   BackgroundFetchDataManager(
       BrowserContext* browser_context,
-      scoped_refptr<ServiceWorkerContextWrapper> service_worker_context);
+      scoped_refptr<ServiceWorkerContextWrapper> service_worker_context,
+      scoped_refptr<CacheStorageContextImpl> cache_storage_context);
 
   ~BackgroundFetchDataManager() override;
 
@@ -158,6 +161,7 @@
  private:
   FRIEND_TEST_ALL_PREFIXES(BackgroundFetchDataManagerTest, Cleanup);
   friend class BackgroundFetchDataManagerTest;
+  friend class BackgroundFetchTestDataManager;
   friend class background_fetch::DatabaseTask;
 
   class RegistrationData;
@@ -172,6 +176,9 @@
 
   void OnDatabaseTaskFinished(background_fetch::DatabaseTask* task);
 
+  // Virtual for testing.
+  virtual CacheStorageManager* GetCacheStorageManager();
+
   // Returns true if not aborted/completed/failed.
   bool IsActive(const BackgroundFetchRegistrationId& registration_id);
 
@@ -179,6 +186,8 @@
 
   scoped_refptr<ServiceWorkerContextWrapper> service_worker_context_;
 
+  scoped_refptr<CacheStorageContextImpl> cache_storage_context_;
+
   // The blob storage request with which response information will be stored.
   scoped_refptr<ChromeBlobStorageContext> blob_storage_context_;
 
diff --git a/content/browser/background_fetch/background_fetch_data_manager_unittest.cc b/content/browser/background_fetch/background_fetch_data_manager_unittest.cc
index 8a1cd9a9..0b3808e 100644
--- a/content/browser/background_fetch/background_fetch_data_manager_unittest.cc
+++ b/content/browser/background_fetch/background_fetch_data_manager_unittest.cc
@@ -19,11 +19,18 @@
 #include "content/browser/background_fetch/background_fetch_test_base.h"
 #include "content/browser/background_fetch/storage/database_helpers.h"
 #include "content/browser/background_fetch/storage/get_num_requests_task.h"
+#include "content/browser/blob_storage/chrome_blob_storage_context.h"
+#include "content/browser/cache_storage/cache_storage_manager.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
 #include "content/public/browser/background_fetch_response.h"
 #include "content/public/browser/browser_thread.h"
+#include "content/public/browser/storage_partition.h"
 #include "content/public/common/content_switches.h"
 #include "storage/browser/blob/blob_data_handle.h"
+#include "storage/browser/blob/blob_storage_context.h"
+#include "storage/browser/test/mock_quota_manager.h"
+#include "storage/browser/test/mock_quota_manager_proxy.h"
+#include "storage/browser/test/mock_special_storage_policy.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
 namespace content {
@@ -101,8 +108,74 @@
          s1.completed_requests == s2.completed_requests;
 }
 
+class MockBGFQuotaManagerProxy : public MockQuotaManagerProxy {
+ public:
+  MockBGFQuotaManagerProxy(MockQuotaManager* quota_manager)
+      : MockQuotaManagerProxy(quota_manager,
+                              base::ThreadTaskRunnerHandle::Get().get()) {}
+
+  // Ignore quota client, it is irrelevant for these tests.
+  void RegisterClient(QuotaClient* client) override {
+    delete client;  // Directly delete, to avoid memory leak.
+  }
+
+ protected:
+  ~MockBGFQuotaManagerProxy() override {}
+};
+
 }  // namespace
 
+class BackgroundFetchTestDataManager : public BackgroundFetchDataManager {
+ public:
+  BackgroundFetchTestDataManager(
+      BrowserContext* browser_context,
+      scoped_refptr<ServiceWorkerContextWrapper> service_worker_context)
+      : BackgroundFetchDataManager(browser_context,
+                                   service_worker_context,
+                                   nullptr /* cache_storage_context */),
+        browser_context_(browser_context) {}
+
+ private:
+  void CreateCacheStorageManager() {
+    StoragePartition* storage_partition =
+        BrowserContext::GetDefaultStoragePartition(browser_context_);
+    DCHECK(storage_partition);
+
+    ChromeBlobStorageContext* blob_storage_context(
+        ChromeBlobStorageContext::GetFor(browser_context_));
+    // Wait for ChromeBlobStorageContext to finish initializing.
+    base::RunLoop().RunUntilIdle();
+
+    auto mock_quota_manager = base::MakeRefCounted<MockQuotaManager>(
+        storage_partition->GetPath().empty(), storage_partition->GetPath(),
+        base::ThreadTaskRunnerHandle::Get().get(),
+        base::MakeRefCounted<MockSpecialStoragePolicy>());
+    mock_quota_manager->SetQuota(GURL("https://example.com/"),
+                                 StorageType::kTemporary, 1024 * 1024 * 100);
+
+    cache_manager_ = CacheStorageManager::Create(
+        storage_partition->GetPath(), base::ThreadTaskRunnerHandle::Get(),
+        base::MakeRefCounted<MockBGFQuotaManagerProxy>(
+            mock_quota_manager.get()));
+    DCHECK(cache_manager_);
+
+    cache_manager_->SetBlobParametersForCache(
+        storage_partition->GetURLRequestContext(),
+        blob_storage_context->context()->AsWeakPtr());
+  }
+
+  CacheStorageManager* GetCacheStorageManager() override {
+    if (!cache_manager_)
+      CreateCacheStorageManager();
+    return cache_manager_.get();
+  }
+
+  std::unique_ptr<CacheStorageManager> cache_manager_;
+  BrowserContext* browser_context_;
+
+  DISALLOW_COPY_AND_ASSIGN(BackgroundFetchTestDataManager);
+};
+
 class BackgroundFetchDataManagerTest
     : public BackgroundFetchTestBase,
       public ::testing::WithParamInterface<BackgroundFetchRegistrationStorage> {
@@ -130,7 +203,7 @@
     }
 
     background_fetch_data_manager_ =
-        std::make_unique<BackgroundFetchDataManager>(
+        std::make_unique<BackgroundFetchTestDataManager>(
             browser_context(),
             embedded_worker_test_helper()->context_wrapper());
   }
@@ -473,7 +546,8 @@
   }
 
   BackgroundFetchRegistrationStorage registration_storage_;
-  std::unique_ptr<BackgroundFetchDataManager> background_fetch_data_manager_;
+  std::unique_ptr<BackgroundFetchTestDataManager>
+      background_fetch_data_manager_;
 };
 
 INSTANTIATE_TEST_CASE_P(
diff --git a/content/browser/background_fetch/background_fetch_service_unittest.cc b/content/browser/background_fetch/background_fetch_service_unittest.cc
index 839e8ee..45c606d 100644
--- a/content/browser/background_fetch/background_fetch_service_unittest.cc
+++ b/content/browser/background_fetch/background_fetch_service_unittest.cc
@@ -205,9 +205,13 @@
   void SetUp() override {
     BackgroundFetchTestBase::SetUp();
 
+    StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>(
+        BrowserContext::GetDefaultStoragePartition(browser_context()));
+
     context_ = new BackgroundFetchContext(
         browser_context(),
-        base::WrapRefCounted(embedded_worker_test_helper()->context_wrapper()));
+        base::WrapRefCounted(embedded_worker_test_helper()->context_wrapper()),
+        base::WrapRefCounted(partition->GetCacheStorageContext()));
 
     service_ = std::make_unique<BackgroundFetchServiceImpl>(context_, origin());
   }
diff --git a/content/browser/background_fetch/storage/get_settled_fetches_task.cc b/content/browser/background_fetch/storage/get_settled_fetches_task.cc
index 9ea3c39..4bacc35 100644
--- a/content/browser/background_fetch/storage/get_settled_fetches_task.cc
+++ b/content/browser/background_fetch/storage/get_settled_fetches_task.cc
@@ -16,11 +16,15 @@
 GetSettledFetchesTask::GetSettledFetchesTask(
     BackgroundFetchDataManager* data_manager,
     BackgroundFetchRegistrationId registration_id,
+    CacheStorageManager* cache_manager,
     SettledFetchesCallback callback)
     : DatabaseTask(data_manager),
       registration_id_(registration_id),
+      cache_manager_(cache_manager),
       settled_fetches_callback_(std::move(callback)),
-      weak_factory_(this) {}
+      weak_factory_(this) {
+  DCHECK(cache_manager_);
+}
 
 GetSettledFetchesTask::~GetSettledFetchesTask() = default;
 
diff --git a/content/browser/background_fetch/storage/get_settled_fetches_task.h b/content/browser/background_fetch/storage/get_settled_fetches_task.h
index 7fba5317..98cf7c9 100644
--- a/content/browser/background_fetch/storage/get_settled_fetches_task.h
+++ b/content/browser/background_fetch/storage/get_settled_fetches_task.h
@@ -12,6 +12,8 @@
 
 namespace content {
 
+class CacheStorageManager;
+
 namespace background_fetch {
 
 class GetSettledFetchesTask : public DatabaseTask {
@@ -24,6 +26,7 @@
 
   GetSettledFetchesTask(BackgroundFetchDataManager* data_manager,
                         BackgroundFetchRegistrationId registration_id,
+                        CacheStorageManager* cache_manager,
                         SettledFetchesCallback callback);
 
   ~GetSettledFetchesTask() override;
@@ -44,6 +47,7 @@
   void FinishTaskWithErrorCode(blink::mojom::BackgroundFetchError error);
 
   BackgroundFetchRegistrationId registration_id_;
+  CacheStorageManager* cache_manager_;
   SettledFetchesCallback settled_fetches_callback_;
 
   std::vector<BackgroundFetchSettledFetch> settled_fetches_;
diff --git a/content/browser/background_fetch/storage/mark_request_complete_task.cc b/content/browser/background_fetch/storage/mark_request_complete_task.cc
index 63884ce..902fa07 100644
--- a/content/browser/background_fetch/storage/mark_request_complete_task.cc
+++ b/content/browser/background_fetch/storage/mark_request_complete_task.cc
@@ -17,12 +17,16 @@
     BackgroundFetchDataManager* data_manager,
     BackgroundFetchRegistrationId registration_id,
     scoped_refptr<BackgroundFetchRequestInfo> request_info,
+    CacheStorageManager* cache_manager,
     MarkedCompleteCallback callback)
     : DatabaseTask(data_manager),
       registration_id_(registration_id),
       request_info_(std::move(request_info)),
+      cache_manager_(cache_manager),
       callback_(std::move(callback)),
-      weak_factory_(this) {}
+      weak_factory_(this) {
+  DCHECK(cache_manager_);
+}
 
 MarkRequestCompleteTask::~MarkRequestCompleteTask() = default;
 
diff --git a/content/browser/background_fetch/storage/mark_request_complete_task.h b/content/browser/background_fetch/storage/mark_request_complete_task.h
index b36c836..80c0de57 100644
--- a/content/browser/background_fetch/storage/mark_request_complete_task.h
+++ b/content/browser/background_fetch/storage/mark_request_complete_task.h
@@ -14,6 +14,8 @@
 
 namespace content {
 
+class CacheStorageManager;
+
 namespace background_fetch {
 
 // Moves the request from an active state to a complete state. Stores the
@@ -26,6 +28,7 @@
       BackgroundFetchDataManager* data_manager,
       BackgroundFetchRegistrationId registration_id,
       scoped_refptr<BackgroundFetchRequestInfo> request_info,
+      CacheStorageManager* cache_manager,
       MarkedCompleteCallback callback);
 
   ~MarkRequestCompleteTask() override;
@@ -44,6 +47,7 @@
 
   BackgroundFetchRegistrationId registration_id_;
   scoped_refptr<BackgroundFetchRequestInfo> request_info_;
+  CacheStorageManager* cache_manager_;
   MarkedCompleteCallback callback_;
 
   proto::BackgroundFetchCompletedRequest completed_request_;
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc
index a6cec1d..fdcba6cb 100644
--- a/content/browser/browser_main_loop.cc
+++ b/content/browser/browser_main_loop.cc
@@ -47,6 +47,7 @@
 #include "base/trace_event/memory_dump_manager.h"
 #include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
+#include "cc/base/histograms.h"
 #include "components/discardable_memory/service/discardable_shared_memory_manager.h"
 #include "components/tracing/common/trace_startup_config.h"
 #include "components/tracing/common/trace_to_console.h"
@@ -1208,6 +1209,18 @@
   base::PlatformThread::SetCurrentThreadPriority(base::ThreadPriority::DISPLAY);
 #endif
 
+  // cc assumes a single client name for metrics in a process, which is
+  // is inconsistent with single process mode where both the renderer and
+  // browser compositor run in the same process. In this case, avoid
+  // initializing with a browser metric name to ensure we record metrics for the
+  // renderer compositor.
+  // Note that since single process mode is only used by webview in practice,
+  // which doesn't have a browser compositor, this is not required anyway.
+  if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kSingleProcess)) {
+    cc::SetClientNameForMetrics("Browser");
+  }
+
   // Initialize the GPU shader cache. This needs to be initialized before
   // BrowserGpuChannelHostFactory below, since that depends on an initialized
   // ShaderCacheFactory.
diff --git a/content/browser/browser_plugin/browser_plugin_embedder.cc b/content/browser/browser_plugin/browser_plugin_embedder.cc
index c3e3bbd..2b92cf7 100644
--- a/content/browser/browser_plugin/browser_plugin_embedder.cc
+++ b/content/browser/browser_plugin/browser_plugin_embedder.cc
@@ -211,6 +211,21 @@
 }
 
 // static
+bool BrowserPluginEmbedder::GuestCurrentlyAudibleCallback(WebContents* guest) {
+  return guest->IsCurrentlyAudible();
+}
+
+bool BrowserPluginEmbedder::AreAnyGuestsCurrentlyAudible() {
+  if (!GetBrowserPluginGuestManager())
+    return false;
+
+  return GetBrowserPluginGuestManager()->ForEachGuest(
+      web_contents(),
+      base::BindRepeating(
+          &BrowserPluginEmbedder::GuestCurrentlyAudibleCallback));
+}
+
+// static
 bool BrowserPluginEmbedder::UnlockMouseIfNecessaryCallback(bool* mouse_unlocked,
                                                            WebContents* guest) {
   *mouse_unlocked |= static_cast<WebContentsImpl*>(guest)
diff --git a/content/browser/browser_plugin/browser_plugin_embedder.h b/content/browser/browser_plugin/browser_plugin_embedder.h
index e1007f04..11740f9ca 100644
--- a/content/browser/browser_plugin/browser_plugin_embedder.h
+++ b/content/browser/browser_plugin/browser_plugin_embedder.h
@@ -80,6 +80,10 @@
   BrowserPluginGuest* GetFullPageGuest();
 
   // Polls all guests for this web contents and returns true if any of them
+  // are currently audible.
+  bool AreAnyGuestsCurrentlyAudible();
+
+  // Polls all guests for this web contents and returns true if any of them
   // were audible recently.
   bool WereAnyGuestsRecentlyAudible();
 
@@ -98,6 +102,7 @@
   static bool UnlockMouseIfNecessaryCallback(bool* mouse_unlocked,
                                              WebContents* guest);
 
+  static bool GuestCurrentlyAudibleCallback(WebContents* guest);
   static bool GuestRecentlyAudibleCallback(WebContents* guest);
 
   // Message handlers.
diff --git a/content/browser/cache_storage/cache_storage_cache.cc b/content/browser/cache_storage/cache_storage_cache.cc
index d5459e4..3b898537 100644
--- a/content/browser/cache_storage/cache_storage_cache.cc
+++ b/content/browser/cache_storage/cache_storage_cache.cc
@@ -74,24 +74,6 @@
 //   2: Uniform random 14,431K.
 const int32_t kCachePaddingAlgorithmVersion = 2;
 
-// This class ensures that the cache and the entry have a lifetime as long as
-// the blob that is created to contain them.
-class CacheStorageCacheDataHandle
-    : public storage::BlobDataBuilder::DataHandle {
- public:
-  CacheStorageCacheDataHandle(CacheStorageCacheHandle cache_handle,
-                              disk_cache::ScopedEntryPtr entry)
-      : cache_handle_(std::move(cache_handle)), entry_(std::move(entry)) {}
-
- private:
-  ~CacheStorageCacheDataHandle() override {}
-
-  CacheStorageCacheHandle cache_handle_;
-  disk_cache::ScopedEntryPtr entry_;
-
-  DISALLOW_COPY_AND_ASSIGN(CacheStorageCacheDataHandle);
-};
-
 using MetadataCallback =
     base::OnceCallback<void(std::unique_ptr<proto::CacheMetadata>)>;
 
@@ -343,6 +325,35 @@
 
 }  // namespace
 
+// This class ensures that the cache and the entry have a lifetime as long as
+// the blob that is created to contain them.
+class CacheStorageCache::BlobDataHandle
+    : public storage::BlobDataBuilder::DataHandle {
+ public:
+  BlobDataHandle(CacheStorageCacheHandle cache_handle,
+                 disk_cache::ScopedEntryPtr entry)
+      : cache_handle_(std::move(cache_handle)), entry_(std::move(entry)) {}
+
+  bool IsValid() override { return bool{entry_}; }
+
+  void Invalidate() {
+    cache_handle_ = base::nullopt;
+    entry_ = nullptr;
+  }
+
+ private:
+  ~BlobDataHandle() override {
+    if (cache_handle_ && cache_handle_->value()) {
+      cache_handle_->value()->blob_data_handles_.erase(this);
+    }
+  }
+
+  base::Optional<CacheStorageCacheHandle> cache_handle_;
+  disk_cache::ScopedEntryPtr entry_;
+
+  DISALLOW_COPY_AND_ASSIGN(BlobDataHandle);
+};
+
 // The state needed to pass between CacheStorageCache::Put callbacks.
 struct CacheStorageCache::PutContext {
   PutContext(std::unique_ptr<ServiceWorkerFetchRequest> request,
@@ -1676,6 +1687,8 @@
 
 void CacheStorageCache::GetSizeThenCloseDidGetSize(SizeCallback callback,
                                                    int64_t cache_size) {
+  for (auto* handle : blob_data_handles_)
+    handle->Invalidate();
   CloseImpl(base::BindOnce(std::move(callback), cache_size));
 }
 
@@ -1832,9 +1845,11 @@
       std::make_unique<storage::BlobDataBuilder>(response->blob_uuid);
 
   disk_cache::Entry* temp_entry = entry.get();
+  auto data_handle = base::MakeRefCounted<BlobDataHandle>(CreateCacheHandle(),
+                                                          std::move(entry));
+  blob_data_handles_.insert(data_handle.get());
   blob_data->AppendDiskCacheEntryWithSideData(
-      new CacheStorageCacheDataHandle(CreateCacheHandle(), std::move(entry)),
-      temp_entry, INDEX_RESPONSE_BODY, INDEX_SIDE_DATA);
+      std::move(data_handle), temp_entry, INDEX_RESPONSE_BODY, INDEX_SIDE_DATA);
   auto blob_handle =
       blob_storage_context_->AddFinishedBlob(std::move(blob_data));
 
diff --git a/content/browser/cache_storage/cache_storage_cache.h b/content/browser/cache_storage/cache_storage_cache.h
index f343ccb..f065161 100644
--- a/content/browser/cache_storage/cache_storage_cache.h
+++ b/content/browser/cache_storage/cache_storage_cache.h
@@ -476,6 +476,13 @@
   // Owns the elements of the list
   BlobToDiskCacheIDMap active_blob_to_disk_cache_writers_;
 
+  // This class ensures that the cache and the entry have a lifetime as long as
+  // the blob that is created to contain them. We keep track of these instances
+  // to allow us to invalidate them if the cache has to be deleted while there
+  // are still references to data in it.
+  class BlobDataHandle;
+  std::set<BlobDataHandle*> blob_data_handles_;
+
   // Whether or not to store data in disk or memory.
   bool memory_only_;
 
diff --git a/content/browser/cache_storage/cache_storage_cache_unittest.cc b/content/browser/cache_storage/cache_storage_cache_unittest.cc
index 92d66a3..aa3da17 100644
--- a/content/browser/cache_storage/cache_storage_cache_unittest.cc
+++ b/content/browser/cache_storage/cache_storage_cache_unittest.cc
@@ -746,6 +746,7 @@
 
 class CacheStorageCacheTestP : public CacheStorageCacheTest,
                                public testing::WithParamInterface<bool> {
+ public:
   bool MemoryOnly() override { return !GetParam(); }
 };
 
@@ -1824,10 +1825,19 @@
 }
 
 TEST_P(CacheStorageCacheTestP, GetSizeThenClose) {
+  // Create the backend and put something in it.
   EXPECT_TRUE(Put(body_request_, body_response_));
+  // Get a reference to the response in the cache.
+  EXPECT_TRUE(Match(body_request_));
+  blink::mojom::BlobPtr blob = callback_response_->blob->TakeBlobPtr();
+  callback_response_ = nullptr;
+
   int64_t cache_size = Size();
   EXPECT_EQ(cache_size, GetSizeThenClose());
   VerifyAllOpsFail();
+
+  // Reading blob should fail.
+  EXPECT_TRUE(ResponseBodiesEqual("", blob.get()));
 }
 
 TEST_P(CacheStorageCacheTestP, OpsFailOnClosedBackend) {
@@ -1837,6 +1847,30 @@
   VerifyAllOpsFail();
 }
 
+TEST_P(CacheStorageCacheTestP, BlobReferenceDelaysClose) {
+  // Create the backend and put something in it.
+  EXPECT_TRUE(Put(body_request_, body_response_));
+  // Get a reference to the response in the cache.
+  EXPECT_TRUE(Match(body_request_));
+  blink::mojom::BlobPtr blob = callback_response_->blob->TakeBlobPtr();
+  callback_response_ = nullptr;
+
+  base::RunLoop loop;
+  cache_->Close(base::BindOnce(&CacheStorageCacheTest::CloseCallback,
+                               base::Unretained(this),
+                               base::Unretained(&loop)));
+  browser_thread_bundle_.RunUntilIdle();
+  // If MemoryOnly closing does succeed right away.
+  EXPECT_EQ(MemoryOnly(), callback_closed_);
+
+  // Reading blob should succeed.
+  EXPECT_TRUE(ResponseBodiesEqual(expected_blob_data_, blob.get()));
+  blob.reset();
+
+  loop.Run();
+  EXPECT_TRUE(callback_closed_);
+}
+
 TEST_P(CacheStorageCacheTestP, VerifySerialScheduling) {
   // Start two operations, the first one is delayed but the second isn't. The
   // second should wait for the first.
diff --git a/content/browser/compositor/gpu_process_transport_factory.cc b/content/browser/compositor/gpu_process_transport_factory.cc
index e679dbb0..e393f5d 100644
--- a/content/browser/compositor/gpu_process_transport_factory.cc
+++ b/content/browser/compositor/gpu_process_transport_factory.cc
@@ -187,7 +187,6 @@
       compositing_mode_reporter_(compositing_mode_reporter),
       callback_factory_(this) {
   DCHECK(gpu_channel_factory_);
-  cc::SetClientNameForMetrics("Browser");
 
   base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
   if (command_line->HasSwitch(switches::kDisableFrameRateLimit))
diff --git a/content/browser/frame_host/navigation_controller_impl_browsertest.cc b/content/browser/frame_host/navigation_controller_impl_browsertest.cc
index 661aa20..00019cd 100644
--- a/content/browser/frame_host/navigation_controller_impl_browsertest.cc
+++ b/content/browser/frame_host/navigation_controller_impl_browsertest.cc
@@ -5019,9 +5019,17 @@
   DoReplaceStateWhilePending(shell(), url, url, "x");
 }
 
+// Flaky on Linux Tsan: https://crbug.com/847326
+#if defined(THREAD_SANITIZER)
+#define MAYBE_NavigationTypeClassification_On1SameDocumentTo1While1Pending \
+  DISABLED_NavigationTypeClassification_On1SameDocumentTo1While1Pending
+#else
+#define MAYBE_NavigationTypeClassification_On1SameDocumentTo1While1Pending \
+  NavigationTypeClassification_On1SameDocumentTo1While1Pending
+#endif
 IN_PROC_BROWSER_TEST_F(
     NavigationControllerBrowserTest,
-    NavigationTypeClassification_On1SameDocumentTo1While1Pending) {
+    MAYBE_NavigationTypeClassification_On1SameDocumentTo1While1Pending) {
   GURL url(embedded_test_server()->GetURL(
       "/navigation_controller/simple_page_1.html"));
   DoReplaceStateWhilePending(shell(), url, url, "simple_page_1.html");
@@ -7653,6 +7661,43 @@
   }
 }
 
+// Regression test for https://crbug.com/845923.
+IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
+                       GoBackFromCrossSiteSubFrame) {
+  // Navigate to a page with a cross-site frame.
+  GURL main_url(embedded_test_server()->GetURL(
+      "a.com", "/cross_site_iframe_factory.html?a(b)"));
+  EXPECT_TRUE(NavigateToURL(shell(), main_url));
+  FrameTreeNode* root = static_cast<WebContentsImpl*>(shell()->web_contents())
+                            ->GetFrameTree()
+                            ->root();
+  GURL initial_subframe_url =
+      root->child_at(0)->current_frame_host()->GetLastCommittedURL();
+  NavigationControllerImpl& controller = static_cast<NavigationControllerImpl&>(
+      shell()->web_contents()->GetController());
+  EXPECT_EQ(1, controller.GetEntryCount());
+  EXPECT_EQ(0, controller.GetCurrentEntryIndex());
+
+  // Navigate the subframe to another cross-site location
+  // (this prepares for executing history.back() in a later step).
+  GURL final_subframe_url =
+      embedded_test_server()->GetURL("b.com", "/title1.html");
+  NavigateFrameToURL(root->child_at(0), final_subframe_url);
+  EXPECT_EQ(final_subframe_url,
+            root->child_at(0)->current_frame_host()->GetLastCommittedURL());
+  EXPECT_EQ(2, controller.GetEntryCount());
+  EXPECT_EQ(1, controller.GetCurrentEntryIndex());
+
+  // Execute |history.back()| in the subframe.
+  TestNavigationObserver nav_observer(shell()->web_contents(), 1);
+  EXPECT_TRUE(ExecuteScript(root->child_at(0), "history.back()"));
+  nav_observer.Wait();
+  EXPECT_EQ(initial_subframe_url,
+            root->child_at(0)->current_frame_host()->GetLastCommittedURL());
+  EXPECT_EQ(2, controller.GetEntryCount());
+  EXPECT_EQ(0, controller.GetCurrentEntryIndex());
+}
+
 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
                        HashNavigationVsBeforeUnloadEvent) {
   GURL main_url(embedded_test_server()->GetURL("/title1.html"));
diff --git a/content/browser/media/audio_stream_monitor.cc b/content/browser/media/audio_stream_monitor.cc
index 67c0bae..324f310 100644
--- a/content/browser/media/audio_stream_monitor.cc
+++ b/content/browser/media/audio_stream_monitor.cc
@@ -192,7 +192,7 @@
 
   if (is_audible_ != was_audible) {
     MaybeToggle();
-    web_contents_->OnAudioStateChanged(is_audible_);
+    web_contents_->OnAudioStateChanged();
   }
 }
 
diff --git a/content/browser/renderer_host/compositor_impl_android.cc b/content/browser/renderer_host/compositor_impl_android.cc
index 7e9144e..d2f18a56 100644
--- a/content/browser/renderer_host/compositor_impl_android.cc
+++ b/content/browser/renderer_host/compositor_impl_android.cc
@@ -751,6 +751,8 @@
       command_line->HasSwitch(cc::switches::kEnableGpuBenchmarking));
   settings.initial_debug_state.show_fps_counter =
       command_line->HasSwitch(cc::switches::kUIShowFPSCounter);
+  if (command_line->HasSwitch(cc::switches::kUIShowCompositedLayerBorders))
+    settings.initial_debug_state.show_debug_borders.set();
   settings.single_thread_proxy_scheduler = true;
   settings.use_painted_device_scale_factor = true;
 
diff --git a/content/browser/renderer_host/render_process_host_browsertest.cc b/content/browser/renderer_host/render_process_host_browsertest.cc
index cdfcab6d..7685b3c 100644
--- a/content/browser/renderer_host/render_process_host_browsertest.cc
+++ b/content/browser/renderer_host/render_process_host_browsertest.cc
@@ -31,6 +31,7 @@
 #include "content/shell/browser/shell_browser_main_parts.h"
 #include "content/shell/browser/shell_content_browser_client.h"
 #include "content/test/test_content_browser_client.h"
+#include "ipc/ipc_mojo_bootstrap.h"
 #include "media/base/bind_to_current_loop.h"
 #include "media/base/media_switches.h"
 #include "media/base/test_data_util.h"
@@ -1051,5 +1052,62 @@
   EXPECT_TRUE(process->FastShutdownIfPossible());
 }
 
+// Regression test for one part of https://crbug.com/813045.
+IN_PROC_BROWSER_TEST_F(RenderProcessHostTest,
+                       NoUnboundedQueueingOfIpcs_CrashedProcess) {
+  // Navigate to a random page (this guarantees that a renderer had to be
+  // spawned to render the page).
+  ASSERT_TRUE(embedded_test_server()->Start());
+  GURL main_url(embedded_test_server()->GetURL("/title1.html"));
+  EXPECT_TRUE(NavigateToURL(shell(), main_url));
+
+  // Kill the renderer process.
+  RenderProcessHost* process =
+      shell()->web_contents()->GetMainFrame()->GetProcess();
+  RenderProcessHostWatcher crash_observer(
+      process, RenderProcessHostWatcher::WATCH_FOR_PROCESS_EXIT);
+  EXPECT_TRUE(process->Shutdown(0));
+  crash_observer.Wait();
+
+  // Repeatedly send an IPC to the killed renderer process.
+  //
+  // This approximates a scenario where (over a long period of time) Chromium
+  // tries send an IPC to all renderers about environment changes (for example,
+  // see calls to RendererInterface::OnNetworkQualityChanged mentioned in
+  // https://crbug.com/813045#c17).
+  constexpr size_t kNumberOfTestIterations =
+      IPC::MojoBootstrap::kMaxOutgoingMessagesSizeForTesting + 2;
+  for (size_t i = 0; i < kNumberOfTestIterations; i++) {
+    // Verify that the process is still dead.
+    EXPECT_FALSE(process->HasConnection());
+    EXPECT_FALSE(process->GetChannel());
+    EXPECT_FALSE(process->GetProcess().IsValid());
+    EXPECT_EQ(base::kNullProcessHandle, process->GetProcess().Handle());
+
+    // Attempt to send an IPC message to the dead process.
+    std::string user_agent = base::StringPrintf("to-be-discarded-%zu", i);
+    if (process->GetRendererInterface())
+      process->GetRendererInterface()->SetUserAgent(user_agent);
+  }
+
+  // The main test verification is that the loop above didn't hit the CHECK in
+  // ipc/ipc_mojo_bootstrap.cc:
+  //
+  //      CHECK_LE(outgoing_messages_.size(),
+  //               MojoBootstrap::kMaxOutgoingMessagesSizeForTesting);
+  //
+  // No messages should be accumulated/queued for a crashed renderer process.
+  // Instead, such messages should be discarded.
+  //
+  // If the messages weren't discarded, then the SetUserAgent should hit another
+  // DCHECK in RenderThreadImpl::SetUserAgent (DCHECK(user_agent_.IsNull()))
+  // after reloading the page.
+  ReloadBlockUntilNavigationsComplete(shell(), 1);
+  EXPECT_EQ(process, shell()->web_contents()->GetMainFrame()->GetProcess());
+  EXPECT_EQ(process->GetID(),
+            shell()->web_contents()->GetMainFrame()->GetProcess()->GetID());
+  EXPECT_TRUE(process->HasConnection());
+}
+
 }  // namespace
 }  // namespace content
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index 690342a..68c7581 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -3854,13 +3854,6 @@
     iter.Advance();
   }
 
-  // Initialize a new ChannelProxy in case this host is re-used for a new
-  // process. This ensures that new messages can be sent on the host ASAP (even
-  // before Init()) and they'll eventually reach the new process.
-  //
-  // Note that this may have already been called by one of the above observers
-  EnableSendQueue();
-
   // It's possible that one of the calls out to the observers might have caused
   // this object to be no longer needed.
   if (delayed_cleanup_needed_)
diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage_partition_impl.cc
index 64d05fc7..891d949 100644
--- a/content/browser/storage_partition_impl.cc
+++ b/content/browser/storage_partition_impl.cc
@@ -630,7 +630,9 @@
   partition->web_package_context_ = std::make_unique<WebPackageContextImpl>();
 
   partition->background_fetch_context_ =
-      new BackgroundFetchContext(context, partition->service_worker_context_);
+      base::MakeRefCounted<BackgroundFetchContext>(
+          context, partition->service_worker_context_,
+          partition->cache_storage_context_);
 
   partition->background_sync_context_ =
       base::MakeRefCounted<BackgroundSyncContext>();
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index d4339f8f..7f53c05 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -628,6 +628,17 @@
   pepper_playback_observer_.reset();
 #endif  // defined(ENABLED_PLUGINS)
 
+  // If audio is playing then notify external observers of the audio stream
+  // disappearing.
+  if (is_currently_audible_) {
+    is_currently_audible_ = false;
+    for (auto& observer : observers_)
+      observer.OnAudioStateChanged(false);
+
+    if (GetOuterWebContents())
+      GetOuterWebContents()->OnAudioStateChanged();
+  }
+
   for (auto& observer : observers_)
     observer.FrameDeleted(root->current_frame_host());
 
@@ -1429,7 +1440,7 @@
 }
 
 bool WebContentsImpl::IsCurrentlyAudible() {
-  return audio_stream_monitor()->IsCurrentlyAudible();
+  return is_currently_audible_;
 }
 
 bool WebContentsImpl::IsConnectedToBluetoothDevice() const {
@@ -1498,16 +1509,34 @@
     GetOuterWebContents()->NotifyNavigationStateChanged(changed_flags);
 }
 
-void WebContentsImpl::OnAudioStateChanged(bool is_audible) {
-  SendPageMessage(new PageMsg_AudioStateChanged(MSG_ROUTING_NONE, is_audible));
+void WebContentsImpl::OnAudioStateChanged() {
+  // This notification can come from any embedded contents or from this
+  // WebContents' stream monitor. Aggregate these signals to get the actual
+  // state.
+  bool is_currently_audible =
+      audio_stream_monitor_.IsCurrentlyAudible() ||
+      (browser_plugin_embedder_ &&
+       browser_plugin_embedder_->AreAnyGuestsCurrentlyAudible());
+  if (is_currently_audible == is_currently_audible_)
+    return;
+
+  // Update internal state.
+  is_currently_audible_ = is_currently_audible;
+  was_ever_audible_ = was_ever_audible_ || is_currently_audible_;
+
+  SendPageMessage(
+      new PageMsg_AudioStateChanged(MSG_ROUTING_NONE, is_currently_audible_));
 
   // Notification for UI updates in response to the changed audio state.
   NotifyNavigationStateChanged(INVALIDATE_TYPE_TAB);
 
-  was_ever_audible_ = was_ever_audible_ || is_audible;
+  // Ensure that audio state changes propagate from innermost to outermost
+  // WebContents.
+  if (GetOuterWebContents())
+    GetOuterWebContents()->OnAudioStateChanged();
 
   for (auto& observer : observers_)
-    observer.OnAudioStateChanged(is_audible);
+    observer.OnAudioStateChanged(is_currently_audible_);
 }
 
 base::TimeTicks WebContentsImpl::GetLastActiveTime() const {
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index c65a581..a412678 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -362,7 +362,7 @@
   int GetCrashedErrorCode() const override;
   bool IsBeingDestroyed() const override;
   void NotifyNavigationStateChanged(InvalidateTypes changed_flags) override;
-  void OnAudioStateChanged(bool is_audible) override;
+  void OnAudioStateChanged() override;
   base::TimeTicks GetLastActiveTime() const override;
   void SetLastActiveTime(base::TimeTicks last_active_time) override;
   void WasShown() override;
@@ -1720,6 +1720,7 @@
 
   bool has_persistent_video_ = false;
 
+  bool is_currently_audible_ = false;
   bool was_ever_audible_ = false;
 
   // Helper variable for resolving races in UpdateTargetURL / ClearTargetURL.
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
index ad5452e25..7d12f40 100644
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -441,7 +441,7 @@
 
 #if defined(OS_ANDROID)
   if (base::FeatureList::IsEnabled(features::kDisplayCutoutAPI))
-    WebRuntimeFeatures::EnableDisplayCutoutViewportFit(true);
+    WebRuntimeFeatures::EnableDisplayCutoutAPI(true);
 #endif
 
   if (command_line.HasSwitch(switches::kEnableAccessibilityObjectModel))
diff --git a/content/common/swapped_out_messages.cc b/content/common/swapped_out_messages.cc
index 8891dc9b..65cbd05 100644
--- a/content/common/swapped_out_messages.cc
+++ b/content/common/swapped_out_messages.cc
@@ -27,6 +27,8 @@
     case ViewHostMsg_RouteCloseEvent::ID:
     // Send page scale factor reset notification upon cross-process navigations.
     case ViewHostMsg_PageScaleFactorChanged::ID:
+    // Allow history.back() in OOPIFs - https://crbug.com/845923.
+    case ViewHostMsg_GoToEntryAtOffset::ID:
       return true;
     default:
       break;
diff --git a/content/public/browser/web_contents.h b/content/public/browser/web_contents.h
index c4a7f31..e98ea1ee 100644
--- a/content/public/browser/web_contents.h
+++ b/content/public/browser/web_contents.h
@@ -437,8 +437,10 @@
   // change.
   virtual void NotifyNavigationStateChanged(InvalidateTypes changed_flags) = 0;
 
-  // Notifies the WebContents that audio started or stopped being audible.
-  virtual void OnAudioStateChanged(bool is_audio_playing) = 0;
+  // Notifies the WebContents that audio state has changed. The contents is
+  // aware of all of its potential sources of audio and needs to poll them
+  // directly to determine its aggregate audio state.
+  virtual void OnAudioStateChanged() = 0;
 
   // Get/Set the last time that the WebContents was made active (either when it
   // was created or shown with WasShown()).
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
index ceb5d1bc..66a97d7 100644
--- a/content/public/common/content_features.cc
+++ b/content/public/common/content_features.cc
@@ -44,7 +44,7 @@
 // only enabled by default on CrOS.
 const base::Feature kTouchpadOverscrollHistoryNavigation {
   "TouchpadOverscrollHistoryNavigation",
-#if defined(OS_CHROMEOS)
+#if defined(OS_CHROMEOS) || defined(OS_WIN)
       base::FEATURE_ENABLED_BY_DEFAULT
 #else
       base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/content/public/test/android/javatests/src/org/chromium/content/browser/test/ContentJUnit4ClassRunner.java b/content/public/test/android/javatests/src/org/chromium/content/browser/test/ContentJUnit4ClassRunner.java
index 14768411..f0588b5 100644
--- a/content/public/test/android/javatests/src/org/chromium/content/browser/test/ContentJUnit4ClassRunner.java
+++ b/content/public/test/android/javatests/src/org/chromium/content/browser/test/ContentJUnit4ClassRunner.java
@@ -8,8 +8,6 @@
 
 import org.junit.runners.model.InitializationError;
 
-import org.chromium.base.CollectionUtil;
-import org.chromium.base.CommandLine;
 import org.chromium.base.CommandLineInitUtil;
 import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.BaseTestResult.PreTestHook;
@@ -18,7 +16,6 @@
 import org.chromium.ui.test.util.UiDisableIfSkipCheck;
 import org.chromium.ui.test.util.UiRestrictionSkipCheck;
 
-import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -31,22 +28,22 @@
      * @throws InitializationError if the test class malformed
      */
     public ContentJUnit4ClassRunner(final Class<?> klass) throws InitializationError {
-        super(klass, defaultSkipChecks(), defaultPreTestHooks());
+        super(klass);
     }
 
-    private static List<SkipCheck> defaultSkipChecks() {
-        CommandLine.init(null);
-        return CollectionUtil.newArrayList(
+    @Override
+    protected List<SkipCheck> getSkipChecks() {
+        return addToList(super.getSkipChecks(),
                 new UiRestrictionSkipCheck(InstrumentationRegistry.getTargetContext()),
                 new UiDisableIfSkipCheck(InstrumentationRegistry.getTargetContext()));
     }
     /**
      * Change this static function to add default {@code PreTestHook}s.
      */
-    private static List<PreTestHook> defaultPreTestHooks() {
-        return Arrays.asList(new PreTestHook[] {
-            CommandLineFlags.getRegistrationHook(),
-            new ChildProcessAllocatorSettingsHook()});
+    @Override
+    protected List<PreTestHook> getPreTestHooks() {
+        return addToList(super.getPreTestHooks(), CommandLineFlags.getRegistrationHook(),
+                new ChildProcessAllocatorSettingsHook());
     }
 
     @Override
diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc
index d648951..b0459bf 100644
--- a/content/renderer/browser_plugin/browser_plugin.cc
+++ b/content/renderer/browser_plugin/browser_plugin.cc
@@ -390,22 +390,19 @@
 
 void BrowserPlugin::OnSetMouseLock(int browser_plugin_instance_id,
                                    bool enable) {
-  auto* render_frame =
-      RenderFrameImpl::FromRoutingID(render_frame_routing_id());
-  auto* render_view = static_cast<RenderViewImpl*>(
-      render_frame ? render_frame->GetRenderView() : nullptr);
+  RenderWidget* render_widget = GetMainWidget();
   if (enable) {
-    if (mouse_locked_ || !render_view)
+    if (mouse_locked_ || !render_widget)
       return;
-    render_view->mouse_lock_dispatcher()->LockMouse(this);
+    render_widget->mouse_lock_dispatcher()->LockMouse(this);
   } else {
     if (!mouse_locked_) {
       OnLockMouseACK(false);
       return;
     }
-    if (!render_view)
+    if (!render_widget)
       return;
-    render_view->mouse_lock_dispatcher()->UnlockMouse(this);
+    render_widget->mouse_lock_dispatcher()->UnlockMouse(this);
   }
 }
 
@@ -444,6 +441,20 @@
   return pending_visual_properties_.screen_info.device_scale_factor;
 }
 
+RenderWidget* BrowserPlugin::GetMainWidget() const {
+  RenderFrameImpl* frame =
+      RenderFrameImpl::FromRoutingID(render_frame_routing_id());
+  if (frame) {
+    RenderViewImpl* render_view =
+        static_cast<RenderViewImpl*>(frame->GetRenderView());
+    if (render_view) {
+      return render_view->GetWidget();
+    }
+  }
+
+  return nullptr;
+}
+
 void BrowserPlugin::UpdateInternalInstanceId() {
   // This is a way to notify observers of our attributes that this plugin is
   // available in render tree.
@@ -483,12 +494,9 @@
 
 bool BrowserPlugin::ShouldGuestBeFocused() const {
   bool embedder_focused = false;
-  auto* render_frame =
-      RenderFrameImpl::FromRoutingID(render_frame_routing_id());
-  auto* render_view = static_cast<RenderViewImpl*>(
-      render_frame ? render_frame->GetRenderView() : nullptr);
-  if (render_view)
-    embedder_focused = render_view->has_focus();
+  RenderWidget* render_widget = GetMainWidget();
+  if (render_widget)
+    embedder_focused = render_widget->has_focus();
   return plugin_focused_ && embedder_focused;
 }
 
@@ -539,12 +547,9 @@
 
   container_ = nullptr;
   // Will be a no-op if the mouse is not currently locked.
-  auto* render_frame =
-      RenderFrameImpl::FromRoutingID(render_frame_routing_id());
-  auto* render_view = static_cast<RenderViewImpl*>(
-      render_frame ? render_frame->GetRenderView() : nullptr);
-  if (render_view)
-    render_view->mouse_lock_dispatcher()->OnLockTargetDestroyed(this);
+  RenderWidget* render_widget = GetMainWidget();
+  if (render_widget)
+    render_widget->mouse_lock_dispatcher()->OnLockTargetDestroyed(this);
 
   task_runner_->DeleteSoon(FROM_HERE, this);
 }
diff --git a/content/renderer/browser_plugin/browser_plugin.h b/content/renderer/browser_plugin/browser_plugin.h
index 8ab2c1b..c716f73c 100644
--- a/content/renderer/browser_plugin/browser_plugin.h
+++ b/content/renderer/browser_plugin/browser_plugin.h
@@ -176,6 +176,7 @@
   }
   gfx::Rect FrameRectInPixels() const;
   float GetDeviceScaleFactor() const;
+  RenderWidget* GetMainWidget() const;
 
   const ScreenInfo& screen_info() const {
     return pending_visual_properties_.screen_info;
diff --git a/content/renderer/input/frame_input_handler_impl.cc b/content/renderer/input/frame_input_handler_impl.cc
index d4293d0..4a43fdd8 100644
--- a/content/renderer/input/frame_input_handler_impl.cc
+++ b/content/renderer/input/frame_input_handler_impl.cc
@@ -280,11 +280,11 @@
 
   if (!render_frame_)
     return;
-  RenderViewImpl* render_view = render_frame_->render_view();
+  RenderWidget* window_widget = render_frame_->render_view()->GetWidget();
   HandlingState handling_state(render_frame_, UpdateState::kIsSelectingRange);
   render_frame_->GetWebFrame()->SelectRange(
-      render_view->ConvertWindowPointToViewport(base),
-      render_view->ConvertWindowPointToViewport(extent));
+      window_widget->ConvertWindowPointToViewport(base),
+      window_widget->ConvertWindowPointToViewport(extent));
 }
 
 void FrameInputHandlerImpl::AdjustSelectionByCharacterOffset(
@@ -334,7 +334,8 @@
     return;
   HandlingState handling_state(render_frame_, UpdateState::kIsSelectingRange);
   render_frame_->GetWebFrame()->MoveRangeSelectionExtent(
-      render_frame_->render_view()->ConvertWindowPointToViewport(extent));
+      render_frame_->render_view()->GetWidget()->ConvertWindowPointToViewport(
+          extent));
 }
 
 void FrameInputHandlerImpl::ScrollFocusedEditableNodeIntoRect(
@@ -362,9 +363,9 @@
   if (!render_frame_)
     return;
 
-  RenderViewImpl* render_view = render_frame_->render_view();
   render_frame_->GetWebFrame()->MoveCaretSelection(
-      render_view->ConvertWindowPointToViewport(point));
+      render_frame_->render_view()->GetWidget()->ConvertWindowPointToViewport(
+          point));
 }
 
 void FrameInputHandlerImpl::GetWidgetInputHandler(
diff --git a/content/renderer/input/input_event_prediction.cc b/content/renderer/input/input_event_prediction.cc
index 89636c9..f1bce36 100644
--- a/content/renderer/input/input_event_prediction.cc
+++ b/content/renderer/input/input_event_prediction.cc
@@ -119,7 +119,10 @@
     if (predictor != pointer_id_predictor_map_.end()) {
       predictor->second->Update(data);
     } else {
-      pointer_id_predictor_map_.insert({event.id, SetUpPredictor()});
+      // Workaround for GLIBC C++ < 7.3 that fails to insert with braces
+      // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82522
+      auto pair = std::make_pair(event.id, SetUpPredictor());
+      pointer_id_predictor_map_.insert(std::move(pair));
       pointer_id_predictor_map_[event.id]->Update(data);
     }
   }
diff --git a/content/renderer/loader/sync_load_context.cc b/content/renderer/loader/sync_load_context.cc
index 17da79d..1357923d 100644
--- a/content/renderer/loader/sync_load_context.cc
+++ b/content/renderer/loader/sync_load_context.cc
@@ -113,8 +113,7 @@
       signals_(std::make_unique<SignalHelper>(this,
                                               redirect_or_response_event,
                                               abort_event,
-                                              timeout)),
-      fetch_request_mode_(request->fetch_request_mode) {
+                                              timeout)) {
   url_loader_factory_ =
       network::SharedURLLoaderFactory::Create(std::move(url_loader_factory));
 
@@ -134,23 +133,6 @@
     const net::RedirectInfo& redirect_info,
     const network::ResourceResponseInfo& info) {
   DCHECK(!Completed());
-  // Synchronous loads in blink aren't associated with a ResourceClient, and
-  // CORS checks are performed by ResourceClient subclasses, so there's
-  // currently no way to perform CORS checks for redirects.
-  // Err on the side of extreme caution and block any cross origin redirect
-  // that might have CORS implications.
-  if (fetch_request_mode_ != network::mojom::FetchRequestMode::kNoCORS &&
-      redirect_info.new_url.GetOrigin() != response_->url.GetOrigin()) {
-    LOG(ERROR) << "Cross origin redirect denied";
-    response_->error_code = net::ERR_ABORTED;
-
-    CompleteRequest(false /* remove_pending_request */);
-
-    // Returning false here will cause the request to be cancelled and this
-    // object deleted.
-    return false;
-  }
-
   response_->url = redirect_info.new_url;
   response_->info = info;
   response_->redirect_info = redirect_info;
diff --git a/content/renderer/loader/sync_load_context.h b/content/renderer/loader/sync_load_context.h
index 23a7e7e..0d5cbde 100644
--- a/content/renderer/loader/sync_load_context.h
+++ b/content/renderer/loader/sync_load_context.h
@@ -113,8 +113,6 @@
   class SignalHelper;
   std::unique_ptr<SignalHelper> signals_;
 
-  const network::mojom::FetchRequestMode fetch_request_mode_;
-
   DISALLOW_COPY_AND_ASSIGN(SyncLoadContext);
 };
 
diff --git a/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.cc b/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.cc
index 9a789cc..251b29b 100644
--- a/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.cc
+++ b/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.cc
@@ -301,9 +301,8 @@
     if (rendering_color_space_.IsHDR())
       return media::GpuVideoAcceleratorFactories::OutputFormat::UNDEFINED;
 
-#if defined(OS_MACOSX) || defined(OS_LINUX)
-    // TODO(mcasas): enable other platforms https://crbug.com/776093
-    // https://crbug.com/803451.
+#if !defined(OS_WIN)
+    // TODO(mcasas): enable Win https://crbug.com/803451.
     // TODO(mcasas): remove the |bit_depth| check when libyuv supports more than
     // just x010ToAR30 conversions, https://crbug.com/libyuv/751.
     if (bit_depth == 10) {
diff --git a/content/renderer/mouse_lock_dispatcher_browsertest.cc b/content/renderer/mouse_lock_dispatcher_browsertest.cc
index 8b26b1c..8e046ca 100644
--- a/content/renderer/mouse_lock_dispatcher_browsertest.cc
+++ b/content/renderer/mouse_lock_dispatcher_browsertest.cc
@@ -45,7 +45,9 @@
  protected:
   RenderViewImpl* view() { return static_cast<RenderViewImpl*>(view_); }
   RenderWidget* widget() { return view()->GetWidget(); }
-  MouseLockDispatcher* dispatcher() { return view()->mouse_lock_dispatcher(); }
+  MouseLockDispatcher* dispatcher() {
+    return widget()->mouse_lock_dispatcher();
+  }
   int route_id_;
   MockLockTarget* target_;
   MockLockTarget* alternate_target_;
diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.cc b/content/renderer/pepper/pepper_plugin_instance_impl.cc
index 931e2e7..15320b0 100644
--- a/content/renderer/pepper/pepper_plugin_instance_impl.cc
+++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc
@@ -3376,7 +3376,7 @@
     return container->mouse_lock_dispatcher();
   }
   if (render_frame_)
-    return render_frame_->render_view()->mouse_lock_dispatcher();
+    return render_frame_->render_view()->GetWidget()->mouse_lock_dispatcher();
   return nullptr;
 }
 
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc
index bbe05eb..4ee8f9f 100644
--- a/content/renderer/render_frame_proxy.cc
+++ b/content/renderer/render_frame_proxy.cc
@@ -141,8 +141,8 @@
     // be updated, as the OnSwapOut flow which normally does this won't happen
     // in that case.  See https://crbug.com/653746 and
     // https://crbug.com/651980.
-    if (!render_view->is_swapped_out())
-      render_view->SetSwappedOut(true);
+    if (!render_widget->is_swapped_out())
+      render_widget->SetSwappedOut(true);
   } else {
     // Create a frame under an existing parent. The parent is always expected
     // to be a RenderFrameProxy, because navigations initiated by local frames
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index 762c820e..c71f015 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -2125,7 +2125,8 @@
           compositor_task_runner_, GetGpuMemoryBufferManager(),
           sync_message_filter(), routing_id, g_next_layer_tree_frame_sink_id++,
           std::move(params.synthetic_begin_frame_source),
-          view->widget_input_handler_manager()
+          view->GetWidget()
+              ->widget_input_handler_manager()
               ->GetSynchronousCompositorRegistry(),
           std::move(frame_swap_message_queue)));
       return;
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h
index c31632d..b0644ff 100644
--- a/content/renderer/render_view_impl.h
+++ b/content/renderer/render_view_impl.h
@@ -107,7 +107,7 @@
 //
 // For context, please see https://crbug.com/467770 and
 // https://www.chromium.org/developers/design-documents/site-isolation.
-class CONTENT_EXPORT RenderViewImpl : public RenderWidget,
+class CONTENT_EXPORT RenderViewImpl : private RenderWidget,
                                       public blink::WebViewClient,
                                       public RenderWidgetOwnerDelegate,
                                       public RenderView {
diff --git a/content/test/layouttest_support.cc b/content/test/layouttest_support.cc
index 8033374..cdd4f46 100644
--- a/content/test/layouttest_support.cc
+++ b/content/test/layouttest_support.cc
@@ -223,7 +223,7 @@
         static_cast<WebViewTestProxyType*>(web_widget_test_proxy_base);
     RenderViewImpl* render_view_impl =
         static_cast<RenderViewImpl*>(render_view_proxy);
-    return render_view_impl;
+    return render_view_impl->GetWidget();
   } else if (widget->IsWebFrameWidget()) {
     WebWidgetTestProxyType* render_widget_proxy =
         static_cast<WebWidgetTestProxyType*>(web_widget_test_proxy_base);
diff --git a/content/test/test_web_contents.cc b/content/test/test_web_contents.cc
index b4c52cc2..aa5fb8c 100644
--- a/content/test/test_web_contents.cc
+++ b/content/test/test_web_contents.cc
@@ -225,6 +225,7 @@
 
 void TestWebContents::SetIsCurrentlyAudible(bool audible) {
   audio_stream_monitor()->set_is_currently_audible_for_testing(audible);
+  is_currently_audible_ = audible;
 }
 
 void TestWebContents::TestDidReceiveInputEvent(
diff --git a/device/vr/public/mojom/vr_service.mojom b/device/vr/public/mojom/vr_service.mojom
index f008523..4946470 100644
--- a/device/vr/public/mojom/vr_service.mojom
+++ b/device/vr/public/mojom/vr_service.mojom
@@ -89,6 +89,20 @@
   bool pose_reset;
 };
 
+struct XRRay {
+  // TODO(https://crbug.com/845293): use Point3F and Vector3F from
+  // ui/gfx/geometry and inline directly in requestHitTest().
+  array<float, 3> origin;
+  array<float, 3> direction;
+};
+
+struct XRHitResult {
+  // A 4x4 transformation matrix representing the position of the object hit
+  // and the orientation of the normal of the object at the hit location.
+  // TODO(https://crbug.com/845293): use gfx.mojom.Transform.
+  array<float, 16> hit_matrix;
+};
+
 struct VRDisplayCapabilities {
   bool hasPosition;
   bool hasExternalDisplay;
@@ -290,6 +304,17 @@
   GetFrameData(gfx.mojom.Size frame_size,
       display.mojom.Rotation display_rotation) =>
       (VRMagicWindowFrameData? frame_data);
+
+  // Performs a raycast into the magic window scene and returns a list of
+  // XRHitResults sorted from closest to furthest hit from the ray. Each
+  // hit result contains a hit_matrix containing the transform of the hit
+  // where the rotation represents the normal of the surface hit.
+  // An empty result list means there were no hits. If a nullopt is returned,
+  // there was an error.
+  // TODO(https://crbug.com/842025): have one "session" type, merging
+  // VRMagicWindowProvider and VRPresentationProvider because RequestHitTest
+  // makes sense for both types of sessions.
+  RequestHitTest(XRRay ray) => (array<XRHitResult>? results);
 };
 
 // Provides the necessary functionality for a presenting WebVR page to draw
diff --git a/device/vr/vr_device_base.cc b/device/vr/vr_device_base.cc
index 58d5e36..c73cb7f0 100644
--- a/device/vr/vr_device_base.cc
+++ b/device/vr/vr_device_base.cc
@@ -147,6 +147,13 @@
   OnListeningForActivate(is_listening);
 }
 
+void VRDeviceBase::RequestHitTest(
+    mojom::XRRayPtr ray,
+    mojom::VRMagicWindowProvider::RequestHitTestCallback callback) {
+  NOTREACHED() << "Unexpected call to a device without hit-test support";
+  std::move(callback).Run(base::nullopt);
+}
+
 void VRDeviceBase::UpdateListeningForActivate(VRDisplayImpl* display) {
   if (display->ListeningForActivate() && display->InFocusedFrame()) {
     bool was_listening = !!listening_for_activate_diplay_;
diff --git a/device/vr/vr_device_base.h b/device/vr/vr_device_base.h
index 2f854e49..5417516a 100644
--- a/device/vr/vr_device_base.h
+++ b/device/vr/vr_device_base.h
@@ -53,6 +53,9 @@
       const gfx::Size& frame_size,
       display::Display::Rotation display_rotation,
       mojom::VRMagicWindowProvider::GetFrameDataCallback callback);
+  virtual void RequestHitTest(
+      mojom::XRRayPtr ray,
+      mojom::VRMagicWindowProvider::RequestHitTestCallback callback);
 
  protected:
   void SetIsPresenting();
diff --git a/device/vr/vr_display_impl.cc b/device/vr/vr_display_impl.cc
index 352e55f..aad684a 100644
--- a/device/vr/vr_display_impl.cc
+++ b/device/vr/vr_display_impl.cc
@@ -33,9 +33,13 @@
 
 VRDisplayImpl::~VRDisplayImpl() = default;
 
+bool VRDisplayImpl::IsPrivilegedOperationAllowed() {
+  return device_->IsAccessAllowed(this) && InFocusedFrame();
+}
+
 void VRDisplayImpl::RequestSession(
     mojom::VRDisplayHost::RequestSessionCallback callback) {
-  if (!CanStartNewSession()) {
+  if (!IsPrivilegedOperationAllowed()) {
     std::move(callback).Run(false);
     return;
   }
@@ -74,8 +78,13 @@
   device_->GetMagicWindowFrameData(frame_size, rotation, std::move(callback));
 }
 
-bool VRDisplayImpl::CanStartNewSession() {
-  return device_->IsAccessAllowed(this) && InFocusedFrame();
+void VRDisplayImpl::RequestHitTest(mojom::XRRayPtr ray,
+                                   RequestHitTestCallback callback) {
+  if (!IsPrivilegedOperationAllowed()) {
+    std::move(callback).Run(base::nullopt);
+    return;
+  }
+  device_->RequestHitTest(std::move(ray), std::move(callback));
 }
 
 void VRDisplayImpl::SetListeningForActivate(bool listening) {
diff --git a/device/vr/vr_display_impl.h b/device/vr/vr_display_impl.h
index f1cc6d9..ac7d715 100644
--- a/device/vr/vr_display_impl.h
+++ b/device/vr/vr_display_impl.h
@@ -43,13 +43,15 @@
   void RequestSession(mojom::VRDisplayHost::RequestSessionCallback callback);
 
  private:
+  bool IsPrivilegedOperationAllowed();
+
   // mojom::VRMagicWindowProvider
   void GetPose(GetPoseCallback callback) override;
   void GetFrameData(const gfx::Size& frame_size,
                     display::Display::Rotation rotation,
                     GetFrameDataCallback callback) override;
-
-  bool CanStartNewSession();
+  void RequestHitTest(mojom::XRRayPtr ray,
+                      RequestHitTestCallback callback) override;
 
   mojo::Binding<mojom::VRMagicWindowProvider> binding_;
   device::VRDeviceBase* device_;
diff --git a/docs/updating_clang.md b/docs/updating_clang.md
index b994f1b..f187df7 100644
--- a/docs/updating_clang.md
+++ b/docs/updating_clang.md
@@ -40,7 +40,7 @@
       -b linux_chromium_chromeos_asan_rel_ng -b linux_chromium_msan_rel_ng \
       -b linux_chromium_cfi_rel_ng &&
     git cl try -m tryserver.blink -b linux_trusty_blink_rel &&
-    git cl try -m tryserver.chromium.chromiumos -b linux-chromeos-dbg
+    git cl try -m luci.chromium.try -b linux-chromeos-dbg
     ```
 
 1.  Commit roll CL from the first step
diff --git a/extensions/browser/api/declarative/rules_registry_service.cc b/extensions/browser/api/declarative/rules_registry_service.cc
index 6f39588..4b3fc2c 100644
--- a/extensions/browser/api/declarative/rules_registry_service.cc
+++ b/extensions/browser/api/declarative/rules_registry_service.cc
@@ -13,7 +13,6 @@
 #include "base/logging.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/render_process_host.h"
-#include "extensions/browser/api/declarative/rules_cache_delegate.h"
 #include "extensions/browser/api/declarative_content/content_rules_registry.h"
 #include "extensions/browser/api/declarative_webrequest/webrequest_constants.h"
 #include "extensions/browser/api/declarative_webrequest/webrequest_rules_registry.h"
@@ -54,7 +53,7 @@
       browser_context_(context) {
   if (browser_context_) {
     extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_));
-    EnsureDefaultRulesRegistriesRegistered(kDefaultRulesRegistryID);
+    EnsureDefaultRulesRegistriesRegistered();
   }
 }
 
@@ -64,56 +63,6 @@
   return ++current_rules_registry_id_;
 }
 
-void RulesRegistryService::EnsureDefaultRulesRegistriesRegistered(
-    int rules_registry_id) {
-  if (!browser_context_)
-    return;
-  RulesRegistryKey key(declarative_webrequest_constants::kOnRequest,
-                       rules_registry_id);
-
-  // If we can find the key in the |rule_registries_| then we have already
-  // installed the default registries.
-  if (ContainsKey(rule_registries_, key))
-    return;
-
-  // We create at least an ephemeral WebRequest cache for all registries, but we
-  // only persist the cache if it pertains to regular pages (i.e., not
-  // webviews).
-  RulesCacheDelegate::Type web_request_cache_delegate_type =
-      rules_registry_id == kDefaultRulesRegistryID
-          ? RulesCacheDelegate::Type::kPersistent
-          : RulesCacheDelegate::Type::kEphemeral;
-
-  auto web_request_cache_delegate = std::make_unique<RulesCacheDelegate>(
-      web_request_cache_delegate_type, true /* log_storage_init_delay */);
-  auto web_request_rules_registry =
-      base::MakeRefCounted<WebRequestRulesRegistry>(
-          browser_context_, web_request_cache_delegate.get(),
-          rules_registry_id);
-  cache_delegates_.push_back(std::move(web_request_cache_delegate));
-  RegisterRulesRegistry(web_request_rules_registry);
-  content::BrowserThread::PostTask(
-      content::BrowserThread::IO, FROM_HERE,
-      base::Bind(&RegisterToExtensionWebRequestEventRouterOnIO,
-                 browser_context_, rules_registry_id,
-                 web_request_rules_registry));
-
-  // Only create a ContentRulesRegistry for regular pages.
-  if (rules_registry_id == kDefaultRulesRegistryID) {
-    auto content_rules_cache_delegate = std::make_unique<RulesCacheDelegate>(
-        RulesCacheDelegate::Type::kPersistent,
-        false /* log_storage_init_delay */);
-    scoped_refptr<ContentRulesRegistry> content_rules_registry =
-        ExtensionsAPIClient::Get()->CreateContentRulesRegistry(
-            browser_context_, content_rules_cache_delegate.get());
-    cache_delegates_.push_back(std::move(content_rules_cache_delegate));
-    if (content_rules_registry) {
-      RegisterRulesRegistry(content_rules_registry);
-      content_rules_registry_ = content_rules_registry.get();
-    }
-  }
-}
-
 void RulesRegistryService::Shutdown() {
   // Release the references to all registries. This would happen soon during
   // destruction of |*this|, but we need the ExtensionWebRequestEventRouter to
@@ -163,13 +112,23 @@
 scoped_refptr<RulesRegistry> RulesRegistryService::GetRulesRegistry(
     int rules_registry_id,
     const std::string& event_name) {
-  EnsureDefaultRulesRegistriesRegistered(rules_registry_id);
-
   RulesRegistryKey key(event_name, rules_registry_id);
   RulesRegistryMap::const_iterator i = rule_registries_.find(key);
-  if (i == rule_registries_.end())
-    return scoped_refptr<RulesRegistry>();
-  return i->second;
+  if (i != rule_registries_.end())
+    return i->second;
+
+  // We should have attempted creation of the default rule registries at
+  // construction.
+  if (!browser_context_ || rules_registry_id == kDefaultRulesRegistryID)
+    return nullptr;
+
+  // Only web request rules registries are created for webviews.
+  DCHECK_EQ(declarative_webrequest_constants::kOnRequest, event_name);
+
+  scoped_refptr<RulesRegistry> registry = RegisterWebRequestRulesRegistry(
+      rules_registry_id, RulesCacheDelegate::Type::kEphemeral);
+  DCHECK(ContainsKey(rule_registries_, key));
+  return registry;
 }
 
 void RulesRegistryService::RemoveRulesRegistriesByID(int rules_registry_id) {
@@ -202,6 +161,58 @@
   NotifyRegistriesHelper(&RulesRegistry::OnExtensionUninstalled, extension);
 }
 
+scoped_refptr<RulesRegistry>
+RulesRegistryService::RegisterWebRequestRulesRegistry(
+    int rules_registry_id,
+    RulesCacheDelegate::Type cache_delegate_type) {
+  DCHECK(browser_context_);
+  DCHECK(!ContainsKey(
+      rule_registries_,
+      RulesRegistryKey(declarative_webrequest_constants::kOnRequest,
+                       rules_registry_id)));
+
+  auto web_request_cache_delegate = std::make_unique<RulesCacheDelegate>(
+      cache_delegate_type, true /* log_storage_init_delay */);
+  auto web_request_rules_registry =
+      base::MakeRefCounted<WebRequestRulesRegistry>(
+          browser_context_, web_request_cache_delegate.get(),
+          rules_registry_id);
+  cache_delegates_.push_back(std::move(web_request_cache_delegate));
+  RegisterRulesRegistry(web_request_rules_registry);
+  content::BrowserThread::PostTask(
+      content::BrowserThread::IO, FROM_HERE,
+      base::Bind(&RegisterToExtensionWebRequestEventRouterOnIO,
+                 browser_context_, rules_registry_id,
+                 web_request_rules_registry));
+  return web_request_rules_registry;
+}
+
+void RulesRegistryService::EnsureDefaultRulesRegistriesRegistered() {
+  DCHECK(browser_context_);
+  DCHECK(!ContainsKey(
+      rule_registries_,
+      RulesRegistryKey(declarative_webrequest_constants::kOnRequest,
+                       kDefaultRulesRegistryID)));
+
+  // Persist the cache since it pertains to regular pages (i.e. not webviews).
+  RegisterWebRequestRulesRegistry(kDefaultRulesRegistryID,
+                                  RulesCacheDelegate::Type::kPersistent);
+
+  // Create the ContentRulesRegistry.
+  DCHECK(!content_rules_registry_);
+  auto content_rules_cache_delegate = std::make_unique<RulesCacheDelegate>(
+      RulesCacheDelegate::Type::kPersistent,
+      false /* log_storage_init_delay */);
+  scoped_refptr<ContentRulesRegistry> content_rules_registry =
+      ExtensionsAPIClient::Get()->CreateContentRulesRegistry(
+          browser_context_, content_rules_cache_delegate.get());
+  if (content_rules_registry) {
+    cache_delegates_.push_back(std::move(content_rules_cache_delegate));
+    RegisterRulesRegistry(content_rules_registry);
+    content_rules_registry_ = content_rules_registry.get();
+  }
+}
+
 void RulesRegistryService::NotifyRegistriesHelper(
     void (RulesRegistry::*notification_callback)(const Extension*),
     const Extension* extension) {
diff --git a/extensions/browser/api/declarative/rules_registry_service.h b/extensions/browser/api/declarative/rules_registry_service.h
index 058741e..2e0a794 100644
--- a/extensions/browser/api/declarative/rules_registry_service.h
+++ b/extensions/browser/api/declarative/rules_registry_service.h
@@ -14,6 +14,7 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/scoped_observer.h"
+#include "extensions/browser/api/declarative/rules_cache_delegate.h"
 #include "extensions/browser/api/declarative/rules_registry.h"
 #include "extensions/browser/browser_context_keyed_api_factory.h"
 #include "extensions/browser/extension_registry_observer.h"
@@ -70,15 +71,12 @@
 
   int GetNextRulesRegistryID();
 
-  // Registers the default RulesRegistries used in Chromium.
-  void EnsureDefaultRulesRegistriesRegistered(int rules_registry_id);
-
   // Registers a RulesRegistry and wraps it in an InitializingRulesRegistry.
   void RegisterRulesRegistry(scoped_refptr<RulesRegistry> rule_registry);
 
-  // Returns the RulesRegistry for |event_name| and |rules_registry_id| or
-  // NULL if no such registry has been registered. Default rules registries
-  // (such as the WebRequest rules registry) will be created on first access.
+  // Returns the RulesRegistry for |event_name| and |rules_registry_id|.
+  // Attempts to create and register the rules registry if necessary. Might
+  // return null if no corresponding rules registry was registered.
   scoped_refptr<RulesRegistry> GetRulesRegistry(int rules_registry_id,
                                                 const std::string& event_name);
 
@@ -100,6 +98,13 @@
  private:
   friend class BrowserContextKeyedAPIFactory<RulesRegistryService>;
 
+  scoped_refptr<RulesRegistry> RegisterWebRequestRulesRegistry(
+      int rules_registry_id,
+      RulesCacheDelegate::Type cache_delegate_type);
+
+  // Registers the default RulesRegistries used in Chromium.
+  void EnsureDefaultRulesRegistriesRegistered();
+
   // Maps <event name, rules registry ID> to RuleRegistries that handle these
   // events.
   typedef std::map<RulesRegistryKey, scoped_refptr<RulesRegistry> >
diff --git a/extensions/browser/guest_view/web_view/web_view_apitest.cc b/extensions/browser/guest_view/web_view/web_view_apitest.cc
index 2d632ec..ee7bacc 100644
--- a/extensions/browser/guest_view/web_view/web_view_apitest.cc
+++ b/extensions/browser/guest_view/web_view/web_view_apitest.cc
@@ -301,15 +301,14 @@
 IN_PROC_BROWSER_TEST_F(WebViewAPITest, EmbedderVisibilityChanged) {
   LaunchApp("web_view/visibility_changed");
 
-  scoped_refptr<content::MessageLoopRunner> loop_runner(
-      new content::MessageLoopRunner);
+  base::RunLoop run_loop;
   WebContentsHiddenObserver observer(GetGuestWebContents(),
-                                     loop_runner->QuitClosure());
+                                     run_loop.QuitClosure());
 
   // Handled in web_view/visibility_changed/main.js
   SendMessageToEmbedder("hide-embedder");
   if (!observer.hidden_observed())
-    loop_runner->Run();
+    run_loop.Run();
 }
 
 // Test for http://crbug.com/419611.
@@ -333,15 +332,14 @@
 IN_PROC_BROWSER_TEST_F(WebViewAPITest, GuestVisibilityChanged) {
   LaunchApp("web_view/visibility_changed");
 
-  scoped_refptr<content::MessageLoopRunner> loop_runner(
-      new content::MessageLoopRunner);
+  base::RunLoop run_loop;
   WebContentsHiddenObserver observer(GetGuestWebContents(),
-                                     loop_runner->QuitClosure());
+                                     run_loop.QuitClosure());
 
   // Handled in web_view/visibility_changed/main.js
   SendMessageToEmbedder("hide-guest");
   if (!observer.hidden_observed())
-    loop_runner->Run();
+    run_loop.Run();
 }
 
 // This test ensures that closing app window on 'loadcommit' does not crash.
diff --git a/extensions/browser/management_policy.h b/extensions/browser/management_policy.h
index e6f1f85..2eddc2b 100644
--- a/extensions/browser/management_policy.h
+++ b/extensions/browser/management_policy.h
@@ -49,7 +49,8 @@
 
     // A human-readable name for this provider, for use in debug messages.
     // Implementers should return an empty string in non-debug builds, to save
-    // executable size.
+    // executable size, and should not call this in builds without DCHECKs
+    // enabled.
     virtual std::string GetDebugPolicyProviderName() const = 0;
 
     // Providers should return false if a user may not install the |extension|,
diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
index 6a163de..b8926d11 100644
--- a/gpu/config/gpu_finch_features.cc
+++ b/gpu/config/gpu_finch_features.cc
@@ -23,7 +23,13 @@
 // Use the passthrough command decoder by default.  This can be overridden with
 // the --use-cmd-decoder=passthrough or --use-cmd-decoder=validating flags.
 const base::Feature kDefaultPassthroughCommandDecoder{
-    "DefaultPassthroughCommandDecoder", base::FEATURE_DISABLED_BY_DEFAULT};
+  "DefaultPassthroughCommandDecoder",
+#if defined(OS_WIN)
+      base::FEATURE_ENABLED_BY_DEFAULT
+#else
+      base::FEATURE_DISABLED_BY_DEFAULT
+#endif
+};
 
 // Use DirectComposition layers (overlays) for video if supported. Overridden by
 // --enable-direct-composition-layers and --disable-direct-composition-layers.
diff --git a/gpu/ipc/service/direct_composition_surface_win.cc b/gpu/ipc/service/direct_composition_surface_win.cc
index 9e6d322..a13977d 100644
--- a/gpu/ipc/service/direct_composition_surface_win.cc
+++ b/gpu/ipc/service/direct_composition_surface_win.cc
@@ -328,7 +328,7 @@
   // Returns true if the video processor changed.
   bool InitializeVideoProcessor(const gfx::Size& in_size,
                                 const gfx::Size& out_size);
-  bool ReallocateSwapChain(bool yuy2);
+  bool ReallocateSwapChain(bool yuy2, bool protected_video);
   bool ShouldBeYUY2();
 
   DCLayerTree* surface_;
@@ -337,6 +337,7 @@
   gfx::Size processor_input_size_;
   gfx::Size processor_output_size_;
   bool is_yuy2_swapchain_ = false;
+  bool is_protected_video_ = false;
 
   PresentationHistory presentation_history_;
   bool failed_to_create_yuy2_swapchain_ = false;
@@ -574,11 +575,12 @@
   bool yuy2_swapchain = ShouldBeYUY2();
   bool first_present = false;
   if (!swap_chain_ || swap_chain_size_ != swap_chain_size ||
+      is_protected_video_ != params.is_protected_video ||
       ((yuy2_swapchain != is_yuy2_swapchain_) &&
        !failed_to_create_yuy2_swapchain_)) {
     first_present = true;
     swap_chain_size_ = swap_chain_size;
-    ReallocateSwapChain(yuy2_swapchain);
+    ReallocateSwapChain(yuy2_swapchain, params.is_protected_video);
   } else if (last_gl_images_ == params.image) {
     // The swap chain is presenting the same images as last swap, which means
     // that the images were never returned to the video decoder and should
@@ -837,7 +839,9 @@
   return true;
 }
 
-bool DCLayerTree::SwapChainPresenter::ReallocateSwapChain(bool yuy2) {
+bool DCLayerTree::SwapChainPresenter::ReallocateSwapChain(
+    bool yuy2,
+    bool protected_video) {
   TRACE_EVENT0("gpu", "DCLayerTree::SwapChainPresenter::ReallocateSwapChain");
   swap_chain_.Reset();
   out_view_.Reset();
@@ -866,6 +870,10 @@
   desc.AlphaMode = DXGI_ALPHA_MODE_IGNORE;
   desc.Flags =
       DXGI_SWAP_CHAIN_FLAG_YUV_VIDEO | DXGI_SWAP_CHAIN_FLAG_FULLSCREEN_VIDEO;
+  if (protected_video) {
+    desc.Flags |= DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED;
+    desc.Flags |= DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY;
+  }
 
   HANDLE handle;
   if (!CreateSurfaceHandleHelper(&handle))
@@ -899,6 +907,10 @@
   if (!is_yuy2_swapchain_) {
     desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
     desc.Flags = 0;
+    if (protected_video) {
+      desc.Flags |= DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED;
+      desc.Flags |= DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY;
+    }
     HRESULT hr = media_factory->CreateSwapChainForCompositionSurfaceHandle(
         d3d11_device_.Get(), swap_chain_handle_.Get(), &desc, nullptr,
         swap_chain_.GetAddressOf());
@@ -908,6 +920,7 @@
       return false;
     }
   }
+  is_protected_video_ = protected_video;
   return true;
 }
 
@@ -1572,6 +1585,7 @@
 
   // TODO: Check the gpu driver date (or a function) which we know this new
   // support is enabled.
+
   return true;
 }
 
diff --git a/headless/OWNERS b/headless/OWNERS
index ad64e8d..0771e4f 100644
--- a/headless/OWNERS
+++ b/headless/OWNERS
@@ -2,6 +2,10 @@
 alexclarke@chromium.org
 eseckler@chromium.org
 
+# PST
+dgozman@chromium.org
+pfeldman@chromium.org
+
 # Emeritus:
 altimin@chromium.org
 dvallet@chromium.org
diff --git a/headless/lib/browser/headless_devtools_client_impl.cc b/headless/lib/browser/headless_devtools_client_impl.cc
index 55a8b5ed..3a229d82 100644
--- a/headless/lib/browser/headless_devtools_client_impl.cc
+++ b/headless/lib/browser/headless_devtools_client_impl.cc
@@ -18,7 +18,9 @@
 
 // static
 std::unique_ptr<HeadlessDevToolsClient> HeadlessDevToolsClient::Create() {
-  return std::make_unique<HeadlessDevToolsClientImpl>();
+  auto result = std::make_unique<HeadlessDevToolsClientImpl>();
+  result->InitBrowserMainThread();
+  return result;
 }
 
 // static
@@ -71,8 +73,6 @@
       service_worker_domain_(this),
       target_domain_(this),
       tracing_domain_(this),
-      browser_main_thread_(content::BrowserThread::GetTaskRunnerForThread(
-          content::BrowserThread::UI)),
       weak_ptr_factory_(this) {}
 
 HeadlessDevToolsClientImpl::~HeadlessDevToolsClientImpl() = default;
@@ -90,6 +90,11 @@
   external_host_ = external_host;
 }
 
+void HeadlessDevToolsClientImpl::InitBrowserMainThread() {
+  browser_main_thread_ = content::BrowserThread::GetTaskRunnerForThread(
+      content::BrowserThread::UI);
+}
+
 void HeadlessDevToolsClientImpl::DetachFromHost(
     content::DevToolsAgentHost* agent_host) {
   DCHECK_EQ(agent_host_, agent_host);
@@ -191,35 +196,47 @@
   if (!callback.callback_with_result.is_null()) {
     const base::DictionaryValue* result_dict;
     if (message_dict.GetDictionary("result", &result_dict)) {
-      browser_main_thread_->PostTask(
-          FROM_HERE,
-          base::BindOnce(
-              &HeadlessDevToolsClientImpl::DispatchMessageReplyWithResultTask,
-              weak_ptr_factory_.GetWeakPtr(), std::move(owning_message),
-              std::move(callback.callback_with_result), result_dict));
+      if (browser_main_thread_) {
+        browser_main_thread_->PostTask(
+            FROM_HERE,
+            base::BindOnce(
+                &HeadlessDevToolsClientImpl::DispatchMessageReplyWithResultTask,
+                weak_ptr_factory_.GetWeakPtr(), std::move(owning_message),
+                std::move(callback.callback_with_result), result_dict));
+      } else {
+        std::move(callback.callback_with_result).Run(*result_dict);
+      }
     } else if (message_dict.GetDictionary("error", &result_dict)) {
       auto null_value = std::make_unique<base::Value>();
       DLOG(ERROR) << "Error in method call result: " << *result_dict;
-      browser_main_thread_->PostTask(
-          FROM_HERE,
-          base::BindOnce(
-              &HeadlessDevToolsClientImpl::DispatchMessageReplyWithResultTask,
-              weak_ptr_factory_.GetWeakPtr(), std::move(null_value),
-              std::move(callback.callback_with_result), null_value.get()));
+      if (browser_main_thread_) {
+        browser_main_thread_->PostTask(
+            FROM_HERE,
+            base::BindOnce(
+                &HeadlessDevToolsClientImpl::DispatchMessageReplyWithResultTask,
+                weak_ptr_factory_.GetWeakPtr(), std::move(null_value),
+                std::move(callback.callback_with_result), null_value.get()));
+      } else {
+        std::move(callback.callback_with_result).Run(*null_value);
+      }
     } else {
       NOTREACHED() << "Reply has neither result nor error";
       return false;
     }
   } else if (!callback.callback.is_null()) {
-    browser_main_thread_->PostTask(
-        FROM_HERE,
-        base::BindOnce(
-            [](base::WeakPtr<HeadlessDevToolsClientImpl> self,
-               base::OnceClosure callback) {
-              if (self)
-                std::move(callback).Run();
-            },
-            weak_ptr_factory_.GetWeakPtr(), std::move(callback.callback)));
+    if (browser_main_thread_) {
+      browser_main_thread_->PostTask(
+          FROM_HERE,
+          base::BindOnce(
+              [](base::WeakPtr<HeadlessDevToolsClientImpl> self,
+                 base::OnceClosure callback) {
+                if (self)
+                  std::move(callback).Run();
+              },
+              weak_ptr_factory_.GetWeakPtr(), std::move(callback.callback)));
+    } else {
+      std::move(callback.callback).Run();
+    }
   }
   return true;
 }
diff --git a/headless/public/internal/headless_devtools_client_impl.h b/headless/public/internal/headless_devtools_client_impl.h
index 1298b04..b4177daa 100644
--- a/headless/public/internal/headless_devtools_client_impl.h
+++ b/headless/public/internal/headless_devtools_client_impl.h
@@ -130,6 +130,7 @@
   void DetachFromHost(content::DevToolsAgentHost* agent_host);
 
   void AttachToExternalHost(ExternalHost* external_host);
+  void InitBrowserMainThread();
 
   void SetTaskRunnerForTests(
       scoped_refptr<base::SequencedTaskRunner> task_runner) {
diff --git a/infra/config/branch/cq.cfg b/infra/config/branch/cq.cfg
index 7635e80..6f2c9be 100644
--- a/infra/config/branch/cq.cfg
+++ b/infra/config/branch/cq.cfg
@@ -35,6 +35,8 @@
       builders { name: "android_clang_dbg_recipe" }
       builders { name: "android_compile_dbg" }
       builders { name: "android_cronet" }
+      builders { name: "android-marshmallow-arm64-rel" }
+      builders { name: "cast_shell_android" }
       builders { name: "cast_shell_linux" }
       builders { name: "chromeos-amd64-generic-rel" }
       builders { name: "chromeos-daisy-rel" }
@@ -65,6 +67,7 @@
       builders { name: "linux-ozone-rel" }
       builders { name: "linux_chromium_compile_dbg_ng" }
       builders { name: "linux_chromium_asan_rel_ng" }
+      builders { name: "linux_chromium_headless_rel" }
       builders { name: "linux_chromium_rel_ng" }
       builders { name: "linux_chromium_tsan_rel_ng" }
       builders { name: "mac_chromium_compile_dbg_ng" }
@@ -75,39 +78,16 @@
     buckets {
       name: "master.tryserver.chromium.android"
       builders {
-        name: "android_n5x_swarming_rel"
+        name: "linux_android_rel_ng"
         equivalent_to {
           bucket: "luci.chromium.try"
-          builder: "android-marshmallow-arm64-rel"
-          percentage: 100
+          builder: "android-kitkat-arm-rel"
+          percentage: 10
         }
       }
-      builders {
-        name: "cast_shell_android"
-        equivalent_to { bucket: "luci.chromium.try" percentage: 100 }
-      }
-      builders {
-        name: "linux_android_rel_ng"
-        equivalent_to { bucket: "luci.chromium.try" percentage: 0 }
-      }
-    }
-    buckets {
-      name: "master.tryserver.chromium.chromiumos"
-      builders {
-        name: "linux-chromeos-compile-dbg"
-        experiment_percentage: 1
-      }
-      builders {
-        name: "linux-chromeos-dbg"
-        experiment_percentage: 1
-      }
     }
     buckets {
       name: "master.tryserver.chromium.linux"
-      builders {
-        name: "linux_chromium_headless_rel"
-        equivalent_to { bucket: "luci.chromium.try" percentage: 10 }
-      }
     }
     buckets {
       name: "master.tryserver.chromium.mac"
diff --git a/infra/config/global/cr-buildbucket.cfg b/infra/config/global/cr-buildbucket.cfg
index 0316a0b4..d2934425 100644
--- a/infra/config/global/cr-buildbucket.cfg
+++ b/infra/config/global/cr-buildbucket.cfg
@@ -1325,6 +1325,12 @@
       mixins: "win-gpu-fyi-ci"
       execution_timeout_secs: 10800  # 3h
     }
+
+    # Code coverage reports generation bots.
+    builders {
+      name: "linux-code-coverage-generation"
+      execution_timeout_secs: 72000  # 20h
+    }
     ############################################################################
     # This Section of luci.chromium.ci is managed by luci-check #
     # If builders require customization, please move it above this section
@@ -2100,7 +2106,7 @@
     }
     builders {
       name: "CrWinGomaStaging"
-      dimensions: "os:windows"
+      dimensions: "os:Windows-10"
       mixins: "goma-ci"
     }
     builders {
@@ -2115,12 +2121,13 @@
     }
     builders {
       name: "CrWinClangGomaGCEStaging"
-      dimensions: "os:unknown - vm343-m1"
+      dimensions: "os:Windows-10"
       mixins: "goma-ci"
     }
     builders {
       name: "Chromium Mac Goma GCE Staging"
-      dimensions: "os:Mac-10.12.5"
+      dimensions: "os:Mac-10.13"
+      dimensions: "cores:4"
       mixins: "goma-ci"
     }
     builders {
@@ -2130,7 +2137,8 @@
     }
     builders {
       name: "Chromium Mac Goma Staging"
-      dimensions: "os:Mac-10.12.2"
+      dimensions: "os:Mac-10.13"
+      dimensions: "cores:4"
       mixins: "goma-ci"
     }
     builders {
diff --git a/infra/config/global/luci-milo.cfg b/infra/config/global/luci-milo.cfg
index e53bad4..520c1fc 100644
--- a/infra/config/global/luci-milo.cfg
+++ b/infra/config/global/luci-milo.cfg
@@ -537,7 +537,6 @@
     short_name: "bld"
   }
   builders {
-    name: "buildbot/chromium.chromiumos/Linux ChromiumOS Full"
     name: "buildbucket/luci.chromium.ci/Linux ChromiumOS Full"
     category: "chromium.chromiumos|default"
     short_name: "ful"
@@ -548,7 +547,6 @@
     short_name: "rel"
   }
   builders {
-    name: "buildbot/chromium.chromiumos/linux-chromeos-dbg"
     name: "buildbucket/luci.chromium.ci/linux-chromeos-dbg"
     category: "chromium.chromiumos"
     short_name: "dbg"
@@ -1009,7 +1007,6 @@
   ref: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
-    name: "buildbot/chromium.chromiumos/Linux ChromiumOS Full"
     name: "buildbucket/luci.chromium.ci/Linux ChromiumOS Full"
     category: "default"
     short_name: "ful"
@@ -1020,7 +1017,6 @@
     short_name: "rel"
   }
   builders {
-    name: "buildbot/chromium.chromiumos/linux-chromeos-dbg"
     name: "buildbucket/luci.chromium.ci/linux-chromeos-dbg"
     category: "debug"
     short_name: "dbg"
@@ -1767,36 +1763,6 @@
     category: "android|cast"
     short_name: "bb"
   }
-  builders {
-    name: "buildbucket/luci.chromium.try/cast_shell_android"
-    category: "android|cast"
-    short_name: "ci"
-  }
-  builders {
-    name: "buildbot/tryserver.chromium.android/cast_shell_android"
-    category: "android|cast"
-    short_name: "bb"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.ci/linux-chromeos-dbg"
-    category: "cros|dbg"
-    short_name: "ᕕ(ᐛ)ᕗ"
-  }
-  builders {
-    name: "buildbot/chromium.chromiumos/linux-chromeos-dbg"
-    category: "cros|dbg"
-    short_name: "(ಥ_ಥ)"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.ci/Linux ChromiumOS Full"
-    category: "cros|ful"
-    short_name: "ᕕ(ᐛ)ᕗ"
-  }
-  builders {
-    name: "buildbot/chromium.chromiumos/Linux ChromiumOS Full"
-    category: "cros|ful"
-    short_name: "(ಥ_ಥ)"
-  }
 }
 
 consoles {
@@ -2475,6 +2441,11 @@
     category: "closure_compilation"
   }
   builders {
+    name: "buildbucket/luci.chromium.ci/linux-code-coverage-generation"
+    category: "code_coverage"
+    short_name: "linux"
+  }
+  builders {
     name: "buildbot/chromium.fyi/ios-simulator-cronet"
     name: "buildbucket/luci.chromium.ci/ios-simulator-cronet"
     category: "cronet"
@@ -4220,11 +4191,9 @@
     name: "buildbucket/luci.chromium.try/chromeos-daisy-rel"
   }
   builders {
-    name: "buildbot/tryserver.chromium.chromiumos/linux-chromeos-compile-dbg"
     name: "buildbucket/luci.chromium.try/linux-chromeos-compile-dbg"
   }
   builders {
-    name: "buildbot/tryserver.chromium.chromiumos/linux-chromeos-dbg"
     name: "buildbucket/luci.chromium.try/linux-chromeos-dbg"
   }
   builders {
diff --git a/infra/config/global/luci-scheduler.cfg b/infra/config/global/luci-scheduler.cfg
index 89afbe39..5b3a59e5 100644
--- a/infra/config/global/luci-scheduler.cfg
+++ b/infra/config/global/luci-scheduler.cfg
@@ -160,6 +160,7 @@
   triggers: "linux-chromeos-dbg"
   triggers: "linux-chromeos-rel"
   triggers: "linux-chromium-tests-staging-builder"
+  triggers: "linux-code-coverage-generation"
   triggers: "linux-gcc-rel"
   triggers: "linux-jumbo-rel"
   triggers: "linux-ozone-rel"
@@ -1056,6 +1057,16 @@
 }
 
 job {
+  id: "linux-code-coverage-generation"
+  acl_sets: "default"
+  buildbucket: {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.chromium.ci"
+    builder: "linux-code-coverage-generation"
+  }
+}
+
+job {
   id: "linux-gcc-rel"
   acl_sets: "default"
   buildbucket: {
diff --git a/ios/chrome/browser/ui/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view_controller.mm
index c666581..9b8605f 100644
--- a/ios/chrome/browser/ui/browser_view_controller.mm
+++ b/ios/chrome/browser/ui/browser_view_controller.mm
@@ -1384,7 +1384,9 @@
     fullscreen::features::ViewportAdjustmentExperiment viewportExperiment =
         fullscreen::features::GetActiveViewportExperiment();
     return viewportExperiment ==
-           fullscreen::features::ViewportAdjustmentExperiment::SAFE_AREA;
+               fullscreen::features::ViewportAdjustmentExperiment::SAFE_AREA ||
+           viewportExperiment ==
+               fullscreen::features::ViewportAdjustmentExperiment::HYBRID;
   }
   return NO;
 }
@@ -2139,6 +2141,10 @@
     self.tabStripCoordinator.presentationProvider = self;
     self.tabStripCoordinator.animationWaitDuration =
         kLegacyFullscreenControllerToolbarAnimationDuration;
+
+    UILayoutGuide* guide =
+        [[NamedGuide alloc] initWithName:kTabStripTabSwitcherGuide];
+    [self.view addLayoutGuide:guide];
     [self.tabStripCoordinator start];
   }
 
@@ -4165,6 +4171,11 @@
       AlignValueToPixel(progress * [self secondaryToolbarHeightWithInset]);
 
   if (self.usesSafeInsetsForViewportAdjustments) {
+    if (fullscreen::features::GetActiveViewportExperiment() ==
+        fullscreen::features::ViewportAdjustmentExperiment::HYBRID) {
+      [self updateWebViewFrameForBottomOffset:bottom];
+    }
+
     [self updateBrowserSafeAreaForTopToolbarHeight:top
                                bottomToolbarHeight:bottom];
   } else {
@@ -4173,6 +4184,27 @@
   }
 }
 
+// Updates the frame of the web view so that it's |offset| from the bottom of
+// the container view.
+- (void)updateWebViewFrameForBottomOffset:(CGFloat)offset {
+  if (!self.currentWebState)
+    return;
+
+  // Move the frame of the container view such that the bottom is aligned with
+  // the top of the bottom toolbar.
+  id<CRWWebViewProxy> webViewProxy = self.currentWebState->GetWebViewProxy();
+  CGRect webViewFrame = webViewProxy.frame;
+  CGFloat oldOriginY = CGRectGetMinY(webViewFrame);
+  webViewProxy.contentOffset = CGPointMake(0.0, -offset);
+  // Update the contentOffset so that the scroll position is maintained
+  // relative to the screen.
+  CRWWebViewScrollViewProxy* scrollViewProxy = webViewProxy.scrollViewProxy;
+  CGFloat originDelta = CGRectGetMinY(webViewProxy.frame) - oldOriginY;
+  CGPoint contentOffset = scrollViewProxy.contentOffset;
+  contentOffset.y += originDelta;
+  scrollViewProxy.contentOffset = contentOffset;
+}
+
 // Updates the web view's viewport by changing the safe area insets.
 - (void)updateBrowserSafeAreaForTopToolbarHeight:(CGFloat)topToolbarHeight
                              bottomToolbarHeight:(CGFloat)bottomToolbarHeight {
@@ -4180,7 +4212,9 @@
       _browserContainerCoordinator.viewController;
   if (@available(iOS 11, *)) {
     containerViewController.additionalSafeAreaInsets = UIEdgeInsetsMake(
-        topToolbarHeight - self.view.safeAreaInsets.top, 0, 0, 0);
+        topToolbarHeight - self.view.safeAreaInsets.top -
+            self.currentWebState->GetWebViewProxy().contentOffset.y,
+        0, 0, 0);
   }
 }
 
diff --git a/ios/chrome/browser/ui/commands/popup_menu_commands.h b/ios/chrome/browser/ui/commands/popup_menu_commands.h
index 15ee72cf..c67b40b5 100644
--- a/ios/chrome/browser/ui/commands/popup_menu_commands.h
+++ b/ios/chrome/browser/ui/commands/popup_menu_commands.h
@@ -24,6 +24,8 @@
 - (void)showToolsMenuPopup;
 // Shows the popup for the tab grid button.
 - (void)showTabGridButtonPopup;
+// Shows the popup for the tab grid button in the tab strip.
+- (void)showTabStripTabGridButtonPopup;
 // Shows the popup for the search button.
 - (void)showSearchButtonPopup;
 // Dismisses the currently presented popup.
diff --git a/ios/chrome/browser/ui/fullscreen/fullscreen_features.h b/ios/chrome/browser/ui/fullscreen/fullscreen_features.h
index 560dff9..e9da9cb6 100644
--- a/ios/chrome/browser/ui/fullscreen/fullscreen_features.h
+++ b/ios/chrome/browser/ui/fullscreen/fullscreen_features.h
@@ -17,15 +17,17 @@
 // The available viewport adjustment experiments.  The choices in this array
 // correspond with the ViewportAdjustmentExperiment values.
 extern const flags_ui::FeatureEntry::Choice
-    kViewportAdjustmentExperimentChoices[3];
+    kViewportAdjustmentExperimentChoices[4];
 
 // Enum type describing viewport adjustment experiments.
 enum class ViewportAdjustmentExperiment : short {
   FRAME = 0,      // Adjust the viewport by resizing the entire WKWebView.
   CONTENT_INSET,  // Adjust the viewport by updating the WKWebView's scroll view
                   // contentInset.
-  SAFE_AREA  // Adjust the viewport by updating the safe area of the browser
-             // container view.
+  SAFE_AREA,  // Adjust the viewport by updating the safe area of the browser
+              // container view.
+  HYBRID,  // Translates the web view up and down and updates the viewport using
+           // safe area insets.
 };
 
 // Convenience method for retrieving the active viewport adjustment experiment
diff --git a/ios/chrome/browser/ui/fullscreen/fullscreen_features.mm b/ios/chrome/browser/ui/fullscreen/fullscreen_features.mm
index 721de4c..dae133c 100644
--- a/ios/chrome/browser/ui/fullscreen/fullscreen_features.mm
+++ b/ios/chrome/browser/ui/fullscreen/fullscreen_features.mm
@@ -15,6 +15,7 @@
 // choices.
 const char kContentInsetChoiceValue[] = "content-inset";
 const char kSafeAreaChoiceValue[] = "safe-area";
+const char kHybridChoiceValue[] = "hybrid";
 }
 
 namespace fullscreen {
@@ -29,6 +30,8 @@
      "content-inset"},
     {"Update Safe Area", kViewportAdjustmentExperimentCommandLineSwitch,
      "safe-area"},
+    {"Use Hybrid Implementation",
+     kViewportAdjustmentExperimentCommandLineSwitch, "hybrid"},
 };
 
 ViewportAdjustmentExperiment GetActiveViewportExperiment() {
@@ -41,6 +44,8 @@
       return ViewportAdjustmentExperiment::CONTENT_INSET;
     if (viewport_experiment == std::string(kSafeAreaChoiceValue))
       return ViewportAdjustmentExperiment::SAFE_AREA;
+    if (viewport_experiment == std::string(kHybridChoiceValue))
+      return ViewportAdjustmentExperiment::HYBRID;
   }
   return ViewportAdjustmentExperiment::FRAME;
 }
diff --git a/ios/chrome/browser/ui/popup_menu/popup_menu_coordinator.mm b/ios/chrome/browser/ui/popup_menu/popup_menu_coordinator.mm
index 976bc37a..cecd924 100644
--- a/ios/chrome/browser/ui/popup_menu/popup_menu_coordinator.mm
+++ b/ios/chrome/browser/ui/popup_menu/popup_menu_coordinator.mm
@@ -115,6 +115,12 @@
             fromNamedGuide:kSearchButtonGuide];
 }
 
+- (void)showTabStripTabGridButtonPopup {
+  base::RecordAction(base::UserMetricsAction("MobileTabStripShowTabGridMenu"));
+  [self presentPopupOfType:PopupMenuTypeTabStripTabGrid
+            fromNamedGuide:kTabStripTabSwitcherGuide];
+}
+
 - (void)dismissPopupMenuAnimated:(BOOL)animated {
   [self.UIUpdater updateUIForMenuDismissed];
   [self.presenter dismissAnimated:animated];
diff --git a/ios/chrome/browser/ui/popup_menu/popup_menu_mediator.mm b/ios/chrome/browser/ui/popup_menu/popup_menu_mediator.mm
index 5ce9045..3173071e 100644
--- a/ios/chrome/browser/ui/popup_menu/popup_menu_mediator.mm
+++ b/ios/chrome/browser/ui/popup_menu/popup_menu_mediator.mm
@@ -366,6 +366,9 @@
       case PopupMenuTypeTabGrid:
         [self createTabGridMenuItems];
         break;
+      case PopupMenuTypeTabStripTabGrid:
+        [self createTabGridMenuItems];
+        break;
       case PopupMenuTypeSearch:
         [self createSearchMenuItems];
         break;
diff --git a/ios/chrome/browser/ui/popup_menu/public/popup_menu_ui_updating.h b/ios/chrome/browser/ui/popup_menu/public/popup_menu_ui_updating.h
index 6931c6ed..391e3b2 100644
--- a/ios/chrome/browser/ui/popup_menu/public/popup_menu_ui_updating.h
+++ b/ios/chrome/browser/ui/popup_menu/public/popup_menu_ui_updating.h
@@ -14,6 +14,7 @@
   PopupMenuTypeNavigationForward,
   PopupMenuTypeTabGrid,
   PopupMenuTypeSearch,
+  PopupMenuTypeTabStripTabGrid,
 };
 
 // Protocol for a class updating the UI to reflect the presentation of a popup
diff --git a/ios/chrome/browser/ui/tab_grid/grid/grid_layout.mm b/ios/chrome/browser/ui/tab_grid/grid/grid_layout.mm
index 4726666..ed37a78 100644
--- a/ios/chrome/browser/ui/tab_grid/grid/grid_layout.mm
+++ b/ios/chrome/browser/ui/tab_grid/grid/grid_layout.mm
@@ -12,10 +12,12 @@
 
 @interface GridLayout ()
 @property(nonatomic, strong) NSArray<NSIndexPath*>* indexPathsOfDeletingItems;
+@property(nonatomic, strong) NSArray<NSIndexPath*>* indexPathsOfInsertingItems;
 @end
 
 @implementation GridLayout
 @synthesize indexPathsOfDeletingItems = _indexPathsOfDeletingItems;
+@synthesize indexPathsOfInsertingItems = _indexPathsOfInsertingItems;
 
 #pragma mark - UICollectionViewLayout
 
@@ -66,20 +68,68 @@
 
 - (void)prepareForCollectionViewUpdates:
     (NSArray<UICollectionViewUpdateItem*>*)updateItems {
+  // Track which items in this update are explicitly being deleted or inserted.
   NSMutableArray<NSIndexPath*>* deletingItems =
       [NSMutableArray arrayWithCapacity:updateItems.count];
+  NSMutableArray<NSIndexPath*>* insertingItems =
+      [NSMutableArray arrayWithCapacity:updateItems.count];
   for (UICollectionViewUpdateItem* item in updateItems) {
-    if (item.updateAction == UICollectionUpdateActionDelete) {
-      [deletingItems addObject:item.indexPathBeforeUpdate];
+    switch (item.updateAction) {
+      case UICollectionUpdateActionDelete:
+        [deletingItems addObject:item.indexPathBeforeUpdate];
+        break;
+      case UICollectionUpdateActionInsert:
+        [insertingItems addObject:item.indexPathAfterUpdate];
+        break;
+      default:
+        break;
     }
   }
   self.indexPathsOfDeletingItems = [deletingItems copy];
+  self.indexPathsOfInsertingItems = [insertingItems copy];
+}
+
+- (UICollectionViewLayoutAttributes*)
+finalLayoutAttributesForDisappearingItemAtIndexPath:
+    (NSIndexPath*)itemIndexPath {
+  // Note that this method is called for any item whose index path changing from
+  // |itemIndexPath|, which includes any items that were in the layout and whose
+  // index path is changing. For an item whose index path is changing, this
+  // method is called before
+  // -initialLayoutAttributesForAppearingItemAtIndexPath:
+  UICollectionViewLayoutAttributes* attributes =
+      [super finalLayoutAttributesForDisappearingItemAtIndexPath:itemIndexPath];
+  // Disappearing items that aren't being deleted just use the default
+  // attributes.
+  if (![self.indexPathsOfDeletingItems containsObject:itemIndexPath]) {
+    return attributes;
+  }
+  // Cells being deleted fade out, are scaled down, and drop downwards slightly.
+  attributes.alpha = 0.0;
+  // Scaled down to 60%.
+  CGAffineTransform transform =
+      CGAffineTransformScale(attributes.transform, /*sx=*/0.6, /*sy=*/0.6);
+  // Translated down (positive-y direction) by 50% of the cell cell size.
+  transform = CGAffineTransformTranslate(transform, /*tx=*/0,
+                                         /*ty=*/attributes.size.height * 0.5);
+  attributes.transform = transform;
+  return attributes;
 }
 
 - (UICollectionViewLayoutAttributes*)
 initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath*)itemIndexPath {
+  // Note that this method is called for any item whose index path is becoming
+  // |itemIndexPath|, which includes any items that were in the layout but whose
+  // index path is changing. For an item whose index path is changing, this
+  // method is called after
+  // -finalLayoutAttributesForDisappearingItemAtIndexPath:
   UICollectionViewLayoutAttributes* attributes =
       [super initialLayoutAttributesForAppearingItemAtIndexPath:itemIndexPath];
+  // Appearing items that aren't being inserted just use the default
+  // attributes.
+  if (![self.indexPathsOfInsertingItems containsObject:itemIndexPath]) {
+    return attributes;
+  }
   // TODO(crbug.com/820410) : Polish the animation, and put constants where they
   // belong.
   // Cells being inserted start faded out, scaled down, and drop downwards
@@ -93,30 +143,9 @@
   return attributes;
 }
 
-- (UICollectionViewLayoutAttributes*)
-finalLayoutAttributesForDisappearingItemAtIndexPath:
-    (NSIndexPath*)itemIndexPath {
-  UICollectionViewLayoutAttributes* attributes =
-      [super finalLayoutAttributesForDisappearingItemAtIndexPath:itemIndexPath];
-  // Disappearing items that aren't being deleted just use the default
-  // attributes.
-  if (![self.indexPathsOfDeletingItems containsObject:itemIndexPath]) {
-    return attributes;
-  }
-  // Cells being deleted fade out, are scaled down, and drop downwards slightly.
-  attributes.alpha = 0.0;
-  // Scaled down to 60%.
-  CGAffineTransform transform =
-      CGAffineTransformScale(attributes.transform, 0.6, 0.6);
-  // Translated down (positive-y direction) by 50% of the cell cell size.
-  transform =
-      CGAffineTransformTranslate(transform, 0, attributes.size.height * 0.5);
-  attributes.transform = transform;
-  return attributes;
-}
-
 - (void)finalizeCollectionViewUpdates {
   self.indexPathsOfDeletingItems = @[];
+  self.indexPathsOfInsertingItems = @[];
 }
 
 @end
diff --git a/ios/chrome/browser/ui/tab_grid/grid/grid_view_controller.mm b/ios/chrome/browser/ui/tab_grid/grid/grid_view_controller.mm
index 0b94a098..b21d392b 100644
--- a/ios/chrome/browser/ui/tab_grid/grid/grid_view_controller.mm
+++ b/ios/chrome/browser/ui/tab_grid/grid/grid_view_controller.mm
@@ -46,6 +46,11 @@
 // The gesture recognizer used for interactive item reordering.
 @property(nonatomic, strong)
     UILongPressGestureRecognizer* itemReorderRecognizer;
+// The touch location of an interactively reordering item, expressed as an
+// offset from its center. This is subtracted from the location that is passed
+// to -updateInteractiveMovementTargetPosition: so that the moving item will
+// keep them same relative location to the user's touch.
+@property(nonatomic, assign) CGPoint itemReorderTouchPoint;
 // Animator to show or hide the empty state.
 @property(nonatomic, strong) UIViewPropertyAnimator* emptyStateAnimator;
 @end
@@ -62,6 +67,7 @@
 @synthesize items = _items;
 @synthesize selectedItemID = _selectedItemID;
 @synthesize itemReorderRecognizer = _itemReorderRecognizer;
+@synthesize itemReorderTouchPoint = _itemReorderTouchPoint;
 @synthesize emptyStateAnimator = _emptyStateAnimator;
 
 - (instancetype)init {
@@ -478,16 +484,30 @@
           [self.collectionView beginInteractiveMovementForItemAtIndexPath:path];
       if (!moving) {
         gesture.enabled = NO;
+      } else {
+        CGPoint cellCenter =
+            [self.collectionView cellForItemAtIndexPath:path].center;
+        self.itemReorderTouchPoint =
+            CGPointMake(location.x - cellCenter.x, location.y - cellCenter.y);
       }
       break;
     }
-    case UIGestureRecognizerStateChanged:
-      [self.collectionView updateInteractiveMovementTargetPosition:location];
+    case UIGestureRecognizerStateChanged: {
+      // Offset the location so it's the touch point that moves, not the cell
+      // center.
+      CGPoint targetLocation =
+          CGPointMake(location.x - self.itemReorderTouchPoint.x,
+                      location.y - self.itemReorderTouchPoint.y);
+      [self.collectionView
+          updateInteractiveMovementTargetPosition:targetLocation];
       break;
+    }
     case UIGestureRecognizerStateEnded:
+      self.itemReorderTouchPoint = CGPointZero;
       [self.collectionView endInteractiveMovement];
       break;
     case UIGestureRecognizerStateCancelled:
+      self.itemReorderTouchPoint = CGPointZero;
       [self.collectionView cancelInteractiveMovement];
       // Re-enable cancelled gesture.
       gesture.enabled = YES;
diff --git a/ios/chrome/browser/ui/tabs/tab_strip_controller.mm b/ios/chrome/browser/ui/tabs/tab_strip_controller.mm
index 6d0488d..876134a8 100644
--- a/ios/chrome/browser/ui/tabs/tab_strip_controller.mm
+++ b/ios/chrome/browser/ui/tabs/tab_strip_controller.mm
@@ -44,6 +44,7 @@
 #include "ios/chrome/browser/ui/tabs/target_frame_cache.h"
 #include "ios/chrome/browser/ui/ui_util.h"
 #import "ios/chrome/browser/ui/uikit_ui_util.h"
+#import "ios/chrome/browser/ui/util/named_guide.h"
 #import "ios/chrome/browser/ui/util/snapshot_util.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #include "ios/chrome/grit/ios_strings.h"
@@ -1151,6 +1152,7 @@
         [TabStripCenteredButton buttonWithType:UIButtonTypeCustom];
     if (UseRTLLayout())
       [_tabSwitcherButton setTransform:CGAffineTransformMakeScale(-1, 1)];
+    [self addTabSwitcherLongPressGesture];
   } else {
     _tabSwitcherButton = [UIButton buttonWithType:UIButtonTypeCustom];
   }
@@ -1182,6 +1184,26 @@
   [self updateScrollViewFrameForTabSwitcherButton];
 }
 
+// Adds a LongPressGesture to the |_tabSwitcherButton|, with target on
+// -|handleTabSwitcherLongPress:|.
+- (void)addTabSwitcherLongPressGesture {
+  UILongPressGestureRecognizer* longPress =
+      [[UILongPressGestureRecognizer alloc]
+          initWithTarget:self
+                  action:@selector(handleTabSwitcherLongPress:)];
+  [_tabSwitcherButton addGestureRecognizer:longPress];
+}
+
+// Handles the long press on the |_tabSwitcherButton|.
+- (void)handleTabSwitcherLongPress:(UILongPressGestureRecognizer*)gesture {
+  if (gesture.state != UIGestureRecognizerStateBegan)
+    return;
+  NamedGuide* tabSwitcherGuide =
+      [NamedGuide guideWithName:kTabStripTabSwitcherGuide view:self.view];
+  tabSwitcherGuide.constrainedView = _tabSwitcherButton;
+  [self.dispatcher showTabStripTabGridButtonPopup];
+}
+
 - (void)shiftTabStripSubviews:(CGPoint)oldContentOffset {
   CGFloat dx = [_tabStripView contentOffset].x - oldContentOffset.x;
   for (UIView* view in [_tabStripView subviews]) {
diff --git a/ios/chrome/browser/ui/toolbar/adaptive/adaptive_toolbar_view_controller.mm b/ios/chrome/browser/ui/toolbar/adaptive/adaptive_toolbar_view_controller.mm
index 495a68ac..243f5fd 100644
--- a/ios/chrome/browser/ui/toolbar/adaptive/adaptive_toolbar_view_controller.mm
+++ b/ios/chrome/browser/ui/toolbar/adaptive/adaptive_toolbar_view_controller.mm
@@ -194,6 +194,9 @@
     case PopupMenuTypeToolsMenu:
       selectedButton = self.view.toolsMenuButton;
       break;
+    case PopupMenuTypeTabStripTabGrid:
+      // ignore
+      break;
   }
 
   selectedButton.spotlighted = YES;
diff --git a/ios/chrome/browser/ui/util/layout_guide_names.h b/ios/chrome/browser/ui/util/layout_guide_names.h
index b629d8e..5ffbcbd 100644
--- a/ios/chrome/browser/ui/util/layout_guide_names.h
+++ b/ios/chrome/browser/ui/util/layout_guide_names.h
@@ -28,6 +28,9 @@
 // A guide that is constrained to match the frame of the TabSwitcher button's
 // image.
 extern GuideName* const kTabSwitcherGuide;
+// A guide that is constrained to match the frame of the TabStrip's TabSwitcher
+// button's image.
+extern GuideName* const kTabStripTabSwitcherGuide;
 // A guide that is constrained to match the frame of the ToolsMenu button.
 extern GuideName* const kToolsMenuGuide;
 // A guide that is constrained to match the frame of the last-tapped voice
diff --git a/ios/chrome/browser/ui/util/layout_guide_names.mm b/ios/chrome/browser/ui/util/layout_guide_names.mm
index 2e67628..d527da3 100644
--- a/ios/chrome/browser/ui/util/layout_guide_names.mm
+++ b/ios/chrome/browser/ui/util/layout_guide_names.mm
@@ -16,5 +16,6 @@
 GuideName* const kForwardButtonGuide = @"kForwardButtonGuide";
 GuideName* const kSearchButtonGuide = @"kSearchButtonGuide";
 GuideName* const kTabSwitcherGuide = @"kTabSwitcherGuide";
+GuideName* const kTabStripTabSwitcherGuide = @"kTabStripTabSwitcherGuide";
 GuideName* const kToolsMenuGuide = @"kToolsMenuGuide";
 GuideName* const kVoiceSearchButtonGuide = @"kVoiceSearchButtonGuide";
diff --git a/ios/chrome/browser/web/forms_egtest.mm b/ios/chrome/browser/web/forms_egtest.mm
index 3fc8912..625fbba 100644
--- a/ios/chrome/browser/web/forms_egtest.mm
+++ b/ios/chrome/browser/web/forms_egtest.mm
@@ -401,11 +401,6 @@
 // keyboard navigates to the correct URL and the back button works as expected
 // afterwards.
 - (void)testPostFormEntryWithKeyboard {
-// TODO(crbug.com/704618): Re-enable this test on devices.
-#if !TARGET_IPHONE_SIMULATOR
-  EARL_GREY_TEST_DISABLED(@"Test disabled on device.");
-#endif
-
   [self setUpFormTestSimpleHttpServer];
   const GURL destinationURL = GetDestinationUrl();
 
diff --git a/ios/net/cookies/cookie_store_ios.mm b/ios/net/cookies/cookie_store_ios.mm
index 052ca952..f7a50461 100644
--- a/ios/net/cookies/cookie_store_ios.mm
+++ b/ios/net/cookies/cookie_store_ios.mm
@@ -556,13 +556,18 @@
       system_store_->GetWeakPtr();
   system_store_->GetAllCookiesAsync(
       base::BindBlockArc(^(NSArray<NSHTTPCookie*>* cookies) {
+        if (!weak_system_store) {
+          if (!shared_callback.is_null())
+            std::move(shared_callback).Run(0);
+          return;
+        }
         int to_delete_count = 0;
         for (NSHTTPCookie* cookie in cookies) {
           base::Time creation_time =
               weak_system_store->GetCookieCreationTime(cookie);
           CanonicalCookie cc =
               CanonicalCookieFromSystemCookie(cookie, creation_time);
-          if (weak_system_store && shared_delete_info.Matches(cc)) {
+          if (shared_delete_info.Matches(cc)) {
             weak_system_store->DeleteCookieAsync(
                 cookie, SystemCookieStore::SystemCookieCallback());
             to_delete_count++;
diff --git a/ios/web/public/web_state/ui/crw_content_view.h b/ios/web/public/web_state/ui/crw_content_view.h
index 17f4dac..3e8a092 100644
--- a/ios/web/public/web_state/ui/crw_content_view.h
+++ b/ios/web/public/web_state/ui/crw_content_view.h
@@ -16,6 +16,11 @@
 // be a subview of the CRWContentView.
 @property(nonatomic, strong, readonly) UIScrollView* scrollView;
 
+// Adds an offset to the content view.  This updates the location of the scroll
+// view relative to the receiver, and does not update the scroll view's content
+// offset.
+@property(nonatomic, assign) CGPoint contentOffset;
+
 // Adds an inset to content view. Implementations of this protocol can
 // implement this method using UIScrollView.contentInset (where applicable) or
 // via resizing a subview's frame. Can be used as a workaround for WKWebView
diff --git a/ios/web/public/web_state/ui/crw_web_view_proxy.h b/ios/web/public/web_state/ui/crw_web_view_proxy.h
index ae601ce..c1dd7cb 100644
--- a/ios/web/public/web_state/ui/crw_web_view_proxy.h
+++ b/ios/web/public/web_state/ui/crw_web_view_proxy.h
@@ -20,6 +20,9 @@
 // The web view's frame rectangle.
 @property(readonly, assign) CGRect frame;
 
+// Adds an offset to the scrollable content's frame.
+@property(nonatomic, assign) CGPoint contentOffset;
+
 // Adds an inset to the content view. Implementations of this protocol can
 // implement this method using UIScrollView.contentInset (where applicable) or
 // via resizing a subview's frame. Changing this property may impact performance
diff --git a/ios/web/web_state/ui/crw_generic_content_view.mm b/ios/web/web_state/ui/crw_generic_content_view.mm
index c716a7c..02c14d15 100644
--- a/ios/web/web_state/ui/crw_generic_content_view.mm
+++ b/ios/web/web_state/ui/crw_generic_content_view.mm
@@ -22,6 +22,7 @@
 @end
 
 @implementation CRWGenericContentView
+@synthesize contentOffset = _contentOffset;
 
 - (instancetype)initWithView:(UIView*)view {
   self = [super initWithFrame:CGRectZero];
diff --git a/ios/web/web_state/ui/crw_web_view_content_view.mm b/ios/web/web_state/ui/crw_web_view_content_view.mm
index 50798d6..b2a231e0d 100644
--- a/ios/web/web_state/ui/crw_web_view_content_view.mm
+++ b/ios/web/web_state/ui/crw_web_view_content_view.mm
@@ -34,7 +34,7 @@
 @end
 
 @implementation CRWWebViewContentView
-
+@synthesize contentOffset = _contentOffset;
 @synthesize contentInset = _contentInset;
 @synthesize shouldUseViewContentInset = _shouldUseViewContentInset;
 @synthesize scrollView = _scrollView;
@@ -109,6 +109,13 @@
   return YES;
 }
 
+- (void)setContentOffset:(CGPoint)contentOffset {
+  if (CGPointEqualToPoint(_contentOffset, contentOffset))
+    return;
+  _contentOffset = contentOffset;
+  [self updateWebViewFrame];
+}
+
 - (UIEdgeInsets)contentInset {
   return self.shouldUseViewContentInset ? [_scrollView contentInset]
                                         : _contentInset;
@@ -155,13 +162,10 @@
 #pragma mark Private methods
 
 - (void)updateWebViewFrame {
-  CGRect webViewFrame = self.bounds;
-  webViewFrame.size.height -= _contentInset.top + _contentInset.bottom;
-  webViewFrame.origin.y += _contentInset.top;
-  webViewFrame.size.width -= _contentInset.right + _contentInset.left;
-  webViewFrame.origin.x += _contentInset.left;
-
-  self.webView.frame = webViewFrame;
+  CGRect frame = self.bounds;
+  frame = UIEdgeInsetsInsetRect(frame, _contentInset);
+  frame = CGRectOffset(frame, _contentOffset.x, _contentOffset.y);
+  self.webView.frame = frame;
 }
 
 @end
diff --git a/ios/web/web_state/ui/crw_web_view_proxy_impl.mm b/ios/web/web_state/ui/crw_web_view_proxy_impl.mm
index 981d0f8..54c24c03 100644
--- a/ios/web/web_state/ui/crw_web_view_proxy_impl.mm
+++ b/ios/web/web_state/ui/crw_web_view_proxy_impl.mm
@@ -98,6 +98,14 @@
   return [_contentView frame];
 }
 
+- (CGPoint)contentOffset {
+  return _contentView.contentOffset;
+}
+
+- (void)setContentOffset:(CGPoint)contentOffset {
+  _contentView.contentOffset = contentOffset;
+}
+
 - (UIEdgeInsets)contentInset {
   return _contentView.contentInset;
 }
diff --git a/ios/web/web_state/ui/crw_web_view_proxy_impl_unittest.mm b/ios/web/web_state/ui/crw_web_view_proxy_impl_unittest.mm
index 7895107..cff8ff1 100644
--- a/ios/web/web_state/ui/crw_web_view_proxy_impl_unittest.mm
+++ b/ios/web/web_state/ui/crw_web_view_proxy_impl_unittest.mm
@@ -21,6 +21,7 @@
 @end
 
 @implementation CRWFakeContentView
+@synthesize contentOffset = _contentOffset;
 @synthesize contentInset = _contentInset;
 @synthesize scrollView = _scrollView;
 @synthesize shouldUseViewContentInset = _shouldUseViewContentInset;
diff --git a/ipc/ipc_mojo_bootstrap.cc b/ipc/ipc_mojo_bootstrap.cc
index 27ad4adf..96093eb 100644
--- a/ipc/ipc_mojo_bootstrap.cc
+++ b/ipc/ipc_mojo_bootstrap.cc
@@ -640,11 +640,12 @@
           base::AutoLock lock(outgoing_messages_lock_);
           outgoing_messages_.emplace_back(std::move(*message));
 
-          // TODO(https://crbug.com/813045): Remove this. Typically this queue
-          // won't exceed something like 50 messages even on slow devices. If
-          // the massive leaks we see can be attributed to this queue, it would
-          // have to be quite a bit larger.
-          CHECK_LE(outgoing_messages_.size(), 100000u);
+          // TODO(https://crbug.com/813045): Change this to a DCHECK. Typically
+          // this queue won't exceed something like 50 messages even on slow
+          // devices - higher numbers probably indicate that IPC messages are
+          // leaked.
+          CHECK_LE(outgoing_messages_.size(),
+                   MojoBootstrap::kMaxOutgoingMessagesSizeForTesting);
         }
         return true;
       }
diff --git a/ipc/ipc_mojo_bootstrap.h b/ipc/ipc_mojo_bootstrap.h
index c2778b6..5aba8a3 100644
--- a/ipc/ipc_mojo_bootstrap.h
+++ b/ipc/ipc_mojo_bootstrap.h
@@ -56,6 +56,8 @@
   virtual void Flush() = 0;
 
   virtual mojo::AssociatedGroup* GetAssociatedGroup() = 0;
+
+  enum { kMaxOutgoingMessagesSizeForTesting = 100000u };
 };
 
 }  // namespace IPC
diff --git a/media/base/subsample_entry.h b/media/base/subsample_entry.h
index 48f8ea7..f4117f6 100644
--- a/media/base/subsample_entry.h
+++ b/media/base/subsample_entry.h
@@ -5,6 +5,7 @@
 #ifndef MEDIA_BASE_SUBSAMPLE_ENTRY_H_
 #define MEDIA_BASE_SUBSAMPLE_ENTRY_H_
 
+#include <stddef.h>
 #include <stdint.h>
 
 #include <vector>
diff --git a/media/blink/webaudiosourceprovider_impl.cc b/media/blink/webaudiosourceprovider_impl.cc
index cacc71c..644e9d51 100644
--- a/media/blink/webaudiosourceprovider_impl.cc
+++ b/media/blink/webaudiosourceprovider_impl.cc
@@ -4,6 +4,7 @@
 
 #include "media/blink/webaudiosourceprovider_impl.h"
 
+#include <atomic>
 #include <utility>
 #include <vector>
 
@@ -35,8 +36,7 @@
 class AutoTryLock {
  public:
   explicit AutoTryLock(base::Lock& lock)
-      : lock_(lock),
-        acquired_(lock_.Try()) {}
+      : lock_(lock), acquired_(lock_.Try()) {}
 
   bool locked() const { return acquired_; }
 
@@ -61,7 +61,7 @@
 class WebAudioSourceProviderImpl::TeeFilter
     : public AudioRendererSink::RenderCallback {
  public:
-  TeeFilter() : renderer_(nullptr), channels_(0), sample_rate_(0) {}
+  TeeFilter() : copy_required_(false) {}
   ~TeeFilter() override = default;
 
   void Initialize(AudioRendererSink::RenderCallback* renderer,
@@ -82,18 +82,25 @@
              AudioBus* dest) override;
   void OnRenderError() override;
 
-  bool IsInitialized() const { return !!renderer_; }
+  bool initialized() const { return !!renderer_; }
   int channels() const { return channels_; }
   int sample_rate() const { return sample_rate_; }
-  void set_copy_audio_bus_callback(const CopyAudioCB& callback) {
-    copy_audio_bus_callback_ = callback;
+
+  void SetCopyAudioCallback(CopyAudioCB callback) {
+    copy_required_ = !callback.is_null();
+    base::AutoLock auto_lock(copy_lock_);
+    copy_audio_bus_callback_ = std::move(callback);
   }
 
  private:
-  AudioRendererSink::RenderCallback* renderer_;
-  int channels_;
-  int sample_rate_;
+  AudioRendererSink::RenderCallback* renderer_ = nullptr;
+  int channels_ = 0;
+  int sample_rate_ = 0;
 
+  // The vast majority of the time we're operating in passthrough mode. So only
+  // acquire a lock to read |copy_audio_bus_callback_| when necessary.
+  std::atomic<bool> copy_required_;
+  base::Lock copy_lock_;
   CopyAudioCB copy_audio_bus_callback_;
 
   DISALLOW_COPY_AND_ASSIGN(TeeFilter);
@@ -135,7 +142,7 @@
     // |client_| the current format info. Otherwise |set_format_cb_| will get
     // called when Initialize() is called. Note: Always using |set_format_cb_|
     // ensures we have the same locking order when calling into |client_|.
-    if (tee_filter_->IsInitialized())
+    if (tee_filter_->initialized())
       base::ResetAndReturn(&set_format_cb_).Run();
     return;
   }
@@ -278,23 +285,13 @@
     sink_->SwitchOutputDevice(device_id, callback);
 }
 
-void WebAudioSourceProviderImpl::SetCopyAudioCallback(
-    const CopyAudioCB& callback) {
+void WebAudioSourceProviderImpl::SetCopyAudioCallback(CopyAudioCB callback) {
   DCHECK(!callback.is_null());
-
-  // Use |sink_lock_| to protect |tee_filter_| too since they go in lockstep.
-  base::AutoLock auto_lock(sink_lock_);
-
-  DCHECK(tee_filter_);
-  tee_filter_->set_copy_audio_bus_callback(callback);
+  tee_filter_->SetCopyAudioCallback(std::move(callback));
 }
 
 void WebAudioSourceProviderImpl::ClearCopyAudioCallback() {
-  // Use |sink_lock_| to protect |tee_filter_| too since they go in lockstep.
-  base::AutoLock auto_lock(sink_lock_);
-
-  DCHECK(tee_filter_);
-  tee_filter_->set_copy_audio_bus_callback(CopyAudioCB());
+  tee_filter_->SetCopyAudioCallback(CopyAudioCB());
 }
 
 int WebAudioSourceProviderImpl::RenderForTesting(AudioBus* audio_bus) {
@@ -322,26 +319,30 @@
     base::TimeTicks delay_timestamp,
     int prior_frames_skipped,
     AudioBus* audio_bus) {
-  DCHECK(IsInitialized());
+  DCHECK(initialized());
 
   const int num_rendered_frames = renderer_->Render(
       delay, delay_timestamp, prior_frames_skipped, audio_bus);
 
-  if (!copy_audio_bus_callback_.is_null()) {
-    const int64_t frames_delayed =
-        AudioTimestampHelper::TimeToFrames(delay, sample_rate_);
-    std::unique_ptr<AudioBus> bus_copy =
-        AudioBus::Create(audio_bus->channels(), audio_bus->frames());
-    audio_bus->CopyTo(bus_copy.get());
-    copy_audio_bus_callback_.Run(std::move(bus_copy), frames_delayed,
-                                 sample_rate_);
+  // Avoid taking the copy lock for the vast majority of cases.
+  if (copy_required_) {
+    base::AutoLock auto_lock(copy_lock_);
+    if (!copy_audio_bus_callback_.is_null()) {
+      const int64_t frames_delayed =
+          AudioTimestampHelper::TimeToFrames(delay, sample_rate_);
+      std::unique_ptr<AudioBus> bus_copy =
+          AudioBus::Create(audio_bus->channels(), audio_bus->frames());
+      audio_bus->CopyTo(bus_copy.get());
+      copy_audio_bus_callback_.Run(std::move(bus_copy), frames_delayed,
+                                   sample_rate_);
+    }
   }
 
   return num_rendered_frames;
 }
 
 void WebAudioSourceProviderImpl::TeeFilter::OnRenderError() {
-  DCHECK(IsInitialized());
+  DCHECK(initialized());
   renderer_->OnRenderError();
 }
 
diff --git a/media/blink/webaudiosourceprovider_impl.h b/media/blink/webaudiosourceprovider_impl.h
index 1c739794..e6e84e6 100644
--- a/media/blink/webaudiosourceprovider_impl.h
+++ b/media/blink/webaudiosourceprovider_impl.h
@@ -45,9 +45,9 @@
     : public blink::WebAudioSourceProvider,
       public SwitchableAudioRendererSink {
  public:
-  using CopyAudioCB = base::Callback<void(std::unique_ptr<AudioBus>,
-                                          uint32_t frames_delayed,
-                                          int sample_rate)>;
+  using CopyAudioCB = base::RepeatingCallback<void(std::unique_ptr<AudioBus>,
+                                                   uint32_t frames_delayed,
+                                                   int sample_rate)>;
 
   WebAudioSourceProviderImpl(scoped_refptr<SwitchableAudioRendererSink> sink,
                              MediaLog* media_log);
@@ -72,7 +72,7 @@
                           const OutputDeviceStatusCB& callback) override;
 
   // These methods allow a client to get a copy of the rendered audio.
-  void SetCopyAudioCallback(const CopyAudioCB& callback);
+  void SetCopyAudioCallback(CopyAudioCB callback);
   void ClearCopyAudioCallback();
 
   int RenderForTesting(AudioBus* audio_bus);
@@ -104,8 +104,7 @@
   scoped_refptr<SwitchableAudioRendererSink> sink_;
   std::unique_ptr<AudioBus> bus_wrapper_;
 
-  // An inner class acting as a T filter where actual data can be tapped. Must
-  // only be accessed while holding |sink_lock_|.
+  // An inner class acting as a T filter where actual data can be tapped.
   class TeeFilter;
   const std::unique_ptr<TeeFilter> tee_filter_;
 
diff --git a/media/cast/sender/video_encoder_unittest.cc b/media/cast/sender/video_encoder_unittest.cc
index 4e7dcb43..c64f5b0 100644
--- a/media/cast/sender/video_encoder_unittest.cc
+++ b/media/cast/sender/video_encoder_unittest.cc
@@ -277,7 +277,15 @@
 
 // A simple test to encode three frames of video, expecting to see one key frame
 // followed by two delta frames.
-TEST_P(VideoEncoderTest, GeneratesKeyFrameThenOnlyDeltaFrames) {
+// Fails consistently on official builds: crbug.com/612496
+#ifdef OFFICIAL_BUILD
+#define MAYBE_GeneratesKeyFrameThenOnlyDeltaFrames \
+  DISABLED_GeneratesKeyFrameThenOnlyDeltaFrames
+#else
+#define MAYBE_GeneratesKeyFrameThenOnlyDeltaFrames \
+  GeneratesKeyFrameThenOnlyDeltaFrames
+#endif
+TEST_P(VideoEncoderTest, MAYBE_GeneratesKeyFrameThenOnlyDeltaFrames) {
   CreateEncoder();
   SetVEAFactoryAutoRespond(true);
 
@@ -317,7 +325,13 @@
 // changes.  See media/cast/receiver/video_decoder_unittest.cc for a complete
 // encode/decode cycle of varied frame sizes that actually checks the frame
 // content.
-TEST_P(VideoEncoderTest, EncodesVariedFrameSizes) {
+// Fails consistently on official builds: crbug.com/612496
+#ifdef OFFICIAL_BUILD
+#define MAYBE_EncodesVariedFrameSizes DISABLED_EncodesVariedFrameSizes
+#else
+#define MAYBE_EncodesVariedFrameSizes EncodesVariedFrameSizes
+#endif
+TEST_P(VideoEncoderTest, MAYBE_EncodesVariedFrameSizes) {
   CreateEncoder();
   SetVEAFactoryAutoRespond(true);
 
@@ -382,7 +396,14 @@
 // before it has a chance to receive the VEA creation callback.  For all other
 // encoders, this tests that the encoder can be safely destroyed before the task
 // is run that delivers the first EncodedFrame.
-TEST_P(VideoEncoderTest, CanBeDestroyedBeforeVEAIsCreated) {
+// Fails consistently on official builds: crbug.com/612496
+#ifdef OFFICIAL_BUILD
+#define MAYBE_CanBeDestroyedBeforeVEAIsCreated \
+  DISABLED_CanBeDestroyedBeforeVEAIsCreated
+#else
+#define MAYBE_CanBeDestroyedBeforeVEAIsCreated CanBeDestroyedBeforeVEAIsCreated
+#endif
+TEST_P(VideoEncoderTest, MAYBE_CanBeDestroyedBeforeVEAIsCreated) {
   CreateEncoder();
 
   // Send a frame to spawn creation of the ExternalVideoEncoder instance.
diff --git a/media/cast/test/end2end_unittest.cc b/media/cast/test/end2end_unittest.cc
index 078e068..c3fb8f2 100644
--- a/media/cast/test/end2end_unittest.cc
+++ b/media/cast/test/end2end_unittest.cc
@@ -957,7 +957,13 @@
       kSoundFrequency, kSoundVolume));
 }
 
-TEST_F(End2EndTest, LoopWithLosslessEncoding) {
+// Fails consistently on official builds: crbug.com/612496
+#ifdef OFFICIAL_BUILD
+#define MAYBE_LoopWithLosslessEncoding DISABLED_LoopWithLosslessEncoding
+#else
+#define MAYBE_LoopWithLosslessEncoding LoopWithLosslessEncoding
+#endif
+TEST_F(End2EndTest, MAYBE_LoopWithLosslessEncoding) {
   Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16);
   Create();
 
@@ -1071,7 +1077,13 @@
   EXPECT_EQ(10, test_receiver_video_callback_->number_times_called());
 }
 
-TEST_F(End2EndTest, BasicFakeSoftwareVideo) {
+// Fails consistently on official builds: crbug.com/612496
+#ifdef OFFICIAL_BUILD
+#define MAYBE_BasicFakeSoftwareVideo DISABLED_BasicFakeSoftwareVideo
+#else
+#define MAYBE_BasicFakeSoftwareVideo BasicFakeSoftwareVideo
+#endif
+TEST_F(End2EndTest, MAYBE_BasicFakeSoftwareVideo) {
   Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16);
   Create();
   StartBasicPlayer();
@@ -1106,7 +1118,13 @@
 const int kLongTestIterations = 1000;
 #endif
 
-TEST_F(End2EndTest, ReceiverClockFast) {
+// Fails consistently on official builds: crbug.com/612496
+#ifdef OFFICIAL_BUILD
+#define MAYBE_ReceiverClockFast DISABLED_ReceiverClockFast
+#else
+#define MAYBE_ReceiverClockFast ReceiverClockFast
+#endif
+TEST_F(End2EndTest, MAYBE_ReceiverClockFast) {
   Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16);
   Create();
   StartBasicPlayer();
@@ -1121,7 +1139,13 @@
   EXPECT_EQ(static_cast<size_t>(kLongTestIterations), video_ticks_.size());
 }
 
-TEST_F(End2EndTest, ReceiverClockSlow) {
+// Fails consistently on official builds: crbug.com/612496
+#ifdef OFFICIAL_BUILD
+#define MAYBE_ReceiverClockSlow DISABLED_ReceiverClockSlow
+#else
+#define MAYBE_ReceiverClockSlow ReceiverClockSlow
+#endif
+TEST_F(End2EndTest, MAYBE_ReceiverClockSlow) {
   Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16);
   Create();
   StartBasicPlayer();
@@ -1136,7 +1160,15 @@
   EXPECT_EQ(static_cast<size_t>(kLongTestIterations), video_ticks_.size());
 }
 
-TEST_F(End2EndTest, SmoothPlayoutWithFivePercentClockRateSkew) {
+// Fails consistently on official builds: crbug.com/612496
+#ifdef OFFICIAL_BUILD
+#define MAYBE_SmoothPlayoutWithFivePercentClockRateSkew \
+  DISABLED_SmoothPlayoutWithFivePercentClockRateSkew
+#else
+#define MAYBE_SmoothPlayoutWithFivePercentClockRateSkew \
+  SmoothPlayoutWithFivePercentClockRateSkew
+#endif
+TEST_F(End2EndTest, MAYBE_SmoothPlayoutWithFivePercentClockRateSkew) {
   Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16);
   Create();
   StartBasicPlayer();
@@ -1157,7 +1189,13 @@
   EXPECT_EQ(static_cast<size_t>(kLongTestIterations), video_ticks_.size());
 }
 
-TEST_F(End2EndTest, EvilNetwork) {
+// Fails consistently on official builds: crbug.com/612496
+#ifdef OFFICIAL_BUILD
+#define MAYBE_EvilNetwork DISABLED_EvilNetwork
+#else
+#define MAYBE_EvilNetwork EvilNetwork
+#endif
+TEST_F(End2EndTest, MAYBE_EvilNetwork) {
   Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16);
   receiver_to_sender_->SetPacketPipe(test::EvilNetwork());
   sender_to_receiver_->SetPacketPipe(test::EvilNetwork());
@@ -1179,7 +1217,14 @@
 
 // Tests that a system configured for 30 FPS drops frames when input is provided
 // at a much higher frame rate.
-TEST_F(End2EndTest, ShoveHighFrameRateDownYerThroat) {
+// Fails consistently on official builds: crbug.com/612496
+#ifdef OFFICIAL_BUILD
+#define MAYBE_ShoveHighFrameRateDownYerThroat \
+  DISABLED_ShoveHighFrameRateDownYerThroat
+#else
+#define MAYBE_ShoveHighFrameRateDownYerThroat ShoveHighFrameRateDownYerThroat
+#endif
+TEST_F(End2EndTest, MAYBE_ShoveHighFrameRateDownYerThroat) {
   Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16);
   receiver_to_sender_->SetPacketPipe(test::EvilNetwork());
   sender_to_receiver_->SetPacketPipe(test::EvilNetwork());
@@ -1200,7 +1245,13 @@
   EXPECT_LT((video_ticks_.back().second - test_end).InMilliseconds(), 1000);
 }
 
-TEST_F(End2EndTest, OldPacketNetwork) {
+// Fails consistently on official builds: crbug.com/612496
+#ifdef OFFICIAL_BUILD
+#define MAYBE_OldPacketNetwork DISABLED_OldPacketNetwork
+#else
+#define MAYBE_OldPacketNetwork OldPacketNetwork
+#endif
+TEST_F(End2EndTest, MAYBE_OldPacketNetwork) {
   Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16);
   sender_to_receiver_->SetPacketPipe(test::NewRandomDrop(0.01));
   std::unique_ptr<test::PacketPipe> echo_chamber(
@@ -1233,7 +1284,13 @@
   EXPECT_EQ(static_cast<size_t>(kLongTestIterations), video_ticks_.size());
 }
 
-TEST_F(End2EndTest, TestSetPlayoutDelay) {
+// Fails consistently on official builds: crbug.com/612496
+#ifdef OFFICIAL_BUILD
+#define MAYBE_TestSetPlayoutDelay DISABLED_TestSetPlayoutDelay
+#else
+#define MAYBE_TestSetPlayoutDelay TestSetPlayoutDelay
+#endif
+TEST_F(End2EndTest, MAYBE_TestSetPlayoutDelay) {
   Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16);
   video_sender_config_.min_playout_delay =
       video_sender_config_.max_playout_delay;
diff --git a/media/cdm/aes_decryptor.cc b/media/cdm/aes_decryptor.cc
index b1a95211..2ed52e60 100644
--- a/media/cdm/aes_decryptor.cc
+++ b/media/cdm/aes_decryptor.cc
@@ -486,6 +486,8 @@
 void AesDecryptor::Decrypt(StreamType stream_type,
                            scoped_refptr<DecoderBuffer> encrypted,
                            const DecryptCB& decrypt_cb) {
+  DVLOG(3) << __func__ << ": " << encrypted->AsHumanReadableString();
+
   if (!encrypted->decrypt_config()) {
     // If there is no DecryptConfig, then the data is unencrypted so return it
     // immediately.
diff --git a/media/cdm/aes_decryptor.h b/media/cdm/aes_decryptor.h
index 943e76d..3c6cfcb 100644
--- a/media/cdm/aes_decryptor.h
+++ b/media/cdm/aes_decryptor.h
@@ -85,7 +85,9 @@
   void DeinitializeDecoder(StreamType stream_type) override;
 
  private:
+  // Testing classes that needs to manipulate internal states for testing.
   friend class ClearKeyPersistentSessionCdm;
+  friend class ClearKeyCdmProxy;
 
   // Internally this class supports persistent license type sessions so that
   // it can be used by ClearKeyPersistentSessionCdm. The following methods
diff --git a/media/cdm/cdm_adapter.cc b/media/cdm/cdm_adapter.cc
index 6e9cdfb..f0f6a37 100644
--- a/media/cdm/cdm_adapter.cc
+++ b/media/cdm/cdm_adapter.cc
@@ -686,7 +686,10 @@
 
   // When using HW secure codecs, we cannot and should not use the CDM instance
   // to do decrypt and/or decode. Instead, we should use the CdmProxy.
-  if (cdm_config_.use_hw_secure_codecs)
+  // TODO(xhwang): Fix External Clear Key key system to be able to set
+  // |use_hw_secure_codecs| so that we don't have to check both.
+  // TODO(xhwang): Update this logic to support transcryption.
+  if (cdm_config_.use_hw_secure_codecs || cdm_proxy_created_)
     return nullptr;
 
   return this;
diff --git a/media/cdm/library_cdm/clear_key_cdm/cdm_proxy_test.cc b/media/cdm/library_cdm/clear_key_cdm/cdm_proxy_test.cc
index 152539f..37675b2d 100644
--- a/media/cdm/library_cdm/clear_key_cdm/cdm_proxy_test.cc
+++ b/media/cdm/library_cdm/clear_key_cdm/cdm_proxy_test.cc
@@ -32,6 +32,11 @@
   cdm_proxy_->Initialize();
 }
 
+void CdmProxyTest::SetKey(const std::vector<uint8_t>& response) {
+  cdm_proxy_->SetKey(crypto_session_id_, nullptr, 0, response.data(),
+                     response.size());
+}
+
 void CdmProxyTest::OnTestComplete(bool success) {
   DVLOG(1) << __func__ << ": success = " << success;
   std::move(completion_cb_).Run(success);
diff --git a/media/cdm/library_cdm/clear_key_cdm/cdm_proxy_test.h b/media/cdm/library_cdm/clear_key_cdm/cdm_proxy_test.h
index 27237be..c7b8f73c 100644
--- a/media/cdm/library_cdm/clear_key_cdm/cdm_proxy_test.h
+++ b/media/cdm/library_cdm/clear_key_cdm/cdm_proxy_test.h
@@ -23,6 +23,8 @@
   // Runs the test and returns the test result through |completion_cb|.
   void Run(CompletionCB completion_cb);
 
+  void SetKey(const std::vector<uint8_t>& response);
+
  private:
   void OnTestComplete(bool success);
 
@@ -41,6 +43,7 @@
   CdmHostProxy* const cdm_host_proxy_ = nullptr;
   CompletionCB completion_cb_;
   cdm::CdmProxy* cdm_proxy_ = nullptr;
+  uint32_t crypto_session_id_ = 0u;
 
   DISALLOW_COPY_AND_ASSIGN(CdmProxyTest);
 };
diff --git a/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm.cc b/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm.cc
index 27c7940..da69505 100644
--- a/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm.cc
+++ b/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm.cc
@@ -483,8 +483,6 @@
     ReportVerifyCdmHostTestResult();
   } else if (key_system_ == kExternalClearKeyStorageIdTestKeySystem) {
     StartStorageIdTest();
-  } else if (key_system_ == kExternalClearKeyCdmProxyTestKeySystem) {
-    ReportCdmProxyTestResult();
   }
 }
 
@@ -514,6 +512,7 @@
                                 uint32_t response_size) {
   DVLOG(1) << __func__;
   std::string web_session_str(session_id, session_id_length);
+  std::vector<uint8_t> response_vector(response, response + response_size);
 
   std::unique_ptr<media::SimpleCdmPromise> promise(
       new media::CdmCallbackPromise<>(
@@ -521,9 +520,11 @@
                      promise_id, web_session_str),
           base::Bind(&ClearKeyCdm::OnPromiseFailed, base::Unretained(this),
                      promise_id)));
-  cdm_->UpdateSession(web_session_str,
-                      std::vector<uint8_t>(response, response + response_size),
-                      std::move(promise));
+  cdm_->UpdateSession(web_session_str, response_vector, std::move(promise));
+
+  // Also push the license to CdmProxy
+  if (cdm_proxy_test_)
+    cdm_proxy_test_->SetKey(response_vector);
 }
 
 void ClearKeyCdm::OnUpdateSuccess(uint32_t promise_id,
@@ -649,6 +650,10 @@
   DVLOG(1) << __func__;
   DCHECK(encrypted_buffer.data);
 
+  // When CdmProxy is used, the CDM cannot do any decryption or decoding.
+  if (key_system_ == kExternalClearKeyCdmProxyTestKeySystem)
+    return cdm::kDecryptError;
+
   scoped_refptr<DecoderBuffer> buffer;
   cdm::Status status = DecryptToMediaDecoderBuffer(encrypted_buffer, &buffer);
 
@@ -683,8 +688,10 @@
 
 cdm::Status ClearKeyCdm::InitializeAudioDecoder(
     const cdm::AudioDecoderConfig_2& audio_decoder_config) {
-  if (key_system_ == kExternalClearKeyDecryptOnlyKeySystem)
+  if (key_system_ == kExternalClearKeyDecryptOnlyKeySystem ||
+      key_system_ == kExternalClearKeyCdmProxyTestKeySystem) {
     return cdm::kInitializationError;
+  }
 
 #if defined(CLEAR_KEY_CDM_USE_FFMPEG_DECODER)
   if (!audio_decoder_)
@@ -715,8 +722,10 @@
 
 cdm::Status ClearKeyCdm::InitializeVideoDecoder(
     const cdm::VideoDecoderConfig_2& video_decoder_config) {
-  if (key_system_ == kExternalClearKeyDecryptOnlyKeySystem)
+  if (key_system_ == kExternalClearKeyDecryptOnlyKeySystem ||
+      key_system_ == kExternalClearKeyCdmProxyTestKeySystem) {
     return cdm::kInitializationError;
+  }
 
   if (video_decoder_ && video_decoder_->is_initialized()) {
     DCHECK(!video_decoder_->is_initialized());
@@ -1084,16 +1093,7 @@
   DVLOG(1) << __func__;
   DCHECK(cdm_proxy_test_);
 
-  cdm_proxy_test_.reset();
-  has_cdm_proxy_test_passed_ = success;
-
-  // Ignore test result here. It will be reported in ReportCdmProxyTestResult().
-  cdm_host_proxy_->OnInitialized(true);
-}
-
-void ClearKeyCdm::ReportCdmProxyTestResult() {
-  // StartCdmProxyTest() should have already been called and finished.
-  OnUnitTestComplete(has_cdm_proxy_test_passed_);
+  cdm_host_proxy_->OnInitialized(success);
 }
 
 }  // namespace media
diff --git a/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm.h b/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm.h
index b9c78fa..59b3660 100644
--- a/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm.h
+++ b/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm.h
@@ -161,7 +161,6 @@
 
   void StartCdmProxyTest();
   void OnCdmProxyTestComplete(bool success);
-  void ReportCdmProxyTestResult();
 
   int host_interface_version_ = 0;
 
@@ -194,7 +193,6 @@
   bool is_running_output_protection_test_ = false;
   bool is_running_platform_verification_test_ = false;
   bool is_running_storage_id_test_ = false;
-  bool has_cdm_proxy_test_passed_ = false;
 
   DISALLOW_COPY_AND_ASSIGN(ClearKeyCdm);
 };
diff --git a/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm_proxy.cc b/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm_proxy.cc
index c251354..67f6038 100644
--- a/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm_proxy.cc
+++ b/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm_proxy.cc
@@ -11,6 +11,26 @@
 
 namespace media {
 
+namespace {
+
+constexpr char kDummySessionId[] = "dummy session id";
+
+class IgnoreResponsePromise : public SimpleCdmPromise {
+ public:
+  IgnoreResponsePromise() = default;
+  ~IgnoreResponsePromise() override = default;
+
+  // SimpleCdmPromise implementation.
+  void resolve() final { MarkPromiseSettled(); }
+  void reject(CdmPromise::Exception exception_code,
+              uint32_t system_code,
+              const std::string& error_message) final {
+    MarkPromiseSettled();
+  }
+};
+
+}  // namespace
+
 ClearKeyCdmProxy::ClearKeyCdmProxy() : weak_factory_(this) {}
 
 ClearKeyCdmProxy::~ClearKeyCdmProxy() {}
@@ -67,7 +87,15 @@
 
 void ClearKeyCdmProxy::SetKey(uint32_t crypto_session_id,
                               const std::vector<uint8_t>& key_id,
-                              const std::vector<uint8_t>& key_blob) {}
+                              const std::vector<uint8_t>& key_blob) {
+  DVLOG(1) << __func__;
+
+  if (!aes_decryptor_)
+    CreateDecryptor();
+
+  aes_decryptor_->UpdateSession(kDummySessionId, key_blob,
+                                std::make_unique<IgnoreResponsePromise>());
+}
 
 void ClearKeyCdmProxy::RemoveKey(uint32_t crypto_session_id,
                                  const std::vector<uint8_t>& key_id) {}
@@ -75,13 +103,23 @@
 Decryptor* ClearKeyCdmProxy::GetDecryptor() {
   DVLOG(1) << __func__;
 
-  if (!aes_decryptor_) {
-    aes_decryptor_ = base::MakeRefCounted<AesDecryptor>(
-        base::DoNothing(), base::DoNothing(), base::DoNothing(),
-        base::DoNothing());
-  }
+  if (!aes_decryptor_)
+    CreateDecryptor();
 
   return aes_decryptor_.get();
 }
 
+void ClearKeyCdmProxy::CreateDecryptor() {
+  DVLOG(1) << __func__;
+  DCHECK(!aes_decryptor_);
+
+  aes_decryptor_ =
+      base::MakeRefCounted<AesDecryptor>(base::DoNothing(), base::DoNothing(),
+                                         base::DoNothing(), base::DoNothing());
+
+  // Also create a dummy session to be used for SetKey().
+  aes_decryptor_->CreateSession(kDummySessionId,
+                                CdmSessionType::TEMPORARY_SESSION);
+}
+
 }  // namespace media
diff --git a/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm_proxy.h b/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm_proxy.h
index 20f3d99..ac8dce7 100644
--- a/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm_proxy.h
+++ b/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm_proxy.h
@@ -42,6 +42,8 @@
   Decryptor* GetDecryptor() final;
 
  private:
+  void CreateDecryptor();
+
   scoped_refptr<AesDecryptor> aes_decryptor_;
 
   base::WeakPtrFactory<ClearKeyCdmProxy> weak_factory_;
diff --git a/media/mojo/clients/mojo_cdm.cc b/media/mojo/clients/mojo_cdm.cc
index d5f8e4c3..6e4f0c76 100644
--- a/media/mojo/clients/mojo_cdm.cc
+++ b/media/mojo/clients/mojo_cdm.cc
@@ -20,6 +20,7 @@
 #include "media/mojo/clients/mojo_decryptor.h"
 #include "media/mojo/common/media_type_converters.h"
 #include "media/mojo/interfaces/decryptor.mojom.h"
+#include "media/mojo/interfaces/interface_factory.mojom.h"
 #include "services/service_manager/public/cpp/connect.h"
 #include "services/service_manager/public/mojom/interface_provider.mojom.h"
 #include "url/origin.h"
@@ -41,14 +42,15 @@
     const url::Origin& security_origin,
     const CdmConfig& cdm_config,
     mojom::ContentDecryptionModulePtr remote_cdm,
+    mojom::InterfaceFactory* interface_factory,
     const SessionMessageCB& session_message_cb,
     const SessionClosedCB& session_closed_cb,
     const SessionKeysChangeCB& session_keys_change_cb,
     const SessionExpirationUpdateCB& session_expiration_update_cb,
     const CdmCreatedCB& cdm_created_cb) {
-  scoped_refptr<MojoCdm> mojo_cdm(
-      new MojoCdm(std::move(remote_cdm), session_message_cb, session_closed_cb,
-                  session_keys_change_cb, session_expiration_update_cb));
+  scoped_refptr<MojoCdm> mojo_cdm(new MojoCdm(
+      std::move(remote_cdm), interface_factory, session_message_cb,
+      session_closed_cb, session_keys_change_cb, session_expiration_update_cb));
 
   // |mojo_cdm| ownership is passed to the promise.
   std::unique_ptr<CdmInitializedPromise> promise(
@@ -59,11 +61,13 @@
 }
 
 MojoCdm::MojoCdm(mojom::ContentDecryptionModulePtr remote_cdm,
+                 mojom::InterfaceFactory* interface_factory,
                  const SessionMessageCB& session_message_cb,
                  const SessionClosedCB& session_closed_cb,
                  const SessionKeysChangeCB& session_keys_change_cb,
                  const SessionExpirationUpdateCB& session_expiration_update_cb)
     : remote_cdm_(std::move(remote_cdm)),
+      interface_factory_(interface_factory),
       client_binding_(this),
       task_runner_(base::ThreadTaskRunnerHandle::Get()),
       cdm_id_(CdmContext::kInvalidCdmId),
@@ -303,14 +307,27 @@
     decryptor_task_runner_ = base::ThreadTaskRunnerHandle::Get();
   DCHECK(decryptor_task_runner_->BelongsToCurrentThread());
 
+  if (decryptor_)
+    return decryptor_.get();
+
+  mojom::DecryptorPtr decryptor_ptr;
+
   // Can be called on a different thread.
   if (decryptor_ptr_info_.is_valid()) {
-    DCHECK(!decryptor_);
-    mojom::DecryptorPtr decryptor_ptr;
+    DVLOG(1) << __func__ << ": Using Decryptor exposed by the CDM directly";
     decryptor_ptr.Bind(std::move(decryptor_ptr_info_));
-    decryptor_.reset(new MojoDecryptor(std::move(decryptor_ptr)));
+  } else if (interface_factory_ && cdm_id_ != CdmContext::kInvalidCdmId) {
+    // TODO(xhwang): Pass back info on whether Decryptor is supported by the
+    // remote CDM.
+    DVLOG(1) << __func__ << ": Using Decryptor associated with CDM ID "
+             << cdm_id_ << ", typically hosted by CdmProxy in MediaService";
+    interface_factory_->CreateDecryptor(cdm_id_,
+                                        mojo::MakeRequest(&decryptor_ptr));
   }
 
+  if (decryptor_ptr)
+    decryptor_.reset(new MojoDecryptor(std::move(decryptor_ptr)));
+
   return decryptor_.get();
 }
 
diff --git a/media/mojo/clients/mojo_cdm.h b/media/mojo/clients/mojo_cdm.h
index c883ec0..21ffd39a 100644
--- a/media/mojo/clients/mojo_cdm.h
+++ b/media/mojo/clients/mojo_cdm.h
@@ -33,6 +33,10 @@
 
 namespace media {
 
+namespace mojom {
+class InterfaceFactory;
+}
+
 class MojoDecryptor;
 
 // A ContentDecryptionModule that proxies to a mojom::ContentDecryptionModule.
@@ -49,6 +53,7 @@
       const url::Origin& security_origin,
       const CdmConfig& cdm_config,
       mojom::ContentDecryptionModulePtr remote_cdm,
+      mojom::InterfaceFactory* interface_factory,
       const SessionMessageCB& session_message_cb,
       const SessionClosedCB& session_closed_cb,
       const SessionKeysChangeCB& session_keys_change_cb,
@@ -84,6 +89,7 @@
 
  private:
   MojoCdm(mojom::ContentDecryptionModulePtr remote_cdm,
+          mojom::InterfaceFactory* interface_factory,
           const SessionMessageCB& session_message_cb,
           const SessionClosedCB& session_closed_cb,
           const SessionKeysChangeCB& session_keys_change_cb,
@@ -132,6 +138,7 @@
   THREAD_CHECKER(thread_checker_);
 
   mojom::ContentDecryptionModulePtr remote_cdm_;
+  mojom::InterfaceFactory* interface_factory_;
   mojo::Binding<ContentDecryptionModuleClient> client_binding_;
   scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
 
diff --git a/media/mojo/clients/mojo_cdm_factory.cc b/media/mojo/clients/mojo_cdm_factory.cc
index 9811c94..18fa3ab 100644
--- a/media/mojo/clients/mojo_cdm_factory.cc
+++ b/media/mojo/clients/mojo_cdm_factory.cc
@@ -64,8 +64,9 @@
   interface_factory_->CreateCdm(key_system, mojo::MakeRequest(&cdm_ptr));
 
   MojoCdm::Create(key_system, security_origin, cdm_config, std::move(cdm_ptr),
-                  session_message_cb, session_closed_cb, session_keys_change_cb,
-                  session_expiration_update_cb, cdm_created_cb);
+                  interface_factory_, session_message_cb, session_closed_cb,
+                  session_keys_change_cb, session_expiration_update_cb,
+                  cdm_created_cb);
 }
 
 }  // namespace media
diff --git a/media/mojo/clients/mojo_cdm_unittest.cc b/media/mojo/clients/mojo_cdm_unittest.cc
index 3fc9bc5..0f31125 100644
--- a/media/mojo/clients/mojo_cdm_unittest.cc
+++ b/media/mojo/clients/mojo_cdm_unittest.cc
@@ -102,7 +102,7 @@
     }
 
     MojoCdm::Create(key_system, url::Origin::Create(GURL(kTestSecurityOrigin)),
-                    CdmConfig(), std::move(remote_cdm),
+                    CdmConfig(), std::move(remote_cdm), nullptr,
                     base::Bind(&MockCdmClient::OnSessionMessage,
                                base::Unretained(&cdm_client_)),
                     base::Bind(&MockCdmClient::OnSessionClosed,
diff --git a/media/renderers/BUILD.gn b/media/renderers/BUILD.gn
index b68e8f0..9a085278 100644
--- a/media/renderers/BUILD.gn
+++ b/media/renderers/BUILD.gn
@@ -28,11 +28,15 @@
     "video_overlay_factory.h",
     "video_renderer_impl.cc",
     "video_renderer_impl.h",
+    "video_resource_updater.cc",
+    "video_resource_updater.h",
   ]
 
   deps = [
     "//base",
+    "//cc/base",  # For MathUtil.
     "//cc/paint",
+    "//components/viz/client",
     "//gpu/command_buffer/client:gles2_interface",
     "//gpu/command_buffer/common",
     "//media/base",
@@ -44,6 +48,7 @@
     "//ui/gfx:geometry_skia",
     "//ui/gfx:memory_buffer",
     "//ui/gfx/geometry",
+    "//ui/gl",
   ]
 
   configs += [
@@ -61,12 +66,15 @@
     "paint_canvas_video_renderer_unittest.cc",
     "renderer_impl_unittest.cc",
     "video_renderer_impl_unittest.cc",
+    "video_resource_updater_unittest.cc",
   ]
   configs += [ "//media:media_config" ]
   deps = [
     "//base",
     "//base/test:test_support",
     "//cc/paint",
+    "//components/viz/client",
+    "//components/viz/test:test_support",
     "//gpu:test_support",
     "//gpu/command_buffer/client:gles2_interface",
     "//gpu/command_buffer/common",
diff --git a/media/renderers/DEPS b/media/renderers/DEPS
new file mode 100644
index 0000000..1eea6262bb
--- /dev/null
+++ b/media/renderers/DEPS
@@ -0,0 +1,14 @@
+# Do NOT add net/ or ui/base without a great reason, they're huge!
+include_rules = [
+  "+cc/base/math_util.h",
+  "+components/viz/client",
+  "+components/viz/common",
+  "+third_party/khronos/GLES2",
+  "+ul/gl/gl_enums.h",
+]
+
+specific_include_rules = {
+  ".*_unittest.cc": [
+    "+components/viz/test",
+  ],
+}
diff --git a/media/renderers/video_resource_updater.cc b/media/renderers/video_resource_updater.cc
new file mode 100644
index 0000000..95fa78c
--- /dev/null
+++ b/media/renderers/video_resource_updater.cc
@@ -0,0 +1,1153 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "media/renderers/video_resource_updater.h"
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include <algorithm>
+#include <string>
+
+#include "base/atomic_sequence_num.h"
+#include "base/bind.h"
+#include "base/bit_cast.h"
+#include "base/memory/shared_memory.h"
+#include "base/strings/stringprintf.h"
+#include "base/threading/thread_task_runner_handle.h"
+#include "base/trace_event/memory_dump_manager.h"
+#include "base/trace_event/process_memory_dump.h"
+#include "base/trace_event/trace_event.h"
+#include "build/build_config.h"
+#include "cc/base/math_util.h"
+#include "cc/paint/skia_paint_canvas.h"
+#include "components/viz/client/client_resource_provider.h"
+#include "components/viz/client/shared_bitmap_reporter.h"
+#include "components/viz/common/gpu/context_provider.h"
+#include "components/viz/common/gpu/texture_allocation.h"
+#include "components/viz/common/quads/render_pass.h"
+#include "components/viz/common/quads/stream_video_draw_quad.h"
+#include "components/viz/common/quads/texture_draw_quad.h"
+#include "components/viz/common/quads/yuv_video_draw_quad.h"
+#include "components/viz/common/resources/bitmap_allocation.h"
+#include "components/viz/common/resources/resource_sizes.h"
+#include "gpu/GLES2/gl2extchromium.h"
+#include "gpu/command_buffer/client/context_support.h"
+#include "gpu/command_buffer/client/gles2_interface.h"
+#include "media/base/video_frame.h"
+#include "media/renderers/paint_canvas_video_renderer.h"
+#include "media/video/half_float_maker.h"
+#include "third_party/khronos/GLES2/gl2.h"
+#include "third_party/khronos/GLES2/gl2ext.h"
+#include "third_party/libyuv/include/libyuv.h"
+#include "third_party/skia/include/core/SkCanvas.h"
+#include "ui/gfx/geometry/size_conversions.h"
+#include "ui/gfx/skia_util.h"
+#include "ui/gl/gl_enums.h"
+#include "ui/gl/trace_util.h"
+
+namespace media {
+namespace {
+
+// Generates process-unique IDs to use for tracing video resources.
+base::AtomicSequenceNumber g_next_video_resource_updater_id;
+
+VideoFrameResourceType ExternalResourceTypeForHardwarePlanes(
+    VideoPixelFormat format,
+    GLuint target,
+    int num_textures,
+    gfx::BufferFormat* buffer_format,
+    bool use_stream_video_draw_quad) {
+  *buffer_format = gfx::BufferFormat::RGBA_8888;
+  switch (format) {
+    case PIXEL_FORMAT_ARGB:
+    case PIXEL_FORMAT_XRGB:
+    case PIXEL_FORMAT_RGB32:
+    case PIXEL_FORMAT_UYVY:
+      switch (target) {
+        case GL_TEXTURE_EXTERNAL_OES:
+          if (use_stream_video_draw_quad)
+            return VideoFrameResourceType::STREAM_TEXTURE;
+          FALLTHROUGH;
+        case GL_TEXTURE_2D:
+          return (format == PIXEL_FORMAT_XRGB)
+                     ? VideoFrameResourceType::RGB
+                     : VideoFrameResourceType::RGBA_PREMULTIPLIED;
+        case GL_TEXTURE_RECTANGLE_ARB:
+          return VideoFrameResourceType::RGB;
+        default:
+          NOTREACHED();
+          break;
+      }
+      break;
+    case PIXEL_FORMAT_I420:
+      return VideoFrameResourceType::YUV;
+    case PIXEL_FORMAT_NV12:
+      DCHECK(target == GL_TEXTURE_EXTERNAL_OES || target == GL_TEXTURE_2D ||
+             target == GL_TEXTURE_RECTANGLE_ARB)
+          << "Unsupported target " << gl::GLEnums::GetStringEnum(target);
+      // Single plane textures can be sampled as RGB.
+      if (num_textures > 1)
+        return VideoFrameResourceType::YUV;
+
+      *buffer_format = gfx::BufferFormat::YUV_420_BIPLANAR;
+      return VideoFrameResourceType::RGB;
+    case PIXEL_FORMAT_YV12:
+    case PIXEL_FORMAT_I422:
+    case PIXEL_FORMAT_I444:
+    case PIXEL_FORMAT_I420A:
+    case PIXEL_FORMAT_NV21:
+    case PIXEL_FORMAT_YUY2:
+    case PIXEL_FORMAT_RGB24:
+    case PIXEL_FORMAT_MJPEG:
+    case PIXEL_FORMAT_MT21:
+    case PIXEL_FORMAT_YUV420P9:
+    case PIXEL_FORMAT_YUV422P9:
+    case PIXEL_FORMAT_YUV444P9:
+    case PIXEL_FORMAT_YUV420P10:
+    case PIXEL_FORMAT_YUV422P10:
+    case PIXEL_FORMAT_YUV444P10:
+    case PIXEL_FORMAT_YUV420P12:
+    case PIXEL_FORMAT_YUV422P12:
+    case PIXEL_FORMAT_YUV444P12:
+    case PIXEL_FORMAT_Y16:
+    case PIXEL_FORMAT_UNKNOWN:
+      break;
+  }
+  return VideoFrameResourceType::NONE;
+}
+
+class SyncTokenClientImpl : public VideoFrame::SyncTokenClient {
+ public:
+  SyncTokenClientImpl(gpu::gles2::GLES2Interface* gl, gpu::SyncToken sync_token)
+      : gl_(gl), sync_token_(sync_token) {}
+  ~SyncTokenClientImpl() override = default;
+
+  void GenerateSyncToken(gpu::SyncToken* sync_token) override {
+    if (sync_token_.HasData()) {
+      *sync_token = sync_token_;
+    } else {
+      gl_->GenSyncTokenCHROMIUM(sync_token->GetData());
+    }
+  }
+
+  void WaitSyncToken(const gpu::SyncToken& sync_token) override {
+    if (sync_token.HasData()) {
+      gl_->WaitSyncTokenCHROMIUM(sync_token.GetConstData());
+      if (sync_token_.HasData() && sync_token_ != sync_token) {
+        gl_->WaitSyncTokenCHROMIUM(sync_token_.GetConstData());
+        sync_token_.Clear();
+      }
+    }
+  }
+
+ private:
+  gpu::gles2::GLES2Interface* gl_;
+  gpu::SyncToken sync_token_;
+  DISALLOW_COPY_AND_ASSIGN(SyncTokenClientImpl);
+};
+
+// Sync tokens passed downstream to the compositor can be unverified.
+void GenerateCompositorSyncToken(gpu::gles2::GLES2Interface* gl,
+                                 gpu::SyncToken* sync_token) {
+  gl->GenUnverifiedSyncTokenCHROMIUM(sync_token->GetData());
+}
+
+// For frames that we receive in software format, determine the dimensions of
+// each plane in the frame.
+gfx::Size SoftwarePlaneDimension(VideoFrame* input_frame,
+                                 bool software_compositor,
+                                 size_t plane_index) {
+  gfx::Size coded_size = input_frame->coded_size();
+  if (software_compositor)
+    return coded_size;
+
+  int plane_width = VideoFrame::Columns(plane_index, input_frame->format(),
+                                        coded_size.width());
+  int plane_height =
+      VideoFrame::Rows(plane_index, input_frame->format(), coded_size.height());
+  return gfx::Size(plane_width, plane_height);
+}
+
+}  // namespace
+
+VideoFrameExternalResources::VideoFrameExternalResources() = default;
+VideoFrameExternalResources::~VideoFrameExternalResources() = default;
+
+VideoFrameExternalResources::VideoFrameExternalResources(
+    VideoFrameExternalResources&& other) = default;
+VideoFrameExternalResources& VideoFrameExternalResources::operator=(
+    VideoFrameExternalResources&& other) = default;
+
+// Resource for a video plane allocated and owned by VideoResourceUpdater. There
+// can be multiple plane resources for each video frame, depending on the
+// format. These will be reused when possible.
+class VideoResourceUpdater::PlaneResource {
+ public:
+  PlaneResource(uint32_t plane_resource_id,
+                const gfx::Size& resource_size,
+                viz::ResourceFormat resource_format,
+                bool is_software)
+      : plane_resource_id_(plane_resource_id),
+        resource_size_(resource_size),
+        resource_format_(resource_format),
+        is_software_(is_software) {}
+  virtual ~PlaneResource() = default;
+
+  // Casts |this| to SoftwarePlaneResource for software compositing.
+  SoftwarePlaneResource* AsSoftware();
+
+  // Casts |this| to HardwarePlaneResource for GPU compositing.
+  HardwarePlaneResource* AsHardware();
+
+  // Returns true if this resource matches the unique identifiers of another
+  // VideoFrame resource.
+  bool Matches(int unique_frame_id, size_t plane_index) {
+    return has_unique_frame_id_and_plane_index_ &&
+           unique_frame_id_ == unique_frame_id && plane_index_ == plane_index;
+  }
+
+  // Sets the unique identifiers for this resource, may only be called when
+  // there is a single reference to the resource (i.e. |ref_count_| == 1).
+  void SetUniqueId(int unique_frame_id, size_t plane_index) {
+    DCHECK_EQ(ref_count_, 1);
+    plane_index_ = plane_index;
+    unique_frame_id_ = unique_frame_id;
+    has_unique_frame_id_and_plane_index_ = true;
+  }
+
+  // Accessors for resource identifiers provided at construction time.
+  uint32_t plane_resource_id() const { return plane_resource_id_; }
+  const gfx::Size& resource_size() const { return resource_size_; }
+  viz::ResourceFormat resource_format() const { return resource_format_; }
+
+  // Various methods for managing references. See |ref_count_| for details.
+  void add_ref() { ++ref_count_; }
+  void remove_ref() { --ref_count_; }
+  void clear_refs() { ref_count_ = 0; }
+  bool has_refs() const { return ref_count_ != 0; }
+
+ private:
+  const uint32_t plane_resource_id_;
+  const gfx::Size resource_size_;
+  const viz::ResourceFormat resource_format_;
+  const bool is_software_;
+
+  // The number of times this resource has been imported vs number of times this
+  // resource has returned.
+  int ref_count_ = 0;
+
+  // These two members are used for identifying the data stored in this
+  // resource; they uniquely identify a VideoFrame plane.
+  int unique_frame_id_ = 0;
+  size_t plane_index_ = 0u;
+  // Indicates if the above two members have been set or not.
+  bool has_unique_frame_id_and_plane_index_ = false;
+
+  DISALLOW_COPY_AND_ASSIGN(PlaneResource);
+};
+
+class VideoResourceUpdater::SoftwarePlaneResource
+    : public VideoResourceUpdater::PlaneResource {
+ public:
+  SoftwarePlaneResource(uint32_t plane_resource_id,
+                        const gfx::Size& size,
+                        viz::SharedBitmapReporter* shared_bitmap_reporter)
+      : PlaneResource(plane_resource_id,
+                      size,
+                      viz::ResourceFormat::RGBA_8888,
+                      /*is_software=*/true),
+        shared_bitmap_reporter_(shared_bitmap_reporter),
+        shared_bitmap_id_(viz::SharedBitmap::GenerateId()) {
+    DCHECK(shared_bitmap_reporter_);
+
+    // Allocate SharedMemory and notify display compositor of the allocation.
+    shared_memory_ = viz::bitmap_allocation::AllocateMappedBitmap(
+        resource_size(), viz::ResourceFormat::RGBA_8888);
+    mojo::ScopedSharedBufferHandle handle =
+        viz::bitmap_allocation::DuplicateAndCloseMappedBitmap(
+            shared_memory_.get(), resource_size(),
+            viz::ResourceFormat::RGBA_8888);
+    shared_bitmap_reporter_->DidAllocateSharedBitmap(std::move(handle),
+                                                     shared_bitmap_id_);
+  }
+  ~SoftwarePlaneResource() override {
+    shared_bitmap_reporter_->DidDeleteSharedBitmap(shared_bitmap_id_);
+  }
+
+  const viz::SharedBitmapId& shared_bitmap_id() const {
+    return shared_bitmap_id_;
+  }
+  void* pixels() { return shared_memory_->memory(); }
+
+  // Returns a memory dump GUID consistent across processes.
+  base::UnguessableToken GetSharedMemoryGuid() const {
+    return shared_memory_->mapped_id();
+  }
+
+ private:
+  viz::SharedBitmapReporter* const shared_bitmap_reporter_;
+  const viz::SharedBitmapId shared_bitmap_id_;
+  std::unique_ptr<base::SharedMemory> shared_memory_;
+
+  DISALLOW_COPY_AND_ASSIGN(SoftwarePlaneResource);
+};
+
+class VideoResourceUpdater::HardwarePlaneResource
+    : public VideoResourceUpdater::PlaneResource {
+ public:
+  HardwarePlaneResource(uint32_t plane_resource_id,
+                        const gfx::Size& size,
+                        viz::ResourceFormat format,
+                        viz::ContextProvider* context_provider,
+                        viz::TextureAllocation allocation)
+      : PlaneResource(plane_resource_id, size, format, /*is_software=*/false),
+        context_provider_(context_provider),
+        mailbox_(gpu::Mailbox::Generate()),
+        allocation_(std::move(allocation)) {
+    DCHECK(context_provider_);
+    context_provider_->ContextGL()->ProduceTextureDirectCHROMIUM(
+        allocation_.texture_id, mailbox_.name);
+  }
+  ~HardwarePlaneResource() override {
+    context_provider_->ContextGL()->DeleteTextures(1, &allocation_.texture_id);
+  }
+
+  const gpu::Mailbox& mailbox() const { return mailbox_; }
+  GLuint texture_id() const { return allocation_.texture_id; }
+  GLenum texture_target() const { return allocation_.texture_target; }
+  bool overlay_candidate() const { return allocation_.overlay_candidate; }
+
+ private:
+  viz::ContextProvider* const context_provider_;
+  const gpu::Mailbox mailbox_;
+  const viz::TextureAllocation allocation_;
+
+  DISALLOW_COPY_AND_ASSIGN(HardwarePlaneResource);
+};
+
+VideoResourceUpdater::SoftwarePlaneResource*
+VideoResourceUpdater::PlaneResource::AsSoftware() {
+  DCHECK(is_software_);
+  return static_cast<SoftwarePlaneResource*>(this);
+}
+
+VideoResourceUpdater::HardwarePlaneResource*
+VideoResourceUpdater::PlaneResource::AsHardware() {
+  DCHECK(!is_software_);
+  return static_cast<HardwarePlaneResource*>(this);
+}
+
+VideoResourceUpdater::VideoResourceUpdater(
+    viz::ContextProvider* context_provider,
+    viz::SharedBitmapReporter* shared_bitmap_reporter,
+    viz::ClientResourceProvider* resource_provider,
+    bool use_stream_video_draw_quad,
+    bool use_gpu_memory_buffer_resources,
+    bool use_r16_texture,
+    int max_resource_size)
+    : context_provider_(context_provider),
+      shared_bitmap_reporter_(shared_bitmap_reporter),
+      resource_provider_(resource_provider),
+      use_stream_video_draw_quad_(use_stream_video_draw_quad),
+      use_gpu_memory_buffer_resources_(use_gpu_memory_buffer_resources),
+      use_r16_texture_(use_r16_texture),
+      max_resource_size_(max_resource_size),
+      tracing_id_(g_next_video_resource_updater_id.GetNext()),
+      weak_ptr_factory_(this) {
+  DCHECK(context_provider_ || shared_bitmap_reporter_);
+
+  base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
+      this, "media::VideoResourceUpdater", base::ThreadTaskRunnerHandle::Get());
+}
+
+VideoResourceUpdater::~VideoResourceUpdater() {
+  base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider(
+      this);
+}
+
+void VideoResourceUpdater::ObtainFrameResources(
+    scoped_refptr<VideoFrame> video_frame) {
+  VideoFrameExternalResources external_resources =
+      CreateExternalResourcesFromVideoFrame(video_frame);
+  frame_resource_type_ = external_resources.type;
+
+  if (external_resources.type == VideoFrameResourceType::YUV) {
+    frame_resource_offset_ = external_resources.offset;
+    frame_resource_multiplier_ = external_resources.multiplier;
+    frame_bits_per_channel_ = external_resources.bits_per_channel;
+  }
+
+  DCHECK_EQ(external_resources.resources.size(),
+            external_resources.release_callbacks.size());
+  for (size_t i = 0; i < external_resources.resources.size(); ++i) {
+    viz::ResourceId resource_id = resource_provider_->ImportResource(
+        external_resources.resources[i],
+        viz::SingleReleaseCallback::Create(
+            std::move(external_resources.release_callbacks[i])));
+    frame_resources_.push_back(
+        {resource_id, external_resources.resources[i].size});
+  }
+  TRACE_EVENT_INSTANT1("media", "VideoResourceUpdater::ObtainFrameResources",
+                       TRACE_EVENT_SCOPE_THREAD, "Timestamp",
+                       video_frame->timestamp().InMicroseconds());
+}
+
+void VideoResourceUpdater::ReleaseFrameResources() {
+  for (auto& frame_resource : frame_resources_)
+    resource_provider_->RemoveImportedResource(frame_resource.id);
+  frame_resources_.clear();
+}
+
+void VideoResourceUpdater::AppendQuads(viz::RenderPass* render_pass,
+                                       scoped_refptr<VideoFrame> frame,
+                                       gfx::Transform transform,
+                                       gfx::Size rotated_size,
+                                       gfx::Rect visible_layer_rect,
+                                       gfx::Rect clip_rect,
+                                       bool is_clipped,
+                                       bool contents_opaque,
+                                       float draw_opacity,
+                                       int sorting_context_id,
+                                       gfx::Rect visible_quad_rect) {
+  DCHECK(frame.get());
+
+  viz::SharedQuadState* shared_quad_state =
+      render_pass->CreateAndAppendSharedQuadState();
+  gfx::Rect rotated_size_rect(rotated_size);
+  shared_quad_state->SetAll(
+      transform, rotated_size_rect, visible_layer_rect, clip_rect, is_clipped,
+      contents_opaque, draw_opacity, SkBlendMode::kSrcOver, sorting_context_id);
+
+  gfx::Rect quad_rect(rotated_size);
+  gfx::Rect visible_rect = frame->visible_rect();
+  bool needs_blending = !contents_opaque;
+  gfx::Size coded_size = frame->coded_size();
+
+  const float tex_width_scale =
+      static_cast<float>(visible_rect.width()) / coded_size.width();
+  const float tex_height_scale =
+      static_cast<float>(visible_rect.height()) / coded_size.height();
+
+  switch (frame_resource_type_) {
+    case VideoFrameResourceType::YUV: {
+      const gfx::Size ya_tex_size = coded_size;
+
+      int u_width = VideoFrame::Columns(VideoFrame::kUPlane, frame->format(),
+                                        coded_size.width());
+      int u_height = VideoFrame::Rows(VideoFrame::kUPlane, frame->format(),
+                                      coded_size.height());
+      gfx::Size uv_tex_size(u_width, u_height);
+
+      if (frame->HasTextures()) {
+        if (frame->format() == PIXEL_FORMAT_NV12) {
+          DCHECK_EQ(2u, frame_resources_.size());
+        } else {
+          DCHECK_EQ(PIXEL_FORMAT_I420, frame->format());
+          DCHECK_EQ(3u,
+                    frame_resources_.size());  // Alpha is not supported yet.
+        }
+      } else {
+        DCHECK_GE(frame_resources_.size(), 3u);
+        DCHECK(frame_resources_.size() <= 3 ||
+               ya_tex_size == VideoFrame::PlaneSize(frame->format(),
+                                                    VideoFrame::kAPlane,
+                                                    coded_size));
+      }
+
+      // Compute the UV sub-sampling factor based on the ratio between
+      // |ya_tex_size| and |uv_tex_size|.
+      float uv_subsampling_factor_x =
+          static_cast<float>(ya_tex_size.width()) / uv_tex_size.width();
+      float uv_subsampling_factor_y =
+          static_cast<float>(ya_tex_size.height()) / uv_tex_size.height();
+      gfx::RectF ya_tex_coord_rect(visible_rect);
+      gfx::RectF uv_tex_coord_rect(
+          visible_rect.x() / uv_subsampling_factor_x,
+          visible_rect.y() / uv_subsampling_factor_y,
+          visible_rect.width() / uv_subsampling_factor_x,
+          visible_rect.height() / uv_subsampling_factor_y);
+
+      auto* yuv_video_quad =
+          render_pass->CreateAndAppendDrawQuad<viz::YUVVideoDrawQuad>();
+      yuv_video_quad->SetNew(
+          shared_quad_state, quad_rect, visible_quad_rect, needs_blending,
+          ya_tex_coord_rect, uv_tex_coord_rect, ya_tex_size, uv_tex_size,
+          frame_resources_[0].id, frame_resources_[1].id,
+          frame_resources_.size() > 2 ? frame_resources_[2].id
+                                      : frame_resources_[1].id,
+          frame_resources_.size() > 3 ? frame_resources_[3].id : 0,
+          frame->ColorSpace(), frame_resource_offset_,
+          frame_resource_multiplier_, frame_bits_per_channel_);
+      yuv_video_quad->require_overlay =
+          frame->metadata()->IsTrue(VideoFrameMetadata::REQUIRE_OVERLAY);
+      yuv_video_quad->is_protected_video =
+          frame->metadata()->IsTrue(VideoFrameMetadata::PROTECTED_VIDEO);
+
+      for (viz::ResourceId resource_id : yuv_video_quad->resources) {
+        resource_provider_->ValidateResource(resource_id);
+      }
+      break;
+    }
+    case VideoFrameResourceType::RGBA:
+    case VideoFrameResourceType::RGBA_PREMULTIPLIED:
+    case VideoFrameResourceType::RGB: {
+      DCHECK_EQ(frame_resources_.size(), 1u);
+      if (frame_resources_.size() < 1u)
+        break;
+      bool premultiplied_alpha =
+          frame_resource_type_ == VideoFrameResourceType::RGBA_PREMULTIPLIED;
+      gfx::PointF uv_top_left(0.f, 0.f);
+      gfx::PointF uv_bottom_right(tex_width_scale, tex_height_scale);
+      float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
+      bool flipped = false;
+      bool nearest_neighbor = false;
+      auto* texture_quad =
+          render_pass->CreateAndAppendDrawQuad<viz::TextureDrawQuad>();
+      texture_quad->SetNew(shared_quad_state, quad_rect, visible_quad_rect,
+                           needs_blending, frame_resources_[0].id,
+                           premultiplied_alpha, uv_top_left, uv_bottom_right,
+                           SK_ColorTRANSPARENT, opacity, flipped,
+                           nearest_neighbor, false);
+      texture_quad->set_resource_size_in_pixels(coded_size);
+      for (viz::ResourceId resource_id : texture_quad->resources) {
+        resource_provider_->ValidateResource(resource_id);
+      }
+      break;
+    }
+    case VideoFrameResourceType::STREAM_TEXTURE: {
+      DCHECK_EQ(frame_resources_.size(), 1u);
+      if (frame_resources_.size() < 1u)
+        break;
+      gfx::Transform scale;
+      scale.Scale(tex_width_scale, tex_height_scale);
+      auto* stream_video_quad =
+          render_pass->CreateAndAppendDrawQuad<viz::StreamVideoDrawQuad>();
+      stream_video_quad->SetNew(shared_quad_state, quad_rect, visible_quad_rect,
+                                needs_blending, frame_resources_[0].id,
+                                frame_resources_[0].size_in_pixels, scale);
+      for (viz::ResourceId resource_id : stream_video_quad->resources) {
+        resource_provider_->ValidateResource(resource_id);
+      }
+      break;
+    }
+    case VideoFrameResourceType::NONE:
+      NOTIMPLEMENTED();
+      break;
+  }
+}
+
+VideoFrameExternalResources
+VideoResourceUpdater::CreateExternalResourcesFromVideoFrame(
+    scoped_refptr<VideoFrame> video_frame) {
+  if (video_frame->format() == PIXEL_FORMAT_UNKNOWN)
+    return VideoFrameExternalResources();
+  DCHECK(video_frame->HasTextures() || video_frame->IsMappable());
+  if (video_frame->HasTextures())
+    return CreateForHardwarePlanes(std::move(video_frame));
+  else
+    return CreateForSoftwarePlanes(std::move(video_frame));
+}
+
+viz::ResourceFormat VideoResourceUpdater::YuvResourceFormat(
+    int bits_per_channel) {
+  DCHECK(context_provider_);
+  const auto& caps = context_provider_->ContextCapabilities();
+  if (caps.disable_one_component_textures)
+    return viz::RGBA_8888;
+  if (bits_per_channel <= 8)
+    return caps.texture_rg ? viz::RED_8 : viz::LUMINANCE_8;
+  if (use_r16_texture_ && caps.texture_norm16)
+    return viz::R16_EXT;
+  if (caps.texture_half_float_linear)
+    return viz::LUMINANCE_F16;
+  return viz::LUMINANCE_8;
+}
+
+VideoResourceUpdater::PlaneResource*
+VideoResourceUpdater::RecycleOrAllocateResource(
+    const gfx::Size& resource_size,
+    viz::ResourceFormat resource_format,
+    const gfx::ColorSpace& color_space,
+    int unique_id,
+    int plane_index) {
+  PlaneResource* recyclable_resource = nullptr;
+  for (auto& resource : all_resources_) {
+    // If the plane index is valid (positive, or 0, meaning all planes)
+    // then we are allowed to return a referenced resource that already
+    // contains the right frame data. It's safe to reuse it even if
+    // resource_provider_ holds some references to it, because those
+    // references are read-only.
+    if (plane_index != -1 && resource->Matches(unique_id, plane_index)) {
+      DCHECK(resource->resource_size() == resource_size);
+      DCHECK(resource->resource_format() == resource_format);
+      return resource.get();
+    }
+
+    // Otherwise check whether this is an unreferenced resource of the right
+    // format that we can recycle. Remember it, but don't return immediately,
+    // because we still want to find any reusable resources.
+    const bool in_use = resource->has_refs();
+
+    if (!in_use && resource->resource_size() == resource_size &&
+        resource->resource_format() == resource_format) {
+      recyclable_resource = resource.get();
+    }
+  }
+
+  if (recyclable_resource)
+    return recyclable_resource;
+
+  // There was nothing available to reuse or recycle. Allocate a new resource.
+  return AllocateResource(resource_size, resource_format, color_space);
+}
+
+VideoResourceUpdater::PlaneResource* VideoResourceUpdater::AllocateResource(
+    const gfx::Size& plane_size,
+    viz::ResourceFormat format,
+    const gfx::ColorSpace& color_space) {
+  const uint32_t plane_resource_id = next_plane_resource_id_++;
+
+  if (software_compositor()) {
+    DCHECK_EQ(format, viz::ResourceFormat::RGBA_8888);
+
+    all_resources_.push_back(std::make_unique<SoftwarePlaneResource>(
+        plane_resource_id, plane_size, shared_bitmap_reporter_));
+  } else {
+    // Video textures get composited into the display frame, the GPU doesn't
+    // draw to them directly.
+    constexpr bool kForFrameBufferAttachment = false;
+
+    viz::TextureAllocation alloc = viz::TextureAllocation::MakeTextureId(
+        context_provider_->ContextGL(),
+        context_provider_->ContextCapabilities(), format,
+        use_gpu_memory_buffer_resources_, kForFrameBufferAttachment);
+    viz::TextureAllocation::AllocateStorage(
+        context_provider_->ContextGL(),
+        context_provider_->ContextCapabilities(), format, plane_size, alloc,
+        color_space);
+
+    all_resources_.push_back(std::make_unique<HardwarePlaneResource>(
+        plane_resource_id, plane_size, format, context_provider_,
+        std::move(alloc)));
+  }
+  return all_resources_.back().get();
+}
+
+void VideoResourceUpdater::CopyHardwarePlane(
+    VideoFrame* video_frame,
+    const gfx::ColorSpace& resource_color_space,
+    const gpu::MailboxHolder& mailbox_holder,
+    VideoFrameExternalResources* external_resources) {
+  const gfx::Size output_plane_resource_size = video_frame->coded_size();
+  // The copy needs to be a direct transfer of pixel data, so we use an RGBA8
+  // target to avoid loss of precision or dropping any alpha component.
+  constexpr viz::ResourceFormat copy_resource_format =
+      viz::ResourceFormat::RGBA_8888;
+
+  const int no_unique_id = 0;
+  const int no_plane_index = -1;  // Do not recycle referenced textures.
+  PlaneResource* plane_resource = RecycleOrAllocateResource(
+      output_plane_resource_size, copy_resource_format, resource_color_space,
+      no_unique_id, no_plane_index);
+  HardwarePlaneResource* hardware_resource = plane_resource->AsHardware();
+  hardware_resource->add_ref();
+
+  DCHECK_EQ(hardware_resource->texture_target(),
+            static_cast<GLenum>(GL_TEXTURE_2D));
+
+  gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL();
+
+  gl->WaitSyncTokenCHROMIUM(mailbox_holder.sync_token.GetConstData());
+  uint32_t src_texture_id =
+      gl->CreateAndConsumeTextureCHROMIUM(mailbox_holder.mailbox.name);
+  gl->CopySubTextureCHROMIUM(
+      src_texture_id, 0, GL_TEXTURE_2D, hardware_resource->texture_id(), 0, 0,
+      0, 0, 0, output_plane_resource_size.width(),
+      output_plane_resource_size.height(), false, false, false);
+  gl->DeleteTextures(1, &src_texture_id);
+
+  // Pass an empty sync token to force generation of a new sync token.
+  SyncTokenClientImpl client(gl, gpu::SyncToken());
+  gpu::SyncToken sync_token = video_frame->UpdateReleaseSyncToken(&client);
+
+  auto transferable_resource = viz::TransferableResource::MakeGL(
+      hardware_resource->mailbox(), GL_LINEAR, GL_TEXTURE_2D, sync_token);
+  transferable_resource.color_space = resource_color_space;
+  transferable_resource.format = copy_resource_format;
+  transferable_resource.buffer_format = viz::BufferFormat(copy_resource_format);
+  external_resources->resources.push_back(std::move(transferable_resource));
+
+  external_resources->release_callbacks.push_back(base::BindOnce(
+      &VideoResourceUpdater::RecycleResource, weak_ptr_factory_.GetWeakPtr(),
+      hardware_resource->plane_resource_id()));
+}
+
+VideoFrameExternalResources VideoResourceUpdater::CreateForHardwarePlanes(
+    scoped_refptr<VideoFrame> video_frame) {
+  TRACE_EVENT0("cc", "VideoResourceUpdater::CreateForHardwarePlanes");
+  DCHECK(video_frame->HasTextures());
+  if (!context_provider_)
+    return VideoFrameExternalResources();
+
+  VideoFrameExternalResources external_resources;
+  gfx::ColorSpace resource_color_space = video_frame->ColorSpace();
+
+  bool copy_required =
+      video_frame->metadata()->IsTrue(VideoFrameMetadata::COPY_REQUIRED);
+
+  GLuint target = video_frame->mailbox_holder(0).texture_target;
+  // If |copy_required| then we will copy into a GL_TEXTURE_2D target.
+  if (copy_required)
+    target = GL_TEXTURE_2D;
+
+  gfx::BufferFormat buffer_format;
+  external_resources.type = ExternalResourceTypeForHardwarePlanes(
+      video_frame->format(), target, video_frame->NumTextures(), &buffer_format,
+      use_stream_video_draw_quad_);
+  if (external_resources.type == VideoFrameResourceType::NONE) {
+    DLOG(ERROR) << "Unsupported Texture format"
+                << VideoPixelFormatToString(video_frame->format());
+    return external_resources;
+  }
+  if (external_resources.type == VideoFrameResourceType::RGB ||
+      external_resources.type == VideoFrameResourceType::RGBA ||
+      external_resources.type == VideoFrameResourceType::RGBA_PREMULTIPLIED) {
+    resource_color_space = resource_color_space.GetAsFullRangeRGB();
+  }
+
+  const size_t num_textures = video_frame->NumTextures();
+  for (size_t i = 0; i < num_textures; ++i) {
+    const gpu::MailboxHolder& mailbox_holder = video_frame->mailbox_holder(i);
+    if (mailbox_holder.mailbox.IsZero())
+      break;
+
+    if (copy_required) {
+      CopyHardwarePlane(video_frame.get(), resource_color_space, mailbox_holder,
+                        &external_resources);
+    } else {
+      auto transfer_resource = viz::TransferableResource::MakeGLOverlay(
+          mailbox_holder.mailbox, GL_LINEAR, mailbox_holder.texture_target,
+          mailbox_holder.sync_token, video_frame->coded_size(),
+          video_frame->metadata()->IsTrue(VideoFrameMetadata::ALLOW_OVERLAY));
+      transfer_resource.color_space = resource_color_space;
+      transfer_resource.read_lock_fences_enabled =
+          video_frame->metadata()->IsTrue(
+              VideoFrameMetadata::READ_LOCK_FENCES_ENABLED);
+      transfer_resource.buffer_format = buffer_format;
+#if defined(OS_ANDROID)
+      transfer_resource.is_backed_by_surface_texture =
+          video_frame->metadata()->IsTrue(VideoFrameMetadata::TEXTURE_OWNER);
+      transfer_resource.wants_promotion_hint = video_frame->metadata()->IsTrue(
+          VideoFrameMetadata::WANTS_PROMOTION_HINT);
+#endif
+      external_resources.resources.push_back(std::move(transfer_resource));
+      external_resources.release_callbacks.push_back(
+          base::BindOnce(&VideoResourceUpdater::ReturnTexture,
+                         weak_ptr_factory_.GetWeakPtr(), video_frame));
+    }
+  }
+  return external_resources;
+}
+
+VideoFrameExternalResources VideoResourceUpdater::CreateForSoftwarePlanes(
+    scoped_refptr<VideoFrame> video_frame) {
+  TRACE_EVENT0("cc", "VideoResourceUpdater::CreateForSoftwarePlanes");
+  const VideoPixelFormat input_frame_format = video_frame->format();
+
+  size_t bits_per_channel = video_frame->BitDepth();
+
+  // Only YUV and Y16 software video frames are supported.
+  DCHECK(IsYuvPlanar(input_frame_format) ||
+         input_frame_format == PIXEL_FORMAT_Y16);
+
+  viz::ResourceFormat output_resource_format;
+  gfx::ColorSpace output_color_space = video_frame->ColorSpace();
+  if (input_frame_format == PIXEL_FORMAT_Y16) {
+    // Unable to display directly as yuv planes so convert it to RGBA for
+    // compositing.
+    output_resource_format = viz::RGBA_8888;
+    output_color_space = output_color_space.GetAsFullRangeRGB();
+  } else if (!software_compositor()) {
+    // Can be composited directly from yuv planes.
+    output_resource_format = YuvResourceFormat(bits_per_channel);
+  }
+
+  // If GPU compositing is enabled, but the output resource format
+  // returned by the resource provider is viz::RGBA_8888, then a GPU driver
+  // bug workaround requires that YUV frames must be converted to RGB
+  // before texture upload.
+  bool texture_needs_rgb_conversion =
+      !software_compositor() &&
+      output_resource_format == viz::ResourceFormat::RGBA_8888;
+
+  size_t output_plane_count = VideoFrame::NumPlanes(input_frame_format);
+
+  // TODO(skaslev): If we're in software compositing mode, we do the YUV -> RGB
+  // conversion here. That involves an extra copy of each frame to a bitmap.
+  // Obviously, this is suboptimal and should be addressed once ubercompositor
+  // starts shaping up.
+  if (software_compositor() || texture_needs_rgb_conversion) {
+    output_resource_format = viz::RGBA_8888;
+    output_plane_count = 1;
+    bits_per_channel = 8;
+
+    // The YUV to RGB conversion will be performed when we convert
+    // from single-channel textures to an RGBA texture via
+    // ConvertVideoFrameToRGBPixels below.
+    output_color_space = output_color_space.GetAsFullRangeRGB();
+  }
+
+  std::vector<gfx::Size> outplane_plane_sizes;
+  outplane_plane_sizes.reserve(output_plane_count);
+  for (size_t i = 0; i < output_plane_count; ++i) {
+    outplane_plane_sizes.push_back(
+        SoftwarePlaneDimension(video_frame.get(), software_compositor(), i));
+    const gfx::Size& output_plane_resource_size = outplane_plane_sizes.back();
+    if (output_plane_resource_size.IsEmpty() ||
+        output_plane_resource_size.width() > max_resource_size_ ||
+        output_plane_resource_size.height() > max_resource_size_) {
+      // This output plane has invalid geometry so return an empty external
+      // resources.
+      return VideoFrameExternalResources();
+    }
+  }
+
+  // Delete recycled resources that are the wrong format or wrong size.
+  auto can_delete_resource_fn =
+      [output_resource_format,
+       &outplane_plane_sizes](const std::unique_ptr<PlaneResource>& resource) {
+        // Resources that are still being used can't be deleted.
+        if (resource->has_refs())
+          return false;
+
+        return resource->resource_format() != output_resource_format ||
+               !base::ContainsValue(outplane_plane_sizes,
+                                    resource->resource_size());
+      };
+  base::EraseIf(all_resources_, can_delete_resource_fn);
+
+  // Recycle or allocate resources for each video plane.
+  std::vector<PlaneResource*> plane_resources;
+  plane_resources.reserve(output_plane_count);
+  for (size_t i = 0; i < output_plane_count; ++i) {
+    plane_resources.push_back(RecycleOrAllocateResource(
+        outplane_plane_sizes[i], output_resource_format, output_color_space,
+        video_frame->unique_id(), i));
+    plane_resources.back()->add_ref();
+  }
+
+  VideoFrameExternalResources external_resources;
+
+  external_resources.bits_per_channel = bits_per_channel;
+
+  if (software_compositor() || texture_needs_rgb_conversion) {
+    DCHECK_EQ(plane_resources.size(), 1u);
+    PlaneResource* plane_resource = plane_resources[0];
+    DCHECK_EQ(plane_resource->resource_format(), viz::RGBA_8888);
+
+    if (!plane_resource->Matches(video_frame->unique_id(), 0)) {
+      // We need to transfer data from |video_frame| to the plane resource.
+      if (software_compositor()) {
+        if (!video_renderer_)
+          video_renderer_ = std::make_unique<PaintCanvasVideoRenderer>();
+
+        SoftwarePlaneResource* software_resource = plane_resource->AsSoftware();
+
+        // We know the format is RGBA_8888 from check above.
+        SkImageInfo info = SkImageInfo::MakeN32Premul(
+            gfx::SizeToSkISize(software_resource->resource_size()));
+
+        SkBitmap sk_bitmap;
+        sk_bitmap.installPixels(info, software_resource->pixels(),
+                                info.minRowBytes());
+        cc::SkiaPaintCanvas canvas(sk_bitmap);
+
+        // This is software path, so canvas and video_frame are always backed
+        // by software.
+        video_renderer_->Copy(video_frame, &canvas, Context3D());
+      } else {
+        HardwarePlaneResource* hardware_resource = plane_resource->AsHardware();
+        size_t bytes_per_row = viz::ResourceSizes::CheckedWidthInBytes<size_t>(
+            video_frame->coded_size().width(), viz::ResourceFormat::RGBA_8888);
+        size_t needed_size = bytes_per_row * video_frame->coded_size().height();
+        if (upload_pixels_.size() < needed_size) {
+          // Clear before resizing to avoid memcpy.
+          upload_pixels_.clear();
+          upload_pixels_.resize(needed_size);
+        }
+
+        PaintCanvasVideoRenderer::ConvertVideoFrameToRGBPixels(
+            video_frame.get(), &upload_pixels_[0], bytes_per_row);
+
+        // Copy pixels into texture.
+        auto* gl = context_provider_->ContextGL();
+        gl->BindTexture(hardware_resource->texture_target(),
+                        hardware_resource->texture_id());
+        const gfx::Size& plane_size = hardware_resource->resource_size();
+        gl->TexSubImage2D(
+            hardware_resource->texture_target(), 0, 0, 0, plane_size.width(),
+            plane_size.height(), GLDataFormat(viz::ResourceFormat::RGBA_8888),
+            GLDataType(viz::ResourceFormat::RGBA_8888), &upload_pixels_[0]);
+      }
+      plane_resource->SetUniqueId(video_frame->unique_id(), 0);
+    }
+
+    viz::TransferableResource transferable_resource;
+    if (software_compositor()) {
+      SoftwarePlaneResource* software_resource = plane_resource->AsSoftware();
+      external_resources.type = VideoFrameResourceType::RGBA_PREMULTIPLIED;
+      transferable_resource = viz::TransferableResource::MakeSoftware(
+          software_resource->shared_bitmap_id(),
+          software_resource->resource_size(),
+          plane_resource->resource_format());
+    } else {
+      HardwarePlaneResource* hardware_resource = plane_resource->AsHardware();
+      external_resources.type = VideoFrameResourceType::RGBA;
+      gpu::SyncToken sync_token;
+      GenerateCompositorSyncToken(context_provider_->ContextGL(), &sync_token);
+      transferable_resource = viz::TransferableResource::MakeGLOverlay(
+          hardware_resource->mailbox(), GL_LINEAR,
+          hardware_resource->texture_target(), sync_token,
+          hardware_resource->resource_size(),
+          hardware_resource->overlay_candidate());
+    }
+
+    transferable_resource.color_space = output_color_space;
+    transferable_resource.format = viz::ResourceFormat::RGBA_8888;
+    transferable_resource.buffer_format =
+        viz::BufferFormat(viz::ResourceFormat::RGBA_8888);
+    external_resources.resources.push_back(std::move(transferable_resource));
+    external_resources.release_callbacks.push_back(base::BindOnce(
+        &VideoResourceUpdater::RecycleResource, weak_ptr_factory_.GetWeakPtr(),
+        plane_resource->plane_resource_id()));
+
+    return external_resources;
+  }
+
+  const viz::ResourceFormat yuv_resource_format =
+      YuvResourceFormat(bits_per_channel);
+  DCHECK(yuv_resource_format == viz::LUMINANCE_F16 ||
+         yuv_resource_format == viz::R16_EXT ||
+         yuv_resource_format == viz::LUMINANCE_8 ||
+         yuv_resource_format == viz::RED_8)
+      << yuv_resource_format;
+
+  std::unique_ptr<HalfFloatMaker> half_float_maker;
+  if (yuv_resource_format == viz::LUMINANCE_F16) {
+    half_float_maker = HalfFloatMaker::NewHalfFloatMaker(bits_per_channel);
+    external_resources.offset = half_float_maker->Offset();
+    external_resources.multiplier = half_float_maker->Multiplier();
+  } else if (yuv_resource_format == viz::R16_EXT) {
+    external_resources.multiplier = 65535.0f / ((1 << bits_per_channel) - 1);
+    external_resources.offset = 0;
+  }
+
+  // We need to transfer data from |video_frame| to the plane resources.
+  for (size_t i = 0; i < plane_resources.size(); ++i) {
+    HardwarePlaneResource* plane_resource = plane_resources[i]->AsHardware();
+
+    // Skip the transfer if this |video_frame|'s plane has been processed.
+    if (plane_resource->Matches(video_frame->unique_id(), i))
+      continue;
+
+    const viz::ResourceFormat plane_resource_format =
+        plane_resource->resource_format();
+    DCHECK_EQ(plane_resource_format, yuv_resource_format);
+
+    // TODO(hubbe): Move upload code to media/.
+    // TODO(reveman): Can use GpuMemoryBuffers here to improve performance.
+
+    // |video_stride_bytes| is the width of the |video_frame| we are uploading
+    // (including non-frame data to fill in the stride).
+    const int video_stride_bytes = video_frame->stride(i);
+
+    // |resource_size_pixels| is the size of the destination resource.
+    const gfx::Size resource_size_pixels = plane_resource->resource_size();
+
+    const size_t bytes_per_row =
+        viz::ResourceSizes::CheckedWidthInBytes<size_t>(
+            resource_size_pixels.width(), plane_resource_format);
+    // Use 4-byte row alignment (OpenGL default) for upload performance.
+    // Assuming that GL_UNPACK_ALIGNMENT has not changed from default.
+    const size_t upload_image_stride =
+        cc::MathUtil::CheckedRoundUp<size_t>(bytes_per_row, 4u);
+
+    const size_t resource_bit_depth =
+        static_cast<size_t>(viz::BitsPerPixel(plane_resource_format));
+
+    // Data downshifting is needed if the resource bit depth is not enough.
+    const bool needs_bit_downshifting = bits_per_channel > resource_bit_depth;
+
+    // A copy to adjust strides is needed if those are different and both source
+    // and destination have the same bit depth.
+    const bool needs_stride_adaptation =
+        (bits_per_channel == resource_bit_depth) &&
+        (upload_image_stride != static_cast<size_t>(video_stride_bytes));
+
+    // We need to convert the incoming data if we're transferring to half float,
+    // if the need a bit downshift or if the strides need to be reconciled.
+    const bool needs_conversion = plane_resource_format == viz::LUMINANCE_F16 ||
+                                  needs_bit_downshifting ||
+                                  needs_stride_adaptation;
+
+    const uint8_t* pixels;
+    if (!needs_conversion) {
+      pixels = video_frame->data(i);
+    } else {
+      // Avoid malloc for each frame/plane if possible.
+      const size_t needed_size =
+          upload_image_stride * resource_size_pixels.height();
+      if (upload_pixels_.size() < needed_size) {
+        // Clear before resizing to avoid memcpy.
+        upload_pixels_.clear();
+        upload_pixels_.resize(needed_size);
+      }
+
+      if (plane_resource_format == viz::LUMINANCE_F16) {
+        for (int row = 0; row < resource_size_pixels.height(); ++row) {
+          uint16_t* dst = reinterpret_cast<uint16_t*>(
+              &upload_pixels_[upload_image_stride * row]);
+          const uint16_t* src = reinterpret_cast<uint16_t*>(
+              video_frame->data(i) + (video_stride_bytes * row));
+          half_float_maker->MakeHalfFloats(src, bytes_per_row / 2, dst);
+        }
+      } else if (needs_bit_downshifting) {
+        DCHECK(plane_resource_format == viz::LUMINANCE_8 ||
+               plane_resource_format == viz::RED_8);
+        const int scale = 0x10000 >> (bits_per_channel - 8);
+        libyuv::Convert16To8Plane(
+            reinterpret_cast<uint16_t*>(video_frame->data(i)),
+            video_stride_bytes / 2, upload_pixels_.data(), upload_image_stride,
+            scale, bytes_per_row, resource_size_pixels.height());
+      } else {
+        // Make a copy to reconcile stride, size and format being equal.
+        DCHECK(needs_stride_adaptation);
+        DCHECK(plane_resource_format == viz::LUMINANCE_8 ||
+               plane_resource_format == viz::RED_8);
+        libyuv::CopyPlane(video_frame->data(i), video_stride_bytes,
+                          upload_pixels_.data(), upload_image_stride,
+                          resource_size_pixels.width(),
+                          resource_size_pixels.height());
+      }
+
+      pixels = &upload_pixels_[0];
+    }
+
+    // Copy pixels into texture. TexSubImage2D() is applicable because
+    // |yuv_resource_format| is LUMINANCE_F16, R16_EXT, LUMINANCE_8 or RED_8.
+    auto* gl = context_provider_->ContextGL();
+    gl->BindTexture(plane_resource->texture_target(),
+                    plane_resource->texture_id());
+    gl->TexSubImage2D(
+        plane_resource->texture_target(), 0, 0, 0, resource_size_pixels.width(),
+        resource_size_pixels.height(), GLDataFormat(plane_resource_format),
+        GLDataType(plane_resource_format), pixels);
+
+    plane_resource->SetUniqueId(video_frame->unique_id(), i);
+  }
+
+  // Set the sync token otherwise resource is assumed to be synchronized.
+  gpu::SyncToken sync_token;
+  GenerateCompositorSyncToken(context_provider_->ContextGL(), &sync_token);
+
+  for (size_t i = 0; i < plane_resources.size(); ++i) {
+    HardwarePlaneResource* plane_resource = plane_resources[i]->AsHardware();
+    auto transferable_resource = viz::TransferableResource::MakeGLOverlay(
+        plane_resource->mailbox(), GL_LINEAR, plane_resource->texture_target(),
+        sync_token, plane_resource->resource_size(),
+        plane_resource->overlay_candidate());
+    transferable_resource.color_space = output_color_space;
+    transferable_resource.format = output_resource_format;
+    transferable_resource.buffer_format =
+        viz::BufferFormat(output_resource_format);
+    external_resources.resources.push_back(std::move(transferable_resource));
+    external_resources.release_callbacks.push_back(base::BindOnce(
+        &VideoResourceUpdater::RecycleResource, weak_ptr_factory_.GetWeakPtr(),
+        plane_resource->plane_resource_id()));
+  }
+
+  external_resources.type = VideoFrameResourceType::YUV;
+  return external_resources;
+}
+
+void VideoResourceUpdater::ReturnTexture(
+    const scoped_refptr<VideoFrame>& video_frame,
+    const gpu::SyncToken& sync_token,
+    bool lost_resource) {
+  // TODO(dshwang): Forward to the decoder as a lost resource.
+  if (lost_resource)
+    return;
+
+  // The video frame will insert a wait on the previous release sync token.
+  SyncTokenClientImpl client(context_provider_->ContextGL(), sync_token);
+  video_frame->UpdateReleaseSyncToken(&client);
+}
+
+void VideoResourceUpdater::RecycleResource(uint32_t plane_resource_id,
+                                           const gpu::SyncToken& sync_token,
+                                           bool lost_resource) {
+  auto matches_id_fn =
+      [plane_resource_id](const std::unique_ptr<PlaneResource>& resource) {
+        return resource->plane_resource_id() == plane_resource_id;
+      };
+  auto resource_it =
+      std::find_if(all_resources_.begin(), all_resources_.end(), matches_id_fn);
+  if (resource_it == all_resources_.end())
+    return;
+
+  if (context_provider_ && sync_token.HasData()) {
+    context_provider_->ContextGL()->WaitSyncTokenCHROMIUM(
+        sync_token.GetConstData());
+  }
+
+  if (lost_resource) {
+    all_resources_.erase(resource_it);
+  } else {
+    (*resource_it)->remove_ref();
+  }
+}
+
+bool VideoResourceUpdater::OnMemoryDump(
+    const base::trace_event::MemoryDumpArgs& args,
+    base::trace_event::ProcessMemoryDump* pmd) {
+  for (auto& resource : all_resources_) {
+    std::string dump_name =
+        base::StringPrintf("cc/video_memory/updater_%d/resource_%d",
+                           tracing_id_, resource->plane_resource_id());
+    base::trace_event::MemoryAllocatorDump* dump =
+        pmd->CreateAllocatorDump(dump_name);
+
+    const uint64_t total_bytes =
+        viz::ResourceSizes::UncheckedSizeInBytesAligned<uint64_t>(
+            resource->resource_size(), resource->resource_format());
+    dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize,
+                    base::trace_event::MemoryAllocatorDump::kUnitsBytes,
+                    total_bytes);
+
+    // The importance value assigned to the GUID here must be greater than the
+    // importance value assigned elsewhere so that resource ownership is
+    // attributed to VideoResourceUpdater.
+    constexpr int kImportance = 2;
+
+    // Resources are shared across processes and require a shared GUID to
+    // prevent double counting the memory.
+    if (software_compositor()) {
+      base::UnguessableToken shm_guid =
+          resource->AsSoftware()->GetSharedMemoryGuid();
+      pmd->CreateSharedMemoryOwnershipEdge(dump->guid(), shm_guid, kImportance);
+    } else {
+      base::trace_event::MemoryAllocatorDumpGuid guid =
+          gl::GetGLTextureClientGUIDForTracing(
+              context_provider_->ContextSupport()->ShareGroupTracingGUID(),
+              resource->AsHardware()->texture_id());
+      pmd->CreateSharedGlobalAllocatorDump(guid);
+      pmd->AddOwnershipEdge(dump->guid(), guid, kImportance);
+    }
+  }
+
+  return true;
+}
+
+}  // namespace media
diff --git a/media/renderers/video_resource_updater.h b/media/renderers/video_resource_updater.h
new file mode 100644
index 0000000..b554b373
--- /dev/null
+++ b/media/renderers/video_resource_updater.h
@@ -0,0 +1,217 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MEDIA_RENDERERS_VIDEO_RESOURCE_UPDATER_H_
+#define MEDIA_RENDERERS_VIDEO_RESOURCE_UPDATER_H_
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include <list>
+#include <memory>
+#include <vector>
+
+#include "base/macros.h"
+#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
+#include "base/time/time.h"
+#include "base/trace_event/memory_dump_provider.h"
+#include "components/viz/common/resources/release_callback.h"
+#include "components/viz/common/resources/resource_format.h"
+#include "components/viz/common/resources/resource_id.h"
+#include "components/viz/common/resources/transferable_resource.h"
+#include "media/base/media_export.h"
+#include "ui/gfx/buffer_types.h"
+#include "ui/gfx/geometry/size.h"
+
+namespace gfx {
+class Rect;
+class Transform;
+}  // namespace gfx
+
+namespace viz {
+class ClientResourceProvider;
+class ContextProvider;
+class RenderPass;
+class SharedBitmapReporter;
+}  // namespace viz
+
+namespace media {
+class PaintCanvasVideoRenderer;
+class VideoFrame;
+
+// Specifies what type of data is contained in the mailboxes, as well as how
+// many mailboxes will be present.
+enum class VideoFrameResourceType {
+  NONE,
+  YUV,
+  RGB,
+  RGBA_PREMULTIPLIED,
+  RGBA,
+  STREAM_TEXTURE,
+};
+
+class MEDIA_EXPORT VideoFrameExternalResources {
+ public:
+  VideoFrameResourceType type = VideoFrameResourceType::NONE;
+  std::vector<viz::TransferableResource> resources;
+  std::vector<viz::ReleaseCallback> release_callbacks;
+
+  // Used by hardware textures which do not return values in the 0-1 range.
+  // After a lookup, subtract offset and multiply by multiplier.
+  float offset = 0.f;
+  float multiplier = 1.f;
+  uint32_t bits_per_channel = 8;
+
+  VideoFrameExternalResources();
+  VideoFrameExternalResources(VideoFrameExternalResources&& other);
+  VideoFrameExternalResources& operator=(VideoFrameExternalResources&& other);
+  ~VideoFrameExternalResources();
+};
+
+// VideoResourceUpdater is used by the video system to produce frame content as
+// resources consumable by the display compositor.
+class MEDIA_EXPORT VideoResourceUpdater
+    : public base::trace_event::MemoryDumpProvider {
+ public:
+  // For GPU compositing |context_provider| should be provided and for software
+  // compositing |shared_bitmap_reporter| should be provided. If there is a
+  // non-null |context_provider| we assume GPU compositing.
+  VideoResourceUpdater(viz::ContextProvider* context_provider,
+                       viz::SharedBitmapReporter* shared_bitmap_reporter,
+                       viz::ClientResourceProvider* resource_provider,
+                       bool use_stream_video_draw_quad,
+                       bool use_gpu_memory_buffer_resources,
+                       bool use_r16_texture,
+                       int max_resource_size);
+
+  ~VideoResourceUpdater() override;
+
+  // For each CompositorFrame the following sequence is expected:
+  // 1. ObtainFrameResources(): Import resources for the next video frame with
+  //    viz::ClientResourceProvider. This will reuse existing GPU or
+  //    SharedMemory buffers if possible, otherwise it will allocate new ones.
+  // 2. AppendQuads(): Add DrawQuads to CompositorFrame for video.
+  // 3. ReleaseFrameResources(): After the CompositorFrame has been submitted,
+  //    remove imported resources from viz::ClientResourceProvider.
+  void ObtainFrameResources(scoped_refptr<VideoFrame> video_frame);
+  void ReleaseFrameResources();
+  void AppendQuads(viz::RenderPass* render_pass,
+                   scoped_refptr<VideoFrame> frame,
+                   gfx::Transform transform,
+                   gfx::Size rotated_size,
+                   gfx::Rect visible_layer_rect,
+                   gfx::Rect clip_rect,
+                   bool is_clipped,
+                   bool context_opaque,
+                   float draw_opacity,
+                   int sorting_context_id,
+                   gfx::Rect visible_quad_rect);
+
+  // TODO(kylechar): This is only public for testing, make private.
+  VideoFrameExternalResources CreateExternalResourcesFromVideoFrame(
+      scoped_refptr<VideoFrame> video_frame);
+
+  viz::ResourceFormat YuvResourceFormat(int bits_per_channel);
+
+ private:
+  class PlaneResource;
+  class HardwarePlaneResource;
+  class SoftwarePlaneResource;
+
+  // A resource that will be embedded in a DrawQuad in the next CompositorFrame.
+  // Each video plane will correspond to one FrameResource.
+  struct FrameResource {
+    viz::ResourceId id;
+    gfx::Size size_in_pixels;
+  };
+
+  bool software_compositor() const { return context_provider_ == nullptr; }
+
+  // Obtain a resource of the right format by either recycling an
+  // unreferenced but appropriately formatted resource, or by
+  // allocating a new resource.
+  // Additionally, if the |unique_id| and |plane_index| match, then
+  // it is assumed that the resource has the right data already and will only be
+  // used for reading, and so is returned even if it is still referenced.
+  // Passing -1 for |plane_index| avoids returning referenced
+  // resources.
+  PlaneResource* RecycleOrAllocateResource(const gfx::Size& resource_size,
+                                           viz::ResourceFormat resource_format,
+                                           const gfx::ColorSpace& color_space,
+                                           int unique_id,
+                                           int plane_index);
+  PlaneResource* AllocateResource(const gfx::Size& plane_size,
+                                  viz::ResourceFormat format,
+                                  const gfx::ColorSpace& color_space);
+
+  // Create a copy of a texture-backed source video frame in a new GL_TEXTURE_2D
+  // texture. This is used when there are multiple GPU threads (Android WebView)
+  // and the source video frame texture can't be used on the output GL context.
+  // https://crbug.com/582170
+  void CopyHardwarePlane(VideoFrame* video_frame,
+                         const gfx::ColorSpace& resource_color_space,
+                         const gpu::MailboxHolder& mailbox_holder,
+                         VideoFrameExternalResources* external_resources);
+
+  // Get resources ready to be appended into DrawQuads. This is used for GPU
+  // compositing most of the time, except for the cases mentioned in
+  // CreateForSoftwarePlanes().
+  VideoFrameExternalResources CreateForHardwarePlanes(
+      scoped_refptr<VideoFrame> video_frame);
+
+  // Get resources ready to be appended into DrawQuads. This is always used for
+  // software compositing. This is also used for GPU compositing when the input
+  // video frame has no textures.
+  VideoFrameExternalResources CreateForSoftwarePlanes(
+      scoped_refptr<VideoFrame> video_frame);
+
+  void RecycleResource(uint32_t plane_resource_id,
+                       const gpu::SyncToken& sync_token,
+                       bool lost_resource);
+  void ReturnTexture(const scoped_refptr<VideoFrame>& video_frame,
+                     const gpu::SyncToken& sync_token,
+                     bool lost_resource);
+
+  // base::trace_event::MemoryDumpProvider implementation.
+  bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args,
+                    base::trace_event::ProcessMemoryDump* pmd) override;
+
+  viz::ContextProvider* const context_provider_;
+  viz::SharedBitmapReporter* const shared_bitmap_reporter_;
+  viz::ClientResourceProvider* const resource_provider_;
+  const bool use_stream_video_draw_quad_;
+  const bool use_gpu_memory_buffer_resources_;
+  // TODO(crbug.com/759456): Remove after r16 is used without the flag.
+  const bool use_r16_texture_;
+  const int max_resource_size_;
+  const int tracing_id_;
+  std::unique_ptr<PaintCanvasVideoRenderer> video_renderer_;
+  uint32_t next_plane_resource_id_ = 1;
+
+  // Temporary pixel buffer when converting between formats.
+  std::vector<uint8_t> upload_pixels_;
+
+  VideoFrameResourceType frame_resource_type_;
+
+  float frame_resource_offset_;
+  float frame_resource_multiplier_;
+  uint32_t frame_bits_per_channel_;
+
+  // Resources that will be placed into quads by the next call to
+  // AppendDrawQuads().
+  std::vector<FrameResource> frame_resources_;
+
+  // Resources allocated by VideoResourceUpdater. Used to recycle resources so
+  // we can reduce the number of allocations and data transfers.
+  std::vector<std::unique_ptr<PlaneResource>> all_resources_;
+
+  base::WeakPtrFactory<VideoResourceUpdater> weak_ptr_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(VideoResourceUpdater);
+};
+
+}  // namespace media
+
+#endif  // MEDIA_RENDERERS_VIDEO_RESOURCE_UPDATER_H_
diff --git a/media/renderers/video_resource_updater_unittest.cc b/media/renderers/video_resource_updater_unittest.cc
new file mode 100644
index 0000000..ea450d0
--- /dev/null
+++ b/media/renderers/video_resource_updater_unittest.cc
@@ -0,0 +1,753 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "media/renderers/video_resource_updater.h"
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include "base/bind.h"
+#include "base/message_loop/message_loop.h"
+#include "components/viz/client/client_resource_provider.h"
+#include "components/viz/client/shared_bitmap_reporter.h"
+#include "components/viz/test/fake_output_surface.h"
+#include "components/viz/test/test_gles2_interface.h"
+#include "gpu/GLES2/gl2extchromium.h"
+#include "media/base/video_frame.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace media {
+namespace {
+
+class FakeSharedBitmapReporter : public viz::SharedBitmapReporter {
+ public:
+  FakeSharedBitmapReporter() = default;
+  ~FakeSharedBitmapReporter() override = default;
+
+  // viz::SharedBitmapReporter implementation.
+  void DidAllocateSharedBitmap(mojo::ScopedSharedBufferHandle buffer,
+                               const viz::SharedBitmapId& id) override {
+    DCHECK_EQ(shared_bitmaps_.count(id), 0u);
+    shared_bitmaps_.insert(id);
+  }
+  void DidDeleteSharedBitmap(const viz::SharedBitmapId& id) override {
+    DCHECK_EQ(shared_bitmaps_.count(id), 1u);
+    shared_bitmaps_.erase(id);
+  }
+
+  const base::flat_set<viz::SharedBitmapId> shared_bitmaps() const {
+    return shared_bitmaps_;
+  }
+
+ private:
+  base::flat_set<viz::SharedBitmapId> shared_bitmaps_;
+};
+
+class UploadCounterGLES2Interface : public viz::TestGLES2Interface {
+ public:
+  void TexSubImage2D(GLenum target,
+                     GLint level,
+                     GLint xoffset,
+                     GLint yoffset,
+                     GLsizei width,
+                     GLsizei height,
+                     GLenum format,
+                     GLenum type,
+                     const void* pixels) override {
+    ++upload_count_;
+  }
+
+  void TexStorage2DEXT(GLenum target,
+                       GLint levels,
+                       GLuint internalformat,
+                       GLint width,
+                       GLint height) override {}
+
+  void GenTextures(GLsizei n, GLuint* textures) override {
+    created_texture_count_ += n;
+    viz::TestGLES2Interface::GenTextures(n, textures);
+  }
+
+  void DeleteTextures(GLsizei n, const GLuint* textures) override {
+    created_texture_count_ -= n;
+    viz::TestGLES2Interface::DeleteTextures(n, textures);
+  }
+
+  int UploadCount() { return upload_count_; }
+  void ResetUploadCount() { upload_count_ = 0; }
+
+  int TextureCreationCount() { return created_texture_count_; }
+  void ResetTextureCreationCount() { created_texture_count_ = 0; }
+
+ private:
+  int upload_count_;
+  int created_texture_count_;
+};
+
+class VideoResourceUpdaterTest : public testing::Test {
+ protected:
+  VideoResourceUpdaterTest() {
+    std::unique_ptr<UploadCounterGLES2Interface> gl(
+        new UploadCounterGLES2Interface());
+
+    gl_ = gl.get();
+    gl_->set_support_texture_storage(true);
+
+    context_provider_ = viz::TestContextProvider::Create(std::move(gl));
+    context_provider_->BindToCurrentThread();
+  }
+
+  // testing::Test implementation.
+  void SetUp() override {
+    testing::Test::SetUp();
+    resource_provider_ = std::make_unique<viz::ClientResourceProvider>(
+        context_provider_.get(), /*delegated_sync_points_required=*/true);
+  }
+
+  std::unique_ptr<VideoResourceUpdater> CreateUpdaterForHardware(
+      bool use_stream_video_draw_quad = false) {
+    return std::make_unique<VideoResourceUpdater>(
+        context_provider_.get(), nullptr, resource_provider_.get(),
+        use_stream_video_draw_quad, /*use_gpu_memory_buffer_resources=*/false,
+        /*use_r16_texture=*/use_r16_texture_, /*max_resource_size=*/10000);
+  }
+
+  std::unique_ptr<VideoResourceUpdater> CreateUpdaterForSoftware() {
+    return std::make_unique<VideoResourceUpdater>(
+        nullptr, &shared_bitmap_reporter_, resource_provider_.get(),
+        /*use_stream_video_draw_quad=*/false,
+        /*use_gpu_memory_buffer_resources=*/false,
+        /*use_r16_texture=*/false,
+        /*max_resource_size=*/10000);
+  }
+
+  // Note that the number of pixels needed for |size| must be less than or equal
+  // to the number of pixels needed for size of 100x100.
+  scoped_refptr<media::VideoFrame> CreateTestYUVVideoFrame(
+      const gfx::Size& size = gfx::Size(10, 10)) {
+    constexpr int kMaxDimension = 100;
+    static uint8_t y_data[kMaxDimension * kMaxDimension] = {0};
+    static uint8_t u_data[kMaxDimension * kMaxDimension / 2] = {0};
+    static uint8_t v_data[kMaxDimension * kMaxDimension / 2] = {0};
+
+    CHECK_LE(size.width() * size.height(), kMaxDimension * kMaxDimension);
+
+    scoped_refptr<media::VideoFrame> video_frame =
+        media::VideoFrame::WrapExternalYuvData(
+            media::PIXEL_FORMAT_I422,  // format
+            size,                      // coded_size
+            gfx::Rect(size),           // visible_rect
+            size,                      // natural_size
+            size.width(),              // y_stride
+            size.width() / 2,          // u_stride
+            size.width() / 2,          // v_stride
+            y_data,                    // y_data
+            u_data,                    // u_data
+            v_data,                    // v_data
+            base::TimeDelta());        // timestamp
+    EXPECT_TRUE(video_frame);
+    return video_frame;
+  }
+
+  scoped_refptr<media::VideoFrame> CreateWonkyTestYUVVideoFrame() {
+    const int kDimension = 10;
+    const int kYWidth = kDimension + 5;
+    const int kUWidth = (kYWidth + 1) / 2 + 200;
+    const int kVWidth = (kYWidth + 1) / 2 + 1;
+    static uint8_t y_data[kYWidth * kDimension] = {0};
+    static uint8_t u_data[kUWidth * kDimension] = {0};
+    static uint8_t v_data[kVWidth * kDimension] = {0};
+
+    scoped_refptr<media::VideoFrame> video_frame =
+        media::VideoFrame::WrapExternalYuvData(
+            media::PIXEL_FORMAT_I422,                 // format
+            gfx::Size(kYWidth, kDimension),           // coded_size
+            gfx::Rect(2, 0, kDimension, kDimension),  // visible_rect
+            gfx::Size(kDimension, kDimension),        // natural_size
+            -kYWidth,                                 // y_stride (negative)
+            kUWidth,                                  // u_stride
+            kVWidth,                                  // v_stride
+            y_data + kYWidth * (kDimension - 1),      // y_data
+            u_data,                                   // u_data
+            v_data,                                   // v_data
+            base::TimeDelta());                       // timestamp
+    EXPECT_TRUE(video_frame);
+    return video_frame;
+  }
+
+  scoped_refptr<media::VideoFrame> CreateTestHighBitFrame() {
+    const int kDimension = 10;
+    gfx::Size size(kDimension, kDimension);
+
+    scoped_refptr<media::VideoFrame> video_frame(media::VideoFrame::CreateFrame(
+        media::PIXEL_FORMAT_YUV420P10, size, gfx::Rect(size), size,
+        base::TimeDelta()));
+    EXPECT_TRUE(video_frame);
+    return video_frame;
+  }
+
+  void SetReleaseSyncToken(const gpu::SyncToken& sync_token) {
+    release_sync_token_ = sync_token;
+  }
+
+  scoped_refptr<media::VideoFrame> CreateTestHardwareVideoFrame(
+      media::VideoPixelFormat format,
+      unsigned target) {
+    const int kDimension = 10;
+    gfx::Size size(kDimension, kDimension);
+
+    gpu::Mailbox mailbox;
+    mailbox.name[0] = 51;
+
+    gpu::MailboxHolder mailbox_holders[media::VideoFrame::kMaxPlanes] = {
+        gpu::MailboxHolder(mailbox, kMailboxSyncToken, target)};
+    scoped_refptr<media::VideoFrame> video_frame =
+        media::VideoFrame::WrapNativeTextures(
+            format, mailbox_holders,
+            base::BindOnce(&VideoResourceUpdaterTest::SetReleaseSyncToken,
+                           base::Unretained(this)),
+            size,                // coded_size
+            gfx::Rect(size),     // visible_rect
+            size,                // natural_size
+            base::TimeDelta());  // timestamp
+    EXPECT_TRUE(video_frame);
+    return video_frame;
+  }
+
+  scoped_refptr<media::VideoFrame> CreateTestRGBAHardwareVideoFrame() {
+    return CreateTestHardwareVideoFrame(media::PIXEL_FORMAT_ARGB,
+                                        GL_TEXTURE_2D);
+  }
+
+  scoped_refptr<media::VideoFrame> CreateTestStreamTextureHardwareVideoFrame(
+      bool needs_copy) {
+    scoped_refptr<media::VideoFrame> video_frame = CreateTestHardwareVideoFrame(
+        media::PIXEL_FORMAT_ARGB, GL_TEXTURE_EXTERNAL_OES);
+    video_frame->metadata()->SetBoolean(
+        media::VideoFrameMetadata::COPY_REQUIRED, needs_copy);
+    return video_frame;
+  }
+
+  scoped_refptr<media::VideoFrame> CreateTestYuvHardwareVideoFrame(
+      media::VideoPixelFormat format,
+      size_t num_textures,
+      unsigned target) {
+    const int kDimension = 10;
+    gfx::Size size(kDimension, kDimension);
+
+    gpu::MailboxHolder mailbox_holders[media::VideoFrame::kMaxPlanes];
+    for (size_t i = 0; i < num_textures; ++i) {
+      gpu::Mailbox mailbox;
+      mailbox.name[0] = 50 + 1;
+      mailbox_holders[i] =
+          gpu::MailboxHolder(mailbox, kMailboxSyncToken, target);
+    }
+    scoped_refptr<media::VideoFrame> video_frame =
+        media::VideoFrame::WrapNativeTextures(
+            format, mailbox_holders,
+            base::BindOnce(&VideoResourceUpdaterTest::SetReleaseSyncToken,
+                           base::Unretained(this)),
+            size,                // coded_size
+            gfx::Rect(size),     // visible_rect
+            size,                // natural_size
+            base::TimeDelta());  // timestamp
+    EXPECT_TRUE(video_frame);
+    return video_frame;
+  }
+
+  static const gpu::SyncToken kMailboxSyncToken;
+
+  // VideoResourceUpdater registers as a MemoryDumpProvider, which requires
+  // a TaskRunner.
+  base::MessageLoop message_loop_;
+  UploadCounterGLES2Interface* gl_;
+  scoped_refptr<viz::TestContextProvider> context_provider_;
+  FakeSharedBitmapReporter shared_bitmap_reporter_;
+  std::unique_ptr<viz::ClientResourceProvider> resource_provider_;
+  gpu::SyncToken release_sync_token_;
+  bool use_r16_texture_ = false;
+};
+
+const gpu::SyncToken VideoResourceUpdaterTest::kMailboxSyncToken =
+    gpu::SyncToken(gpu::CommandBufferNamespace::GPU_IO,
+                   gpu::CommandBufferId::FromUnsafeValue(0x123),
+                   7);
+
+TEST_F(VideoResourceUpdaterTest, SoftwareFrame) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+  scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
+}
+
+TEST_F(VideoResourceUpdaterTest, HighBitFrameNoF16) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+  scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame();
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
+}
+
+class VideoResourceUpdaterTestWithF16 : public VideoResourceUpdaterTest {
+ public:
+  VideoResourceUpdaterTestWithF16() : VideoResourceUpdaterTest() {
+    gl_->set_support_texture_half_float_linear(true);
+  }
+};
+
+TEST_F(VideoResourceUpdaterTestWithF16, HighBitFrame) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+  scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame();
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
+  EXPECT_NEAR(resources.multiplier, 2.0, 0.1);
+  EXPECT_NEAR(resources.offset, 0.5, 0.1);
+
+  // Create the resource again, to test the path where the
+  // resources are cached.
+  VideoFrameExternalResources resources2 =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::YUV, resources2.type);
+  EXPECT_NEAR(resources2.multiplier, 2.0, 0.1);
+  EXPECT_NEAR(resources2.offset, 0.5, 0.1);
+}
+
+class VideoResourceUpdaterTestWithR16 : public VideoResourceUpdaterTest {
+ public:
+  VideoResourceUpdaterTestWithR16() : VideoResourceUpdaterTest() {
+    use_r16_texture_ = true;
+    gl_->set_support_texture_norm16(true);
+  }
+};
+
+TEST_F(VideoResourceUpdaterTestWithR16, HighBitFrame) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+  scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame();
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
+
+  // Max 10-bit values as read by a sampler.
+  double max_10bit_value = ((1 << 10) - 1) / 65535.0;
+  EXPECT_NEAR(resources.multiplier * max_10bit_value, 1.0, 0.0001);
+  EXPECT_NEAR(resources.offset, 0.0, 0.1);
+
+  // Create the resource again, to test the path where the
+  // resources are cached.
+  VideoFrameExternalResources resources2 =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::YUV, resources2.type);
+  EXPECT_NEAR(resources2.multiplier * max_10bit_value, 1.0, 0.0001);
+  EXPECT_NEAR(resources2.offset, 0.0, 0.1);
+}
+
+TEST_F(VideoResourceUpdaterTest, HighBitFrameSoftwareCompositor) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForSoftware();
+  scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame();
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
+}
+
+TEST_F(VideoResourceUpdaterTest, WonkySoftwareFrame) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+  scoped_refptr<media::VideoFrame> video_frame = CreateWonkyTestYUVVideoFrame();
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
+}
+
+TEST_F(VideoResourceUpdaterTest, WonkySoftwareFrameSoftwareCompositor) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForSoftware();
+  scoped_refptr<media::VideoFrame> video_frame = CreateWonkyTestYUVVideoFrame();
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
+}
+
+TEST_F(VideoResourceUpdaterTest, ReuseResource) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+  scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
+  video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234));
+
+  // Allocate the resources for a YUV video frame.
+  gl_->ResetUploadCount();
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
+  EXPECT_EQ(3u, resources.resources.size());
+  EXPECT_EQ(3u, resources.release_callbacks.size());
+  // Expect exactly three texture uploads, one for each plane.
+  EXPECT_EQ(3, gl_->UploadCount());
+
+  // Simulate the ResourceProvider releasing the resources back to the video
+  // updater.
+  for (auto& release_callback : resources.release_callbacks)
+    std::move(release_callback).Run(gpu::SyncToken(), false);
+
+  // Allocate resources for the same frame.
+  gl_->ResetUploadCount();
+  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
+  EXPECT_EQ(3u, resources.resources.size());
+  EXPECT_EQ(3u, resources.release_callbacks.size());
+  // The data should be reused so expect no texture uploads.
+  EXPECT_EQ(0, gl_->UploadCount());
+}
+
+TEST_F(VideoResourceUpdaterTest, ReuseResourceNoDelete) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+  scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
+  video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234));
+
+  // Allocate the resources for a YUV video frame.
+  gl_->ResetUploadCount();
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
+  EXPECT_EQ(3u, resources.resources.size());
+  EXPECT_EQ(3u, resources.release_callbacks.size());
+  // Expect exactly three texture uploads, one for each plane.
+  EXPECT_EQ(3, gl_->UploadCount());
+
+  // Allocate resources for the same frame.
+  gl_->ResetUploadCount();
+  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
+  EXPECT_EQ(3u, resources.resources.size());
+  EXPECT_EQ(3u, resources.release_callbacks.size());
+  // The data should be reused so expect no texture uploads.
+  EXPECT_EQ(0, gl_->UploadCount());
+}
+
+TEST_F(VideoResourceUpdaterTest, SoftwareFrameSoftwareCompositor) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForSoftware();
+  scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
+}
+
+TEST_F(VideoResourceUpdaterTest, ReuseResourceSoftwareCompositor) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForSoftware();
+  scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
+  video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234));
+
+  // Allocate the resources for a software video frame.
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
+  EXPECT_EQ(1u, resources.resources.size());
+  EXPECT_EQ(1u, resources.release_callbacks.size());
+  // Expect exactly one allocated shared bitmap.
+  EXPECT_EQ(1u, shared_bitmap_reporter_.shared_bitmaps().size());
+  auto shared_bitmaps_copy = shared_bitmap_reporter_.shared_bitmaps();
+
+  // Simulate the ResourceProvider releasing the resource back to the video
+  // updater.
+  std::move(resources.release_callbacks[0]).Run(gpu::SyncToken(), false);
+
+  // Allocate resources for the same frame.
+  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
+  EXPECT_EQ(1u, resources.resources.size());
+  EXPECT_EQ(1u, resources.release_callbacks.size());
+
+  // Ensure that the same shared bitmap was reused.
+  EXPECT_EQ(shared_bitmap_reporter_.shared_bitmaps(), shared_bitmaps_copy);
+}
+
+TEST_F(VideoResourceUpdaterTest, ReuseResourceNoDeleteSoftwareCompositor) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForSoftware();
+  scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
+  video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234));
+
+  // Allocate the resources for a software video frame.
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
+  EXPECT_EQ(1u, resources.resources.size());
+  EXPECT_EQ(1u, resources.release_callbacks.size());
+  // Expect exactly one allocated shared bitmap.
+  EXPECT_EQ(1u, shared_bitmap_reporter_.shared_bitmaps().size());
+  auto shared_bitmaps_copy = shared_bitmap_reporter_.shared_bitmaps();
+
+  // Allocate resources for the same frame.
+  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
+  EXPECT_EQ(1u, resources.resources.size());
+  EXPECT_EQ(1u, resources.release_callbacks.size());
+
+  // Ensure that the same shared bitmap was reused.
+  EXPECT_EQ(shared_bitmap_reporter_.shared_bitmaps(), shared_bitmaps_copy);
+}
+
+TEST_F(VideoResourceUpdaterTest, ChangeResourceSizeSoftwareCompositor) {
+  constexpr gfx::Size kSize1(10, 10);
+  constexpr gfx::Size kSize2(20, 20);
+
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForSoftware();
+
+  // Allocate the resources for a software video frame.
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(
+          CreateTestYUVVideoFrame(kSize1));
+  // Expect exactly one allocated shared bitmap.
+  EXPECT_EQ(1u, shared_bitmap_reporter_.shared_bitmaps().size());
+  auto shared_bitmaps_copy = shared_bitmap_reporter_.shared_bitmaps();
+
+  // Simulate the ResourceProvider releasing the resource back to the video
+  // updater.
+  std::move(resources.release_callbacks[0]).Run(gpu::SyncToken(), false);
+
+  // Allocate resources for the next frame with a different size.
+  resources = updater->CreateExternalResourcesFromVideoFrame(
+      CreateTestYUVVideoFrame(kSize2));
+
+  // The first resource was released, so it can be reused but it's the wrong
+  // size. We should expect the first shared bitmap to be deleted and a new
+  // shared bitmap to be allocated.
+  EXPECT_EQ(1u, shared_bitmap_reporter_.shared_bitmaps().size());
+  EXPECT_NE(shared_bitmap_reporter_.shared_bitmaps(), shared_bitmaps_copy);
+}
+
+TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+
+  scoped_refptr<media::VideoFrame> video_frame =
+      CreateTestRGBAHardwareVideoFrame();
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
+  EXPECT_EQ(1u, resources.resources.size());
+  EXPECT_EQ(1u, resources.release_callbacks.size());
+
+  video_frame = CreateTestYuvHardwareVideoFrame(media::PIXEL_FORMAT_I420, 3,
+                                                GL_TEXTURE_RECTANGLE_ARB);
+
+  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
+  EXPECT_EQ(3u, resources.resources.size());
+  EXPECT_EQ(3u, resources.release_callbacks.size());
+  EXPECT_FALSE(resources.resources[0].read_lock_fences_enabled);
+  EXPECT_FALSE(resources.resources[1].read_lock_fences_enabled);
+  EXPECT_FALSE(resources.resources[2].read_lock_fences_enabled);
+
+  video_frame = CreateTestYuvHardwareVideoFrame(media::PIXEL_FORMAT_I420, 3,
+                                                GL_TEXTURE_RECTANGLE_ARB);
+  video_frame->metadata()->SetBoolean(
+      media::VideoFrameMetadata::READ_LOCK_FENCES_ENABLED, true);
+
+  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_TRUE(resources.resources[0].read_lock_fences_enabled);
+  EXPECT_TRUE(resources.resources[1].read_lock_fences_enabled);
+  EXPECT_TRUE(resources.resources[2].read_lock_fences_enabled);
+}
+
+TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes_StreamTexture) {
+  // Note that |use_stream_video_draw_quad| is true for this test.
+  std::unique_ptr<VideoResourceUpdater> updater =
+      CreateUpdaterForHardware(true);
+  gl_->ResetTextureCreationCount();
+  scoped_refptr<media::VideoFrame> video_frame =
+      CreateTestStreamTextureHardwareVideoFrame(false);
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::STREAM_TEXTURE, resources.type);
+  EXPECT_EQ(1u, resources.resources.size());
+  EXPECT_EQ((GLenum)GL_TEXTURE_EXTERNAL_OES,
+            resources.resources[0].mailbox_holder.texture_target);
+  EXPECT_EQ(1u, resources.release_callbacks.size());
+  EXPECT_EQ(0, gl_->TextureCreationCount());
+
+  // A copied stream texture should return an RGBA resource in a new
+  // GL_TEXTURE_2D texture.
+  gl_->ResetTextureCreationCount();
+  video_frame = CreateTestStreamTextureHardwareVideoFrame(true);
+  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
+  EXPECT_EQ(1u, resources.resources.size());
+  EXPECT_EQ((GLenum)GL_TEXTURE_2D,
+            resources.resources[0].mailbox_holder.texture_target);
+  EXPECT_EQ(1u, resources.release_callbacks.size());
+  EXPECT_EQ(1, gl_->TextureCreationCount());
+}
+
+TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes_TextureQuad) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+  gl_->ResetTextureCreationCount();
+  scoped_refptr<media::VideoFrame> video_frame =
+      CreateTestStreamTextureHardwareVideoFrame(false);
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::RGBA_PREMULTIPLIED, resources.type);
+  EXPECT_EQ(1u, resources.resources.size());
+  EXPECT_EQ((GLenum)GL_TEXTURE_EXTERNAL_OES,
+            resources.resources[0].mailbox_holder.texture_target);
+  EXPECT_EQ(1u, resources.release_callbacks.size());
+  EXPECT_EQ(0, gl_->TextureCreationCount());
+}
+
+// Passthrough the sync token returned by the compositor if we don't have an
+// existing release sync token.
+TEST_F(VideoResourceUpdaterTest, PassReleaseSyncToken) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+
+  const gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO,
+                                  gpu::CommandBufferId::FromUnsafeValue(0x123),
+                                  123);
+
+  {
+    scoped_refptr<media::VideoFrame> video_frame =
+        CreateTestRGBAHardwareVideoFrame();
+
+    VideoFrameExternalResources resources =
+        updater->CreateExternalResourcesFromVideoFrame(video_frame);
+
+    ASSERT_EQ(resources.release_callbacks.size(), 1u);
+    std::move(resources.release_callbacks[0]).Run(sync_token, false);
+  }
+
+  EXPECT_EQ(release_sync_token_, sync_token);
+}
+
+// Generate new sync token because video frame has an existing sync token.
+TEST_F(VideoResourceUpdaterTest, GenerateReleaseSyncToken) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+
+  const gpu::SyncToken sync_token1(gpu::CommandBufferNamespace::GPU_IO,
+                                   gpu::CommandBufferId::FromUnsafeValue(0x123),
+                                   123);
+
+  const gpu::SyncToken sync_token2(gpu::CommandBufferNamespace::GPU_IO,
+                                   gpu::CommandBufferId::FromUnsafeValue(0x234),
+                                   234);
+
+  {
+    scoped_refptr<media::VideoFrame> video_frame =
+        CreateTestRGBAHardwareVideoFrame();
+
+    VideoFrameExternalResources resources1 =
+        updater->CreateExternalResourcesFromVideoFrame(video_frame);
+    ASSERT_EQ(resources1.release_callbacks.size(), 1u);
+    std::move(resources1.release_callbacks[0]).Run(sync_token1, false);
+
+    VideoFrameExternalResources resources2 =
+        updater->CreateExternalResourcesFromVideoFrame(video_frame);
+    ASSERT_EQ(resources2.release_callbacks.size(), 1u);
+    std::move(resources2.release_callbacks[0]).Run(sync_token2, false);
+  }
+
+  EXPECT_TRUE(release_sync_token_.HasData());
+  EXPECT_NE(release_sync_token_, sync_token1);
+  EXPECT_NE(release_sync_token_, sync_token2);
+}
+
+// Pass mailbox sync token as is if no GL operations are performed before frame
+// resources are handed off to the compositor.
+TEST_F(VideoResourceUpdaterTest, PassMailboxSyncToken) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+
+  scoped_refptr<media::VideoFrame> video_frame =
+      CreateTestRGBAHardwareVideoFrame();
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+
+  ASSERT_EQ(resources.resources.size(), 1u);
+  EXPECT_TRUE(resources.resources[0].mailbox_holder.sync_token.HasData());
+  EXPECT_EQ(resources.resources[0].mailbox_holder.sync_token,
+            kMailboxSyncToken);
+}
+
+// Generate new sync token for compositor when copying the texture.
+TEST_F(VideoResourceUpdaterTest, GenerateSyncTokenOnTextureCopy) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+
+  scoped_refptr<media::VideoFrame> video_frame =
+      CreateTestStreamTextureHardwareVideoFrame(true /* needs_copy */);
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+
+  ASSERT_EQ(resources.resources.size(), 1u);
+  EXPECT_TRUE(resources.resources[0].mailbox_holder.sync_token.HasData());
+  EXPECT_NE(resources.resources[0].mailbox_holder.sync_token,
+            kMailboxSyncToken);
+}
+
+// NV12 VideoFrames backed by a single native texture can be sampled out
+// by GL as RGB. To use them as HW overlays we need to know the format
+// of the underlying buffer, that is YUV_420_BIPLANAR.
+TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes_SingleNV12) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+  gl_->ResetTextureCreationCount();
+  scoped_refptr<media::VideoFrame> video_frame = CreateTestHardwareVideoFrame(
+      media::PIXEL_FORMAT_NV12, GL_TEXTURE_EXTERNAL_OES);
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::RGB, resources.type);
+  EXPECT_EQ(1u, resources.resources.size());
+  EXPECT_EQ((GLenum)GL_TEXTURE_EXTERNAL_OES,
+            resources.resources[0].mailbox_holder.texture_target);
+  EXPECT_EQ(gfx::BufferFormat::YUV_420_BIPLANAR,
+            resources.resources[0].buffer_format);
+
+  video_frame = CreateTestYuvHardwareVideoFrame(media::PIXEL_FORMAT_NV12, 1,
+                                                GL_TEXTURE_RECTANGLE_ARB);
+  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::RGB, resources.type);
+  EXPECT_EQ(1u, resources.resources.size());
+  EXPECT_EQ((GLenum)GL_TEXTURE_RECTANGLE_ARB,
+            resources.resources[0].mailbox_holder.texture_target);
+  EXPECT_EQ(gfx::BufferFormat::YUV_420_BIPLANAR,
+            resources.resources[0].buffer_format);
+
+  EXPECT_EQ(0, gl_->TextureCreationCount());
+}
+
+TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes_DualNV12) {
+  std::unique_ptr<VideoResourceUpdater> updater = CreateUpdaterForHardware();
+  gl_->ResetTextureCreationCount();
+  scoped_refptr<media::VideoFrame> video_frame =
+      CreateTestYuvHardwareVideoFrame(media::PIXEL_FORMAT_NV12, 2,
+                                      GL_TEXTURE_EXTERNAL_OES);
+
+  VideoFrameExternalResources resources =
+      updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
+  EXPECT_EQ(2u, resources.resources.size());
+  EXPECT_EQ(2u, resources.release_callbacks.size());
+  EXPECT_EQ((GLenum)GL_TEXTURE_EXTERNAL_OES,
+            resources.resources[0].mailbox_holder.texture_target);
+  // |updater| doesn't set |buffer_format| in this case.
+  EXPECT_EQ(gfx::BufferFormat::RGBA_8888, resources.resources[0].buffer_format);
+
+  video_frame = CreateTestYuvHardwareVideoFrame(media::PIXEL_FORMAT_NV12, 2,
+                                                GL_TEXTURE_RECTANGLE_ARB);
+  resources = updater->CreateExternalResourcesFromVideoFrame(video_frame);
+  EXPECT_EQ(VideoFrameResourceType::YUV, resources.type);
+  EXPECT_EQ(2u, resources.resources.size());
+  EXPECT_EQ((GLenum)GL_TEXTURE_RECTANGLE_ARB,
+            resources.resources[0].mailbox_holder.texture_target);
+  EXPECT_EQ(gfx::BufferFormat::RGBA_8888, resources.resources[0].buffer_format);
+  EXPECT_EQ(0, gl_->TextureCreationCount());
+}
+
+}  // namespace
+}  // namespace media
diff --git a/media/test/data/eme_player_js/player_utils.js b/media/test/data/eme_player_js/player_utils.js
index fc7f1405..c28b815 100644
--- a/media/test/data/eme_player_js/player_utils.js
+++ b/media/test/data/eme_player_js/player_utils.js
@@ -286,6 +286,7 @@
     switch (keySystem) {
       case WIDEVINE_KEYSYSTEM:
         return WidevinePlayer;
+      case CDM_PROXY_TEST_KEYSYSTEM:
       case CLEARKEY:
       case EXTERNAL_CLEARKEY:
       case MESSAGE_TYPE_TEST_KEYSYSTEM:
@@ -296,7 +297,6 @@
       case PLATFORM_VERIFICATION_TEST_KEYSYSTEM:
       case VERIFY_HOST_FILES_TEST_KEYSYSTEM:
       case STORAGE_ID_TEST_KEYSYSTEM:
-      case CDM_PROXY_TEST_KEYSYSTEM:
         return UnitTestPlayer;
       default:
         Utils.timeLog(keySystem + ' is not a known key system');
diff --git a/media/video/gpu_memory_buffer_video_frame_pool.cc b/media/video/gpu_memory_buffer_video_frame_pool.cc
index 2bcbac3..b0b0418 100644
--- a/media/video/gpu_memory_buffer_video_frame_pool.cc
+++ b/media/video/gpu_memory_buffer_video_frame_pool.cc
@@ -904,7 +904,8 @@
       break;
     case GpuVideoAcceleratorFactories::OutputFormat::XR30:
     case GpuVideoAcceleratorFactories::OutputFormat::XB30:
-      allow_overlay = true;
+      // TODO(mcasas): Enable this for ChromeOS https://crbug.com/776093.
+      allow_overlay = false;
       // We've converted the YUV to RGB, fix the color space.
       // TODO(hubbe): The libyuv YUV to RGB conversion may not have
       // honored the color space conversion 100%. We should either fix
diff --git a/mojo/public/cpp/bindings/lib/unserialized_message_context.cc b/mojo/public/cpp/bindings/lib/unserialized_message_context.cc
index 855db4c..b029f4e 100644
--- a/mojo/public/cpp/bindings/lib/unserialized_message_context.cc
+++ b/mojo/public/cpp/bindings/lib/unserialized_message_context.cc
@@ -15,6 +15,7 @@
   header_.version = 1;
   header_.name = message_name;
   header_.flags = message_flags;
+  header_.num_bytes = sizeof(header_);
 }
 
 UnserializedMessageContext::~UnserializedMessageContext() = default;
diff --git a/mojo/public/cpp/platform/named_platform_channel_win.cc b/mojo/public/cpp/platform/named_platform_channel_win.cc
index 0507efe..9c329bd6 100644
--- a/mojo/public/cpp/platform/named_platform_channel_win.cc
+++ b/mojo/public/cpp/platform/named_platform_channel_win.cc
@@ -5,6 +5,7 @@
 #include "mojo/public/cpp/platform/named_platform_channel.h"
 
 #include <windows.h>
+#include <memory>
 
 // NOTE: This needs to be included *after* windows.h.
 #include <sddl.h>
diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py b/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py
index 66f8954..653a2df 100644
--- a/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py
+++ b/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py
@@ -4,27 +4,14 @@
 
 # Based on third_party/WebKit/Source/build/scripts/template_expander.py.
 
-import imp
 import os.path
 import sys
 
-# Disable lint check for finding modules:
-# pylint: disable=F0401
-
-def _GetDirAbove(dirname):
-  """Returns the directory "above" this file containing |dirname| (which must
-  also be "above" this file)."""
-  path = os.path.abspath(__file__)
-  while True:
-    path, tail = os.path.split(path)
-    assert tail
-    if tail == dirname:
-      return path
-
-try:
-  imp.find_module("jinja2")
-except ImportError:
-  sys.path.append(os.path.join(_GetDirAbove("mojo"), "third_party"))
+_current_dir = os.path.dirname(os.path.realpath(__file__))
+# jinja2 is in chromium's third_party directory
+# Insert at front to override system libraries, and after path[0] == script dir
+sys.path.insert(
+    1, os.path.join(_current_dir, *([os.pardir] * 7 + ['third_party'])))
 import jinja2
 
 
diff --git a/mojo/public/tools/bindings/pylib/mojom/parse/parser.py b/mojo/public/tools/bindings/pylib/mojom/parse/parser.py
index 916d69d..b9f10dc 100644
--- a/mojo/public/tools/bindings/pylib/mojom/parse/parser.py
+++ b/mojo/public/tools/bindings/pylib/mojom/parse/parser.py
@@ -4,24 +4,12 @@
 
 """Generates a syntax tree from a Mojo IDL file."""
 
-import imp
 import os.path
 import sys
 
-def _GetDirAbove(dirname):
-  """Returns the directory "above" this file containing |dirname| (which must
-  also be "above" this file)."""
-  path = os.path.abspath(__file__)
-  while True:
-    path, tail = os.path.split(path)
-    assert tail
-    if tail == dirname:
-      return path
-
-try:
-  imp.find_module("ply")
-except ImportError:
-  sys.path.append(os.path.join(_GetDirAbove("mojo"), "third_party"))
+_current_dir = os.path.dirname(os.path.realpath(__file__))
+sys.path.insert(
+    1, os.path.join(_current_dir, *([os.pardir] * 7 + ['third_party'])))
 from ply import lex
 from ply import yacc
 
diff --git a/mojo/public/tools/bindings/pylib/mojom_tests/parse/lexer_unittest.py b/mojo/public/tools/bindings/pylib/mojom_tests/parse/lexer_unittest.py
index 6822cbc..36d8c4ab 100644
--- a/mojo/public/tools/bindings/pylib/mojom_tests/parse/lexer_unittest.py
+++ b/mojo/public/tools/bindings/pylib/mojom_tests/parse/lexer_unittest.py
@@ -17,10 +17,7 @@
     if tail == dirname:
       return path
 
-try:
-  imp.find_module("ply")
-except ImportError:
-  sys.path.append(os.path.join(_GetDirAbove("mojo"), "third_party"))
+sys.path.insert(1, os.path.join(_GetDirAbove("mojo"), "third_party"))
 from ply import lex
 
 try:
diff --git a/net/BUILD.gn b/net/BUILD.gn
index cd64ede..7dee1cf7 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1020,6 +1020,7 @@
       "socket/tcp_socket.h",
       "socket/tcp_socket_win.cc",
       "socket/tcp_socket_win.h",
+      "socket/transport_client_socket.cc",
       "socket/transport_client_socket.h",
       "socket/transport_client_socket_pool.cc",
       "socket/transport_client_socket_pool.h",
@@ -2220,9 +2221,9 @@
     ":buildflags",
     ":net_nqe_proto",
     ":net_quic_proto",
-    ":traffic_annotation",
     "//crypto",
     "//crypto:platform",
+    "//net/traffic_annotation",
     "//third_party/boringssl",
     "//url",
   ]
@@ -2672,7 +2673,6 @@
     "test/url_request/url_request_mock_data_job.h",
     "test/url_request/url_request_slow_download_job.cc",
     "test/url_request/url_request_slow_download_job.h",
-    "traffic_annotation/network_traffic_annotation_test_helper.h",
     "url_request/test_url_fetcher_factory.cc",
     "url_request/test_url_fetcher_factory.h",
     "url_request/url_request_test_util.cc",
@@ -2682,13 +2682,13 @@
   configs += [ "//build/config:precompiled_headers" ]
 
   public_deps = [
-    ":traffic_annotation",
     "//base",
     "//base/test:test_support",
     "//crypto",
     "//net",
     "//net/dns:test_support",
     "//net/tools/tld_cleanup",
+    "//net/traffic_annotation:test_support",
     "//testing/gmock",
     "//testing/gtest",
     "//url",
@@ -3328,15 +3328,6 @@
   ]
 }
 
-source_set("traffic_annotation") {
-  sources = [
-    "traffic_annotation/network_traffic_annotation.h",
-  ]
-  deps = [
-    "//base",
-  ]
-}
-
 if (!is_ios) {
   executable("quic_client") {
     sources = [
diff --git a/net/android/java/src/org/chromium/net/AndroidNetworkLibrary.java b/net/android/java/src/org/chromium/net/AndroidNetworkLibrary.java
index badaaf5c..4a8007af 100644
--- a/net/android/java/src/org/chromium/net/AndroidNetworkLibrary.java
+++ b/net/android/java/src/org/chromium/net/AndroidNetworkLibrary.java
@@ -23,6 +23,7 @@
 import android.telephony.TelephonyManager;
 import android.util.Log;
 
+import org.chromium.base.BuildInfo;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.CalledByNative;
@@ -281,6 +282,10 @@
         }
     }
 
+    /**
+     * Returns list of IP addresses of DNS servers.
+     * If private DNS is active, then returns a 1x1 array.
+     */
     @TargetApi(Build.VERSION_CODES.M)
     @CalledByNative
     private static byte[][] getDnsServers() {
@@ -298,6 +303,19 @@
         if (linkProperties == null) {
             return new byte[0][0];
         }
+        if (BuildInfo.isAtLeastP()) {
+            // TODO(pauljensen): When Android P SDK is available, remove reflection.
+            try {
+                if (((Boolean) linkProperties.getClass()
+                                    .getMethod("isPrivateDnsActive")
+                                    .invoke(linkProperties))
+                                .booleanValue()) {
+                    return new byte[1][1];
+                }
+            } catch (Exception e) {
+                Log.e(TAG, "Can not call LinkProperties.isPrivateDnsActive():", e);
+            }
+        }
         List<InetAddress> dnsServersList = linkProperties.getDnsServers();
         byte[][] dnsServers = new byte[dnsServersList.size()][];
         for (int i = 0; i < dnsServersList.size(); i++) {
diff --git a/net/android/network_library.cc b/net/android/network_library.cc
index 494288f..6b8680f 100644
--- a/net/android/network_library.cc
+++ b/net/android/network_library.cc
@@ -123,12 +123,17 @@
           base::android::AttachCurrentThread()));
 }
 
-void GetDnsServers(std::vector<IPEndPoint>* dns_servers) {
+internal::ConfigParsePosixResult GetDnsServers(
+    std::vector<IPEndPoint>* dns_servers) {
   JNIEnv* env = AttachCurrentThread();
   std::vector<std::string> dns_servers_strings;
   base::android::JavaArrayOfByteArrayToStringVector(
       env, Java_AndroidNetworkLibrary_getDnsServers(env).obj(),
       &dns_servers_strings);
+  if (dns_servers_strings.size() == 0)
+    return internal::CONFIG_PARSE_POSIX_NO_NAMESERVERS;
+  if (dns_servers_strings.size() == 1 && dns_servers_strings[0].size() == 1)
+    return internal::CONFIG_PARSE_POSIX_PRIVATE_DNS_ACTIVE;
   for (const std::string& dns_address_string : dns_servers_strings) {
     IPAddress dns_address(
         reinterpret_cast<const uint8_t*>(dns_address_string.c_str()),
@@ -136,6 +141,7 @@
     IPEndPoint dns_server(dns_address, dns_protocol::kDefaultPort);
     dns_servers->push_back(dns_server);
   }
+  return internal::CONFIG_PARSE_POSIX_OK;
 }
 
 void TagSocket(SocketDescriptor socket, uid_t uid, int32_t tag) {
diff --git a/net/android/network_library.h b/net/android/network_library.h
index 651600d1..f47f46b5 100644
--- a/net/android/network_library.h
+++ b/net/android/network_library.h
@@ -17,6 +17,7 @@
 #include "net/base/ip_endpoint.h"
 #include "net/base/mime_util.h"
 #include "net/base/net_export.h"
+#include "net/dns/dns_config_service_posix.h"
 #include "net/socket/socket_descriptor.h"
 
 namespace net {
@@ -86,7 +87,11 @@
 
 // Gets the DNS servers and puts them in |dns_servers|.
 // Only callable on Marshmallow and newer releases.
-NET_EXPORT_PRIVATE void GetDnsServers(std::vector<IPEndPoint>* dns_servers);
+// Returns CONFIG_PARSE_POSIX_OK upon success,
+// CONFIG_PARSE_POSIX_NO_NAMESERVERS if no DNS servers found, or
+// CONFIG_PARSE_POSIX_PRIVATE_DNS_ACTIVE if private DNS active.
+NET_EXPORT_PRIVATE internal::ConfigParsePosixResult GetDnsServers(
+    std::vector<IPEndPoint>* dns_servers);
 
 // Apply TrafficStats tag |tag| and UID |uid| to |socket|. Future network
 // traffic used by |socket| will be attributed to |uid| and |tag|.
diff --git a/net/dns/dns_config_service_posix.cc b/net/dns/dns_config_service_posix.cc
index 1545883..06e9d7969 100644
--- a/net/dns/dns_config_service_posix.cc
+++ b/net/dns/dns_config_service_posix.cc
@@ -143,9 +143,9 @@
 
 ConfigParsePosixResult ReadDnsConfig(DnsConfig* dns_config) {
   base::ScopedBlockingCall scoped_blocking_call(base::BlockingType::MAY_BLOCK);
+  dns_config->unhandled_options = false;
 #if !defined(OS_ANDROID)
   ConfigParsePosixResult result;
-  dns_config->unhandled_options = false;
 // TODO(fuchsia): Use res_ninit() when it's implemented on Fuchsia.
 #if defined(OS_OPENBSD) || defined(OS_FUCHSIA)
   // Note: res_ninit in glibc always returns 0 and sets RES_INIT.
@@ -189,23 +189,11 @@
   dns_config->timeout = base::TimeDelta::FromMilliseconds(kDnsDefaultTimeoutMs);
   return result;
 #else  // defined(OS_ANDROID)
-// Theoretically, this is bad. __system_property_get is not a supported API
-// (but it's currently visible to anyone using Bionic), and the properties
-// are implementation details that may disappear in future Android releases.
-// Practically, libcutils provides property_get, which is a public API, and the
-// DNS code (and its clients) are already robust against failing to get the DNS
-// config for whatever reason, so the properties can disappear and the world
-// won't end.
-// TODO(juliatuttle): Depend on libcutils, then switch this (and other uses of
-//                    __system_property_get) to property_get.
   dns_config->nameservers.clear();
 
   if (base::android::BuildInfo::GetInstance()->sdk_int() >=
       base::android::SDK_VERSION_MARSHMALLOW) {
-    net::android::GetDnsServers(&dns_config->nameservers);
-    if (dns_config->nameservers.empty())
-      return CONFIG_PARSE_POSIX_NO_NAMESERVERS;
-    return CONFIG_PARSE_POSIX_OK;
+    return net::android::GetDnsServers(&dns_config->nameservers);
   }
 
   if (IsVpnPresent()) {
@@ -213,6 +201,9 @@
     return CONFIG_PARSE_POSIX_UNHANDLED_OPTIONS;
   }
 
+  // NOTE(pauljensen): __system_property_get and the net.dns1/2 properties are
+  // not supported APIs, but they're only read on pre-Marshmallow Android which
+  // was released years ago and isn't changing.
   char property_value[PROP_VALUE_MAX];
   __system_property_get("net.dns1", property_value);
   std::string dns1_string = property_value;
diff --git a/net/dns/dns_config_service_posix.h b/net/dns/dns_config_service_posix.h
index 72c6d3d..d27c65c 100644
--- a/net/dns/dns_config_service_posix.h
+++ b/net/dns/dns_config_service_posix.h
@@ -63,6 +63,7 @@
   CONFIG_PARSE_POSIX_MISSING_OPTIONS,
   CONFIG_PARSE_POSIX_UNHANDLED_OPTIONS,
   CONFIG_PARSE_POSIX_NO_DNSINFO,
+  CONFIG_PARSE_POSIX_PRIVATE_DNS_ACTIVE,
   CONFIG_PARSE_POSIX_MAX  // Bounding values for enumeration.
 };
 
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
index 6d0f47ee..e68ea31f 100644
--- a/net/http/http_network_transaction_unittest.cc
+++ b/net/http/http_network_transaction_unittest.cc
@@ -6904,6 +6904,7 @@
 
   StaticSocketDataProvider data(data_reads, data_writes);
   SSLSocketDataProvider data_ssl(ASYNC, ERR_CONNECTION_RESET);
+  data_ssl.expected_ssl_version_max = SSL_PROTOCOL_VERSION_TLS1_3;
   StaticSocketDataProvider data2(data_reads, data_writes);
   SSLSocketDataProvider data_ssl2(ASYNC, ERR_CONNECTION_RESET);
   session_deps_.socket_factory->AddSocketDataProvider(&data);
diff --git a/net/socket/socket_test_util.cc b/net/socket/socket_test_util.cc
index 5aa92f5..6d22ba2 100644
--- a/net/socket/socket_test_util.cc
+++ b/net/socket/socket_test_util.cc
@@ -307,7 +307,9 @@
     : connect(mode, result),
       next_proto(kProtoUnknown),
       cert_request_info(NULL),
-      channel_id_service(NULL) {
+      channel_id_service(NULL),
+      expected_ssl_version_min(kDefaultSSLVersionMin),
+      expected_ssl_version_max(kDefaultSSLVersionMax) {
   SSLConnectionStatusSetVersion(SSL_CONNECTION_VERSION_TLS1_2,
                                 &ssl_info.connection_status);
   // Set to TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
@@ -778,6 +780,8 @@
         next_ssl_data->next_protos_expected_in_ssl_config.value().end(),
         ssl_config.alpn_protos.begin()));
   }
+  EXPECT_EQ(next_ssl_data->expected_ssl_version_min, ssl_config.version_min);
+  EXPECT_EQ(next_ssl_data->expected_ssl_version_max, ssl_config.version_max);
   return std::unique_ptr<SSLClientSocket>(new MockSSLClientSocket(
       std::move(transport_socket), host_and_port, ssl_config, next_ssl_data));
 }
@@ -827,6 +831,14 @@
   return net::OK;
 }
 
+bool MockClientSocket::SetNoDelay(bool no_delay) {
+  return true;
+}
+
+bool MockClientSocket::SetKeepAlive(bool enable, int delay) {
+  return true;
+}
+
 void MockClientSocket::Disconnect() {
   connected_ = false;
 }
@@ -1394,6 +1406,10 @@
                                      traffic_annotation);
 }
 
+int MockSSLClientSocket::CancelReadIfReady() {
+  return transport_->socket()->CancelReadIfReady();
+}
+
 int MockSSLClientSocket::Connect(CompletionOnceCallback callback) {
   DCHECK(transport_->socket()->IsConnected());
   data_->is_connect_data_consumed = true;
diff --git a/net/socket/socket_test_util.h b/net/socket/socket_test_util.h
index 0ca0534..9406ea62 100644
--- a/net/socket/socket_test_util.h
+++ b/net/socket/socket_test_util.h
@@ -387,6 +387,9 @@
   ChannelIDService* channel_id_service;
   base::Optional<NextProtoVector> next_protos_expected_in_ssl_config;
 
+  uint16_t expected_ssl_version_min;
+  uint16_t expected_ssl_version_max;
+
   bool is_connect_data_consumed = false;
 };
 
@@ -608,6 +611,9 @@
 
   // TransportClientSocket implementation.
   int Bind(const net::IPEndPoint& local_addr) override;
+  bool SetNoDelay(bool no_delay) override;
+  bool SetKeepAlive(bool enable, int delay) override;
+
   // StreamSocket implementation.
   int Connect(CompletionOnceCallback callback) override = 0;
   void Disconnect() override;
@@ -623,6 +629,7 @@
   void AddConnectionAttempts(const ConnectionAttempts& attempts) override {}
   int64_t GetTotalReceivedBytes() const override;
   void ApplySocketTag(const SocketTag& tag) override {}
+
  protected:
   ~MockClientSocket() override;
   void RunCallbackAsync(CompletionOnceCallback callback, int result);
@@ -810,6 +817,7 @@
             int buf_len,
             CompletionOnceCallback callback,
             const NetworkTrafficAnnotationTag& traffic_annotation) override;
+  int CancelReadIfReady() override;
 
   // StreamSocket implementation.
   int Connect(CompletionOnceCallback callback) override;
diff --git a/net/socket/tcp_client_socket.h b/net/socket/tcp_client_socket.h
index 999039ca..d6e70f7 100644
--- a/net/socket/tcp_client_socket.h
+++ b/net/socket/tcp_client_socket.h
@@ -47,6 +47,9 @@
 
   // TransportClientSocket implementation.
   int Bind(const IPEndPoint& address) override;
+  bool SetKeepAlive(bool enable, int delay) override;
+  bool SetNoDelay(bool no_delay) override;
+
   // StreamSocket implementation.
   int Connect(CompletionOnceCallback callback) override;
   void Disconnect() override;
@@ -83,9 +86,6 @@
   int SetReceiveBufferSize(int32_t size) override;
   int SetSendBufferSize(int32_t size) override;
 
-  virtual bool SetKeepAlive(bool enable, int delay);
-  virtual bool SetNoDelay(bool no_delay);
-
  private:
   // State machine for connecting the socket.
   enum ConnectState {
diff --git a/net/socket/transport_client_socket.cc b/net/socket/transport_client_socket.cc
new file mode 100644
index 0000000..76e4514
--- /dev/null
+++ b/net/socket/transport_client_socket.cc
@@ -0,0 +1,22 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/socket/transport_client_socket.h"
+
+namespace net {
+
+TransportClientSocket::TransportClientSocket() = default;
+TransportClientSocket::~TransportClientSocket() = default;
+
+bool TransportClientSocket::SetNoDelay(bool no_delay) {
+  NOTIMPLEMENTED();
+  return false;
+}
+
+bool TransportClientSocket::SetKeepAlive(bool enable, int delay_secs) {
+  NOTIMPLEMENTED();
+  return false;
+}
+
+}  // namespace net
diff --git a/net/socket/transport_client_socket.h b/net/socket/transport_client_socket.h
index 8f64e92c..1a639888 100644
--- a/net/socket/transport_client_socket.h
+++ b/net/socket/transport_client_socket.h
@@ -5,6 +5,7 @@
 #ifndef NET_SOCKET_TRANSPORT_CLIENT_SOCKET_H_
 #define NET_SOCKET_TRANSPORT_CLIENT_SOCKET_H_
 
+#include "base/macros.h"
 #include "net/base/ip_endpoint.h"
 #include "net/base/net_export.h"
 #include "net/socket/stream_socket.h"
@@ -13,13 +14,31 @@
 
 // A socket class that extends StreamSocket to provide methods that are relevant
 // to a transport client socket.
-class NET_EXPORT_PRIVATE TransportClientSocket : public StreamSocket {
+class NET_EXPORT TransportClientSocket : public StreamSocket {
  public:
-  ~TransportClientSocket() override {}
+  TransportClientSocket();
+  ~TransportClientSocket() override;
 
   // Binds the socket to a local address, |local_addr|. Returns OK on success,
   // and a net error code on failure.
   virtual int Bind(const net::IPEndPoint& local_addr) = 0;
+
+  // Enables/disables buffering in the kernel. By default, on Linux, TCP sockets
+  // will wait up to 200ms for more data to complete a packet before
+  // transmitting. After calling this function, the kernel will not wait. See
+  // TCP_NODELAY in `man 7 tcp`. On Windows, the Nagle implementation is
+  // governed by RFC 896. SetTCPNoDelay() sets the TCP_NODELAY option. Use
+  // |no_delay| to enable or disable it. Returns true on success, and false on
+  // failure.
+  virtual bool SetNoDelay(bool no_delay);
+
+  // Enables or disables TCP Keep-Alive (which is the SO_KEEPALIVE option on the
+  // socket). The unit for the delay is in seconds. Returns true on success, and
+  // false on failure.
+  virtual bool SetKeepAlive(bool enable, int delay_secs);
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(TransportClientSocket);
 };
 
 }  // namespace net
diff --git a/net/third_party/quic/core/quic_packet_reader.cc b/net/third_party/quic/core/quic_packet_reader.cc
index dc38f4b..63e8c3c 100644
--- a/net/third_party/quic/core/quic_packet_reader.cc
+++ b/net/third_party/quic/core/quic_packet_reader.cc
@@ -48,7 +48,7 @@
     hdr->msg_iovlen = 1;
 
     hdr->msg_control = packets_[i].cbuf;
-    hdr->msg_controllen = QuicSocketUtils::kSpaceForCmsg;
+    hdr->msg_controllen = kCmsgSpaceForReadPacket;
   }
 #endif
 }
@@ -83,7 +83,8 @@
     msghdr* hdr = &mmsg_hdr_[i].msg_hdr;
     hdr->msg_namelen = sizeof(sockaddr_storage);
     DCHECK_EQ(1, hdr->msg_iovlen);
-    hdr->msg_controllen = QuicSocketUtils::kSpaceForCmsg;
+    hdr->msg_controllen = kCmsgSpaceForReadPacket;
+    hdr->msg_flags = 0;
   }
 
   int packets_read =
@@ -99,10 +100,10 @@
       continue;
     }
 
-    if (mmsg_hdr_[i].msg_hdr.msg_controllen >= QuicSocketUtils::kSpaceForCmsg) {
+    if (mmsg_hdr_[i].msg_hdr.msg_flags & MSG_CTRUNC) {
       QUIC_BUG << "Incorrectly set control length: "
                << mmsg_hdr_[i].msg_hdr.msg_controllen << ", expected "
-               << QuicSocketUtils::kSpaceForCmsg;
+               << kCmsgSpaceForReadPacket;
       continue;
     }
 
diff --git a/net/third_party/quic/core/quic_packet_reader.h b/net/third_party/quic/core/quic_packet_reader.h
index 51c2e7f..da07c71 100644
--- a/net/third_party/quic/core/quic_packet_reader.h
+++ b/net/third_party/quic/core/quic_packet_reader.h
@@ -79,7 +79,7 @@
     // call on the packets.
     struct sockaddr_storage raw_address;
     // cbuf is used for ancillary data from the kernel on recvmmsg.
-    char cbuf[QuicSocketUtils::kSpaceForCmsg];
+    char cbuf[kCmsgSpaceForReadPacket];
     // buf is used for the data read from the kernel on recvmmsg.
     char buf[kMaxPacketSize];
   };
diff --git a/net/third_party/quic/core/quic_session.cc b/net/third_party/quic/core/quic_session.cc
index 9037fd5..f912c7c 100644
--- a/net/third_party/quic/core/quic_session.cc
+++ b/net/third_party/quic/core/quic_session.cc
@@ -944,6 +944,10 @@
   return dynamic_stream_map_.size() - draining_streams_.size();
 }
 
+size_t QuicSession::GetNumDrainingStreams() const {
+  return draining_streams_.size();
+}
+
 size_t QuicSession::GetNumAvailableStreams() const {
   return available_streams_.size();
 }
diff --git a/net/third_party/quic/core/quic_session.h b/net/third_party/quic/core/quic_session.h
index 21870a23..9bc53508 100644
--- a/net/third_party/quic/core/quic_session.h
+++ b/net/third_party/quic/core/quic_session.h
@@ -238,6 +238,9 @@
   // headers and crypto streams, and never counting unfinished streams.
   size_t GetNumActiveStreams() const;
 
+  // Returns the number of currently draining streams.
+  size_t GetNumDrainingStreams() const;
+
   // Returns the number of currently open peer initiated streams, excluding the
   // reserved headers and crypto streams.
   size_t GetNumOpenIncomingStreams() const;
diff --git a/net/third_party/quic/platform/impl/quic_socket_utils.cc b/net/third_party/quic/platform/impl/quic_socket_utils.cc
index 2d563c0f..9ddbd43 100644
--- a/net/third_party/quic/platform/impl/quic_socket_utils.cc
+++ b/net/third_party/quic/platform/impl/quic_socket_utils.cc
@@ -139,8 +139,7 @@
                                 QuicWallTime* walltimestamp,
                                 QuicSocketAddress* peer_address) {
   DCHECK(peer_address != nullptr);
-  char cbuf[kSpaceForCmsg];
-  memset(cbuf, 0, arraysize(cbuf));
+  char cbuf[kCmsgSpaceForReadPacket];
 
   iovec iov = {buffer, buf_len};
   struct sockaddr_storage raw_address;
@@ -168,7 +167,7 @@
     return -1;
   }
 
-  if (hdr.msg_controllen >= arraysize(cbuf)) {
+  if (hdr.msg_flags & MSG_CTRUNC) {
     QUIC_BUG << "Incorrectly set control length: " << hdr.msg_controllen
              << ", expected " << arraysize(cbuf);
     return -1;
diff --git a/net/third_party/quic/platform/impl/quic_socket_utils.h b/net/third_party/quic/platform/impl/quic_socket_utils.h
index 46d3deaf..b227938 100644
--- a/net/third_party/quic/platform/impl/quic_socket_utils.h
+++ b/net/third_party/quic/platform/impl/quic_socket_utils.h
@@ -36,18 +36,28 @@
   struct timespec hwtimeraw;
 };
 
+const int kCmsgSpaceForIpv4 = CMSG_SPACE(sizeof(in_pktinfo));
+const int kCmsgSpaceForIpv6 = CMSG_SPACE(sizeof(in6_pktinfo));
+// kCmsgSpaceForIp should be big enough to hold both IPv4 and IPv6 packet info.
+const int kCmsgSpaceForIp = (kCmsgSpaceForIpv4 < kCmsgSpaceForIpv6)
+                                ? kCmsgSpaceForIpv6
+                                : kCmsgSpaceForIpv4;
+
+const int kCmsgSpaceForSegmentSize = CMSG_SPACE(sizeof(uint16_t));
+
+const int kCmsgSpaceForRecvQueueOverflow = CMSG_SPACE(sizeof(int));
+const int kCmsgSpaceForLinuxTimestamping =
+    CMSG_SPACE(sizeof(LinuxTimestamping));
+const int kCmsgSpaceForTTL = CMSG_SPACE(sizeof(int));
+
+// The minimum cmsg buffer size when receiving a packet. It is possible for a
+// received packet to contain both IPv4 and IPv6 addresses.
+const int kCmsgSpaceForReadPacket =
+    kCmsgSpaceForRecvQueueOverflow + kCmsgSpaceForIpv4 + kCmsgSpaceForIpv6 +
+    kCmsgSpaceForLinuxTimestamping + kCmsgSpaceForTTL;
+
 class QuicSocketUtils {
  public:
-  // The first integer is for overflow. The in6_pktinfo is the larger of the
-  // address structures present. LinuxTimestamping is present for socket
-  // timestamping.  The subsequent int is for ttl.
-  // The final int is a sentinel so the msg_controllen feedback
-  // can be used to detect larger control messages than there is space for.
-  static const int kSpaceForCmsg =
-      CMSG_SPACE(CMSG_LEN(sizeof(int)) + CMSG_LEN(sizeof(in6_pktinfo)) +
-                 CMSG_LEN(sizeof(LinuxTimestamping)) + CMSG_LEN(sizeof(int)) +
-                 CMSG_LEN(sizeof(int)));
-
   // Fills in |address| if |hdr| contains IP_PKTINFO or IPV6_PKTINFO. Fills in
   // |timestamp| if |hdr| contains |SO_TIMESTAMPING|. |address| and |timestamp|
   // must not be null.
diff --git a/net/traffic_annotation/BUILD.gn b/net/traffic_annotation/BUILD.gn
new file mode 100644
index 0000000..771970a0
--- /dev/null
+++ b/net/traffic_annotation/BUILD.gn
@@ -0,0 +1,18 @@
+source_set("traffic_annotation") {
+  sources = [
+    "network_traffic_annotation.h",
+  ]
+  deps = [
+    "//base",
+  ]
+}
+
+source_set("test_support") {
+  testonly = true
+  sources = [
+    "network_traffic_annotation_test_helper.h",
+  ]
+  public_deps = [
+    ":traffic_annotation",
+  ]
+}
diff --git a/services/network/public/cpp/mutable_network_traffic_annotation_tag.typemap b/services/network/public/cpp/mutable_network_traffic_annotation_tag.typemap
index 5752893..06b8a2cf 100644
--- a/services/network/public/cpp/mutable_network_traffic_annotation_tag.typemap
+++ b/services/network/public/cpp/mutable_network_traffic_annotation_tag.typemap
@@ -7,7 +7,7 @@
 traits_headers = [ "//services/network/public/cpp/" +
                    "mutable_network_traffic_annotation_tag_mojom_traits.h" ]
 deps = [
-  "//net:traffic_annotation",
+  "//net/traffic_annotation",
 ]
 type_mappings = [ "network.mojom.MutableNetworkTrafficAnnotationTag=" +
                   "net::MutableNetworkTrafficAnnotationTag" ]
diff --git a/services/network/public/cpp/mutable_partial_network_traffic_annotation_tag.typemap b/services/network/public/cpp/mutable_partial_network_traffic_annotation_tag.typemap
index 0a8f617..69be22d 100644
--- a/services/network/public/cpp/mutable_partial_network_traffic_annotation_tag.typemap
+++ b/services/network/public/cpp/mutable_partial_network_traffic_annotation_tag.typemap
@@ -8,7 +8,7 @@
     [ "//services/network/public/cpp/" +
       "mutable_partial_network_traffic_annotation_tag_mojom_traits.h" ]
 deps = [
-  "//net:traffic_annotation",
+  "//net/traffic_annotation",
 ]
 type_mappings = [ "network.mojom.MutablePartialNetworkTrafficAnnotationTag=" +
                   "net::MutablePartialNetworkTrafficAnnotationTag" ]
diff --git a/services/network/public/cpp/server/http_server.h b/services/network/public/cpp/server/http_server.h
index 9f3b7d2..3fc1d7b3 100644
--- a/services/network/public/cpp/server/http_server.h
+++ b/services/network/public/cpp/server/http_server.h
@@ -12,6 +12,7 @@
 #include <memory>
 #include <string>
 
+#include "base/component_export.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "mojo/public/cpp/bindings/binding.h"
diff --git a/services/network/public/cpp/server/http_server_response_info.h b/services/network/public/cpp/server/http_server_response_info.h
index 9854171..d3593f5 100644
--- a/services/network/public/cpp/server/http_server_response_info.h
+++ b/services/network/public/cpp/server/http_server_response_info.h
@@ -10,6 +10,7 @@
 #include <string>
 #include <utility>
 
+#include "base/component_export.h"
 #include "base/strings/string_split.h"
 #include "net/http/http_status_code.h"
 
@@ -17,7 +18,7 @@
 
 namespace server {
 
-class HttpServerResponseInfo {
+class COMPONENT_EXPORT(NETWORK_CPP) HttpServerResponseInfo {
  public:
   // Creates a 200 OK HttpServerResponseInfo.
   HttpServerResponseInfo();
diff --git a/services/network/public/cpp/server/http_server_unittest.cc b/services/network/public/cpp/server/http_server_unittest.cc
index 705215b..2211ebf 100644
--- a/services/network/public/cpp/server/http_server_unittest.cc
+++ b/services/network/public/cpp/server/http_server_unittest.cc
@@ -56,7 +56,8 @@
             [](base::RunLoop* run_loop, int* result_out,
                mojo::ScopedDataPipeConsumerHandle* receive_pipe_handle_out,
                mojo::ScopedDataPipeProducerHandle* send_pipe_handle_out,
-               int result,
+               int result, const base::Optional<net::IPEndPoint>& local_addr,
+               const base::Optional<net::IPEndPoint>& peer_addr,
                mojo::ScopedDataPipeConsumerHandle receive_pipe_handle,
                mojo::ScopedDataPipeProducerHandle send_pipe_handle) {
               *receive_pipe_handle_out = std::move(receive_pipe_handle);
diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
index eb6f1eb..e4fc852d 100644
--- a/services/network/public/mojom/network_context.mojom
+++ b/services/network/public/mojom/network_context.mojom
@@ -401,6 +401,8 @@
       TCPConnectedSocket& socket,
       SocketObserver? observer)
      => (int32 result,
+         net.interfaces.IPEndPoint? local_addr,
+         net.interfaces.IPEndPoint? peer_addr,
          handle<data_pipe_consumer>? receive_stream,
          handle<data_pipe_producer>? send_stream);
 
diff --git a/services/network/public/mojom/tcp_socket.mojom b/services/network/public/mojom/tcp_socket.mojom
index 9359e8b2..cd95494 100644
--- a/services/network/public/mojom/tcp_socket.mojom
+++ b/services/network/public/mojom/tcp_socket.mojom
@@ -5,6 +5,7 @@
 module network.mojom;
 
 import "net/interfaces/ip_endpoint.mojom";
+import "services/network/public/mojom/ssl_config.mojom";
 import "services/network/public/mojom/tls_socket.mojom";
 import "services/network/public/mojom/network_param.mojom";
 import "services/network/public/mojom/mutable_network_traffic_annotation_tag.mojom";
@@ -18,9 +19,12 @@
   // Gets the local address of this connected socket. On success, |net_error| is
   // net::OK and |local_addr| contains the local address of the socket. On
   // failure, |local_addr| is null and |net_error| is a net error code.
+  // DEPRECATED: Please use the |local_addr| returned in
+  // CreateTCPConnectedSocketCallback.
   GetLocalAddress() => (int32 net_error, net.interfaces.IPEndPoint? local_addr);
 
-  // Upgrades a TCP socket to a TLS client socket.
+  // Upgrades a TCP socket to a TLS client socket. Caller can optionally specify
+  // a TLSClientSocketOptions to configure the connection.
   // IMPORTANT: Caller needs close the previous send and receive pipes before
   // this method can complete asynchronously.
   //
@@ -28,12 +32,32 @@
   // data and |receive_stream| to receive data over the connection. On failure,
   // |result| is a network error code.
   UpgradeToTLS(HostPortPair host_port_pair,
+               TLSClientSocketOptions? options,
                MutableNetworkTrafficAnnotationTag traffic_annotation,
                TLSClientSocket& request,
                SocketObserver? observer)
       => (int32 net_error,
           handle<data_pipe_consumer>? receive_stream,
           handle<data_pipe_producer>? send_stream);
+
+  // Socket options:
+  // Note that an implementation can apply default socket options suitable for
+  // the platform. Consumers do not need to set these themselves unless they
+  // want to change the default settings.
+
+  // This function enables/disables buffering in the kernel. By default, on
+  // Linux, TCP sockets will wait up to 200ms for more data to complete a packet
+  // before transmitting. After calling this function, the kernel will not wait.
+  // See TCP_NODELAY in `man 7 tcp`. On Windows, the Nagle implementation is
+  // governed by RFC 896. SetTCPNoDelay() sets the TCP_NODELAY option. Use
+  // |no_delay| to enable or disable it.
+  // Returns whether the operation is successful.
+  SetNoDelay(bool no_delay) => (bool success);
+
+  // Enables or disables TCP Keep-Alive. This sets SO_KEEPALIVE on the socket.
+  // |delay_secs| specifies the amount of time to delay in seconds.
+  // Returns whether the operation is successful.
+  SetKeepAlive(bool enable, int32 delay_secs) => (bool success);
 };
 
 // Interface to listen for network connection error on a TCPConnectedSocket or
@@ -73,5 +97,7 @@
   // Gets the local address of this server socket. On success, |net_error| is
   // net::OK and |local_addr| contains the local address of the socket. On
   // failure, |local_addr| is null and |net_error| is a net error code.
+  // DEPRECATED: Please use the |local_addr| returned in
+  // CreateTCPServerSocketCallback.
   GetLocalAddress() => (int32 net_error, net.interfaces.IPEndPoint? local_addr);
 };
diff --git a/services/network/public/mojom/tls_socket.mojom b/services/network/public/mojom/tls_socket.mojom
index 131edc2..26c5e050 100644
--- a/services/network/public/mojom/tls_socket.mojom
+++ b/services/network/public/mojom/tls_socket.mojom
@@ -5,6 +5,7 @@
 module network.mojom;
 
 import "net/interfaces/ip_endpoint.mojom";
+import "services/network/public/mojom/ssl_config.mojom";
 
 // Represents a connected TLS client socket. Writes and Reads are through the
 // data pipes supplied upon construction. Consumer should use SocketObserver
@@ -13,3 +14,10 @@
 // pointer.
 interface TLSClientSocket {
 };
+
+// Represents the options that consumers can specify when requesting a
+// TLSClientSocket.
+struct TLSClientSocketOptions {
+  SSLVersion version_min = kTLS1;
+  SSLVersion version_max = kTLS12;
+};
diff --git a/services/network/socket_factory.cc b/services/network/socket_factory.cc
index 7e667b6..b0e2341e 100644
--- a/services/network/socket_factory.cc
+++ b/services/network/socket_factory.cc
@@ -9,6 +9,7 @@
 
 #include "base/optional.h"
 #include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/type_converter.h"
 #include "net/base/completion_once_callback.h"
 #include "net/base/net_errors.h"
 #include "net/log/net_log.h"
@@ -17,9 +18,9 @@
 #include "net/ssl/ssl_config.h"
 #include "net/ssl/ssl_config_service.h"
 #include "net/url_request/url_request_context.h"
+#include "services/network/ssl_config_type_converter.h"
 #include "services/network/tcp_connected_socket.h"
 #include "services/network/tls_client_socket.h"
-
 #include "services/network/udp_socket.h"
 
 namespace network {
@@ -89,6 +90,7 @@
 
 void SocketFactory::CreateTLSClientSocket(
     const net::HostPortPair& host_port_pair,
+    mojom::TLSClientSocketOptionsPtr socket_options,
     mojom::TLSClientSocketRequest request,
     std::unique_ptr<net::ClientSocketHandle> tcp_socket,
     mojom::SocketObserverPtr observer,
@@ -99,8 +101,15 @@
       static_cast<net::NetworkTrafficAnnotationTag>(traffic_annotation));
   TLSClientSocket* socket_raw = socket.get();
   tls_socket_bindings_.AddBinding(std::move(socket), std::move(request));
+
   net::SSLConfig ssl_config;
   ssl_config_service_->GetSSLConfig(&ssl_config);
+  if (socket_options) {
+    ssl_config.version_min =
+        mojo::MojoSSLVersionToNetSSLVersion(socket_options->version_min);
+    ssl_config.version_max =
+        mojo::MojoSSLVersionToNetSSLVersion(socket_options->version_max);
+  }
   socket_raw->Connect(host_port_pair, ssl_config, std::move(tcp_socket),
                       ssl_client_socket_context_, client_socket_factory_,
                       std::move(callback));
diff --git a/services/network/socket_factory.h b/services/network/socket_factory.h
index 6d23f4af..b579a080 100644
--- a/services/network/socket_factory.h
+++ b/services/network/socket_factory.h
@@ -67,6 +67,7 @@
   // TCPConnectedSocket::Delegate implementation:
   void CreateTLSClientSocket(
       const net::HostPortPair& host_port_pair,
+      mojom::TLSClientSocketOptionsPtr socket_options,
       mojom::TLSClientSocketRequest request,
       std::unique_ptr<net::ClientSocketHandle> tcp_socket,
       mojom::SocketObserverPtr observer,
diff --git a/services/network/ssl_config_type_converter.cc b/services/network/ssl_config_type_converter.cc
index d391e79d..556f22a 100644
--- a/services/network/ssl_config_type_converter.cc
+++ b/services/network/ssl_config_type_converter.cc
@@ -6,21 +6,6 @@
 
 namespace {
 
-int MojoSSLVersionToNetSSLVersion(network::mojom::SSLVersion mojo_version) {
-  switch (mojo_version) {
-    case network::mojom::SSLVersion::kTLS1:
-      return net::SSL_PROTOCOL_VERSION_TLS1;
-    case network::mojom::SSLVersion::kTLS11:
-      return net::SSL_PROTOCOL_VERSION_TLS1_1;
-    case network::mojom::SSLVersion::kTLS12:
-      return net::SSL_PROTOCOL_VERSION_TLS1_2;
-    case network::mojom::SSLVersion::kTLS13:
-      return net::SSL_PROTOCOL_VERSION_TLS1_3;
-  }
-  NOTREACHED();
-  return net::SSL_PROTOCOL_VERSION_TLS1_2;
-}
-
 net::TLS13Variant MojoTLS13VariantToNetTLS13Variant(
     network::mojom::TLS13Variant tls13_variant) {
   switch (tls13_variant) {
@@ -37,6 +22,21 @@
 
 namespace mojo {
 
+int MojoSSLVersionToNetSSLVersion(network::mojom::SSLVersion mojo_version) {
+  switch (mojo_version) {
+    case network::mojom::SSLVersion::kTLS1:
+      return net::SSL_PROTOCOL_VERSION_TLS1;
+    case network::mojom::SSLVersion::kTLS11:
+      return net::SSL_PROTOCOL_VERSION_TLS1_1;
+    case network::mojom::SSLVersion::kTLS12:
+      return net::SSL_PROTOCOL_VERSION_TLS1_2;
+    case network::mojom::SSLVersion::kTLS13:
+      return net::SSL_PROTOCOL_VERSION_TLS1_3;
+  }
+  NOTREACHED();
+  return net::SSL_PROTOCOL_VERSION_TLS1_2;
+}
+
 net::SSLConfig
 TypeConverter<net::SSLConfig, network::mojom::SSLConfigPtr>::Convert(
     const network::mojom::SSLConfigPtr& mojo_config) {
diff --git a/services/network/ssl_config_type_converter.h b/services/network/ssl_config_type_converter.h
index 8c1335063..5632749 100644
--- a/services/network/ssl_config_type_converter.h
+++ b/services/network/ssl_config_type_converter.h
@@ -11,6 +11,8 @@
 
 namespace mojo {
 
+int MojoSSLVersionToNetSSLVersion(network::mojom::SSLVersion mojo_version);
+
 // Converts a net::SSLConfig to network::mojom::SSLConfigPtr. Tested in
 // SSLConfigServiceMojo's unittests.
 template <>
diff --git a/services/network/tcp_connected_socket.cc b/services/network/tcp_connected_socket.cc
index ee9d57b0..e9db0cf 100644
--- a/services/network/tcp_connected_socket.cc
+++ b/services/network/tcp_connected_socket.cc
@@ -32,7 +32,7 @@
 
 TCPConnectedSocket::TCPConnectedSocket(
     mojom::SocketObserverPtr observer,
-    std::unique_ptr<net::StreamSocket> socket,
+    std::unique_ptr<net::TransportClientSocket> socket,
     mojo::ScopedDataPipeProducerHandle receive_pipe_handle,
     mojo::ScopedDataPipeConsumerHandle send_pipe_handle,
     const net::NetworkTrafficAnnotationTag& traffic_annotation)
@@ -87,6 +87,7 @@
 
 void TCPConnectedSocket::UpgradeToTLS(
     const net::HostPortPair& host_port_pair,
+    mojom::TLSClientSocketOptionsPtr socket_options,
     const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
     mojom::TLSClientSocketRequest request,
     mojom::SocketObserverPtr observer,
@@ -95,8 +96,8 @@
   if (socket_data_pump_) {
     pending_upgrade_to_tls_callback_ = base::BindOnce(
         &TCPConnectedSocket::UpgradeToTLS, base::Unretained(this),
-        host_port_pair, traffic_annotation, std::move(request),
-        std::move(observer), std::move(callback));
+        host_port_pair, std::move(socket_options), traffic_annotation,
+        std::move(request), std::move(observer), std::move(callback));
     return;
   }
   if (!socket_ || !socket_->IsConnected()) {
@@ -108,19 +109,47 @@
   auto socket_handle = std::make_unique<net::ClientSocketHandle>();
   socket_handle->SetSocket(std::move(socket_));
   delegate_->CreateTLSClientSocket(
-      host_port_pair, std::move(request), std::move(socket_handle),
-      std::move(observer),
+      host_port_pair, std::move(socket_options), std::move(request),
+      std::move(socket_handle), std::move(observer),
       static_cast<net::NetworkTrafficAnnotationTag>(traffic_annotation),
       std::move(callback));
 }
 
+void TCPConnectedSocket::SetNoDelay(bool no_delay,
+                                    SetNoDelayCallback callback) {
+  if (!socket_) {
+    std::move(callback).Run(false);
+    return;
+  }
+  bool success = socket_->SetNoDelay(no_delay);
+  std::move(callback).Run(success);
+}
+
+void TCPConnectedSocket::SetKeepAlive(bool enable,
+                                      int32_t delay_secs,
+                                      SetKeepAliveCallback callback) {
+  if (!socket_) {
+    std::move(callback).Run(false);
+    return;
+  }
+  bool success = socket_->SetKeepAlive(enable, delay_secs);
+  std::move(callback).Run(success);
+}
+
 void TCPConnectedSocket::OnConnectCompleted(int result) {
   DCHECK(!connect_callback_.is_null());
   DCHECK(!socket_data_pump_);
 
+  net::IPEndPoint peer_addr, local_addr;
+  if (result == net::OK)
+    result = socket_->GetLocalAddress(&local_addr);
+  if (result == net::OK)
+    result = socket_->GetPeerAddress(&peer_addr);
+
   if (result != net::OK) {
     std::move(connect_callback_)
-        .Run(result, mojo::ScopedDataPipeConsumerHandle(),
+        .Run(result, base::nullopt, base::nullopt,
+             mojo::ScopedDataPipeConsumerHandle(),
              mojo::ScopedDataPipeProducerHandle());
     return;
   }
@@ -130,7 +159,8 @@
       socket_.get(), this /*delegate*/, std::move(receive_pipe.producer_handle),
       std::move(send_pipe.consumer_handle), traffic_annotation_);
   std::move(connect_callback_)
-      .Run(net::OK, std::move(receive_pipe.consumer_handle),
+      .Run(net::OK, local_addr, peer_addr,
+           std::move(receive_pipe.consumer_handle),
            std::move(send_pipe.producer_handle));
 }
 
diff --git a/services/network/tcp_connected_socket.h b/services/network/tcp_connected_socket.h
index f20c212..1926857 100644
--- a/services/network/tcp_connected_socket.h
+++ b/services/network/tcp_connected_socket.h
@@ -26,9 +26,9 @@
 
 namespace net {
 class NetLog;
-class StreamSocket;
 class ClientSocketFactory;
 class ClientSocketHandle;
+class TransportClientSocket;
 }  // namespace net
 
 namespace network {
@@ -43,6 +43,7 @@
     // Handles a mojom::TLSClientSocketRequest.
     virtual void CreateTLSClientSocket(
         const net::HostPortPair& host_port_pair,
+        mojom::TLSClientSocketOptionsPtr socket_options,
         mojom::TLSClientSocketRequest request,
         std::unique_ptr<net::ClientSocketHandle> tcp_socket,
         mojom::SocketObserverPtr observer,
@@ -57,7 +58,7 @@
       const net::NetworkTrafficAnnotationTag& traffic_annotation);
   TCPConnectedSocket(
       mojom::SocketObserverPtr observer,
-      std::unique_ptr<net::StreamSocket> socket,
+      std::unique_ptr<net::TransportClientSocket> socket,
       mojo::ScopedDataPipeProducerHandle receive_pipe_handle,
       mojo::ScopedDataPipeConsumerHandle send_pipe_handle,
       const net::NetworkTrafficAnnotationTag& traffic_annotation);
@@ -69,13 +70,17 @@
 
   // mojom::TCPConnectedSocket implementation.
   void GetLocalAddress(GetLocalAddressCallback callback) override;
-
   void UpgradeToTLS(
       const net::HostPortPair& host_port_pair,
+      mojom::TLSClientSocketOptionsPtr socket_options,
       const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
       mojom::TLSClientSocketRequest request,
       mojom::SocketObserverPtr observer,
       UpgradeToTLSCallback callback) override;
+  void SetNoDelay(bool no_delay, SetNoDelayCallback callback) override;
+  void SetKeepAlive(bool enable,
+                    int32_t delay_secs,
+                    SetKeepAliveCallback callback) override;
 
  private:
   // Invoked when net::TCPClientSocket::Connect() completes.
@@ -92,7 +97,7 @@
   Delegate* const delegate_;
   net::ClientSocketFactory* const client_socket_factory_;
 
-  std::unique_ptr<net::StreamSocket> socket_;
+  std::unique_ptr<net::TransportClientSocket> socket_;
 
   mojom::NetworkContext::CreateTCPConnectedSocketCallback connect_callback_;
 
diff --git a/services/network/tcp_server_socket.cc b/services/network/tcp_server_socket.cc
index ecda5f7..f7e15769 100644
--- a/services/network/tcp_server_socket.cc
+++ b/services/network/tcp_server_socket.cc
@@ -101,7 +101,8 @@
     mojom::TCPConnectedSocketPtr socket;
     auto connected_socket = std::make_unique<TCPConnectedSocket>(
         std::move(pending_accept->observer),
-        base::WrapUnique(accepted_socket_.release()),
+        base::WrapUnique(static_cast<net::TransportClientSocket*>(
+            accepted_socket_.release())),
         std::move(receive_pipe.producer_handle),
         std::move(send_pipe.consumer_handle), traffic_annotation_);
     delegate_->OnAccept(std::move(connected_socket),
diff --git a/services/network/tcp_socket_unittest.cc b/services/network/tcp_socket_unittest.cc
index 83392ac..c387ffe0 100644
--- a/services/network/tcp_socket_unittest.cc
+++ b/services/network/tcp_socket_unittest.cc
@@ -316,9 +316,15 @@
         std::move(request), std::move(observer),
         base::BindLambdaForTesting(
             [&](int result,
+                const base::Optional<net::IPEndPoint>& actual_local_addr,
+                const base::Optional<net::IPEndPoint>& peer_addr,
                 mojo::ScopedDataPipeConsumerHandle receive_pipe_handle,
                 mojo::ScopedDataPipeProducerHandle send_pipe_handle) {
               net_error = result;
+              if (result == net::OK) {
+                EXPECT_NE(0, actual_local_addr.value().port());
+                EXPECT_EQ(remote_addr, peer_addr.value());
+              }
               *receive_pipe_handle_out = std::move(receive_pipe_handle);
               *send_pipe_handle_out = std::move(send_pipe_handle);
               run_loop.Quit();
@@ -967,6 +973,89 @@
   EXPECT_TRUE(data_provider.AllWriteDataConsumed());
 }
 
+TEST_F(TCPSocketWithMockSocketTest, SetNoDelayAndKeepAlive) {
+  // Populate with some mock reads, so UpgradeToTLS() won't error out because of
+  // a closed receive pipe.
+  const net::MockRead kReads[] = {
+      net::MockRead(net::ASYNC, "hello", 5 /* length */),
+      net::MockRead(net::ASYNC, net::OK)};
+  net::StaticSocketDataProvider data_provider(kReads,
+                                              base::span<net::MockWrite>());
+  net::SSLSocketDataProvider ssl_socket(net::ASYNC, net::ERR_FAILED);
+
+  mock_client_socket_factory_.AddSocketDataProvider(&data_provider);
+  mock_client_socket_factory_.AddSSLSocketDataProvider(&ssl_socket);
+
+  mojo::ScopedDataPipeConsumerHandle client_socket_receive_handle;
+  mojo::ScopedDataPipeProducerHandle client_socket_send_handle;
+
+  mojom::TCPConnectedSocketPtr client_socket;
+  net::IPEndPoint server_addr(net::IPAddress::IPv4Localhost(), 1234);
+  EXPECT_EQ(net::OK,
+            CreateTCPConnectedSocketSync(
+                mojo::MakeRequest(&client_socket), nullptr /*observer*/,
+                base::nullopt, server_addr, &client_socket_receive_handle,
+                &client_socket_send_handle));
+  {
+    base::RunLoop run_loop;
+    client_socket->SetNoDelay(true /* no_delay */,
+                              base::BindLambdaForTesting([&](bool success) {
+                                EXPECT_TRUE(success);
+                                run_loop.Quit();
+                              }));
+    run_loop.Run();
+  }
+  {
+    base::RunLoop run_loop;
+    client_socket->SetKeepAlive(true /* enable */, 123 /* delay */,
+                                base::BindLambdaForTesting([&](bool success) {
+                                  EXPECT_TRUE(success);
+                                  run_loop.Quit();
+                                }));
+    run_loop.Run();
+  }
+
+  // UpgradeToTLS will destroy network::TCPConnectedSocket::|socket_|. Calling
+  // SetNoDelay and SetKeepAlive should error out.
+  mojom::TLSClientSocketPtr tls_socket;
+  client_socket_receive_handle.reset();
+  client_socket_send_handle.reset();
+  {
+    base::RunLoop run_loop;
+    net::HostPortPair host_port_pair("example.org", 443);
+    client_socket->UpgradeToTLS(
+        host_port_pair, nullptr /* ssl_config_ptr */,
+        net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS),
+        mojo::MakeRequest(&tls_socket), nullptr /*observer */,
+        base::BindLambdaForTesting(
+            [&](int result,
+                mojo::ScopedDataPipeConsumerHandle receive_pipe_handle,
+                mojo::ScopedDataPipeProducerHandle send_pipe_handle) {
+              EXPECT_EQ(net::ERR_FAILED, result);
+              run_loop.Quit();
+            }));
+    run_loop.Run();
+  }
+  {
+    base::RunLoop run_loop;
+    client_socket->SetNoDelay(true /* no_delay */,
+                              base::BindLambdaForTesting([&](bool success) {
+                                EXPECT_FALSE(success);
+                                run_loop.Quit();
+                              }));
+    run_loop.Run();
+  }
+  {
+    base::RunLoop run_loop;
+    client_socket->SetKeepAlive(true /* enable */, 123 /* delay */,
+                                base::BindLambdaForTesting([&](bool success) {
+                                  EXPECT_FALSE(success);
+                                  run_loop.Quit();
+                                }));
+    run_loop.Run();
+  }
+}
+
 // Tests the case where net::ServerSocket::Listen() succeeds but
 // net::ServerSocket::GetLocalAddress() fails. This should still be considered
 // as a failure.
diff --git a/services/network/tls_client_socket_unittest.cc b/services/network/tls_client_socket_unittest.cc
index d10a3a32..09bd80b7 100644
--- a/services/network/tls_client_socket_unittest.cc
+++ b/services/network/tls_client_socket_unittest.cc
@@ -95,6 +95,8 @@
         pre_tls_observer()->GetObserverPtr(),
         base::BindLambdaForTesting(
             [&](int result,
+                const base::Optional<net::IPEndPoint>& actual_local_addr,
+                const base::Optional<net::IPEndPoint>& peer_addr,
                 mojo::ScopedDataPipeConsumerHandle receive_pipe_handle,
                 mojo::ScopedDataPipeProducerHandle send_pipe_handle) {
               net_error = result;
@@ -111,7 +113,7 @@
                     mojom::TLSClientSocketRequest request,
                     net::CompletionOnceCallback callback) {
     client_socket->UpgradeToTLS(
-        host_port_pair,
+        host_port_pair, nullptr /* ssl_config_ptr */,
         net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS),
         std::move(request), post_tls_observer()->GetObserverPtr(),
         base::BindOnce(
@@ -300,7 +302,7 @@
   base::RunLoop run_loop;
   int net_error = net::ERR_FAILED;
   client_socket->UpgradeToTLS(
-      host_port_pair,
+      host_port_pair, nullptr /* ssl_config_ptr */,
       net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS),
       mojo::MakeRequest(&tls_socket2), nullptr /*observer */,
       base::BindLambdaForTesting(
@@ -319,6 +321,52 @@
   EXPECT_TRUE(data_provider.AllWriteDataConsumed());
 }
 
+TEST_F(TLSClientSocketTest, UpgradeToTLSWithCustomSSLConfig) {
+  const net::MockRead kReads[] = {net::MockRead(net::ASYNC, net::OK, 0)};
+  net::SequencedSocketData data_provider(kReads, base::span<net::MockWrite>());
+  data_provider.set_connect_data(net::MockConnect(net::SYNCHRONOUS, net::OK));
+  mock_client_socket_factory()->AddSocketDataProvider(&data_provider);
+  net::SSLSocketDataProvider ssl_socket(net::ASYNC, net::OK);
+  ssl_socket.expected_ssl_version_min = net::SSL_PROTOCOL_VERSION_TLS1_1;
+  ssl_socket.expected_ssl_version_max = net::SSL_PROTOCOL_VERSION_TLS1_2;
+  mock_client_socket_factory()->AddSSLSocketDataProvider(&ssl_socket);
+
+  mojom::TCPConnectedSocketPtr client_socket;
+  net::IPEndPoint server_addr(net::IPAddress::IPv4Localhost(), 1234);
+  EXPECT_EQ(net::OK, CreateTCPConnectedSocketSync(
+                         mojo::MakeRequest(&client_socket), server_addr));
+
+  net::HostPortPair host_port_pair("example.org", 443);
+  pre_tls_recv_handle()->reset();
+  pre_tls_send_handle()->reset();
+
+  mojom::TLSClientSocketPtr tls_socket;
+  base::RunLoop run_loop;
+  mojom::TLSClientSocketOptionsPtr options =
+      mojom::TLSClientSocketOptions::New();
+  options->version_min = mojom::SSLVersion::kTLS11;
+  options->version_max = mojom::SSLVersion::kTLS12;
+  int net_error = net::ERR_FAILED;
+  client_socket->UpgradeToTLS(
+      host_port_pair, std::move(options),
+      net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS),
+      mojo::MakeRequest(&tls_socket), nullptr /*observer */,
+      base::BindLambdaForTesting(
+          [&](int result,
+              mojo::ScopedDataPipeConsumerHandle receive_pipe_handle,
+              mojo::ScopedDataPipeProducerHandle send_pipe_handle) {
+            net_error = result;
+            run_loop.Quit();
+          }));
+  run_loop.Run();
+  ASSERT_EQ(net::OK, net_error);
+
+  base::RunLoop().RunUntilIdle();
+  EXPECT_TRUE(ssl_socket.ConnectDataConsumed());
+  EXPECT_TRUE(data_provider.AllReadDataConsumed());
+  EXPECT_TRUE(data_provider.AllWriteDataConsumed());
+}
+
 // Same as the UpgradeToTLS test, except this also reads and writes to the tcp
 // connection before UpgradeToTLS is called.
 TEST_F(TLSClientSocketTest, ReadWriteBeforeUpgradeToTLS) {
diff --git a/services/resource_coordinator/observers/page_signal_generator_impl.cc b/services/resource_coordinator/observers/page_signal_generator_impl.cc
index 900da65..ba3d53e5 100644
--- a/services/resource_coordinator/observers/page_signal_generator_impl.cc
+++ b/services/resource_coordinator/observers/page_signal_generator_impl.cc
@@ -77,7 +77,7 @@
 
   // Create page data exists for this Page CU.
   auto* page_cu = PageCoordinationUnitImpl::FromCoordinationUnitBase(cu);
-  DCHECK(!base::ContainsKey(page_data_, page_cu)); // No data should exist yet.
+  DCHECK(!base::ContainsKey(page_data_, page_cu));  // No data should exist yet.
   page_data_[page_cu].load_idle_state = kLoadingNotStarted;
 }
 
@@ -143,6 +143,20 @@
   }
 }
 
+void PageSignalGeneratorImpl::OnFrameEventReceived(
+    const FrameCoordinationUnitImpl* frame_cu,
+    const mojom::Event event) {
+  if (event != mojom::Event::kNonPersistentNotificationCreated)
+    return;
+
+  auto* page_cu = frame_cu->GetPageCoordinationUnit();
+  if (!page_cu)
+    return;
+
+  DISPATCH_PAGE_SIGNAL(receivers_, NotifyNonPersistentNotificationCreated,
+                       page_cu->id());
+}
+
 void PageSignalGeneratorImpl::OnPageEventReceived(
     const PageCoordinationUnitImpl* page_cu,
     const mojom::Event event) {
@@ -334,11 +348,10 @@
   // associated with this page's main frame actually being low. In the case
   // of session restore this is mitigated by having a timeout while waiting for
   // this signal.
-  return
-      main_frame_cu->GetPropertyOrDefault(
-          mojom::PropertyType::kNetworkAlmostIdle, 0u) &&
-      process_cu->GetPropertyOrDefault(
-          mojom::PropertyType::kMainThreadTaskLoadIsLow, 0u);
+  return main_frame_cu->GetPropertyOrDefault(
+             mojom::PropertyType::kNetworkAlmostIdle, 0u) &&
+         process_cu->GetPropertyOrDefault(
+             mojom::PropertyType::kMainThreadTaskLoadIsLow, 0u);
 }
 
 }  // namespace resource_coordinator
diff --git a/services/resource_coordinator/observers/page_signal_generator_impl.h b/services/resource_coordinator/observers/page_signal_generator_impl.h
index a80ab9b..dfbceec 100644
--- a/services/resource_coordinator/observers/page_signal_generator_impl.h
+++ b/services/resource_coordinator/observers/page_signal_generator_impl.h
@@ -60,6 +60,8 @@
   void OnProcessPropertyChanged(const ProcessCoordinationUnitImpl* process_cu,
                                 const mojom::PropertyType property_type,
                                 int64_t value) override;
+  void OnFrameEventReceived(const FrameCoordinationUnitImpl* frame_cu,
+                            const mojom::Event event) override;
   void OnPageEventReceived(const PageCoordinationUnitImpl* page_cu,
                            const mojom::Event event) override;
 
@@ -72,6 +74,8 @@
   FRIEND_TEST_ALL_PREFIXES(PageSignalGeneratorImplTest, IsLoading);
   FRIEND_TEST_ALL_PREFIXES(PageSignalGeneratorImplTest, IsIdling);
   FRIEND_TEST_ALL_PREFIXES(PageSignalGeneratorImplTest,
+                           NonPersistentNotificationCreatedEvent);
+  FRIEND_TEST_ALL_PREFIXES(PageSignalGeneratorImplTest,
                            PageDataCorrectlyManaged);
   FRIEND_TEST_ALL_PREFIXES(PageSignalGeneratorImplTest,
                            PageAlmostIdleTransitionsNoTimeout);
diff --git a/services/resource_coordinator/observers/page_signal_generator_impl_unittest.cc b/services/resource_coordinator/observers/page_signal_generator_impl_unittest.cc
index bbb7f62..33a0ad8 100644
--- a/services/resource_coordinator/observers/page_signal_generator_impl_unittest.cc
+++ b/services/resource_coordinator/observers/page_signal_generator_impl_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "services/resource_coordinator/observers/page_signal_generator_impl.h"
 
+#include "base/run_loop.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "services/resource_coordinator/coordination_unit/coordination_unit_test_harness.h"
@@ -14,6 +15,7 @@
 #include "services/resource_coordinator/public/cpp/resource_coordinator_features.h"
 #include "services/resource_coordinator/resource_coordinator_clock.h"
 
+#include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace resource_coordinator {
@@ -34,6 +36,27 @@
   size_t eqt_change_count_ = 0;
 };
 
+class MockPageSignalReceiver : public mojom::PageSignalReceiver {
+ public:
+  MockPageSignalReceiver(mojom::PageSignalReceiverRequest request)
+      : binding_(this, std::move(request)) {}
+  ~MockPageSignalReceiver() override = default;
+
+  // mojom::PageSignalReceiver implementation.
+  void NotifyPageAlmostIdle(const CoordinationUnitID& page_cu_id) override {}
+  void SetExpectedTaskQueueingDuration(const CoordinationUnitID& page_cu_id,
+                                       base::TimeDelta duration) override {}
+  void SetLifecycleState(const CoordinationUnitID& page_cu_id,
+                         mojom::LifecycleState) override {}
+  MOCK_METHOD1(NotifyNonPersistentNotificationCreated,
+               void(const CoordinationUnitID& page_cu_id));
+
+ private:
+  mojo::Binding<mojom::PageSignalReceiver> binding_;
+
+  DISALLOW_COPY_AND_ASSIGN(MockPageSignalReceiver);
+};
+
 class PageSignalGeneratorImplTest : public CoordinationUnitTestHarness {
  protected:
   void TearDown() override { ResourceCoordinatorClock::ResetClockForTesting(); }
@@ -253,4 +276,27 @@
   TestPageAlmostIdleTransitions(true);
 }
 
+TEST_F(PageSignalGeneratorImplTest, NonPersistentNotificationCreatedEvent) {
+  MockSinglePageInSingleProcessCoordinationUnitGraph cu_graph;
+  auto* frame_cu = cu_graph.frame.get();
+
+  // Create a mock receiver and register it against the psg.
+  mojom::PageSignalReceiverPtr mock_receiver_ptr;
+  MockPageSignalReceiver mock_receiver(mojo::MakeRequest(&mock_receiver_ptr));
+  page_signal_generator()->AddReceiver(std::move(mock_receiver_ptr));
+
+  base::RunLoop run_loop;
+  EXPECT_CALL(mock_receiver,
+              NotifyNonPersistentNotificationCreated(cu_graph.page->id()))
+      .WillOnce(::testing::InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
+
+  // Send a mojom::Event::kNonPersistentNotificationCreated event and wait for
+  // the receiver to get it.
+  page_signal_generator()->OnFrameEventReceived(
+      frame_cu, mojom::Event::kNonPersistentNotificationCreated);
+  run_loop.Run();
+
+  ::testing::Mock::VerifyAndClear(&mock_receiver);
+}
+
 }  // namespace resource_coordinator
diff --git a/services/resource_coordinator/public/mojom/page_signal.mojom b/services/resource_coordinator/public/mojom/page_signal.mojom
index 9c8a5f3..3ff1996 100644
--- a/services/resource_coordinator/public/mojom/page_signal.mojom
+++ b/services/resource_coordinator/public/mojom/page_signal.mojom
@@ -15,11 +15,19 @@
 // pass the interface pointer of mojo channel to PageSignalGenerator through
 // PageSignalGenerator::AddReceiver.
 interface PageSignalReceiver {
-  NotifyPageAlmostIdle(CoordinationUnitID cu_id);
-  SetExpectedTaskQueueingDuration(CoordinationUnitID cu_id,
+  NotifyPageAlmostIdle(CoordinationUnitID page_cu_id);
+  SetExpectedTaskQueueingDuration(CoordinationUnitID page_cu_id,
                                   mojo_base.mojom.TimeDelta duration);
-  SetLifecycleState(CoordinationUnitID cu_id,
+  SetLifecycleState(CoordinationUnitID page_cu_id,
                     LifecycleState state);
+
+  // Indicates that the page has created a non-persistent web notification, i.e.
+  // a notification created by a particular page (in opposition to persistent
+  // web notifications, who require a service worker).
+  //
+  // |page_cu_id| is the coordination ID of the page that created this
+  // notification.
+  NotifyNonPersistentNotificationCreated(CoordinationUnitID page_cu_id);
 };
 
 // A PageSignalGenerator implementation will be implemented inside GRC to receive
diff --git a/services/service_manager/sandbox/mac/renderer_v2.sb b/services/service_manager/sandbox/mac/renderer_v2.sb
index 7a33757..297db5a 100644
--- a/services/service_manager/sandbox/mac/renderer_v2.sb
+++ b/services/service_manager/sandbox/mac/renderer_v2.sb
@@ -34,6 +34,7 @@
   (subpath "/System/Library/ColorSync/Profiles")
   (subpath "/System/Library/CoreServices/SystemAppearance.bundle")
   (subpath "/System/Library/CoreServices/SystemVersion.bundle")
+  (subpath "/System/Library/Extensions")  ; https://crbug.com/847518
   (subpath "/System/Library/LinguisticData"))
 
 ; IOKit
diff --git a/services/ui/display/screen_manager_forwarding.cc b/services/ui/display/screen_manager_forwarding.cc
index c539c0a..ba0ceb0 100644
--- a/services/ui/display/screen_manager_forwarding.cc
+++ b/services/ui/display/screen_manager_forwarding.cc
@@ -186,18 +186,24 @@
   native_display_delegate_->SetHDCPState(*snapshot, state, std::move(callback));
 }
 
-void ScreenManagerForwarding::SetColorCorrection(
+void ScreenManagerForwarding::SetColorMatrix(
+    int64_t display_id,
+    const std::vector<float>& color_matrix) {
+  DCHECK(native_display_delegate_);
+  DCHECK(snapshot_map_.count(display_id));
+
+  native_display_delegate_->SetColorMatrix(display_id, color_matrix);
+}
+
+void ScreenManagerForwarding::SetGammaCorrection(
     int64_t display_id,
     const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-    const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
   DCHECK(native_display_delegate_);
-  const DisplaySnapshot* snapshot = snapshot_map_[display_id];
-  if (!snapshot)
-    return;
+  DCHECK(snapshot_map_.count(display_id));
 
-  native_display_delegate_->SetColorCorrection(*snapshot, degamma_lut,
-                                               gamma_lut, correction_matrix);
+  native_display_delegate_->SetGammaCorrection(display_id, degamma_lut,
+                                               gamma_lut);
 }
 
 void ScreenManagerForwarding::ToggleAddRemoveDisplay() {
diff --git a/services/ui/display/screen_manager_forwarding.h b/services/ui/display/screen_manager_forwarding.h
index f383883..b12e1a4 100644
--- a/services/ui/display/screen_manager_forwarding.h
+++ b/services/ui/display/screen_manager_forwarding.h
@@ -66,11 +66,12 @@
   void SetHDCPState(int64_t display_id,
                     display::HDCPState state,
                     SetHDCPStateCallback callback) override;
-  void SetColorCorrection(
+  void SetColorMatrix(int64_t display_id,
+                      const std::vector<float>& color_matrix) override;
+  void SetGammaCorrection(
       int64_t display_id,
       const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-      const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-      const std::vector<float>& correction_matrix) override;
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut) override;
 
   // mojom::DevDisplayController:
   void ToggleAddRemoveDisplay() override;
diff --git a/services/ui/public/interfaces/window_manager.mojom b/services/ui/public/interfaces/window_manager.mojom
index c774956..892f4910 100644
--- a/services/ui/public/interfaces/window_manager.mojom
+++ b/services/ui/public/interfaces/window_manager.mojom
@@ -70,12 +70,6 @@
   // and the client area should be equivalent to the window area. Type: bool
   const string kRemoveStandardFrame_InitProperty = "init:remove-standard-frame";
 
-  // FIXME Type: int32_t
-  const string kActiveFrameColor_InitProperty = "init:active-frame-color";
-
-  // FIXME Type: int32_t
-  const string kInactiveFrameColor_InitProperty = "init:inactive-frame-color";
-
   // A flag controlling the window's presence on the mash shelf. Type: bool
   const string kWindowIgnoredByShelf_InitProperty =
       "init:window-ignored-by-shelf";
@@ -108,6 +102,10 @@
   // used list of windows. Maps to aura::client::kExcludeFromMruKey. Type: bool.
   const string kExcludeFromMru_Property = "prop:exclude_from_mru";
 
+  // Used to control the color of the window frame. Type: SkColor.
+  const string kFrameActiveColor_Property = "prop:frame-active-color";
+  const string kFrameInactiveColor_Property = "prop:frame-inactive-color";
+
   // If true, when a window is in in fullscreen mode, the user cannot reveal
   // the top portion of the window through a touch / mouse gesture.
   // Type: bool.
diff --git a/services/viz/public/cpp/compositing/struct_traits_unittest.cc b/services/viz/public/cpp/compositing/struct_traits_unittest.cc
index 822312e8..e7cba2755 100644
--- a/services/viz/public/cpp/compositing/struct_traits_unittest.cc
+++ b/services/viz/public/cpp/compositing/struct_traits_unittest.cc
@@ -165,8 +165,10 @@
       EXPECT_EQ(input.zoom_inset(), output.zoom_inset());
       break;
     case cc::FilterOperation::REFERENCE: {
-      EXPECT_EQ(input.image_filter()->ToString(),
-                output.image_filter()->ToString());
+      ASSERT_EQ(!!input.image_filter(), !!output.image_filter());
+      if (input.image_filter()) {
+        EXPECT_EQ(*input.image_filter(), *output.image_filter());
+      }
       break;
     }
     case cc::FilterOperation::ALPHA_THRESHOLD:
diff --git a/skia/config/SkUserConfig.h b/skia/config/SkUserConfig.h
index e3163f80..6235c5c6 100644
--- a/skia/config/SkUserConfig.h
+++ b/skia/config/SkUserConfig.h
@@ -227,6 +227,9 @@
 // Max. verb count for paths rendered by the edge-AA tessellating path renderer.
 #define GR_AA_TESSELLATOR_MAX_VERB_COUNT 10
 
+// Remove this and rebaseline affected layout tests.
+#define SK_DONT_DROP_UNNECESSARY_AA_IN_TEXTURE_OP
+
 #define SK_DISABLE_LOWP_BILERP_CLAMP_CLAMP_STAGE
 
 
diff --git a/storage/browser/blob/blob_data_item.cc b/storage/browser/blob/blob_data_item.cc
index 00b3687..804cd81 100644
--- a/storage/browser/blob/blob_data_item.cc
+++ b/storage/browser/blob/blob_data_item.cc
@@ -19,6 +19,9 @@
 
 constexpr uint64_t BlobDataItem::kUnknownSize;
 
+bool BlobDataItem::DataHandle::IsValid() {
+  return true;
+}
 BlobDataItem::DataHandle::~DataHandle() = default;
 
 // static
diff --git a/storage/browser/blob/blob_data_item.h b/storage/browser/blob/blob_data_item.h
index 796e1b2..9c39d18b 100644
--- a/storage/browser/blob/blob_data_item.h
+++ b/storage/browser/blob/blob_data_item.h
@@ -49,8 +49,11 @@
   // a different backend version (mem-to-disk or the reverse), then the item
   // will be destructed after all pending reads are complete.
   class STORAGE_EXPORT DataHandle : public base::RefCounted<DataHandle> {
+   public:
+    virtual bool IsValid();
+
    protected:
-    virtual ~DataHandle() = 0;
+    virtual ~DataHandle();
 
    private:
     friend class base::RefCounted<DataHandle>;
@@ -112,9 +115,13 @@
     return expected_modification_time_;
   }
 
+  // This can return null if the underlying disk cache entry was invalidated
+  // (because the user cleared site data), so users should make sure to always
+  // check for that.
   disk_cache::Entry* disk_cache_entry() const {
     DCHECK_EQ(type_, Type::kDiskCacheEntry);
-    return disk_cache_entry_;
+    DCHECK(data_handle_);
+    return data_handle_->IsValid() ? disk_cache_entry_ : nullptr;
   }
 
   int disk_cache_stream_index() const {
@@ -182,6 +189,9 @@
 
   // This naked pointer is safe because the scope is protected by the DataHandle
   // instance for disk cache entries during the lifetime of this BlobDataItem.
+  // Only valid if the DataHandle's IsValid method returns true.
+  // TODO(mek): Make this part of the DataHandle and abstract away cache
+  // specific logic to be part of an API exposed by DataHandle.
   disk_cache::Entry* disk_cache_entry_;  // For Type::kDiskCacheEntry.
   int disk_cache_stream_index_;          // For Type::kDiskCacheEntry.
   int disk_cache_side_stream_index_;     // For Type::kDiskCacheEntry.
diff --git a/storage/browser/blob/blob_impl.cc b/storage/browser/blob/blob_impl.cc
index f833fe2..903a5607 100644
--- a/storage/browser/blob/blob_impl.cc
+++ b/storage/browser/blob/blob_impl.cc
@@ -140,6 +140,10 @@
 
         const auto& item = items[0];
         disk_cache::Entry* entry = item->disk_cache_entry();
+        if (!entry) {
+          std::move(callback).Run(base::nullopt);
+          return;
+        }
         int32_t body_size =
             entry->GetDataSize(item->disk_cache_side_stream_index());
         auto io_buffer = base::MakeRefCounted<net::IOBufferWithSize>(body_size);
diff --git a/storage/browser/blob/blob_reader.cc b/storage/browser/blob/blob_reader.cc
index eb02752..9cf4fe3 100644
--- a/storage/browser/blob/blob_reader.cc
+++ b/storage/browser/blob/blob_reader.cc
@@ -121,6 +121,8 @@
   const int disk_cache_side_stream_index = item.disk_cache_side_stream_index();
   if (disk_cache_side_stream_index < 0)
     return false;
+  if (!item.disk_cache_entry())
+    return false;
   return item.disk_cache_entry()->GetDataSize(disk_cache_side_stream_index) > 0;
 }
 
@@ -560,6 +562,8 @@
                            "uuid", blob_data_->uuid());
   DCHECK_GE(read_buf_->BytesRemaining(), bytes_to_read);
 
+  if (!item.disk_cache_entry())
+    return ReportError(net::ERR_CACHE_READ_FAILURE);
   const int result = item.disk_cache_entry()->ReadData(
       item.disk_cache_stream_index(), item.offset() + current_item_offset_,
       read_buf_.get(), bytes_to_read,
diff --git a/storage/browser/blob/mojo_blob_reader.cc b/storage/browser/blob/mojo_blob_reader.cc
index 2208ce3..2e0cd6ba 100644
--- a/storage/browser/blob/mojo_blob_reader.cc
+++ b/storage/browser/blob/mojo_blob_reader.cc
@@ -180,35 +180,39 @@
       base::BindOnce(&MojoBlobReader::DidRead, base::Unretained(this), false));
   switch (read_status) {
     case BlobReader::Status::NET_ERROR:
-      TRACE_EVENT_ASYNC_END1("Blob", "BlobReader::ReadMore", this, "result",
-                             "error");
-      NotifyCompletedAndDeleteIfNeeded(blob_reader_->net_error());
+      DidRead(true, blob_reader_->net_error());
       return;
     case BlobReader::Status::IO_PENDING:
       // Wait for DidRead.
       return;
     case BlobReader::Status::DONE:
-      if (bytes_read > 0) {
-        DidRead(true, bytes_read);
-      } else {
-        TRACE_EVENT_ASYNC_END1("Blob", "BlobReader::ReadMore", this, "result",
-                               "success");
-        writable_handle_watcher_.Cancel();
-        pending_write_->Complete(0);
-        pending_write_ = nullptr;  // This closes the data pipe.
-        NotifyCompletedAndDeleteIfNeeded(net::OK);
-        return;
-      }
+      DidRead(true, bytes_read);
+      return;
   }
 }
 
 void MojoBlobReader::DidRead(bool completed_synchronously, int num_bytes) {
-  delegate_->DidRead(num_bytes);
+  if (num_bytes < 0) {
+    TRACE_EVENT_ASYNC_END2("Blob", "BlobReader::ReadMore", this, "result",
+                           "error", "net_error", num_bytes);
+    writable_handle_watcher_.Cancel();
+    pending_write_->Complete(0);
+    pending_write_ = nullptr;  // This closes the data pipe.
+    NotifyCompletedAndDeleteIfNeeded(num_bytes);
+    return;
+  }
+  if (num_bytes > 0)
+    delegate_->DidRead(num_bytes);
   TRACE_EVENT_ASYNC_END2("Blob", "BlobReader::ReadMore", this, "result",
                          "success", "num_bytes", num_bytes);
   response_body_stream_ = pending_write_->Complete(num_bytes);
   total_written_bytes_ += num_bytes;
   pending_write_ = nullptr;
+  if (num_bytes == 0) {
+    response_body_stream_.reset();  // This closes the data pipe.
+    NotifyCompletedAndDeleteIfNeeded(net::OK);
+    return;
+  }
   if (completed_synchronously) {
     base::SequencedTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
diff --git a/storage/browser/blob/view_blob_internals_job.cc b/storage/browser/blob/view_blob_internals_job.cc
index 3ce7444..e8060f0 100644
--- a/storage/browser/blob/view_blob_internals_job.cc
+++ b/storage/browser/blob/view_blob_internals_job.cc
@@ -273,7 +273,10 @@
         break;
       case BlobDataItem::Type::kDiskCacheEntry:
         AddHTMLListItem(kType, "disk cache entry", out);
-        AddHTMLListItem(kURL, item.disk_cache_entry()->GetKey(), out);
+        if (item.disk_cache_entry())
+          AddHTMLListItem(kURL, item.disk_cache_entry()->GetKey(), out);
+        else
+          AddHTMLListItem(kURL, "Broken", out);
         break;
       case BlobDataItem::Type::kBytesDescription:
         AddHTMLListItem(kType, "pending data", out);
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json
index 2450575..70234af8 100644
--- a/testing/buildbot/chromium.android.json
+++ b/testing/buildbot/chromium.android.json
@@ -15179,7 +15179,7 @@
               "device_type": "bullhead"
             }
           ],
-          "hard_timeout": 960,
+          "hard_timeout": 1200,
           "output_links": [
             {
               "link": [
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json
index 190256f3..6098a138 100644
--- a/testing/buildbot/chromium.memory.json
+++ b/testing/buildbot/chromium.memory.json
@@ -3081,6 +3081,26 @@
           "--test-launcher-print-test-stdio=always"
         ],
         "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "vr_common_unittests"
+      },
+      {
+        "args": [
+          "--test-launcher-batch-limit=1",
+          "--test-launcher-print-test-stdio=always"
+        ],
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "vr_pixeltests"
+      },
+      {
+        "args": [
+          "--test-launcher-batch-limit=1",
+          "--test-launcher-print-test-stdio=always"
+        ],
+        "swarming": {
           "can_use_on_swarming_builders": true,
           "shards": 5
         },
@@ -3588,6 +3608,18 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "vr_common_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "vr_pixeltests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "webkit_unit_tests"
       },
       {
@@ -4951,6 +4983,18 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "vr_common_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "vr_pixeltests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "webkit_unit_tests"
       },
       {
@@ -5378,6 +5422,18 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "vr_common_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "vr_pixeltests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "webkit_unit_tests"
       },
       {
diff --git a/testing/buildbot/chromium.perf.fyi.json b/testing/buildbot/chromium.perf.fyi.json
index ed2a292..482b8c8dc1 100644
--- a/testing/buildbot/chromium.perf.fyi.json
+++ b/testing/buildbot/chromium.perf.fyi.json
@@ -26,6 +26,7 @@
           "dimension_sets": [
             {
               "device_os": "O",
+              "device_os_flavor": "google",
               "device_type": "gobo",
               "os": "Android",
               "pool": "chrome.tests.perf-fyi"
@@ -728,6 +729,7 @@
           "dimension_sets": [
             {
               "device_os": "O",
+              "device_os_flavor": "google",
               "device_type": "walleye",
               "os": "Android",
               "pool": "chrome.tests.perf-fyi"
@@ -777,6 +779,7 @@
           "dimension_sets": [
             {
               "device_os": "O",
+              "device_os_flavor": "google",
               "device_type": "walleye",
               "os": "Android",
               "pool": "chrome.tests.perf-webview-fyi"
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json
index a80945e..fa850a7 100644
--- a/testing/buildbot/chromium.perf.json
+++ b/testing/buildbot/chromium.perf.json
@@ -19,6 +19,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -48,6 +51,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -79,6 +85,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -108,6 +117,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -139,6 +151,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -168,6 +183,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -199,6 +217,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -228,6 +249,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -259,6 +283,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -288,6 +315,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -319,6 +349,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -348,6 +381,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -379,6 +415,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -408,6 +447,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -439,6 +481,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -468,6 +513,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -499,6 +547,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -528,6 +579,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -559,6 +613,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -588,6 +645,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -619,6 +679,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -648,6 +711,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -679,6 +745,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -708,6 +777,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -739,6 +811,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -759,6 +834,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -788,6 +866,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -819,6 +900,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -837,7 +921,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "dummy_benchmark.histogram_benchmark_1",
@@ -848,6 +932,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -866,7 +953,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -879,6 +966,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -908,6 +998,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -939,6 +1032,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -968,6 +1064,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -999,6 +1098,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1019,6 +1121,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1048,6 +1153,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1079,6 +1187,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1108,6 +1219,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1139,6 +1253,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1157,7 +1274,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "loading.mobile",
@@ -1168,6 +1285,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1186,7 +1306,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "media.mobile",
@@ -1197,6 +1317,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1215,7 +1338,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -1228,6 +1351,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1246,7 +1372,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_background_tbmv2",
@@ -1257,6 +1383,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1275,7 +1404,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -1288,6 +1417,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1306,7 +1438,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_tbmv2",
@@ -1317,6 +1449,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1335,7 +1470,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -1348,6 +1483,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1377,6 +1515,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1408,6 +1549,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1437,6 +1581,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1468,6 +1615,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1486,7 +1636,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "oortonline_tbmv2",
@@ -1497,6 +1647,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1515,7 +1668,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -1528,6 +1681,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1546,7 +1702,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "power.idle_platform",
@@ -1557,6 +1713,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1575,7 +1734,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "power.typical_10_mobile",
@@ -1586,6 +1745,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1604,7 +1766,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -1617,6 +1779,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1646,6 +1811,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1677,6 +1845,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1706,6 +1877,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1737,6 +1911,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1755,7 +1932,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "rendering.mobile",
@@ -1766,6 +1943,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1784,7 +1964,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -1797,6 +1977,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1826,6 +2009,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1857,6 +2043,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1875,7 +2064,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.polymer",
@@ -1886,6 +2075,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1904,7 +2096,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -1917,6 +2109,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1935,7 +2130,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.top_25_smooth",
@@ -1946,6 +2141,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -1964,7 +2162,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -1977,6 +2175,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2006,6 +2207,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2037,6 +2241,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2066,6 +2273,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2097,6 +2307,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2115,7 +2328,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
@@ -2126,6 +2339,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2144,7 +2360,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -2157,6 +2373,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2186,6 +2405,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2217,6 +2439,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2246,6 +2471,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2277,6 +2505,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2306,6 +2537,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2337,6 +2571,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2355,7 +2592,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.key_mobile_sites_smooth",
@@ -2366,6 +2603,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2384,7 +2624,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -2397,6 +2637,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2415,7 +2658,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.key_silk_cases",
@@ -2426,6 +2669,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2444,7 +2690,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -2457,6 +2703,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2486,6 +2735,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2517,6 +2769,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2535,7 +2790,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.pathological_mobile_sites",
@@ -2546,6 +2801,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2564,7 +2822,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -2577,6 +2835,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2595,7 +2856,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.simple_mobile_sites",
@@ -2606,6 +2867,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2624,7 +2888,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -2637,6 +2901,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2655,7 +2922,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.sync_scroll.key_mobile_sites_smooth",
@@ -2666,6 +2933,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2684,7 +2954,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -2697,6 +2967,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2726,6 +2999,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2757,6 +3033,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2786,6 +3065,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2817,6 +3099,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2846,6 +3131,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2877,6 +3165,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2906,6 +3197,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2937,6 +3231,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2966,6 +3263,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -2997,6 +3297,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3026,6 +3329,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3057,6 +3363,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3086,6 +3395,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3117,6 +3429,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3135,7 +3450,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.tough_pinch_zoom_cases",
@@ -3146,6 +3461,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3164,7 +3482,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -3177,6 +3495,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3206,6 +3527,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3237,6 +3561,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3266,6 +3593,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3297,6 +3627,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3326,6 +3659,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3357,6 +3693,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3386,6 +3725,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3417,6 +3759,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3446,6 +3791,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3475,6 +3823,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3506,6 +3857,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3537,6 +3891,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3566,6 +3923,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3595,6 +3955,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3626,6 +3989,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3657,6 +4023,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3675,7 +4044,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "start_with_url.cold.startup_pages",
@@ -3686,6 +4055,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3704,7 +4076,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -3717,6 +4089,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3735,7 +4110,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "start_with_url.warm.startup_pages",
@@ -3746,6 +4121,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3764,7 +4142,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -3777,6 +4155,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3806,6 +4187,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3837,6 +4221,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3866,6 +4253,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3897,6 +4287,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3926,6 +4319,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3957,6 +4353,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -3986,6 +4385,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4017,6 +4419,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4046,6 +4451,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4077,6 +4485,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4106,6 +4517,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4137,6 +4551,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4166,6 +4583,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4197,6 +4617,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4226,6 +4649,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4257,6 +4683,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build200-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4286,6 +4715,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4317,6 +4749,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4346,6 +4781,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4377,6 +4815,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4406,6 +4847,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4437,6 +4881,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4457,6 +4904,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4486,6 +4936,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4515,6 +4968,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4546,6 +5002,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4577,6 +5036,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4595,7 +5057,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "v8.runtime_stats.top_25",
@@ -4606,6 +5068,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build201-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4635,6 +5100,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4666,6 +5134,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4684,7 +5155,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "webrtc",
@@ -4695,6 +5166,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4713,7 +5187,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -4726,6 +5200,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "KOT49H0",
+              "device_os_flavor": "google",
+              "device_type": "hammerhead",
               "id": "build199-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -4752,6 +5229,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -4781,6 +5261,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -4812,6 +5295,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -4841,6 +5327,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -4872,6 +5361,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -4901,6 +5393,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -4932,6 +5427,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -4961,6 +5459,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -4992,6 +5493,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5021,6 +5525,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5052,6 +5559,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5081,6 +5591,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5112,6 +5625,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5141,6 +5657,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5172,6 +5691,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5201,6 +5723,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5232,6 +5757,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5261,6 +5789,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5292,6 +5823,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5321,6 +5855,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5352,6 +5889,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5381,6 +5921,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5412,6 +5955,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5441,6 +5987,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5472,6 +6021,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5492,6 +6044,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5521,6 +6076,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5552,6 +6110,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5570,7 +6131,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "dummy_benchmark.histogram_benchmark_1",
@@ -5581,6 +6142,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5599,7 +6163,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -5612,6 +6176,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5641,6 +6208,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5672,6 +6242,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5701,6 +6274,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5732,6 +6308,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5752,6 +6331,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5781,6 +6363,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5812,6 +6397,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5841,6 +6429,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5872,6 +6463,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5890,7 +6484,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "loading.mobile",
@@ -5901,6 +6495,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5919,7 +6516,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "media.mobile",
@@ -5930,6 +6527,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5948,7 +6548,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -5961,6 +6561,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5981,6 +6584,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -5999,7 +6605,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_background_tbmv2",
@@ -6010,6 +6616,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6028,7 +6637,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -6041,6 +6650,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6059,7 +6671,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_tbmv2",
@@ -6070,6 +6682,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6088,7 +6703,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -6101,6 +6716,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6130,6 +6748,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6161,6 +6782,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6190,6 +6814,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6221,6 +6848,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6239,7 +6869,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "oortonline_tbmv2",
@@ -6250,6 +6880,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6268,7 +6901,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -6281,6 +6914,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6299,7 +6935,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "power.idle_platform",
@@ -6310,6 +6946,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6328,7 +6967,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "power.typical_10_mobile",
@@ -6339,6 +6978,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6357,7 +6999,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -6370,6 +7012,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6399,6 +7044,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6430,6 +7078,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6459,6 +7110,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6490,6 +7144,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6508,7 +7165,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "rendering.mobile",
@@ -6519,6 +7176,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6537,7 +7197,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -6550,6 +7210,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6579,6 +7242,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6610,6 +7276,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6628,7 +7297,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.polymer",
@@ -6639,6 +7308,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6657,7 +7329,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -6670,6 +7342,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6688,7 +7363,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.top_25_smooth",
@@ -6699,6 +7374,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6717,7 +7395,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -6730,6 +7408,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6759,6 +7440,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6790,6 +7474,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6819,6 +7506,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6850,6 +7540,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6868,7 +7561,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
@@ -6879,6 +7572,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6897,7 +7593,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -6910,6 +7606,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6939,6 +7638,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6970,6 +7672,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -6999,6 +7704,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7030,6 +7738,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7059,6 +7770,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7090,6 +7804,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7108,7 +7825,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.key_mobile_sites_smooth",
@@ -7119,6 +7836,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7137,7 +7857,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -7150,6 +7870,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7168,7 +7891,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.key_silk_cases",
@@ -7179,6 +7902,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7197,7 +7923,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -7210,6 +7936,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7239,6 +7968,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7270,6 +8002,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7288,7 +8023,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.pathological_mobile_sites",
@@ -7299,6 +8034,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7317,7 +8055,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -7330,6 +8068,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7348,7 +8089,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.simple_mobile_sites",
@@ -7359,6 +8100,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7377,7 +8121,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -7390,6 +8134,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7408,7 +8155,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.sync_scroll.key_mobile_sites_smooth",
@@ -7419,6 +8166,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7437,7 +8187,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -7450,6 +8200,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7479,6 +8232,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7510,6 +8266,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7539,6 +8298,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7570,6 +8332,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7599,6 +8364,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7630,6 +8398,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7659,6 +8430,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7690,6 +8464,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7719,6 +8496,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7750,6 +8530,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7779,6 +8562,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7810,6 +8596,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7839,6 +8628,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7870,6 +8662,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7888,7 +8683,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.tough_pinch_zoom_cases",
@@ -7899,6 +8694,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7917,7 +8715,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -7930,6 +8728,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7959,6 +8760,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -7990,6 +8794,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8019,6 +8826,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8050,6 +8860,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8079,6 +8892,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8110,6 +8926,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8139,6 +8958,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8170,6 +8992,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8199,6 +9024,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8228,6 +9056,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8259,6 +9090,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8290,6 +9124,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8319,6 +9156,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8348,6 +9188,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8379,6 +9222,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8410,6 +9256,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8428,7 +9277,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "start_with_url.cold.startup_pages",
@@ -8439,6 +9288,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8457,7 +9309,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -8470,6 +9322,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8488,7 +9343,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "start_with_url.warm.startup_pages",
@@ -8499,6 +9354,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8517,7 +9375,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -8530,6 +9388,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8559,6 +9420,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8590,6 +9454,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8619,6 +9486,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8650,6 +9520,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8679,6 +9552,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8710,6 +9586,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8739,6 +9618,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8770,6 +9652,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device1",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8799,6 +9684,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8830,6 +9718,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8859,6 +9750,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8890,6 +9784,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8919,6 +9816,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8950,6 +9850,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -8979,6 +9882,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9010,6 +9916,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build74-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9039,6 +9948,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9070,6 +9982,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9099,6 +10014,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9130,6 +10048,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9159,6 +10080,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9190,6 +10114,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9210,6 +10137,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device2",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9239,6 +10169,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9268,6 +10201,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9299,6 +10235,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device4",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9330,6 +10269,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device5",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9348,7 +10290,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "v8.runtime_stats.top_25",
@@ -9359,6 +10301,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build75-b1--device7",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9388,6 +10333,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9419,6 +10367,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device3",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9437,7 +10388,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "webrtc",
@@ -9448,6 +10399,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9466,7 +10420,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -9479,6 +10433,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MMB29Q",
+              "device_os_flavor": "google",
+              "device_type": "bullhead",
               "id": "build73-b1--device6",
               "os": "Android",
               "pool": "Chrome-perf"
@@ -9513,6 +10470,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9543,6 +10503,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9573,6 +10536,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9603,6 +10569,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9633,6 +10602,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9663,6 +10635,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9693,6 +10668,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9723,6 +10701,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9753,6 +10734,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9783,6 +10767,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9813,6 +10800,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9843,6 +10833,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9873,6 +10866,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9891,7 +10887,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -9903,6 +10899,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9933,6 +10932,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9963,6 +10965,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -9993,6 +10998,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10023,6 +11031,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10041,7 +11052,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -10053,6 +11064,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10071,7 +11085,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -10083,6 +11097,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10113,6 +11130,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10143,6 +11163,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10161,7 +11184,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -10173,6 +11196,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10191,7 +11217,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -10203,6 +11229,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10221,7 +11250,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -10233,6 +11262,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10263,6 +11295,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10293,6 +11328,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10311,7 +11349,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -10323,6 +11361,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10353,6 +11394,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10371,7 +11415,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -10383,6 +11427,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10401,7 +11448,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -10413,6 +11460,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10443,6 +11493,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10473,6 +11526,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10491,7 +11547,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -10503,6 +11559,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10533,6 +11592,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10563,6 +11625,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10593,6 +11658,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10611,7 +11679,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -10623,6 +11691,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10641,7 +11712,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -10653,6 +11724,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10683,6 +11757,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10701,7 +11778,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -10713,6 +11790,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10731,7 +11811,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -10743,6 +11823,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10761,7 +11844,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -10773,6 +11856,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10803,6 +11889,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10833,6 +11922,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10863,6 +11955,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10893,6 +11988,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10923,6 +12021,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10953,6 +12054,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -10983,6 +12087,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11001,7 +12108,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -11013,6 +12120,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11043,6 +12153,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11073,6 +12186,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11103,6 +12219,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11133,6 +12252,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11163,6 +12285,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11193,6 +12318,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11223,6 +12351,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11253,6 +12384,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11283,6 +12417,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11313,6 +12450,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11343,6 +12483,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11373,6 +12516,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11403,6 +12549,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11433,6 +12582,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11463,6 +12615,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11493,6 +12648,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11523,6 +12681,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11553,6 +12714,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11583,6 +12747,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build189-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11613,6 +12780,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11643,6 +12813,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11673,6 +12846,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11691,7 +12867,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -11703,6 +12879,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build190-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11733,6 +12912,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11751,7 +12933,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -11763,6 +12945,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "bullhead",
               "id": "build188-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11797,6 +12982,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11827,6 +13015,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11857,6 +13048,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11887,6 +13081,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11917,6 +13114,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11947,6 +13147,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -11977,6 +13180,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12007,6 +13213,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12037,6 +13246,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12067,6 +13279,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12097,6 +13312,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12127,6 +13345,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12157,6 +13378,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12175,7 +13399,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -12187,6 +13411,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12217,6 +13444,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12247,6 +13477,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12277,6 +13510,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12307,6 +13543,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12325,7 +13564,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -12337,6 +13576,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12355,7 +13597,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -12367,6 +13609,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12397,6 +13642,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12427,6 +13675,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12445,7 +13696,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -12457,6 +13708,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12475,7 +13729,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -12487,6 +13741,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12505,7 +13762,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -12517,6 +13774,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12547,6 +13807,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12577,6 +13840,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12595,7 +13861,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -12607,6 +13873,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12637,6 +13906,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12655,7 +13927,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -12667,6 +13939,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12685,7 +13960,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -12697,6 +13972,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12727,6 +14005,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12757,6 +14038,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12775,7 +14059,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -12787,6 +14071,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12817,6 +14104,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12847,6 +14137,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12877,6 +14170,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12895,7 +14191,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -12907,6 +14203,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12925,7 +14224,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -12937,6 +14236,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12967,6 +14269,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -12985,7 +14290,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -12997,6 +14302,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13015,7 +14323,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -13027,6 +14335,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13045,7 +14356,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -13057,6 +14368,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13087,6 +14401,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13117,6 +14434,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13147,6 +14467,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13177,6 +14500,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13207,6 +14533,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13237,6 +14566,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13267,6 +14599,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13285,7 +14620,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -13297,6 +14632,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13327,6 +14665,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13357,6 +14698,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13387,6 +14731,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13417,6 +14764,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13447,6 +14797,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13477,6 +14830,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13507,6 +14863,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13537,6 +14896,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13567,6 +14929,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13597,6 +14962,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13627,6 +14995,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13657,6 +15028,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13687,6 +15061,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13717,6 +15094,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13747,6 +15127,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13777,6 +15160,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13807,6 +15193,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13837,6 +15226,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13867,6 +15259,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build203-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13897,6 +15292,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13927,6 +15325,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13957,6 +15358,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -13975,7 +15379,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -13987,6 +15391,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build204-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -14017,6 +15424,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -14035,7 +15445,7 @@
           "-v",
           "--upload-results",
           "--browser=android-webview",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
         ],
         "isolate_name": "telemetry_perf_webview_tests",
@@ -14047,6 +15457,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "MOB30K",
+              "device_os_flavor": "aosp",
+              "device_type": "shamu",
               "id": "build202-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
@@ -14080,6 +15493,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14111,6 +15527,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14140,6 +15559,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14171,6 +15593,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14200,6 +15625,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14231,6 +15659,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14260,6 +15691,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14291,6 +15725,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14320,6 +15757,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14351,6 +15791,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14380,6 +15823,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14411,6 +15857,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14440,6 +15889,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14471,6 +15923,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14500,6 +15955,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14531,6 +15989,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14560,6 +16021,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14591,6 +16055,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14620,6 +16087,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14651,6 +16121,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14680,6 +16153,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14711,6 +16187,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14740,6 +16219,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14771,6 +16253,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14800,6 +16285,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14831,6 +16319,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14849,7 +16340,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "dummy_benchmark.histogram_benchmark_1",
@@ -14860,6 +16351,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14878,7 +16372,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -14891,6 +16385,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14920,6 +16417,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14951,6 +16451,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -14980,6 +16483,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15011,6 +16517,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15040,6 +16549,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15071,6 +16583,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15100,6 +16615,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15131,6 +16649,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15149,7 +16670,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "loading.mobile",
@@ -15160,6 +16681,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15178,7 +16702,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "media.mobile",
@@ -15189,6 +16713,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15207,7 +16734,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -15220,6 +16747,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15238,7 +16768,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_background_tbmv2",
@@ -15249,6 +16779,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15267,7 +16800,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -15280,6 +16813,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15298,7 +16834,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_tbmv2",
@@ -15309,6 +16845,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15327,7 +16866,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -15340,6 +16879,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15369,6 +16911,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15400,6 +16945,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15429,6 +16977,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15460,6 +17011,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15478,7 +17032,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "oortonline_tbmv2",
@@ -15489,6 +17043,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15507,7 +17064,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -15520,6 +17077,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15538,7 +17098,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "power.idle_platform",
@@ -15549,6 +17109,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15567,7 +17130,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "power.typical_10_mobile",
@@ -15578,6 +17141,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15596,7 +17162,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -15609,6 +17175,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15638,6 +17207,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15669,6 +17241,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15698,6 +17273,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15729,6 +17307,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15747,7 +17328,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "rendering.mobile",
@@ -15758,6 +17339,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15776,7 +17360,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -15789,6 +17373,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15818,6 +17405,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15849,6 +17439,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15867,7 +17460,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.polymer",
@@ -15878,6 +17471,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15896,7 +17492,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -15909,6 +17505,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15927,7 +17526,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.top_25_smooth",
@@ -15938,6 +17537,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15956,7 +17558,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -15969,6 +17571,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -15998,6 +17603,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16029,6 +17637,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16058,6 +17669,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16089,6 +17703,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16107,7 +17724,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
@@ -16118,6 +17735,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16136,7 +17756,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -16149,6 +17769,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16178,6 +17801,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16209,6 +17835,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16238,6 +17867,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16269,6 +17901,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16298,6 +17933,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16329,6 +17967,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16347,7 +17988,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.key_mobile_sites_smooth",
@@ -16358,6 +17999,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16376,7 +18020,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -16389,6 +18033,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16407,7 +18054,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.key_silk_cases",
@@ -16418,6 +18065,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16436,7 +18086,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -16449,6 +18099,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16478,6 +18131,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16509,6 +18165,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16527,7 +18186,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.pathological_mobile_sites",
@@ -16538,6 +18197,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16556,7 +18218,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -16569,6 +18231,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16587,7 +18252,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.simple_mobile_sites",
@@ -16598,6 +18263,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16616,7 +18284,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -16629,6 +18297,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16647,7 +18318,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.sync_scroll.key_mobile_sites_smooth",
@@ -16658,6 +18329,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16676,7 +18350,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -16689,6 +18363,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16718,6 +18395,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16749,6 +18429,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16778,6 +18461,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16809,6 +18495,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16838,6 +18527,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16869,6 +18561,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16898,6 +18593,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16929,6 +18627,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16958,6 +18659,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -16989,6 +18693,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17018,6 +18725,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17049,6 +18759,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17078,6 +18791,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17109,6 +18825,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17127,7 +18846,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.tough_pinch_zoom_cases",
@@ -17138,6 +18857,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17156,7 +18878,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -17169,6 +18891,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17198,6 +18923,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17229,6 +18957,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17258,6 +18989,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17289,6 +19023,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17318,6 +19055,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17349,6 +19089,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17378,6 +19121,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17409,6 +19155,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17438,6 +19187,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17467,6 +19219,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17498,6 +19253,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17529,6 +19287,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17558,6 +19319,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17587,6 +19351,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17618,6 +19385,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17649,6 +19419,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17667,7 +19440,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "start_with_url.cold.startup_pages",
@@ -17678,6 +19451,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17696,7 +19472,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -17709,6 +19485,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17727,7 +19506,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "start_with_url.warm.startup_pages",
@@ -17738,6 +19517,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17756,7 +19538,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -17769,6 +19551,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17798,6 +19583,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17829,6 +19617,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17858,6 +19649,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17889,6 +19683,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17918,6 +19715,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17949,6 +19749,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -17978,6 +19781,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18009,6 +19815,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18038,6 +19847,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18069,6 +19881,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18098,6 +19913,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18129,6 +19947,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18158,6 +19979,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18189,6 +20013,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18218,6 +20045,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18249,6 +20079,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build192-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18278,6 +20111,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18309,6 +20145,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18338,6 +20177,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18369,6 +20211,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18398,6 +20243,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18429,6 +20277,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18449,6 +20300,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18478,6 +20332,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18507,6 +20364,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18538,6 +20398,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18569,6 +20432,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18587,7 +20453,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "v8.runtime_stats.top_25",
@@ -18598,6 +20464,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build193-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18627,6 +20496,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18658,6 +20530,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18676,7 +20551,7 @@
           "-v",
           "--upload-results",
           "--browser=android-chromium",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "webrtc",
@@ -18687,6 +20562,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -18705,7 +20583,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -18718,6 +20596,9 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "device_os": "LMY47W",
+              "device_os_flavor": "google",
+              "device_type": "sprout",
               "id": "build191-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
@@ -19681,7 +21562,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "dummy_benchmark.histogram_benchmark_1",
@@ -19711,7 +21592,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -19991,7 +21872,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "loading.desktop",
@@ -20021,7 +21902,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "media.desktop",
@@ -20051,7 +21932,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -20083,7 +21964,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.desktop",
@@ -20113,7 +21994,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -20145,7 +22026,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_background_tbmv2",
@@ -20175,7 +22056,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -20207,7 +22088,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_tbmv2",
@@ -20237,7 +22118,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -20352,7 +22233,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "oortonline_tbmv2",
@@ -20382,7 +22263,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -20414,7 +22295,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "power.idle_platform",
@@ -20568,7 +22449,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "rendering.desktop",
@@ -20598,7 +22479,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -20692,7 +22573,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.desktop_tough_pinch_zoom_cases",
@@ -20722,7 +22603,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -20754,7 +22635,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.polymer",
@@ -20784,7 +22665,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -22614,7 +24495,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "v8.runtime_stats.top_25",
@@ -22727,7 +24608,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "webrtc",
@@ -22757,7 +24638,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -23723,7 +25604,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "dummy_benchmark.histogram_benchmark_1",
@@ -23753,7 +25634,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -24033,7 +25914,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "loading.desktop",
@@ -24063,7 +25944,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "media.desktop",
@@ -24093,7 +25974,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -24125,7 +26006,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.desktop",
@@ -24155,7 +26036,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -24187,7 +26068,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_background_tbmv2",
@@ -24217,7 +26098,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -24249,7 +26130,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_tbmv2",
@@ -24279,7 +26160,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -24373,7 +26254,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "oortonline_tbmv2",
@@ -24403,7 +26284,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -24456,7 +26337,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "power.idle_platform",
@@ -24610,7 +26491,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "rendering.desktop",
@@ -24640,7 +26521,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -24734,7 +26615,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.desktop_tough_pinch_zoom_cases",
@@ -24764,7 +26645,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -24796,7 +26677,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.polymer",
@@ -24826,7 +26707,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -26656,7 +28537,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "v8.runtime_stats.top_25",
@@ -26748,7 +28629,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "webrtc",
@@ -26778,7 +28659,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -27749,7 +29630,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "dummy_benchmark.histogram_benchmark_1",
@@ -27779,7 +29660,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -28059,7 +29940,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "loading.desktop",
@@ -28089,7 +29970,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "media.desktop",
@@ -28119,7 +30000,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -28151,7 +30032,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.desktop",
@@ -28181,7 +30062,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -28213,7 +30094,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_background_tbmv2",
@@ -28243,7 +30124,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -28275,7 +30156,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_tbmv2",
@@ -28305,7 +30186,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -28399,7 +30280,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "oortonline_tbmv2",
@@ -28429,7 +30310,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -28482,7 +30363,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "power.idle_platform",
@@ -28636,7 +30517,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "rendering.desktop",
@@ -28666,7 +30547,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -28760,7 +30641,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.desktop_tough_pinch_zoom_cases",
@@ -28790,7 +30671,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -28822,7 +30703,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.polymer",
@@ -28852,7 +30733,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -30682,7 +32563,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "v8.runtime_stats.top_25",
@@ -30774,7 +32655,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "webrtc",
@@ -30804,7 +32685,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -31646,7 +33527,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "dummy_benchmark.histogram_benchmark_1",
@@ -31676,7 +33557,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -31956,7 +33837,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "loading.desktop",
@@ -31986,7 +33867,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "media.desktop",
@@ -32016,7 +33897,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -32048,7 +33929,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.desktop",
@@ -32078,7 +33959,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -32110,7 +33991,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_background_tbmv2",
@@ -32140,7 +34021,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -32172,7 +34053,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_tbmv2",
@@ -32202,7 +34083,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -32296,7 +34177,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "oortonline_tbmv2",
@@ -32326,7 +34207,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -32358,7 +34239,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "power.idle_platform",
@@ -32512,7 +34393,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "rendering.desktop",
@@ -32542,7 +34423,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -32636,7 +34517,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.polymer",
@@ -32666,7 +34547,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -34558,7 +36439,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "v8.runtime_stats.top_25",
@@ -34650,7 +36531,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "webrtc",
@@ -34680,7 +36561,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -35543,7 +37424,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "dummy_benchmark.histogram_benchmark_1",
@@ -35573,7 +37454,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -35853,7 +37734,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "loading.desktop",
@@ -35883,7 +37764,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "media.desktop",
@@ -35913,7 +37794,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -35966,7 +37847,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.desktop",
@@ -35996,7 +37877,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -36028,7 +37909,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_background_tbmv2",
@@ -36058,7 +37939,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -36090,7 +37971,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_tbmv2",
@@ -36120,7 +38001,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -36214,7 +38095,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "oortonline_tbmv2",
@@ -36244,7 +38125,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -36276,7 +38157,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "power.idle_platform",
@@ -36430,7 +38311,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "rendering.desktop",
@@ -36460,7 +38341,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -36554,7 +38435,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.polymer",
@@ -36584,7 +38465,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -38476,7 +40357,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "v8.runtime_stats.top_25",
@@ -38589,7 +40470,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "webrtc",
@@ -38619,7 +40500,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -39482,7 +41363,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "dummy_benchmark.histogram_benchmark_1",
@@ -39512,7 +41393,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -39813,7 +41694,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "loading.desktop",
@@ -39843,7 +41724,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "media.desktop",
@@ -39873,7 +41754,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -39926,7 +41807,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.desktop",
@@ -39956,7 +41837,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -39988,7 +41869,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_background_tbmv2",
@@ -40018,7 +41899,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -40050,7 +41931,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_tbmv2",
@@ -40080,7 +41961,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -40174,7 +42055,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "oortonline_tbmv2",
@@ -40204,7 +42085,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -40260,7 +42141,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "power.idle_platform",
@@ -40414,7 +42295,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "rendering.desktop",
@@ -40444,7 +42325,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -40538,7 +42419,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.polymer",
@@ -40568,7 +42449,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -42460,7 +44341,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "v8.runtime_stats.top_25",
@@ -42576,7 +44457,7 @@
           "-v",
           "--upload-results",
           "--browser=release_x64",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "webrtc",
@@ -42606,7 +44487,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -43469,7 +45350,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "dummy_benchmark.histogram_benchmark_1",
@@ -43499,7 +45380,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -43800,7 +45681,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "loading.desktop",
@@ -43830,7 +45711,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "media.desktop",
@@ -43860,7 +45741,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -43913,7 +45794,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.desktop",
@@ -43943,7 +45824,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -43975,7 +45856,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_background_tbmv2",
@@ -44005,7 +45886,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -44037,7 +45918,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "memory.long_running_idle_gmail_tbmv2",
@@ -44067,7 +45948,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -44161,7 +46042,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "oortonline_tbmv2",
@@ -44191,7 +46072,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -44223,7 +46104,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "power.idle_platform",
@@ -44377,7 +46258,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "rendering.desktop",
@@ -44407,7 +46288,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -44501,7 +46382,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "smoothness.gpu_rasterization.polymer",
@@ -44531,7 +46412,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
@@ -46423,7 +48304,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "v8.runtime_stats.top_25",
@@ -46515,7 +48396,7 @@
           "-v",
           "--upload-results",
           "--browser=release",
-          "--output-format=chartjson"
+          "--output-format=histograms"
         ],
         "isolate_name": "telemetry_perf_tests",
         "name": "webrtc",
@@ -46545,7 +48426,7 @@
           "-v",
           "--upload-results",
           "--browser=reference",
-          "--output-format=chartjson",
+          "--output-format=histograms",
           "--max-failures=5",
           "--output-trace-tag=_ref"
         ],
diff --git a/testing/buildbot/chromium.win.json b/testing/buildbot/chromium.win.json
index 3d74321..68a59e08 100644
--- a/testing/buildbot/chromium.win.json
+++ b/testing/buildbot/chromium.win.json
@@ -929,7 +929,6 @@
         "test": "installer_util_unittests"
       },
       {
-        "experiment_percentage": 100,
         "swarming": {
           "can_use_on_swarming_builders": true,
           "shards": 2
diff --git a/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter b/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter
index 2e059c7..18e510c 100644
--- a/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter
+++ b/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter
@@ -27,13 +27,6 @@
 -ExpectCTBrowserTest.TestDynamicExpectCTHeaderProcessing
 -ExpectCTBrowserTest.TestDynamicExpectCTReporting
 
-# Add a testing method to call AddHPKP in NetworkContext.
-# https://crbug.com/844034
--PKPModelClientTest.PKPBypass/0
--PKPModelClientTest.PKPBypass/1
--PKPModelClientTest.PKPEnforced/0
--PKPModelClientTest.PKPEnforced/1
-
 # https://crbug.com/721398
 -WebViewTest.ClearDataCache
 
@@ -143,6 +136,7 @@
 # http://crbug.com/841827
 -BackgroundXhrTest.HttpAuth
 -BackgroundXhrTest.TlsClientAuth
+-ExtensionWebRequestApiTest.WebRequestAuthRequired
 
 # https://crbug.com/721400
 # WebSocket with the network service
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl
index 2116e1c..29c5c19 100644
--- a/testing/buildbot/test_suite_exceptions.pyl
+++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -1581,10 +1581,6 @@
           'shards': 3,
         },
       },
-      # chromium.win; temporary, https://crbug.com/826735
-      'Win10 Tests x64': {
-        'experiment_percentage': 100,
-      },
       # chromium.win; temporary, https://crbug.com/818832
       'Win10 Tests x64 (dbg)': {
         'experiment_percentage': 100,
@@ -2880,6 +2876,12 @@
           'shards': 5,
         },
       },
+      'Marshmallow 64 bit Tester': {
+        # Increase timeout. See https://crbug.com/847229.
+        'swarming': {
+          'hard_timeout': 1200,
+        },
+      },
     },
   },
   'webview_instrumentation_test_apk': {
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index c87743b..d01b4ec7 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -2017,6 +2017,7 @@
     'non_android_and_clang_win_chromium_gtests',
     'non_android_chromium_gtests',
     'non_mac_non_clang_win_chromium_gtests',
+    'vr_platform_specific_non_clang_win_chromium_gtests',
   ],
 
   'chromium_memory_mac_gtests': [
diff --git a/testing/libfuzzer/efficient_fuzzer.md b/testing/libfuzzer/efficient_fuzzer.md
index 04b5dc7..bd0eb1d 100644
--- a/testing/libfuzzer/efficient_fuzzer.md
+++ b/testing/libfuzzer/efficient_fuzzer.md
@@ -179,6 +179,9 @@
 gsutil -m rsync <path_to_corpus> gs://clusterfuzz-corpus/libfuzzer/<my_fuzzer_name>_static
 ```
 
+Note that if you upload the corpus to GCS, the `seed_corpus` attribute is not
+needed in your `fuzzer_test` definition.
+
 ### Corpus Minimization
 
 It's important to minimize seed corpus to a *small set of interesting inputs*
diff --git a/testing/scripts/run_performance_tests.py b/testing/scripts/run_performance_tests.py
index c6ac4e2..5b0ea35 100755
--- a/testing/scripts/run_performance_tests.py
+++ b/testing/scripts/run_performance_tests.py
@@ -57,77 +57,6 @@
 import run_telemetry_benchmark_as_googletest
 import run_gtest_perf_test
 
-# Current whitelist of benchmarks outputting histograms
-BENCHMARKS_TO_OUTPUT_HISTOGRAMS = [
-    'dummy_benchmark.histogram_benchmark_1',
-    'blink_perf.bindings',
-    'blink_perf.canvas',
-    'blink_perf.css',
-    'blink_perf.dom',
-    'blink_perf.events',
-    'blink_perf.image_decoder',
-    'blink_perf.layout',
-    'blink_perf.owp_storage',
-    'blink_perf.paint',
-    'blink_perf.parser',
-    'blink_perf.shadow_dom',
-    'blink_perf.svg',
-    'memory.top_10_mobile',
-    'system_health.common_desktop',
-    'system_health.common_mobile',
-    'system_health.memory_desktop',
-    'system_health.memory_mobile',
-    'system_health.webview_startup',
-    'smoothness.gpu_rasterization.tough_filters_cases',
-    'smoothness.gpu_rasterization.tough_path_rendering_cases',
-    'smoothness.gpu_rasterization.tough_scrolling_cases',
-    'smoothness.gpu_rasterization_and_decoding.image_decoding_cases',
-    'smoothness.image_decoding_cases',
-    'smoothness.key_desktop_move_cases',
-    'smoothness.maps',
-    'smoothness.oop_rasterization.top_25_smooth',
-    'smoothness.top_25_smooth',
-    'smoothness.tough_ad_cases',
-    'smoothness.tough_animation_cases',
-    'smoothness.tough_canvas_cases',
-    'smoothness.tough_filters_cases',
-    'smoothness.tough_image_decode_cases',
-    'smoothness.tough_path_rendering_cases',
-    'smoothness.tough_scrolling_cases',
-    'smoothness.tough_texture_upload_cases',
-    'smoothness.tough_webgl_ad_cases',
-    'smoothness.tough_webgl_cases',
-    'dromaeo',
-    'jetstream',
-    'kraken',
-    'octane',
-    'speedometer',
-    'speedometer-future',
-    'speedometer2',
-    'speedometer2-future',
-    'wasm',
-    'battor.steady_state',
-    'battor.trivial_pages',
-    'rasterize_and_record_micro.partial_invalidation',
-    'rasterize_and_record_micro.top_25',
-    'scheduler.tough_scheduling_cases',
-    'tab_switching.typical_25',
-    'thread_times.key_hit_test_cases',
-    'thread_times.key_idle_power_cases',
-    'thread_times.key_mobile_sites_smooth',
-    'thread_times.key_noop_cases',
-    'thread_times.key_silk_cases',
-    'thread_times.simple_mobile_sites',
-    'thread_times.oop_rasterization.key_mobile',
-    'thread_times.tough_compositor_cases',
-    'thread_times.tough_scrolling_cases',
-    'tracing.tracing_with_background_memory_infra',
-    'tracing.tracing_with_debug_overhead',
-    'v8.browsing_desktop',
-    'v8.browsing_mobile',
-    'v8.browsing_desktop-future',
-    'v8.browsing_mobile-future',
-]
 
 def get_sharding_map_path(args):
   return os.path.join(
@@ -159,7 +88,7 @@
   # to determine which output format to look for or see if it was
   # already passed in in which case that format applies to all benchmarks
   # in this run.
-  is_histograms = append_output_format(benchmark, args, rest_args)
+  is_histograms = append_output_format(args, rest_args)
   # Insert benchmark name as first argument to run_benchmark call
   # which is the first argument in the rest_args.  Also need to append
   # output format and smoke test mode.
@@ -202,7 +131,7 @@
   return rc
 
 
-def append_output_format(benchmark, args, rest_args):
+def append_output_format(args, rest_args):
   # We need to determine if the output format is already passed in
   # or if we need to define it for this benchmark
   perf_output_specified = False
@@ -219,11 +148,8 @@
   # the type of format per benchmark and can rely on it being passed
   # in as an arg as all benchmarks will output the same format.
   if not perf_output_specified:
-    if benchmark in BENCHMARKS_TO_OUTPUT_HISTOGRAMS:
-      rest_args.append('--output-format=histograms')
-      is_histograms = True
-    else:
-      rest_args.append('--output-format=chartjson')
+    rest_args.append('--output-format=histograms')
+    is_histograms = True
   return is_histograms
 
 def main():
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 0c97a88..8908db3 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -452,6 +452,26 @@
             ]
         }
     ],
+    "AutofillRestrictUnownedFieldsToFormlessCheckout": [
+        {
+            "platforms": [
+                "android",
+                "chromeos",
+                "ios",
+                "linux",
+                "mac",
+                "win"
+            ],
+            "experiments": [
+                {
+                    "name": "Disabled",
+                    "disable_features": [
+                        "AutofillRestrictUnownedFieldsToFormlessCheckout"
+                    ]
+                }
+            ]
+        }
+    ],
     "AutofillSingleClick": [
         {
             "platforms": [
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG
index 94486c5..95c30c9 100644
--- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG
+++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG
@@ -1266,7 +1266,6 @@
 crbug.com/591099 transforms/3d/hit-testing/backface-hit-test.html [ Failure ]
 crbug.com/591099 transforms/3d/hit-testing/backface-no-transform-hit-test.html [ Failure ]
 crbug.com/591099 virtual/android/ [ Skip ]
-crbug.com/591099 virtual/disable-spv175/ [ Skip ]
 crbug.com/591099 virtual/exotic-color-space/ [ Skip ]
 crbug.com/591099 virtual/feature-policy-vibrate/ [ Skip ]
 crbug.com/591099 virtual/gpu-rasterization/images/color-profile-munsell-adobe-to-srgb.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-gen-property-trees b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-gen-property-trees
index 9f17137..53159e9 100644
--- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-gen-property-trees
+++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-gen-property-trees
@@ -78,7 +78,6 @@
 Bug(none) vibration/ [ Skip ]
 Bug(none) virtual/cors-rfc1918/ [ Skip ]
 Bug(none) virtual/custom-user-timing/ [ Skip ]
-Bug(none) virtual/disable-spv175/ [ Skip ]
 Bug(none) virtual/enable_asmjs/ [ Skip ]
 Bug(none) virtual/enable_wasm/ [ Skip ]
 Bug(none) virtual/enable_wasm_streaming/ [ Skip ]
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 b/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
index 80ac258a..27130e7 100644
--- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
+++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
@@ -86,7 +86,6 @@
 Bug(none) virtual/scalefactor200/ [ Skip ]
 Bug(none) virtual/scalefactor200withzoom/ [ Skip ]
 Bug(none) virtual/scroll_customization/ [ Skip ]
-Bug(none) virtual/disable-spv175/ [ Skip ]
 Bug(none) virtual/spv2/ [ Skip ]
 Bug(none) virtual/stable/ [ Skip ]
 Bug(none) virtual/targetedstylerecalc/ [ Skip ]
@@ -440,6 +439,7 @@
 Bug(none) fast/canvas/OffscreenCanvas-filter-in-worker.html [ Failure ]
 Bug(none) fast/canvas/OffscreenCanvas-paths-in-worker.html [ Failure ]
 Bug(none) fast/canvas/OffscreenCanvas-strokeRect-in-worker.html [ Failure ]
+Bug(none) fast/canvas/OffscreenCanvas-text-FontFace-in-worker.html [ Failure ]
 Bug(none) fast/canvas/OffscreenCanvas-text-rendering-in-worker.html [ Failure ]
 Bug(none) fast/canvas/OffscreenCanvas-transform-shadow-in-worker.html [ Failure ]
 Bug(none) fast/css-generated-content/014.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/SlowTests b/third_party/WebKit/LayoutTests/SlowTests
index 3c31c55d..82068402 100644
--- a/third_party/WebKit/LayoutTests/SlowTests
+++ b/third_party/WebKit/LayoutTests/SlowTests
@@ -12,9 +12,7 @@
 crbug.com/24182 storage/indexeddb/mozilla/test_objectStore_openKeyCursor.html [ Slow ]
 crbug.com/24182 editing/selection/modify_move/move-by-word-visually-mac.html [ Slow ]
 crbug.com/24182 compositing/culling/filter-occlusion-blur-large.html [ Slow ]
-crbug.com/24182 virtual/disable-spv175/compositing/culling/filter-occlusion-blur-large.html [ Slow ]
 crbug.com/24182 compositing/video-frame-size-change.html [ Slow ]
-crbug.com/24182 virtual/disable-spv175/compositing/video-frame-size-change.html [ Slow ]
 crbug.com/24182 css3/filters/effect-reference-hidpi-hw.html [ Slow ]
 crbug.com/24182 css3/filters/filter-change-repaint-composited.html [ Slow ]
 crbug.com/24182 editing/selection/caret-at-bidi-boundary.html [ Slow ]
@@ -291,7 +289,6 @@
 crbug.com/697735 external/wpt/editing/run/unlink.html [ Slow ]
 crbug.com/584807 printing/webgl-oversized-printing.html [ Slow ]
 crbug.com/584807 virtual/threaded/printing/webgl-oversized-printing.html [ Slow ]
-crbug.com/584807 virtual/disable-spv175/printing/webgl-oversized-printing.html [ Slow ]
 
 crbug.com/592183 external/wpt/webusb/usbDevice.https.html [ Slow ]
 
@@ -301,7 +298,6 @@
 crbug.com/614910 virtual/gpu-rasterization/images/color-profile-filter.html [ Slow ]
 
 crbug.com/623798 paint/images/animated-gif-last-frame-crash.html [ Slow ]
-crbug.com/623798 virtual/disable-spv175/paint/images/animated-gif-last-frame-crash.html [ Slow ]
 
 crbug.com/606649 fast/dom/gc-dom-tree-lifetime.html [ Slow ]
 
@@ -317,16 +313,12 @@
 # These tests are slow with our MESA backend. They may be less slow when we have
 # bots running tests on real hardware or maybe when using SwiftShader.
 crbug.com/646528 compositing/lots-of-img-layers.html [ Slow ]
-crbug.com/646528 virtual/disable-spv175/compositing/lots-of-img-layers.html [ Slow ]
 crbug.com/646528 compositing/lots-of-img-layers-with-opacity.html [ Slow ]
-crbug.com/646528 virtual/disable-spv175/compositing/lots-of-img-layers-with-opacity.html [ Slow ]
 
 # SwiftShader slow tests
 crbug.com/726075 [ Win Linux Mac ] animations/svg/animated-filter-svg-element.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] compositing/culling/filter-occlusion-blur.html [ Slow ]
-crbug.com/726075 [ Win Linux Mac ] virtual/disable-spv175/compositing/culling/filter-occlusion-blur.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] compositing/masks/mask-with-added-filters.html [ Slow ]
-crbug.com/726075 [ Win Linux Mac ] virtual/disable-spv175/compositing/masks/mask-with-added-filters.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] css3/blending/mix-blend-mode-with-filters.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] css3/filters/effect-all-on-background-hw.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] css3/filters/effect-blur-hw.html [ Slow ]
@@ -343,11 +335,8 @@
 crbug.com/726075 [ Win Linux Mac ] css3/filters/filter-repaint-composited-fallback.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] images/color-profile-layer-filter.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child.html [ Slow ]
-crbug.com/726075 [ Win Linux Mac ] virtual/disable-spv175/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] paint/invalidation/filters/filter-repaint-accelerated-on-accelerated-filter.html [ Slow ]
-crbug.com/726075 [ Win Linux Mac ] virtual/disable-spv175/paint/invalidation/filters/filter-repaint-accelerated-on-accelerated-filter.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] paint/invalidation/filters/filter-repaint-on-accelerated-layer.html [ Slow ]
-crbug.com/726075 [ Win Linux Mac ] virtual/disable-spv175/paint/invalidation/filters/filter-repaint-on-accelerated-layer.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] virtual/exotic-color-space/images/color-profile-layer-filter.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] virtual/gpu-rasterization/images/color-profile-mask-image-svg.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] virtual/gpu-rasterization/images/color-profile-image-filter-all.html [ Slow ]
@@ -384,7 +373,6 @@
 crbug.com/726075 [ Win Linux Mac ] virtual/gpu/fast/canvas/canvas-filter-origin-clean.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] virtual/gpu/fast/canvas/canvas-filter-modified-save-restore.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] virtual/gpu/fast/canvas/canvas-filter-modified.html [ Slow ]
-crbug.com/726075 [ Win Linux Mac ] virtual/gpu/fast/canvas/canvas-filter-removed.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] virtual/gpu/fast/canvas/canvas-scale-drawImage-shadow.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] virtual/gpu/fast/canvas/canvas-scale-strokePath-shadow.html [ Slow ]
 crbug.com/726075 [ Win Linux Mac ] virtual/gpu/fast/canvas/canvas-shadow-source-in.html [ Slow ]
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 03ca388c..c639238 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -60,10 +60,6 @@
 # --- End SPV2 Tests ---
 
 # Slimming paint V1.75
-crbug.com/771643 [ Mac Win Android ] virtual/disable-spv175/ [ Skip ]
-crbug.com/771643 [ Linux ] virtual/disable-spv175/paint/invalidation/compositing/subpixel-offset-scaled-transform-composited.html [ Pass Failure ]
-crbug.com/809102 virtual/disable-spv175/paint/filters/clip-absolute-under-clip-under-filter.html [ Failure ]
-
 # Subpixel differences
 crbug.com/771643 external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html [ Failure ]
 crbug.com/771643 external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html [ Failure ]
@@ -82,10 +78,8 @@
 crbug.com/504613 crbug.com/524248 [ Mac ] paint/images/image-backgrounds-not-antialiased.html [ Failure ]
 
 crbug.com/619103 paint/invalidation/background/background-resize-width.html [ Failure Pass ]
-crbug.com/619103 virtual/disable-spv175/paint/invalidation/background/background-resize-width.html [ Skip ]
 
 crbug.com/702006 paint/invalidation/compositing/scrolling-neg-z-index-descendants-should-cause-repaint.html [ Failure ]
-crbug.com/702006 virtual/disable-spv175/paint/invalidation/compositing/scrolling-neg-z-index-descendants-should-cause-repaint.html [ Skip ]
 
 crbug.com/784956 fast/history/frameset-repeated-name.html [ Pass Failure ]
 
@@ -95,11 +89,8 @@
 crbug.com/624233 virtual/gpu-rasterization/images/color-profile-background-clip-text.html [ Pass Failure ]
 
 crbug.com/653722 compositing/reflections/nested-reflection-anchor-point.html [ Pass Failure ]
-crbug.com/653722 virtual/disable-spv175/compositing/reflections/nested-reflection-anchor-point.html [ Skip ]
 crbug.com/653722 compositing/reflections/nested-reflection-animated.html [ Pass Failure ]
-crbug.com/653722 virtual/disable-spv175/compositing/reflections/nested-reflection-animated.html [ Skip ]
 crbug.com/653722 compositing/reflections/nested-reflection-transition.html [ Pass Failure ]
-crbug.com/653722 virtual/disable-spv175/compositing/reflections/nested-reflection-transition.html [ Skip ]
 
 crbug.com/816045 [ Win Linux Mac ] virtual/gpu/fast/canvas/canvas-imageSmoothingQuality-pixel.html [ Pass Timeout ]
 
@@ -107,11 +98,9 @@
 # This is a missing event and increasing the timeout or using run-after-layout-and-paint doesn't
 # seem to fix it.
 crbug.com/309675 compositing/gestures/gesture-tapHighlight-simple-longPress.html [ Failure ]
-crbug.com/309675 virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-simple-longPress.html [ Skip ]
 
 # SwiftShader Failures
 crbug.com/726075 [ Win Linux Mac ] compositing/3d-cube.html [ Failure ]
-crbug.com/726075 [ Win Linux Mac ] virtual/disable-spv175/compositing/3d-cube.html [ Skip ]
 crbug.com/726075 [ Linux ] shapedetection/detection-HTMLVideoElement.html [ Timeout ]
 
 # SwiftShader MacOS specific flaky tests
@@ -178,13 +167,10 @@
 crbug.com/841567 virtual/threaded/fast/scrolling/same-page-navigate.html [ Failure Pass ]
 
 crbug.com/736052 compositing/overflow/composited-scroll-with-fractional-translation.html [ Failure ]
-crbug.com/736052 virtual/disable-spv175/compositing/overflow/composited-scroll-with-fractional-translation.html [ Skip ]
 crbug.com/736052 virtual/prefer_compositing_to_lcd_text/compositing/overflow/composited-scroll-with-fractional-translation.html [ Failure ]
 
-crbug.com/798638 virtual/disable-spv175/fragmentation/repeating-thead-tfoot-different-fragment-height.html [ Failure ]
 
 # Not relevant, because SPv175 is launching imminently.
-crbug.com/804670 virtual/disable-spv175/paint/filters/drop-shadow-clipped.html [ Skip ]
 
 crbug.com/842668 [ Win7 ] paint/invalidation/svg/zoom-foreignObject.svg [ Failure ]
 
@@ -370,7 +356,6 @@
 
 ### virtual/layout_ng/fast/block/float
 crbug.com/810335 virtual/layout_ng/fast/block/float/003.html [ Failure ]
-crbug.com/635619 virtual/layout_ng/fast/block/float/014.html [ Failure Crash ]
 crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/float/020.html [ Failure ]
 crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/float/026.html [ Failure ]
 crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/float/028.html [ Failure ]
@@ -412,7 +397,6 @@
 
 ### virtual/layout_ng/overflow
 crbug.com/724701 virtual/layout_ng/overflow/overflow-basic-004.html [ Failure ]
-crbug.com/724701 virtual/layout_ng/overflow/overflow-inline-001.html [ Failure ]
 
 ### single pixel underline Mac failures
 crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/margin-collapse/001.html [ Failure ]
@@ -467,9 +451,6 @@
 crbug.com/714962 virtual/layout_ng/fast/inline/outline-continuations.html [ Failure ]
 crbug.com/714962 virtual/layout_ng/fast/inline/styledEmptyInlinesWithBRs.html [ Failure ]
 
-### virtual/layout_ng/external/wpt/css/CSS2/linebox/
-crbug.com/714962 virtual/layout_ng/external/wpt/css/CSS2/linebox/vertical-align-baseline-005a.xht [ Failure ]
-
 ### virtual/layout_ng/external/wpt/css/CSS2/normal-flow/
 crbug.com/714962 [ Mac ] virtual/layout_ng/external/wpt/css/CSS2/normal-flow/inline-block-valign-001.xht [ Failure ]
 crbug.com/714962 [ Mac ] virtual/layout_ng/external/wpt/css/CSS2/normal-flow/inline-block-valign-002.xht [ Failure ]
@@ -534,7 +515,7 @@
 crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-block-from-content-after-spanner.html [ Failure Crash Timeout ]
 crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-block-from-content-before-spanner.html [ Failure Crash Timeout ]
 crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-block-from-content-between-spanners.html [ Failure Crash Timeout ]
-crbug.com/636993 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-inline-and-spanner-after-spanner-foreignObject.html [ Crash Timeout ]
+crbug.com/636993 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-inline-and-spanner-after-spanner-foreignObject.html [ Pass Crash Timeout ]
 
 crbug.com/797591 virtual/layout_ng_experimental/fast/multicol/multicol-becomes-paged-fixed-height.html [ Failure ]
 crbug.com/797591 virtual/layout_ng_experimental/fast/multicol/paged-becomes-multicol-auto-height.html [ Failure ]
@@ -807,7 +788,6 @@
 crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/static-becomes-relpos-has-abspos.html [ Failure ]
 crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/event-offset-complex-tree.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/event-offset-in-nested.html [ Failure ]
-crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/event-offset.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/first-line-in-float-below-next-column-top.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/first-line-in-float-with-margin.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/fixedpos-child-becomes-static.html [ Failure ]
@@ -1091,14 +1071,9 @@
 crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/modal-dialog-crash.html [ Crash ]
 crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/multicol.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/paged-x-column-gap.html [ Failure ]
-crbug.com/714962 virtual/layout_ng_experimental/fast/pagination/paged-y-to-paged-x.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/repeating-thead-tfoot-paged-x.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/repeating-thead-tfoot-paged-y.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/short-pages-tall-content.html [ Timeout ]
-crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/viewport-x-vertical-rl-ltr.html [ Failure ]
-crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/viewport-x-vertical-rl-rtl.html [ Failure ]
-crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/viewport-y-vertical-rl-ltr.html [ Failure ]
-crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/viewport-y-vertical-rl-rtl.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fragmentation/abspos-after-forced-break.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fragmentation/auto-scrollbar-shrink-to-fit.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fragmentation/avoid-break-inside-first-child-nested.html [ Failure ]
@@ -1204,7 +1179,6 @@
 crbug.com/591099 virtual/layout_ng_experimental/printing/fixed-positioned-headers-and-footers-larger-than-page.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/printing/fixed-positioned-headers-and-footers-transformed.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/printing/fixed-positioned-headers-and-footers.html [ Failure ]
-crbug.com/591099 virtual/layout_ng_experimental/printing/fixed-positioned.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/printing/forced-break-tree-dump-only.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/printing/iframe-print.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/printing/list-item-with-empty-first-line.html [ Failure ]
@@ -1923,6 +1897,8 @@
 
 crbug.com/846237 virtual/service-worker-servicification/external/wpt/service-workers/service-worker/import-scripts-updated-flag.https.html [ Crash ]
 
+crbug.com/847565 [ Mac ] virtual/service-worker-servicification/external/wpt/service-workers/service-worker/fetch-event.https.html [ Pass Timeout ]
+
 crbug.com/492664 [ Linux ] external/wpt/css/css-writing-modes/box-offsets-rel-pos-vlr-005.xht [ Failure ]
 crbug.com/492664 [ Linux ] external/wpt/css/css-writing-modes/box-offsets-rel-pos-vrl-004.xht [ Failure ]
 crbug.com/492664 [ Mac ] external/wpt/css/css-writing-modes/bidi-embed-002.html [ Failure ]
@@ -2315,8 +2291,6 @@
 # Printing Layout broken in these tests.
 crbug.com/377696 printing/setPrinting.html [ Skip ]
 crbug.com/377696 printing/width-overflow.html [ Skip ]
-crbug.com/377696 virtual/disable-spv175/printing/setPrinting.html [ Skip ]
-crbug.com/377696 virtual/disable-spv175/printing/width-overflow.html [ Skip ]
 
 crbug.com/658305 css3/filters/buffer-offset.html [ Failure Pass ]
 crbug.com/658305 css3/filters/effect-all-on-background-hw.html [ Failure Pass ]
@@ -2362,7 +2336,6 @@
 crbug.com/306222 fast/hidpi/image-srcset-relative-svg-canvas-2x.html [ Skip ]
 
 crbug.com/467477 fast/multicol/vertical-rl/nested-columns.html [ Failure ]
-crbug.com/467477 virtual/disable-spv175/fast/multicol/vertical-rl/nested-columns.html [ Skip ]
 
 crbug.com/674225 [ Mac ] fast/replaced/input-radio-height-inside-auto-container.html [ Failure ]
 
@@ -2410,7 +2383,6 @@
 
 crbug.com/599670 [ Win ] http/tests/devtools/resource-parameters-ipv6.js [ Pass Failure ]
 crbug.com/472330 fast/borders/border-image-outset-split-inline-vertical-lr.html [ Failure ]
-crbug.com/472330 virtual/disable-spv175/fast/borders/border-image-outset-split-inline-vertical-lr.html [ Skip ]
 crbug.com/472330 fast/writing-mode/box-shadow-vertical-lr.html [ Failure ]
 crbug.com/472330 fast/writing-mode/box-shadow-vertical-rl.html [ Failure ]
 
@@ -2730,6 +2702,7 @@
 
 crbug.com/831729 performance/event-timing/event-timing-crossiframe.html [ Timeout ]
 crbug.com/831729 performance/event-timing/event-timing-observer-manual.html [ Skip ]
+crbug.com/847496 performance/event-timing/event-timing-bufferbeforeonload.html [ Failure Pass ]
 
 # Working on getting the CSP tests going:
 crbug.com/694525 external/wpt/content-security-policy/object-src [ Skip ]
@@ -2859,6 +2832,8 @@
 crbug.com/832071 virtual/navigation-mojo-response/external/wpt/service-workers/service-worker/worker-client-id.https.html [ Failure ]
 
 # ====== New tests from wpt-importer added here ======
+crbug.com/626703 virtual/outofblink-cors/external/wpt/fetch/range/sw.https.window.html [ Timeout ]
+crbug.com/626703 [ Retina ] external/wpt/accelerometer/Accelerometer.https.html [ Timeout ]
 crbug.com/626703 virtual/service-worker-servicification/external/wpt/service-workers/service-worker/fetch-event-is-history-forward-navigation-manual.https.html [ Skip ]
 crbug.com/626703 external/wpt/css/css-transforms/transform-box/view-box-mutation.html [ Failure ]
 crbug.com/626703 virtual/outofblink-cors/external/wpt/service-workers/service-worker/fetch-event-is-history-backward-navigation-manual.https.html [ Skip ]
@@ -4122,7 +4097,6 @@
 # Tests failing when enabling new modern media controls
 crbug.com/831942 media/webkit-media-controls-webkit-appearance.html [ Failure Pass ]
 crbug.com/831957 compositing/video/video-controls-layer-creation-squashing.html [ Failure Pass ]
-crbug.com/831957 virtual/disable-spv175/compositing/video/video-controls-layer-creation-squashing.html [ Failure Pass ]
 crbug.com/832157 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-added.html [ Skip ]
 crbug.com/832169 media/media-controls-fit-properly-while-zoomed.html [ Failure Pass ]
 crbug.com/832169 virtual/video-surface-layer/media/media-controls-fit-properly-while-zoomed.html [ Failure Pass ]
@@ -4343,7 +4317,6 @@
 
 # Workaround crbug.com/817175 . Very difficult to fix with old-world compositing. Pass with SPv2.
 crbug.com/817175 compositing/overflow/clip-escaping-reverse-order-should-not-crash.html [ Failure ]
-crbug.com/817175 virtual/disable-spv175/compositing/overflow/clip-escaping-reverse-order-should-not-crash.html [ Failure ]
 crbug.com/817175 virtual/prefer_compositing_to_lcd_text/compositing/overflow/clip-escaping-reverse-order-should-not-crash.html [ Failure ]
 
 # These tests are intrinsically slow. Even when marked as [ Slow ], they can still time out.
@@ -4431,7 +4404,6 @@
 
 # Sheriff failures 2017-10-13
 crbug.com/774437 paint/invalidation/selection/selection-partial-invalidation-between-blocks.html [ Pass Failure ]
-crbug.com/774437 virtual/disable-spv175/paint/invalidation/selection/selection-partial-invalidation-between-blocks.html [ Skip ]
 crbug.com/774463 [ Win7 Debug ] fast/events/autoscroll-should-not-stop-on-keypress.html [ Failure Pass ]
 crbug.com/774463 [ Win7 Debug ] virtual/mouseevent_fractional/fast/events/autoscroll-should-not-stop-on-keypress.html [ Failure Pass ]
 crbug.com/774688 [ Mac ] fast/spatial-navigation/snav-container-white-space.html [ Pass Failure ]
@@ -4561,7 +4533,6 @@
 # Different paths may have different anti-aliasing pixels 2018-02-21
 skbug.com/7641 external/wpt/css/css-paint-api/paint2d-paths.https.html [ Failure Pass ]
 skbug.com/7641 fast/multicol/border-radius-clipped-layer.html [ Failure Pass ]
-skbug.com/7641 virtual/disable-spv175/fast/multicol/border-radius-clipped-layer.html [ Failure Pass ]
 
 # Sheriff failures 2018-01-02
 crbug.com/798592 [ Win7 Mac ] http/tests/devtools/tracing/timeline-style/timeline-recalculate-styles.js [ Pass Failure ]
@@ -4590,7 +4561,6 @@
 
 # Sheriff failures 2018-02-07
 crbug.com/810009 [ Linux ] paint/invalidation/image/canvas-composite-repaint-by-all-imagesource.html [ Pass Timeout ]
-crbug.com/810009 [ Linux ] virtual/disable-spv175/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource.html [ Pass Timeout ]
 
 # Sheriff failures 2018-02-20
 crbug.com/789921 media/controls/repaint-on-resize.html [ Failure Pass ]
diff --git a/third_party/WebKit/LayoutTests/VirtualTestSuites b/third_party/WebKit/LayoutTests/VirtualTestSuites
index 327aad69..be34c290 100644
--- a/third_party/WebKit/LayoutTests/VirtualTestSuites
+++ b/third_party/WebKit/LayoutTests/VirtualTestSuites
@@ -287,41 +287,6 @@
     "args": ["--enable-blink-gen-property-trees"]
   },
   {
-    "prefix": "disable-spv175",
-    "base": "compositing",
-    "args": ["--disable-blink-features=SlimmingPaintV175"]
-  },
-  {
-    "prefix": "disable-spv175",
-    "base": "paint",
-    "args": ["--disable-blink-features=SlimmingPaintV175"]
-  },
-  {
-    "prefix": "disable-spv175",
-    "base": "fast/borders",
-    "args": ["--disable-blink-features=SlimmingPaintV175"]
-  },
-  {
-    "prefix": "disable-spv175",
-    "base": "fast/multicol",
-    "args": ["--disable-blink-features=SlimmingPaintV175"]
-  },
-  {
-    "prefix": "disable-spv175",
-    "base": "fast/pagination",
-    "args": ["--disable-blink-features=SlimmingPaintV175"]
-  },
-  {
-    "prefix": "disable-spv175",
-    "base": "fragmentation",
-    "args": ["--disable-blink-features=SlimmingPaintV175"]
-  },
-  {
-    "prefix": "disable-spv175",
-    "base": "printing",
-    "args": ["--disable-blink-features=SlimmingPaintV175"]
-  },
-  {
     "prefix": "scalefactor200",
     "base": "fast/hidpi/static",
     "args": ["--force-device-scale-factor=2"]
diff --git a/third_party/WebKit/LayoutTests/css-shadow-parts/invalidation-change-part-name-forward.html b/third_party/WebKit/LayoutTests/css-shadow-parts/invalidation-change-part-name-forward.html
new file mode 100644
index 0000000..c0daa6d9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/css-shadow-parts/invalidation-change-part-name-forward.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>CSS Shadow Parts - Invalidation change part name forward</title>
+    <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+    <link href="http://www.google.com/" rel="author" title="Google">
+    <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+    <script src="../resources/testharness.js"></script>
+    <script src="../resources/testharnessreport.js"></script>
+    <script src="support/shadow-helper.js"></script>
+  </head>
+  <body>
+    <style>#c-e-outer::part(part-forwarded) { color: red; }</style>
+    <script>installCustomElement("custom-element-inner", "custom-element-inner-template");</script>
+    <template id="custom-element-inner-template">
+      <style>span { color: green; }</style>
+      <span id="part" part="partp">This text</span>
+    </template>
+    <script>installCustomElement("custom-element-outer", "custom-element-outer-template");</script>
+    <template id="custom-element-outer-template"><custom-element-inner id="c-e-inner"></custom-element-inner></template>
+    The following text should be green:
+    <custom-element-outer id="c-e-outer" partmap="partp part-forwarded"></custom-element-outer>
+    <script type="text/javascript">
+      "use strict";
+      test(function() {
+        var part = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "part"]);
+        var before = window.getComputedStyle(part).color;
+        part.setAttribute("part", "new-partp");
+        var after = window.getComputedStyle(part).color;
+        assert_not_equals(before, after);
+      }, "Part in selected host changed color");
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/css-shadow-parts/invalidation-change-partmap-forward.html b/third_party/WebKit/LayoutTests/css-shadow-parts/invalidation-change-partmap-forward.html
new file mode 100644
index 0000000..092b4635
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/css-shadow-parts/invalidation-change-partmap-forward.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>CSS Shadow Parts - Invalidation change partmap forward</title>
+    <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+    <link href="http://www.google.com/" rel="author" title="Google">
+    <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+    <script src="../resources/testharness.js"></script>
+    <script src="../resources/testharnessreport.js"></script>
+    <script src="support/shadow-helper.js"></script>
+  </head>
+  <body>
+    <style>#c-e-outer::part(part-forwarded) { color: red; }</style>
+    <script>installCustomElement("custom-element-inner", "custom-element-inner-template");</script>
+    <template id="custom-element-inner-template">
+      <style>span { color: green; }</style>
+      <span id="part" part="partp">This text</span>
+    </template>
+    <script>installCustomElement("custom-element-outer", "custom-element-outer-template");</script>
+    <template id="custom-element-outer-template"><custom-element-inner id="c-e-inner"></custom-element-inner></template>
+    The following text should be green:
+    <custom-element-outer id="c-e-outer" partmap="partp part-forwarded"></custom-element-outer>
+    <script type="text/javascript">
+      "use strict";
+      test(function() {
+        var part = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "part"]);
+        var before = window.getComputedStyle(part).color;
+        document.getElementById("c-e-outer").setAttribute("partmap", "new-partmap");
+        var after = window.getComputedStyle(part).color;
+        assert_not_equals(before, after);
+      }, "Part in selected host changed color");
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/css-shadow-parts/invalidation-complex-selector-forward.html b/third_party/WebKit/LayoutTests/css-shadow-parts/invalidation-complex-selector-forward.html
new file mode 100644
index 0000000..658a713a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/css-shadow-parts/invalidation-complex-selector-forward.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>CSS Shadow Parts - Invalidation complex selector forward</title>
+    <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+    <link href="http://www.google.com/" rel="author" title="Google">
+    <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+    <script src="../resources/testharness.js"></script>
+    <script src="../resources/testharnessreport.js"></script>
+    <script src="support/shadow-helper.js"></script>
+  </head>
+  <body>
+    <style>#elem #c-e-outer::part(part-forwarded) { color: red; }</style>
+    <script>installCustomElement("custom-element-inner", "custom-element-inner-template");</script>
+    <template id="custom-element-inner-template">
+      <style>span { color: green; }</style>
+      <span id="part" part="partp">This text</span>
+    </template>
+    <script>installCustomElement("custom-element-outer", "custom-element-outer-template");</script>
+    <template id="custom-element-outer-template"><custom-element-inner id="c-e-inner"></custom-element-inner></template>
+    The following text should be green:
+    <div id="elem"><custom-element-outer id="c-e-outer" partmap="partp part-forwarded"></custom-element-outer></div>
+    <script type="text/javascript">
+      "use strict";
+      test(function() {
+        var part = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "part"]);
+        var before = window.getComputedStyle(part).color;
+        document.getElementById("elem").setAttribute("id", "new-elem");
+        var after = window.getComputedStyle(part).color;
+        assert_not_equals(before, after);
+      }, "Part in selected host changed color");
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/device_orientation/motion/add-during-dispatch.html b/third_party/WebKit/LayoutTests/device_orientation/motion/add-during-dispatch.html
index e06b58f..5585337 100644
--- a/third_party/WebKit/LayoutTests/device_orientation/motion/add-during-dispatch.html
+++ b/third_party/WebKit/LayoutTests/device_orientation/motion/add-during-dispatch.html
@@ -3,30 +3,24 @@
 <body>
 <script src="../../resources/testharness.js"></script>
 <script src="../../resources/testharnessreport.js"></script>
+<script src="../../http/tests/resources/sensor-helpers.js"></script>
 <script src="../resources/device-orientation-helpers.js"></script>
+<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="file:///gen/services/device/public/mojom/sensor_provider.mojom.js"></script>
 <script>
 'use strict';
 
-async_test(test => {
-  assertTestRunner();
-  var numSecondListenerCalls = 0;
-  var motionData = generateMotionData(1, 2, 3,
-                                      4, 5, 6,
-                                      7, 8, 9,
-                                      10);
-  setMockMotion(motionData);
-  window.addEventListener('devicemotion', function firstListener(event) {
-    test.step(() => {
-      checkMotion(event, motionData);
-    });
-    window.removeEventListener('devicemotion', firstListener);
-    window.addEventListener('devicemotion', () => {
-      ++numSecondListenerCalls;
-    });
-    test.step(() => {
-      assert_equals(numSecondListenerCalls, 0);
-      test.done();
-    });
+sensor_test(async sensor => {
+  const motionData = generateMotionData(1, 2, 3,
+                                        4, 5, 6,
+                                        7, 8, 9);
+  setMockMotionData(sensor, motionData);
+  waitForMotion(motionData);
+
+  return new Promise((resolve, reject) => {
+    let result = reject;
+    window.addEventListener('devicemotion', event => result());
+    result = resolve;
   });
 }, 'Test no fire listeners added during event dispatch.');
 </script>
diff --git a/third_party/WebKit/LayoutTests/device_orientation/motion/add-listener-from-callback.html b/third_party/WebKit/LayoutTests/device_orientation/motion/add-listener-from-callback.html
index 4457b06..d04efe5 100644
--- a/third_party/WebKit/LayoutTests/device_orientation/motion/add-listener-from-callback.html
+++ b/third_party/WebKit/LayoutTests/device_orientation/motion/add-listener-from-callback.html
@@ -3,36 +3,48 @@
 <body>
 <script src="../../resources/testharness.js"></script>
 <script src="../../resources/testharnessreport.js"></script>
+<script src="../../http/tests/resources/sensor-helpers.js"></script>
 <script src="../resources/device-orientation-helpers.js"></script>
+<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="file:///gen/services/device/public/mojom/sensor_provider.mojom.js"></script>
 <script>
 'use strict';
 
-async_test(test => {
-  assertTestRunner();
-  var motionData = generateMotionData(1.1, 2.1, 3.1,
-                                      1.2, 2.2, 3.2,
-                                      1.3, 2.3, 3.3,
-                                      100);
+sensor_test(async sensor => {
+  const motionData = generateMotionData(1.1, 2.1, 3.1,
+                                        1.2, 2.2, 3.2,
+                                        1.3, 2.3, 3.3);
 
-  var firstListenerEvents = 0;
-  var firstListener = test.step_func(event => {
-    checkMotion(event, motionData);
-    window.removeEventListener('devicemotion', firstListener);
-    if (++firstListenerEvents == 1)
-      window.addEventListener('devicemotion', secondListener);
+  let firstListener = null;
+  let secondListener = null;
+  let firstEventCount = 0;
+  let firstPromise = new Promise(resolve => {
+    firstListener = (event) => {
+      checkMotion(event, motionData);
+      window.removeEventListener('devicemotion', firstListener);
+      if (++firstEventCount == 1) {
+        window.addEventListener('devicemotion', secondListener);
+      }
+      resolve(event);
+    };
   });
 
-  var secondListenerEvents = 0;
-  var secondListener = test.step_func(event => {
-    checkMotion(event, motionData);
-    ++secondListenerEvents;
-    assert_equals(firstListenerEvents, 1, "Too many events fired for the first listener");
-    assert_equals(secondListenerEvents, 1, "Too many events fired for the second listener");
-    test.done();
+  let secondEventCount = 0;
+  let secondPromise = new Promise(resolve => {
+    secondListener = (event) => {
+      checkMotion(event, motionData);
+      window.removeEventListener('devicemotion', secondListener);
+      ++secondEventCount;
+      resolve(event);
+    };
   });
 
-  setMockMotion(motionData);
+  setMockMotionData(sensor, motionData);
   window.addEventListener('devicemotion', firstListener);
+  await firstPromise;
+  await secondPromise;
+  assert_equals(firstEventCount, 1, "Too many events fired for the first listener");
+  assert_equals(secondEventCount, 1, "Too many events fired for the second listener");
 }, 'Tests that adding a new devicemotion event listener from a callback works as expected.');
 </script>
 </body>
diff --git a/third_party/WebKit/LayoutTests/device_orientation/motion/detached-frame.html b/third_party/WebKit/LayoutTests/device_orientation/motion/detached-frame.html
index 4267f56..25d67f30 100644
--- a/third_party/WebKit/LayoutTests/device_orientation/motion/detached-frame.html
+++ b/third_party/WebKit/LayoutTests/device_orientation/motion/detached-frame.html
@@ -3,26 +3,34 @@
 <body>
 <script src="../../resources/testharness.js"></script>
 <script src="../../resources/testharnessreport.js"></script>
+<script src="../../http/tests/resources/sensor-helpers.js"></script>
 <script src="../resources/device-orientation-helpers.js"></script>
+<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="file:///gen/services/device/public/mojom/sensor_provider.mojom.js"></script>
 <script>
 'use strict';
 
-async_test(test => {
-  assertTestRunner();
-  var motionData = generateMotionData(1, 2, 3,
-                                      4, 5, 6,
-                                      7, 8, 9,
-                                      10);
-  setMockMotion(motionData);
+sensor_test(async sensor => {
+  const motionData = generateMotionData(1, 2, 3,
+                                        4, 5, 6,
+                                        7, 8, 9);
+
+  setMockMotionData(sensor, motionData);
+  await waitForMotion(motionData);
   var childFrame = document.createElement('iframe');
   document.body.appendChild(childFrame);
-  childFrame.contentWindow.addEventListener('devicemotion', () => {
-    document.body.removeChild(childFrame);
-    setTimeout(() => {
-      window.addEventListener('devicemotion', test.step_func_done(event => {
-        checkMotion(event, motionData);
-      }));
-    }, 300);
+
+  return new Promise((resolve, reject) => {
+    childFrame.contentWindow.addEventListener('devicemotion', event1 => {
+      checkMotion(event1, motionData);
+      document.body.removeChild(childFrame);
+      setTimeout(() => {
+        window.addEventListener('devicemotion', event2 => {
+          checkMotion(event2, motionData);
+          resolve();
+        });
+      }, 300);
+    });
   });
 }, 'Tests adding a devicemotion event listener in an iframe, removing the iframe, and then adding a devicemotion event listener in the main frame.');
 </script>
diff --git a/third_party/WebKit/LayoutTests/device_orientation/motion/fire-last-event.html b/third_party/WebKit/LayoutTests/device_orientation/motion/fire-last-event.html
index 2f77c530..ea2270f8 100644
--- a/third_party/WebKit/LayoutTests/device_orientation/motion/fire-last-event.html
+++ b/third_party/WebKit/LayoutTests/device_orientation/motion/fire-last-event.html
@@ -3,32 +3,31 @@
 <body>
 <script src="../../resources/testharness.js"></script>
 <script src="../../resources/testharnessreport.js"></script>
+<script src="../../http/tests/resources/sensor-helpers.js"></script>
 <script src="../resources/device-orientation-helpers.js"></script>
+<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="file:///gen/services/device/public/mojom/sensor_provider.mojom.js"></script>
 <script>
 'use strict';
 
-async_test(test => {
-  assertTestRunner();
-  var motionData1 = generateMotionData(1, 2, 3,
-                                       4, 5, 6,
-                                       7, 8, 9,
-                                       10);
-  var motionData2 = generateMotionData(0, 0, 0,
-                                       0, 0, 0,
-                                       0, 0, 0,
-                                       0);
-  setMockMotion(motionData1);
-  window.addEventListener('devicemotion', function mainFrameListener(event) {
-    test.step(() => {
+sensor_test(async sensor => {
+  const motionData1 = generateMotionData(1, 2, 3,
+                                         4, 5, 6,
+                                         7, 8, 9);
+  const motionData2 = generateMotionData(0, 0, 0,
+                                         0, 0, 0,
+                                         0, 0, 0);
+
+  return new Promise((resolve, reject) => {
+    setMockMotionData(sensor, motionData1);
+    window.addEventListener('devicemotion', function mainFrameListener(event) {
       checkMotion(event, motionData1);
+      var childFrame = document.createElement('iframe');
+      document.body.appendChild(childFrame);
+      window.removeEventListener('devicemotion', mainFrameListener);
+      setMockMotionData(sensor, motionData2);
+      waitForMotion(motionData1, childFrame.contentWindow).then(resolve, reject);
     });
-    var childFrame = document.createElement('iframe');
-    document.body.appendChild(childFrame);
-    window.removeEventListener('devicemotion', mainFrameListener);
-    setMockMotion(motionData2);
-    childFrame.contentWindow.addEventListener('devicemotion', test.step_func_done(event => {
-      checkMotion(event, motionData1);
-    }));
   });
 }, 'Tests to see if the last available event is fired.');
 </script>
diff --git a/third_party/WebKit/LayoutTests/device_orientation/motion/multiple-event-listeners.html b/third_party/WebKit/LayoutTests/device_orientation/motion/multiple-event-listeners.html
index 5d0d83b..7737807 100644
--- a/third_party/WebKit/LayoutTests/device_orientation/motion/multiple-event-listeners.html
+++ b/third_party/WebKit/LayoutTests/device_orientation/motion/multiple-event-listeners.html
@@ -3,72 +3,44 @@
 <body>
 <script src="../../resources/testharness.js"></script>
 <script src="../../resources/testharnessreport.js"></script>
+<script src="../../http/tests/resources/sensor-helpers.js"></script>
 <script src="../resources/device-orientation-helpers.js"></script>
+<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="file:///gen/services/device/public/mojom/sensor_provider.mojom.js"></script>
 <script>
 'use strict';
 
-async_test(test => {
-  assertTestRunner();
-  var motionData1 = generateMotionData(1, 2, 3,
-                                       4, 5, 6,
-                                       7, 8, 9,
-                                       10);
-  var motionData2 = generateMotionData(11, 12, 13,
-                                       14, 15, 16,
-                                       17, 18, 19,
-                                       0);
-  var counter = 0;
+sensor_test(async sensor => {
+  const motionData1 = generateMotionData(1, 2, 3,
+                                         4, 5, 6,
+                                         7, 8, 9);
+  const motionData2 = generateMotionData(11, 12, 13,
+                                         14, 15, 16,
+                                         17, 18, 19);
 
-  var firstListener = test.step_func(event => {
-    checkMotion(event, motionData1);
-    ++counter;
-    proceedIfNecessary();
+  let firstListener = null;
+  let firstEventPromise = new Promise(resolve => {
+    firstListener = resolve;
   });
-
-  var secondListener = test.step_func(event => {
-    checkMotion(event, motionData1);
-    ++counter;
-    proceedIfNecessary();
-  });
-
-  function proceedIfNecessary() {
-    if (counter == 2) {
-      setMockMotion(motionData2);
-      // Note: this should not stop Device Motion updates,
-      // because there is still one listener active.
-      window.removeEventListener('devicemotion', secondListener);
-      setTimeout(initThirdListener, 0);
-    }
-  }
-
-  var childFrame;
-  function initThirdListener() {
-    childFrame = document.createElement('iframe');
-    document.body.appendChild(childFrame);
-    childFrame.contentWindow.addEventListener('devicemotion', thirdListener);
-  }
-
-  var thirdListener = test.step_func(event => {
-    // Expect the cached event because Device Motion was already active
-    // when third listener was added.
-    checkMotion(event, motionData1);
-    window.removeEventListener('devicemotion', firstListener);
-    childFrame.contentWindow.removeEventListener('devicemotion', thirdListener);
-    setTimeout(initFourthListener, 0);
-  });
-
-  function initFourthListener() {
-    window.addEventListener('devicemotion', fourthListener);
-  }
-
-  var fourthListener = test.step_func(event => {
-    checkMotion(event, motionData2);
-    test.done();
-  });
-
-  setMockMotion(motionData1);
+  // We directly add the listener instead of using waitForMotion
+  // because we want the listener to stay active after the first event fires.
   window.addEventListener('devicemotion', firstListener);
-  window.addEventListener('devicemotion', secondListener);
+  let secondEventPromise = waitForMotion(motionData1);
+  setMockMotionData(sensor, motionData1);
+  let firstEvent = await firstEventPromise;
+  checkMotion(firstEvent, motionData1);
+  await secondEventPromise;
+
+  // At this point only the first event listener is active.
+  setMockMotionData(sensor, motionData2);
+  let childFrame = document.createElement('iframe');
+  document.body.appendChild(childFrame);
+  // Expect the cached event because Device Motion was already active
+  // when third listener was added.
+  await waitForMotion(motionData1, childFrame.contentWindow);
+  window.removeEventListener('devicemotion', firstListener);
+
+  return waitForMotion(motionData2);
 }, 'Tests using multiple event handlers for the Device Motion API.');
 </script>
 </body>
diff --git a/third_party/WebKit/LayoutTests/device_orientation/motion/null-values.html b/third_party/WebKit/LayoutTests/device_orientation/motion/null-values.html
index e2e3bc8..2fcfc20c 100644
--- a/third_party/WebKit/LayoutTests/device_orientation/motion/null-values.html
+++ b/third_party/WebKit/LayoutTests/device_orientation/motion/null-values.html
@@ -3,72 +3,41 @@
 <body>
 <script src="../../resources/testharness.js"></script>
 <script src="../../resources/testharnessreport.js"></script>
+<script src="../../http/tests/resources/sensor-helpers.js"></script>
 <script src="../resources/device-orientation-helpers.js"></script>
+<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="file:///gen/services/device/public/mojom/sensor_provider.mojom.js"></script>
 <script>
 'use strict';
 
-async_test(test => {
-  assertTestRunner();
-  var motionData1 = generateMotionData(null, null, null,
-                                       null, null, null,
-                                       null, null, null,
-                                       0);
+sensor_test(async sensor => {
+  const motionData1 = generateMotionData(1, 2, 3,
+                                         null, null, null,
+                                         null, null, null);
 
-  var motionData2 = generateMotionData(1, 2, 3,
-                                       null, null, null,
-                                       null, null, null,
-                                       100);
+  const motionData2 = generateMotionData(null, null, null,
+                                         1, 2, 3,
+                                         null, null, null);
 
-  var motionData3 = generateMotionData(null, null, null,
-                                       1, 2, 3,
-                                       null, null, null,
-                                       100);
+  const motionData3 = generateMotionData(null, null, null,
+                                         null, null, null,
+                                         1, 2, 3);
 
-  var motionData4 = generateMotionData(null, null, null,
-                                       null, null, null,
-                                       1, 2, 3,
-                                       100);
+  const motionData4 = generateMotionData(null, null, null,
+                                         null, null, null,
+                                         null, null, null);
 
-  var firstListener = test.step_func(event => {
-    checkMotion(event, motionData1);
-    window.removeEventListener('devicemotion', firstListener);
-    setTimeout(initSecondListener, 0);
-  });
+  setMockMotionData(sensor, motionData1);
+  await waitForMotion(motionData1);
 
-  function initSecondListener() {
-    setMockMotion(motionData2);
-    window.addEventListener('devicemotion', secondListener);
-  }
+  setMockMotionData(sensor, motionData2);
+  await waitForMotion(motionData2);
 
-  var secondListener = test.step_func(event => {
-    checkMotion(event, motionData2);
-    window.removeEventListener('devicemotion', secondListener);
-    setTimeout(initThirdListener, 0);
-  });
+  setMockMotionData(sensor, motionData3);
+  await waitForMotion(motionData3);
 
-  function initThirdListener() {
-    setMockMotion(motionData3);
-    window.addEventListener('devicemotion', thirdListener);
-  }
-
-  var thirdListener = test.step_func(event => {
-    checkMotion(event, motionData3);
-    window.removeEventListener('devicemotion', thirdListener);
-    setTimeout(initFourthListener, 0);
-  });
-
-  function initFourthListener() {
-    setMockMotion(motionData4);
-    window.addEventListener('devicemotion', fourthListener);
-  }
-
-  var fourthListener = test.step_func(event => {
-    checkMotion(event, motionData4);
-    test.done();
-  });
-
-  setMockMotion(motionData1);
-  window.addEventListener('devicemotion', firstListener);
+  setMockMotionData(sensor, motionData4);
+  return waitForMotion(motionData4);
 }, 'Tests using null values for some or all of the event properties.');
 </script>
 </body>
diff --git a/third_party/WebKit/LayoutTests/device_orientation/motion/page-visibility.html b/third_party/WebKit/LayoutTests/device_orientation/motion/page-visibility.html
index b187700..c2f3348 100644
--- a/third_party/WebKit/LayoutTests/device_orientation/motion/page-visibility.html
+++ b/third_party/WebKit/LayoutTests/device_orientation/motion/page-visibility.html
@@ -3,45 +3,46 @@
 <body>
 <script src="../../resources/testharness.js"></script>
 <script src="../../resources/testharnessreport.js"></script>
+<script src="../../http/tests/resources/sensor-helpers.js"></script>
 <script src="../resources/device-orientation-helpers.js"></script>
+<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="file:///gen/services/device/public/mojom/sensor_provider.mojom.js"></script>
 <script>
 'use strict';
 
-async_test(test => {
-  assertTestRunner();
+function sleep(time_ms) {
+  return new Promise(resolve => window.setTimeout(resolve, time_ms));
+}
 
-  var motionData = generateMotionData(0, 0, 0,
-                                      0, 0, 0,
-                                      0, 0, 0,
-                                      0);
-  var succeedAndFinish = test.step_func(() => {
-    test.done();
+sensor_test(async sensor => {
+  const motionData = generateMotionData(0, 0, 0,
+                                        0, 0, 0,
+                                        0, 0, 0);
+
+  setMockMotionData(sensor, motionData);
+  await waitForMotion(motionData);
+
+  testRunner.setPageVisibility('hidden');
+  let hidden = true;
+  let hiddenEventPromise = new Promise((resolve, reject) => {
+    window.addEventListener(
+      'devicemotion',
+      event => {
+        if (hidden) {
+          reject();
+        } else {
+          resolve();
+        }
+      },
+      { once: true });
   });
 
-  function testWithPageVisible() {
-    window.removeEventListener('devicemotion', failAndFinish);
-    testRunner.setPageVisibility("visible");
-    window.addEventListener('devicemotion', succeedAndFinish);
-  }
-
-  var failAndFinish = test.step_func(() => {
-    assert_unreached("Should not have received a devicemotion event while the page was hidden");
-    test.done();
-  });
-
-  function testWithPageHidden() {
-    window.removeEventListener('devicemotion', deviceMotionListener);
-    testRunner.setPageVisibility("hidden");
-    window.addEventListener('devicemotion', failAndFinish);
-    setTimeout(testWithPageVisible, 100);
-  }
-
-  var deviceMotionListener = test.step_func(() => {
-    setTimeout(testWithPageHidden, 0);
-  });
-
-  setMockMotion(motionData);
-  window.addEventListener('devicemotion', deviceMotionListener);
+  // devicemotion events fire every 16ms when active, so we sleep for a while
+  // here to make sure we're not actually getting any events.
+  await sleep(100);
+  hidden = false;
+  testRunner.setPageVisibility('visible');
+  return Promise.all([hiddenEventPromise, waitForMotion(motionData)]);
 }, 'Tests to check that devicemotion events are not fired when the page is not visible.');
 </script>
 </body>
diff --git a/third_party/WebKit/LayoutTests/device_orientation/resources/device-orientation-helpers.js b/third_party/WebKit/LayoutTests/device_orientation/resources/device-orientation-helpers.js
index 6f0d2e29..8634ddf 100644
--- a/third_party/WebKit/LayoutTests/device_orientation/resources/device-orientation-helpers.js
+++ b/third_party/WebKit/LayoutTests/device_orientation/resources/device-orientation-helpers.js
@@ -1,5 +1,7 @@
 'use strict';
 
+const MOTION_ROTATION_EPSILON = 1e-8;
+
 function assertTestRunner() {
   assert_true(window.testRunner instanceof Object,
     "This test can not be run without the window.testRunner.");
@@ -10,7 +12,7 @@
                             accelerationIncludingGravityY,
                             accelerationIncludingGravityZ,
                             rotationRateAlpha, rotationRateBeta, rotationRateGamma,
-                            interval) {
+                            interval = 16) {
   var motionData = {accelerationX: accelerationX,
                     accelerationY: accelerationY,
                     accelerationZ: accelerationZ,
@@ -68,6 +70,7 @@
 let nullToNan = x => (x === null ? NaN : x);
 
 function setMockMotionData(sensor, motionData) {
+  const degToRad = Math.PI / 180;
   return Promise.all([
       setMockSensorDataForType(sensor, device.mojom.SensorType.ACCELEROMETER, [
           nullToNan(motionData.accelerationIncludingGravityX),
@@ -80,9 +83,9 @@
           nullToNan(motionData.accelerationZ),
       ]),
       setMockSensorDataForType(sensor, device.mojom.SensorType.GYROSCOPE, [
-          nullToNan(motionData.rotationRateAlpha),
-          nullToNan(motionData.rotationRateBeta),
-          nullToNan(motionData.rotationRateGamma),
+          nullToNan(motionData.rotationRateAlpha) * degToRad,
+          nullToNan(motionData.rotationRateBeta) * degToRad,
+          nullToNan(motionData.rotationRateGamma) * degToRad,
       ]),
   ]);
 }
@@ -107,9 +110,9 @@
   assert_equals(event.accelerationIncludingGravity.y, expectedMotionData.accelerationIncludingGravityY, "accelerationIncludingGravity.y");
   assert_equals(event.accelerationIncludingGravity.z, expectedMotionData.accelerationIncludingGravityZ, "accelerationIncludingGravity.z");
 
-  assert_equals(event.rotationRate.alpha, expectedMotionData.rotationRateAlpha, "rotationRate.alpha");
-  assert_equals(event.rotationRate.beta, expectedMotionData.rotationRateBeta, "rotationRate.beta");
-  assert_equals(event.rotationRate.gamma, expectedMotionData.rotationRateGamma, "rotationRate.gamma");
+  assert_approx_equals(event.rotationRate.alpha, expectedMotionData.rotationRateAlpha, MOTION_ROTATION_EPSILON, "rotationRate.alpha");
+  assert_approx_equals(event.rotationRate.beta, expectedMotionData.rotationRateBeta, MOTION_ROTATION_EPSILON, "rotationRate.beta");
+  assert_approx_equals(event.rotationRate.gamma, expectedMotionData.rotationRateGamma, MOTION_ROTATION_EPSILON, "rotationRate.gamma");
 
   assert_equals(event.interval, expectedMotionData.interval, "interval");
 }
@@ -135,3 +138,26 @@
       }),
       targetWindow);
 }
+
+function waitForMotion(expectedMotionData, targetWindow = window) {
+  return waitForEvent(
+      new DeviceMotionEvent('devicemotion', {
+        acceleration: {
+          x: expectedMotionData.accelerationX,
+          y: expectedMotionData.accelerationY,
+          z: expectedMotionData.accelerationZ,
+        },
+        accelerationIncludingGravity: {
+          x: expectedMotionData.accelerationIncludingGravityX,
+          y: expectedMotionData.accelerationIncludingGravityY,
+          z: expectedMotionData.accelerationIncludingGravityZ,
+        },
+        rotationRate: {
+          alpha: expectedMotionData.rotationRateAlpha,
+          beta: expectedMotionData.rotationRateBeta,
+          gamma: expectedMotionData.rotationRateGamma,
+        },
+        interval: expectedMotionData.interval,
+      }),
+      targetWindow);
+}
diff --git a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
index 5bfd5895..618006d 100644
--- a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
+++ b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
@@ -121060,11 +121060,6 @@
      {}
     ]
    ],
-   "css/css-logical/resources/style-check.js": [
-    [
-     {}
-    ]
-   ],
    "css/css-masking/OWNERS": [
     [
      {}
@@ -135095,6 +135090,11 @@
      {}
     ]
    ],
+   "css/support/grid.css": [
+    [
+     {}
+    ]
+   ],
    "css/support/import-green.css": [
     [
      {}
@@ -140570,6 +140570,41 @@
      {}
     ]
    ],
+   "fetch/range/resources/basic.html": [
+    [
+     {}
+    ]
+   ],
+   "fetch/range/resources/long-wav.py": [
+    [
+     {}
+    ]
+   ],
+   "fetch/range/resources/partial-script.py": [
+    [
+     {}
+    ]
+   ],
+   "fetch/range/resources/range-sw.js": [
+    [
+     {}
+    ]
+   ],
+   "fetch/range/resources/stash-take.py": [
+    [
+     {}
+    ]
+   ],
+   "fetch/range/resources/utils.js": [
+    [
+     {}
+    ]
+   ],
+   "fetch/range/sw.https.window-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "fetch/sec-metadata/README.md": [
     [
      {}
@@ -165210,16 +165245,6 @@
      {}
     ]
    ],
-   "url/a-element-origin.js": [
-    [
-     {}
-    ]
-   ],
-   "url/a-element.js": [
-    [
-     {}
-    ]
-   ],
    "url/data-uri-fragment-expected.txt": [
     [
      {}
@@ -165245,12 +165270,27 @@
      {}
     ]
    ],
-   "url/setters_tests.json": [
+   "url/resources/a-element-origin.js": [
     [
      {}
     ]
    ],
-   "url/toascii.json": [
+   "url/resources/a-element.js": [
+    [
+     {}
+    ]
+   ],
+   "url/resources/setters_tests.json": [
+    [
+     {}
+    ]
+   ],
+   "url/resources/toascii.json": [
+    [
+     {}
+    ]
+   ],
+   "url/resources/urltestdata.json": [
     [
      {}
     ]
@@ -165270,11 +165310,6 @@
      {}
     ]
    ],
-   "url/urltestdata.json": [
-    [
-     {}
-    ]
-   ],
    "user-timing/OWNERS": [
     [
      {}
@@ -169535,6 +169570,11 @@
      {}
     ]
    ],
+   "workers/modules/resources/eval-dynamic-import-worker.js": [
+    [
+     {}
+    ]
+   ],
    "workers/modules/resources/export-on-dynamic-import-script.js": [
     [
      {}
@@ -170085,11 +170125,6 @@
      {}
     ]
    ],
-   "xhr/access-control-and-redirects-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "xhr/data-uri-expected.txt": [
     [
      {}
@@ -185468,6 +185503,30 @@
      {}
     ]
    ],
+   "css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-001.html": [
+    [
+     "/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-001.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-002.html": [
+    [
+     "/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-002.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-003.html": [
+    [
+     "/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-003.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-004.html": [
+    [
+     "/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-004.html",
+     {}
+    ]
+   ],
    "css/css-grid/alignment/grid-fit-content-tracks-dont-stretch-001.html": [
     [
      "/css/css-grid/alignment/grid-fit-content-tracks-dont-stretch-001.html",
@@ -185588,6 +185647,30 @@
      {}
     ]
    ],
+   "css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html": [
+    [
+     "/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html": [
+    [
+     "/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html": [
+    [
+     "/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html": [
+    [
+     "/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html",
+     {}
+    ]
+   ],
    "css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-001.html": [
     [
      "/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-001.html",
@@ -186044,6 +186127,18 @@
      {}
     ]
    ],
+   "css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html": [
+    [
+     "/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html",
+     {}
+    ]
+   ],
+   "css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-002.html": [
+    [
+     "/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-002.html",
+     {}
+    ]
+   ],
    "css/css-grid/grid-definition/grid-change-fit-content-argument-001.html": [
     [
      "/css/css-grid/grid-definition/grid-change-fit-content-argument-001.html",
@@ -187010,6 +187105,18 @@
      {}
     ]
    ],
+   "css/css-shadow-parts/invalidation-change-part-name.html": [
+    [
+     "/css/css-shadow-parts/invalidation-change-part-name.html",
+     {}
+    ]
+   ],
+   "css/css-shadow-parts/invalidation-complex-selector.html": [
+    [
+     "/css/css-shadow-parts/invalidation-complex-selector.html",
+     {}
+    ]
+   ],
    "css/css-shadow-parts/simple.html": [
     [
      "/css/css-shadow-parts/simple.html",
@@ -199828,6 +199935,28 @@
      {}
     ]
    ],
+   "fetch/range/general.any.js": [
+    [
+     "/fetch/range/general.any.html",
+     {}
+    ],
+    [
+     "/fetch/range/general.any.worker.html",
+     {}
+    ]
+   ],
+   "fetch/range/partial-script.window.js": [
+    [
+     "/fetch/range/partial-script.window.html",
+     {}
+    ]
+   ],
+   "fetch/range/sw.https.window.js": [
+    [
+     "/fetch/range/sw.https.window.html",
+     {}
+    ]
+   ],
    "fetch/sec-metadata/fetch.tentative.https.sub.html": [
     [
      "/fetch/sec-metadata/fetch.tentative.https.sub.html",
@@ -238146,6 +238275,12 @@
      {}
     ]
    ],
+   "svg/types/scripted/SVGGeometryElement.getPointAtLength-01.svg": [
+    [
+     "/svg/types/scripted/SVGGeometryElement.getPointAtLength-01.svg",
+     {}
+    ]
+   ],
    "svg/types/scripted/SVGLength-px-with-context.html": [
     [
      "/svg/types/scripted/SVGLength-px-with-context.html",
@@ -296521,6 +296656,22 @@
    "7d1a1c21880b25fe0126affa850fb13bdf80470b",
    "testharness"
   ],
+  "css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-001.html": [
+   "7387c69c5f442f72c4f253242823f97b7c26ed83",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-002.html": [
+   "a95963f14832c60c44aa63915ea557fdabe3183f",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-003.html": [
+   "e5c7e8adb9d33b307041429f708aae12b0203a58",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-004.html": [
+   "d24ae3fb7aad80368ea4f22122e18157596bf45a",
+   "testharness"
+  ],
   "css/css-grid/alignment/grid-content-distribution-001.html": [
    "5622a264eb2dbd6cf621ac97aa4a8ae5db82c6b3",
    "reftest"
@@ -296845,6 +296996,22 @@
    "7f95db93458af40478ad2cd6b473e8f34f62f3e8",
    "testharness"
   ],
+  "css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html": [
+   "7f2b8621613e433c84b70310c64051b4b3893a67",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html": [
+   "c25d5c44d2a7d07b789a2cf669f50a21f6df4f8e",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html": [
+   "edf4aec4ce1ba1bbda1a5e6ade38a712522623c5",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html": [
+   "d83d361ef95e1a4c16b33a9057d7559aaa43a242",
+   "testharness"
+  ],
   "css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-001.html": [
    "cafc54256ea9d0cbf8990a0e04904c7ada8c5894",
    "testharness"
@@ -297165,6 +297332,14 @@
    "737ff1592425bb6e89a9edebdd072c94e926a1a9",
    "testharness"
   ],
+  "css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html": [
+   "8ff9af9ade9e12c95d7e70778635efdc2263e62b",
+   "testharness"
+  ],
+  "css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-002.html": [
+   "28a7a3372ec47cb31afde392da0752032f416512",
+   "testharness"
+  ],
   "css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-001.html": [
    "e7250b61f6dc882945f73412ec73c0de7f139aad",
    "reftest"
@@ -298770,29 +298945,25 @@
    "reftest"
   ],
   "css/css-logical/logicalprops-block-size-vlr.html": [
-   "68a86c5b34cf3769e4cda12ef4d23ecdb523734f",
+   "b77a4607318ab1c8a1cf292a83618720210cf3cf",
    "testharness"
   ],
   "css/css-logical/logicalprops-block-size.html": [
-   "e9597ce04c2b8be8128f9b411e7990bc85d3842a",
+   "988a75943bfc7bdd61eef33a8527e9476fe0fab9",
    "testharness"
   ],
   "css/css-logical/logicalprops-inline-size-vlr.html": [
-   "a0438d0713820ac5ab82f0165af7711f71d91ae6",
+   "9bd26d717f34f9ebf1f09cbb2eb7c2242df6b3c8",
    "testharness"
   ],
   "css/css-logical/logicalprops-inline-size.html": [
-   "fea8f8205053e933de3dc4490c918c3db69a4a05",
+   "4f3bdbc5d9e38770050d963c32942a63272f0e67",
    "testharness"
   ],
   "css/css-logical/logicalprops-quirklength.html": [
    "3024bbd54e4cbe1ee55e59684188587e2a56fda6",
    "testharness"
   ],
-  "css/css-logical/resources/style-check.js": [
-   "f6260209571bdd53be52c698f072c121e3702dd1",
-   "support"
-  ],
   "css/css-masking/OWNERS": [
    "a290aef2ba2b950b1a235ab06969d414c057804b",
    "support"
@@ -302197,6 +302368,14 @@
    "4330af8042042c73a6cc590c38cd32613e2b9db3",
    "testharness"
   ],
+  "css/css-shadow-parts/invalidation-change-part-name.html": [
+   "e27ecea87d19544d4a558d900d1f572d069e65e6",
+   "testharness"
+  ],
+  "css/css-shadow-parts/invalidation-complex-selector.html": [
+   "a0d0edc5aafd6a6cb6cd4224c51d17ba03bd0a5e",
+   "testharness"
+  ],
   "css/css-shadow-parts/simple.html": [
    "76bea5867f75428345b105a813b7510f0492b2d2",
    "testharness"
@@ -329017,6 +329196,10 @@
    "0e795989a9acaa0d153c31a0a965f6aa7600e024",
    "support"
   ],
+  "css/support/grid.css": [
+   "6bb300b8baebf700481ea162fb7b41913fcca29c",
+   "support"
+  ],
   "css/support/import-green.css": [
    "db4f420efdb292d6520be1a3bf052ed3f6f9e7e3",
    "support"
@@ -339381,6 +339564,46 @@
    "bb002c0d5d4d46f426462f776cff00cf600f5a4a",
    "support"
   ],
+  "fetch/range/general.any.js": [
+   "2c16c0398373fca53ae80aae1107868c8cdeb6b4",
+   "testharness"
+  ],
+  "fetch/range/partial-script.window.js": [
+   "1352080860b8671290919ab0d09cb41f4100763e",
+   "testharness"
+  ],
+  "fetch/range/resources/basic.html": [
+   "51a23151c28992fe062b36914463de216bd55fbe",
+   "support"
+  ],
+  "fetch/range/resources/long-wav.py": [
+   "a9bdaefeb4e9cefd4bb678832d7ffcbe1b3167f7",
+   "support"
+  ],
+  "fetch/range/resources/partial-script.py": [
+   "d74bf301d56ad7d5ae4067e8e27ec544a21aa2ed",
+   "support"
+  ],
+  "fetch/range/resources/range-sw.js": [
+   "1ec66e1dd8bf9a11b058b90e32ca7caab2233d4d",
+   "support"
+  ],
+  "fetch/range/resources/stash-take.py": [
+   "9d29b6276fa690d6acb366bdb4d60a12bc57ea52",
+   "support"
+  ],
+  "fetch/range/resources/utils.js": [
+   "81cc493a76265cc64408fc2d41a67434ec99391a",
+   "support"
+  ],
+  "fetch/range/sw.https.window-expected.txt": [
+   "4886c12868f0868dddf14996a4fbfecb22644873",
+   "support"
+  ],
+  "fetch/range/sw.https.window.js": [
+   "5bf1ebc9ce82990013831f2f7f55589e29a69bde",
+   "testharness"
+  ],
   "fetch/sec-metadata/README.md": [
    "75d58b35c1e5572d02dd3ad90ac65301e35c4bc7",
    "support"
@@ -340082,7 +340305,7 @@
    "testharness"
   ],
   "generic-sensor/OWNERS": [
-   "1cb8a0e23d31dcdeb5ba273a40e35c021c0c53f2",
+   "94de006568af7af1c00005f0a9110612b4a900c8",
    "support"
   ],
   "generic-sensor/README.md": [
@@ -383394,7 +383617,7 @@
    "support"
   ],
   "service-workers/service-worker/resources/test-helpers.sub.js": [
-   "74ea529125a5e2c5cd3d350f7c56ae614f82010d",
+   "079d31394903266dddb067f8f4dba5a94e522bdc",
    "support"
   ],
   "service-workers/service-worker/resources/testharness-helpers.js": [
@@ -386469,6 +386692,10 @@
    "dfc7ec677df247b015ef360793c7e5f0c926e45f",
    "testharness"
   ],
+  "svg/types/scripted/SVGGeometryElement.getPointAtLength-01.svg": [
+   "73c1c15179f02b637a68939ba08faa4f90af8e5b",
+   "testharness"
+  ],
   "svg/types/scripted/SVGLength-px-expected.txt": [
    "96ef321212d43fdc4808262e16e92392fd4d941c",
    "support"
@@ -387118,33 +387345,25 @@
    "support"
   ],
   "url/README.md": [
-   "c617345fc667ed52a8e97027d121001d7a9edae0",
+   "17ffb158bda35ef8b55f8f7f5f084df2e0651bfc",
    "support"
   ],
   "url/a-element-origin-xhtml.xhtml": [
-   "56019fd2d3870324ba412e3e0c602bad3b90ef49",
+   "e46971a9bd9bbd1da7b8373fd4db4a1f7655b6e0",
    "testharness"
   ],
   "url/a-element-origin.html": [
-   "9e93740286ed4f6964b13861eedaf94705572d60",
+   "dca3c2a98527eaa828d98f28e1f619e0389a62bb",
    "testharness"
   ],
-  "url/a-element-origin.js": [
-   "db3ac8253d1d877c49e365f89eea0ed1a5bad32e",
-   "support"
-  ],
   "url/a-element-xhtml.xhtml": [
-   "3c85e56094317c6babc96bdc187ee66ee4f040cd",
+   "d538bb2755a6f0cf461d40c9ed5ca4ea3254d1d4",
    "testharness"
   ],
   "url/a-element.html": [
-   "f1e6c1192c181236eb9bd32ead4f42338d020577",
+   "17f7748607bd43c276d3b9013b5de42516aacc47",
    "testharness"
   ],
-  "url/a-element.js": [
-   "cf3fd382286fe89570e68e0d90131db35e03e6ef",
-   "support"
-  ],
   "url/data-uri-fragment-expected.txt": [
    "75c21b6444b4b4b67818a6052ee1ec8ce34ac370",
    "support"
@@ -387154,7 +387373,7 @@
    "testharness"
   ],
   "url/failure.html": [
-   "82c87b01a847f2821d1d71ea5e1c2ce8528f4deb",
+   "be435247e1df422dfd051e35aea241d8e6b35207",
    "testharness"
   ],
   "url/historical.any-expected.txt": [
@@ -387181,32 +387400,44 @@
    "6688da9074e0eee954db17d1c330e985cca02e6e",
    "support"
   ],
-  "url/setters_tests.json": [
+  "url/resources/a-element-origin.js": [
+   "831d8c67d797a206df6d46b0ef427fbde9c1e847",
+   "support"
+  ],
+  "url/resources/a-element.js": [
+   "add0f2682d43e98f57cdae10f4c1c3a2e7bb8ae0",
+   "support"
+  ],
+  "url/resources/setters_tests.json": [
    "7c9707c02714de9a17989ecc71775978e994ae8a",
    "support"
   ],
-  "url/toascii.json": [
+  "url/resources/toascii.json": [
    "e8f5d819b9b4608d730a0a601e16ac2dd6c2d134",
    "support"
   ],
+  "url/resources/urltestdata.json": [
+   "442c5f9d5faeb6752c8b33a04c73f3f3ba82ccb7",
+   "support"
+  ],
   "url/toascii.window-expected.txt": [
    "7c94aa4bb801c08e54c16be9c62dcde61d6f803c",
    "support"
   ],
   "url/toascii.window.js": [
-   "7166d07215b578c5d11d7ac831ddb47d0821155a",
+   "0b9d59d1900f3440a5e631a9488207c2947ebf69",
    "testharness"
   ],
   "url/url-constructor.html": [
-   "478523551e13b4066293fc2244972dd82b9bd87f",
+   "e1cc6dfc07040b019201dd7695b5171572f2fb8f",
    "testharness"
   ],
   "url/url-origin.html": [
-   "84a487b251a9f6dd320bf793050d1e43ae933ed9",
+   "c68cfe55de2330dce6b9c4fa40c0983a14e5c871",
    "testharness"
   ],
   "url/url-setters.html": [
-   "f9746a232f2047deb0bf0b5a73376a69b0ec14e2",
+   "46668877b10431168404c83af3e7c58c48940cfc",
    "testharness"
   ],
   "url/url-tojson-expected.txt": [
@@ -387265,10 +387496,6 @@
    "479e3fb9fc9eee208c492428c7032a96c70a5ae8",
    "testharness"
   ],
-  "url/urltestdata.json": [
-   "442c5f9d5faeb6752c8b33a04c73f3f3ba82ccb7",
-   "support"
-  ],
   "user-timing/OWNERS": [
    "94649180cc13aa981899b14b421551102a624332",
    "support"
@@ -387778,7 +388005,7 @@
    "support"
   ],
   "web-animations/animation-model/animation-types/property-types.js": [
-   "9f6d5f18913c02044cc06c300b924f387025c258",
+   "ecfe1d54d687bc6d0541b4a8c5ca9cf82c4d129e",
    "support"
   ],
   "web-animations/animation-model/animation-types/visibility.html": [
@@ -395622,7 +395849,7 @@
    "testharness"
   ],
   "workers/modules/dedicated-worker-import.html": [
-   "e74cf8f26b689fbcd57ff9aa7fa37eda4f46a678",
+   "0b839e87ae98ad1abf32216a2086334cbc011ac0",
    "testharness"
   ],
   "workers/modules/dedicated-worker-options-credentials.html": [
@@ -395657,6 +395884,10 @@
    "84b3339c3419e318803e51f46d7252d9e8ac183b",
    "support"
   ],
+  "workers/modules/resources/eval-dynamic-import-worker.js": [
+   "1bb31cf22c566d29f4d7bebca546fdd79ff3ec07",
+   "support"
+  ],
   "workers/modules/resources/export-on-dynamic-import-script.js": [
    "dbb6eaa13def20fd310c7aaafab3d3ef9fe99859",
    "support"
@@ -396437,10 +396668,6 @@
    "51dbf57791e367a8710145fbddb3da653604b031",
    "testharness"
   ],
-  "xhr/access-control-and-redirects-expected.txt": [
-   "2de8d1d9a6a0601850577b995a6be5c9de9d77db",
-   "support"
-  ],
   "xhr/access-control-and-redirects.htm": [
    "1a914f10c86a399fdb57f9f35fe0586904296d9b",
    "testharness"
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-block-size-vlr.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-block-size-vlr.html
index 4c8c13e..da02e759 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-block-size-vlr.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-block-size-vlr.html
@@ -6,62 +6,41 @@
 <link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#logical-to-physical">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="resources/style-check.js"></script>
+<script src="/resources/check-layout-th.js"></script>
 
 <style>
-div {
+.block {
   border: 1px solid #000;
   writing-mode: vertical-lr;
 }
-#div1 {
+#block1 {
   block-size: 40px;
   min-block-size: 50px;
   max-block-size: 100px;
 }
-#div2 {
+#block2 {
   block-size: 100px;
   min-block-size: 50px;
   max-block-size: 100px;
 }
-#div3 {
+#block3 {
   block-size: 120px;
   min-block-size: 50px;
   max-block-size: 100px;
 }
-#ref_div1 {
-  width: 40px;
-  min-width: 50px;
-  max-width: 100px;
-}
-#ref_div2 {
-  width: 100px;
-  min-width: 50px;
-  max-width: 100px;
-}
-#ref_div3 {
-  width: 120px;
-  min-width: 50px;
-  max-width: 100px;
-}
 
-p {
+.override {
   border: 1px solid #000;
   writing-mode: vertical-lr;
 }
-#p1 {
+#override1 {
   block-size: 100px;
   width: 50px;
 }
-#p2 {
+#override2 {
   width: 50px;
   block-size: 100px;
 }
-#ref_p1 {
-  width: 50px;
-}
-#ref_p2 {
-  width: 100px;
-}
 
 .table {
   border: 1px solid #000;
@@ -70,7 +49,6 @@
 }
 .tablecell {
   display: table-cell;
-  writing-mode: vertical-lr;
 }
 #table1_cell {
   block-size: 40px;
@@ -93,75 +71,52 @@
   inline-size: 100px;
   background-color: green;
 }
-#ref_table1_cell {
-  width: 40px;
-  min-width: 50px;
-  max-width: 100px;
-  height: 100px;
-  background-color: red;
-}
-#ref_table2_cell {
-  width: 100px;
-  min-width: 50px;
-  max-width: 100px;
-  height: 100px;
-  background-color: blue;
-}
-#ref_table3_cell {
-  width: 120px;
-  min-width: 50px;
-  max-width: 100px;
-  height: 100px;
-  background-color: green;
-}
 </style>
 
-<div id="div1"></div>
-<div id="div2"></div>
-<div id="div3"></div>
-<div id="ref_div1"></div>
-<div id="ref_div2"></div>
-<div id="ref_div3"></div>
+<div id="log"></div>
 
-<p id="p1"></div>
-<p id="p2"></div>
-<p id="ref_p1"></div>
-<p id="ref_p2"></div>
+<h3>Maximum and minimim block sizes in blocks with vertical-lr</h3>
+<div>
+  <p><code>block-size</code> &lt; <code>min-block-size</code></p>
+  <div class="block" id="block1" data-expected-client-width="50" data-expected-client-height="0"></div>
 
-<div class="table">
-  <div class="tablecell" id="table1_cell"></div>
+  <p><code>min-block-size</code> &lt; <code>block-size</code> &le; <code>max-block-size</code></p>
+  <div class="block" id="block2" data-expected-client-width="100" data-expected-client-height="0"></div>
+
+  <p><code>block-size</code> &gt; <code>max-block-size</code></p>
+  <div class="block" id="block3" data-expected-client-width="100" data-expected-client-height="0"></div>
 </div>
-<div class="table">
-  <div class="tablecell" id="table2_cell"></div>
+
+<h3>Overridance of <code>width</code> and <code>block-size</code> in vertical-lr</h3>
+<div>
+  <p>Check that <code>width</code> overrides <code>block-size</code></p>
+  <div class="override" id="override1" data-expected-client-width="50" data-expected-client-height="0"></div>
+
+  <p>Check that <code>block-size</code> overrides <code>width</code></p>
+  <div class="override" id="override2" data-expected-client-width="100" data-expected-client-height="0"></div>
 </div>
-<div class="table">
-  <div class="tablecell" id="table3_cell"></div>
-</div>
-<div class="table">
-  <div class="tablecell" id="ref_table1_cell"></div>
-</div>
-<div class="table">
-  <div class="tablecell" id="ref_table2_cell"></div>
-</div>
-<div class="table">
-  <div class="tablecell" id="ref_table3_cell"></div>
+
+<h3>Maximum and minimim block sizes in table cells with vertical-lr</h3>
+<div>
+  <p><code>block-size</code> &lt; <code>min-block-size</code></p>
+  <div class="table">
+    <div class="tablecell" id="table1_cell" data-expected-client-width="40" data-expected-client-height="100"></div>
+  </div>
+
+  <p><code>min-block-size</code> &lt; <code>block-size</code> &le; <code>max-block-size</code></p>
+  <div class="table">
+    <div class="tablecell" id="table2_cell" data-expected-client-width="100" data-expected-client-height="100"></div>
+  </div>
+
+  <p><code>block-size</code> &gt; <code>max-block-size</code></p>
+  <div class="table">
+    <div class="tablecell" id="table3_cell" data-expected-client-width="120" data-expected-client-height="100"></div>
+  </div>
 </div>
 
 <script>
-test(function () {
-  assert_true(compareWidthHeight("div1", "ref_div1"));
-  assert_true(compareWidthHeight("div2", "ref_div2"));
-  assert_true(compareWidthHeight("div3", "ref_div3"));
-}, "Check that block-size < min-block-size or min-block-size < block-size <= max-block-size or block-size > max-block-size in vertical-lr");
-
-test(function () {
-  assert_true(compareWidthHeight("p1", "ref_p1"));
-  assert_true(compareWidthHeight("p2", "ref_p2"));
-}, "Check that width override block-size and vice versa in vertical-lr");
-
-test(function () {
-  assert_true(compareWidthHeight("table1_cell", "ref_table1_cell"));
-  assert_true(compareWidthHeight("table2_cell", "ref_table2_cell"));
-  assert_true(compareWidthHeight("table3_cell", "ref_table3_cell"));
-}, "Check that block-size < min-block-size or min-block-size < block-size <= max-block-size or block-size > max-block-size in table vertical-lr");
+checkLayout(".block", false);
+checkLayout(".override", false);
+checkLayout(".tablecell", false);
+done();
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-block-size.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-block-size.html
index 66cb318..8d90c07 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-block-size.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-block-size.html
@@ -6,60 +6,43 @@
 <link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#logical-to-physical">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="resources/style-check.js"></script>
+<script src="/resources/check-layout-th.js"></script>
 
 <style>
-div {
+.tests {
+  width: 600px;
+}
+
+.block {
   border: 1px solid #000;
 }
-#div1 {
+#block1 {
   block-size: 40px;
   min-block-size: 50px;
   max-block-size: 100px;
 }
-#div2 {
+#block2 {
   block-size: 100px;
   min-block-size: 50px;
   max-block-size: 100px;
 }
-#div3 {
+#block3 {
   block-size: 120px;
   min-block-size: 50px;
   max-block-size: 100px;
 }
-#ref_div1 {
-  height: 40px;
-  min-height: 50px;
-  max-height: 100px;
-}
-#ref_div2 {
-  height: 100px;
-  min-height: 50px;
-  max-height: 100px;
-}
-#ref_div3 {
-  height: 120px;
-  min-height: 50px;
-  max-height: 100px;
-}
 
-p {
+.override {
   border: 1px solid #000;
 }
-#p1 {
+#override1 {
   block-size: 100px;
   height: 50px;
 }
-#p2 {
+#override2 {
   height: 50px;
   block-size: 100px;
 }
-#ref_p1 {
-  height: 50px;
-}
-#ref_p2 {
-  height: 100px;
-}
 
 .table {
   border: 1px solid #000;
@@ -89,75 +72,52 @@
   inline-size: 100px;
   background-color: green;
 }
-#ref_table1_cell {
-  height: 40px;
-  min-height: 50px;
-  max-height: 100px;
-  width: 100px;
-  background-color: red;
-}
-#ref_table2_cell {
-  height: 100px;
-  min-height: 50px;
-  max-height: 100px;
-  width: 100px;
-  background-color: blue;
-}
-#ref_table3_cell {
-  height: 120px;
-  min-height: 50px;
-  max-height: 100px;
-  width: 100px;
-  background-color: green;
-}
 </style>
 
-<div id="div1"></div>
-<div id="div2"></div>
-<div id="div3"></div>
-<div id="ref_div1"></div>
-<div id="ref_div2"></div>
-<div id="ref_div3"></div>
+<div id="log"></div>
 
-<p id="p1"></div>
-<p id="p2"></div>
-<p id="ref_p1"></div>
-<p id="ref_p2"></div>
+<h3>Maximum and minimim block sizes in blocks</h3>
+<div class="tests">
+  <p><code>block-size</code> &lt; <code>min-block-size</code></p>
+  <div class="block" id="block1" data-expected-width="600" data-expected-client-height="50"></div>
 
-<div class="table">
-  <div class="tablecell" id="table1_cell"></div>
+  <p><code>min-block-size</code> &lt; <code>block-size</code> &le; <code>max-block-size</code></p>
+  <div class="block" id="block2" data-expected-width="600" data-expected-client-height="100"></div>
+
+  <p><code>block-size</code> &gt; <code>max-block-size</code></p>
+  <div class="block" id="block3" data-expected-width="600" data-expected-client-height="100"></div>
 </div>
-<div class="table">
-  <div class="tablecell" id="table2_cell"></div>
+
+<h3>Overridance of <code>height</code> and <code>block-size</code></h3>
+<div class="tests">
+  <p>Check that <code>height</code> overrides <code>block-size</code></p>
+  <div class="override" id="override1" data-expected-width="600" data-expected-client-height="50"></div>
+
+  <p>Check that <code>block-size</code> overrides <code>height</code></p>
+  <div class="override" id="override2" data-expected-width="600" data-expected-client-height="100"></div>
 </div>
-<div class="table">
-  <div class="tablecell" id="table3_cell"></div>
-</div>
-<div class="table">
-  <div class="tablecell" id="ref_table1_cell"></div>
-</div>
-<div class="table">
-  <div class="tablecell" id="ref_table2_cell"></div>
-</div>
-<div class="table">
-  <div class="tablecell" id="ref_table3_cell"></div>
+
+<h3>Maximum and minimim block sizes in table cells</h3>
+<div class="tests">
+  <p><code>block-size</code> &lt; <code>min-block-size</code></p>
+  <div class="table">
+    <div class="tablecell" id="table1_cell" data-expected-client-width="100" data-expected-client-height="40"></div>
+  </div>
+
+  <p><code>min-block-size</code> &lt; <code>block-size</code> &le; <code>max-block-size</code></p>
+  <div class="table">
+    <div class="tablecell" id="table2_cell" data-expected-client-width="100" data-expected-client-height="100"></div>
+  </div>
+
+  <p><code>block-size</code> &gt; <code>max-block-size</code></p>
+  <div class="table">
+    <div class="tablecell" id="table3_cell" data-expected-client-width="100" data-expected-client-height="120"></div>
+  </div>
 </div>
 
 <script>
-test(function () {
-  assert_true(compareWidthHeight("div1", "ref_div1"));
-  assert_true(compareWidthHeight("div2", "ref_div2"));
-  assert_true(compareWidthHeight("div3", "ref_div3"));
-}, "Check that block-size < min-block-size or min-block-size < block-size <= max-block-size or block-size > max-block-size");
-
-test(function () {
-  assert_true(compareWidthHeight("p1", "ref_p1"));
-  assert_true(compareWidthHeight("p2", "ref_p2"));
-}, "Check that height override block-size and vice versa");
-
-test(function () {
-  assert_true(compareWidthHeight("table1_cell", "ref_table1_cell"));
-  assert_true(compareWidthHeight("table2_cell", "ref_table2_cell"));
-  assert_true(compareWidthHeight("table3_cell", "ref_table3_cell"));
-}, "Check that block-size < min-block-size or min-block-size < block-size <= max-block-size or block-size > max-block-size in table");
+checkLayout(".block", false);
+checkLayout(".override", false);
+checkLayout(".tablecell", false);
+done();
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-inline-size-vlr.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-inline-size-vlr.html
index 09e17009..0a53dbbc 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-inline-size-vlr.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-inline-size-vlr.html
@@ -6,62 +6,41 @@
 <link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#logical-to-physical">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="resources/style-check.js"></script>
+<script src="/resources/check-layout-th.js"></script>
 
 <style>
-div {
+.block {
   border: 1px solid #000;
   writing-mode: vertical-lr;
 }
-#div1 {
+#block1 {
   inline-size: 40px;
   min-inline-size: 50px;
   max-inline-size: 100px;
 }
-#div2 {
+#block2 {
   inline-size: 100px;
   min-inline-size: 50px;
   max-inline-size: 100px;
 }
-#div3 {
+#block3 {
   inline-size: 120px;
   min-inline-size: 50px;
   max-inline-size: 100px;
 }
-#ref_div1 {
-  height: 40px;
-  min-height: 50px;
-  max-height: 100px;
-}
-#ref_div2 {
-  height: 100px;
-  min-height: 50px;
-  max-height: 100px;
-}
-#ref_div3 {
-  height: 120px;
-  min-height: 50px;
-  max-height: 100px;
-}
 
-p {
+.override {
   border: 1px solid #000;
   writing-mode: vertical-lr;
 }
-#p1 {
+#override1 {
   inline-size: 100px;
   height: 50px;
 }
-#p2 {
+#override2 {
   height: 50px;
   inline-size: 100px;
 }
-#ref_p1 {
-  height: 50px;
-}
-#ref_p2 {
-  height: 100px;
-}
 
 .table {
   border: 1px solid #000;
@@ -70,7 +49,6 @@
 }
 .tablecell {
   display: table-cell;
-  writing-mode: vertical-lr;
 }
 #table1_cell {
   inline-size: 40px;
@@ -93,75 +71,52 @@
   block-size: 100px;
   background-color: green;
 }
-#ref_table1_cell {
-  height: 40px;
-  min-height: 50px;
-  max-height: 100px;
-  width: 100px;
-  background-color: red;
-}
-#ref_table2_cell {
-  height: 100px;
-  min-height: 50px;
-  max-height: 100px;
-  width: 100px;
-  background-color: blue;
-}
-#ref_table3_cell {
-  height: 120px;
-  min-height: 50px;
-  max-height: 100px;
-  width: 100px;
-  background-color: green;
-}
 </style>
 
-<div id="div1"></div>
-<div id="div2"></div>
-<div id="div3"></div>
-<div id="ref_div1"></div>
-<div id="ref_div2"></div>
-<div id="ref_div3"></div>
+<div id="log"></div>
 
-<p id="p1"></div>
-<p id="p2"></div>
-<p id="ref_p1"></div>
-<p id="ref_p2"></div>
+<h3>Maximum and minimim inline sizes in blocks with vertical-lr</h3>
+<div>
+  <p><code>inline-size</code> &lt; <code>min-inline-size</code></p>
+  <div class="block" id="block1" data-expected-client-width="0" data-expected-client-height="50"></div>
 
-<div class="table">
-  <div class="tablecell" id="table1_cell"></div>
+  <p><code>min-inline-size</code> &lt; <code>inline-size</code> &le; <code>max-inline-size</code></p>
+  <div class="block" id="block2" data-expected-client-width="0" data-expected-client-height="100"></div>
+
+  <p><code>inline-size</code> &gt; <code>max-inline-size</code></p>
+  <div class="block" id="block3" data-expected-client-width="0" data-expected-client-height="100"></div>
 </div>
-<div class="table">
-  <div class="tablecell" id="table2_cell"></div>
+
+<h3>Overridance of <code>height</code> and <code>inline-size</code> in vertical-lr</h3>
+<div>
+  <p>Check that <code>height</code> overrides <code>inline-size</code></p>
+  <div class="override" id="override1" data-expected-client-width="0" data-expected-client-height="50"></div>
+
+  <p>Check that <code>inline-size</code> overrides <code>height</code></p>
+  <div class="override" id="override2" data-expected-client-width="0" data-expected-client-height="100"></div>
 </div>
-<div class="table">
-  <div class="tablecell" id="table3_cell"></div>
-</div>
-<div class="table">
-  <div class="tablecell" id="ref_table1_cell"></div>
-</div>
-<div class="table">
-  <div class="tablecell" id="ref_table2_cell"></div>
-</div>
-<div class="table">
-  <div class="tablecell" id="ref_table3_cell"></div>
+
+<h3>Maximum and minimim inline sizes in table cells with vertical-lr</h3>
+<div>
+  <p><code>inline-size</code> &lt; <code>min-inline-size</code></p>
+  <div class="table">
+    <div class="tablecell" id="table1_cell" data-expected-client-width="100" data-expected-client-height="50"></div>
+  </div>
+
+  <p><code>min-inline-size</code> &lt; <code>inline-size</code> &le; <code>max-inline-size</code></p>
+  <div class="table">
+    <div class="tablecell" id="table2_cell" data-expected-client-width="100" data-expected-client-height="100"></div>
+  </div>
+
+  <p><code>inline-size</code> &gt; <code>max-inline-size</code></p>
+  <div class="table">
+    <div class="tablecell" id="table3_cell" data-expected-client-width="100" data-expected-client-height="100"></div>
+  </div>
 </div>
 
 <script>
-test(function () {
-  assert_true(compareWidthHeight("div1", "ref_div1"));
-  assert_true(compareWidthHeight("div2", "ref_div2"));
-  assert_true(compareWidthHeight("div3", "ref_div3"));
-}, "Check that inline-size < min-inline-size or min-inline-size < inline-size <= max-inline-size or inline-size > max-inline-size in vertical-lr");
-
-test(function () {
-  assert_true(compareWidthHeight("p1", "ref_p1"));
-  assert_true(compareWidthHeight("p2", "ref_p2"));
-}, "Check that height override inline-size and vice versa in vertical-lr");
-
-test(function () {
-  assert_true(compareWidthHeight("table1_cell", "ref_table1_cell"));
-  assert_true(compareWidthHeight("table2_cell", "ref_table2_cell"));
-  assert_true(compareWidthHeight("table3_cell", "ref_table3_cell"));
-}, "Check that inline-size < min-inline-size or min-inline-size < inline-size <= max-inline-size or inline-size > max-inline-size in table vertical-lr");
+checkLayout(".block", false);
+checkLayout(".override", false);
+checkLayout(".tablecell", false);
+done();
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-inline-size.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-inline-size.html
index 32ede09..3ec1699 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-inline-size.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/logicalprops-inline-size.html
@@ -6,60 +6,39 @@
 <link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#logical-to-physical">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="resources/style-check.js"></script>
+<script src="/resources/check-layout-th.js"></script>
 
 <style>
-div {
+.block {
   border: 1px solid #000;
 }
-#div1 {
+#block1 {
   inline-size: 40px;
   min-inline-size: 50px;
   max-inline-size: 100px;
 }
-#div2 {
+#block2 {
   inline-size: 100px;
   min-inline-size: 50px;
   max-inline-size: 100px;
 }
-#div3 {
+#block3 {
   inline-size: 120px;
   min-inline-size: 50px;
   max-inline-size: 100px;
 }
-#ref_div1 {
-  width: 40px;
-  min-width: 50px;
-  max-width: 100px;
-}
-#ref_div2 {
-  width: 100px;
-  min-width: 50px;
-  max-width: 100px;
-}
-#ref_div3 {
-  width: 120px;
-  min-width: 50px;
-  max-width: 100px;
-}
 
-p {
+.override {
   border: 1px solid #000;
 }
-#p1 {
+#override1 {
   inline-size: 100px;
   width: 50px;
 }
-#p2 {
+#override2 {
   width: 50px;
   inline-size: 100px;
 }
-#ref_p1 {
-  width: 50px;
-}
-#ref_p2 {
-  width: 100px;
-}
 
 .table {
   border: 1px solid #000;
@@ -89,75 +68,52 @@
   block-size: 100px;
   background-color: green;
 }
-#ref_table1_cell {
-  width: 40px;
-  min-width: 50px;
-  max-width: 100px;
-  height: 100px;
-  background-color: red;
-}
-#ref_table2_cell {
-  width: 100px;
-  min-width: 50px;
-  max-width: 100px;
-  height: 100px;
-  background-color: blue;
-}
-#ref_table3_cell {
-  width: 120px;
-  min-width: 50px;
-  max-width: 100px;
-  height: 100px;
-  background-color: green;
-}
 </style>
 
-<div id="div1"></div>
-<div id="div2"></div>
-<div id="div3"></div>
-<div id="ref_div1"></div>
-<div id="ref_div2"></div>
-<div id="ref_div3"></div>
+<div id="log"></div>
 
-<p id="p1"></div>
-<p id="p2"></div>
-<p id="ref_p1"></div>
-<p id="ref_p2"></div>
+<h3>Maximum and minimim inline sizes in blocks</h3>
+<div>
+  <p><code>inline-size</code> &lt; <code>min-inline-size</code></p>
+  <div class="block" id="block1" data-expected-client-width="50" data-expected-client-height="0"></div>
 
-<div class="table">
-  <div class="tablecell" id="table1_cell"></div>
+  <p><code>min-inline-size</code> &lt; <code>inline-size</code> &le; <code>max-inline-size</code></p>
+  <div class="block" id="block2" data-expected-client-width="100" data-expected-client-height="0"></div>
+
+  <p><code>inline-size</code> &gt; <code>max-inline-size</code></p>
+  <div class="block" id="block3" data-expected-client-width="100" data-expected-client-height="0"></div>
 </div>
-<div class="table">
-  <div class="tablecell" id="table2_cell"></div>
+
+<h3>Overridance of <code>width</code> and <code>inline-size</code></h3>
+<div>
+  <p>Check that <code>width</code> overrides <code>inline-size</code></p>
+  <div class="override" id="override1" data-expected-client-width="50" data-expected-client-height="0"></div>
+
+  <p>Check that <code>inline-size</code> overrides <code>width</code></p>
+  <div class="override" id="override2" data-expected-client-width="100" data-expected-client-height="0"></div>
 </div>
-<div class="table">
-  <div class="tablecell" id="table3_cell"></div>
-</div>
-<div class="table">
-  <div class="tablecell" id="ref_table1_cell"></div>
-</div>
-<div class="table">
-  <div class="tablecell" id="ref_table2_cell"></div>
-</div>
-<div class="table">
-  <div class="tablecell"  id="ref_table3_cell"></div>
+
+<h3>Maximum and minimim inline sizes in table cells</h3>
+<div>
+  <p><code>inline-size</code> &lt; <code>min-inline-size</code></p>
+  <div class="table">
+    <div class="tablecell" id="table1_cell" data-expected-client-width="50" data-expected-client-height="100"></div>
+  </div>
+
+  <p><code>min-inline-size</code> &lt; <code>inline-size</code> &le; <code>max-inline-size</code></p>
+  <div class="table">
+    <div class="tablecell" id="table2_cell" data-expected-client-width="100" data-expected-client-height="100"></div>
+  </div>
+
+  <p><code>inline-size</code> &gt; <code>max-inline-size</code></p>
+  <div class="table">
+    <div class="tablecell" id="table3_cell" data-expected-client-width="100" data-expected-client-height="100"></div>
+  </div>
 </div>
 
 <script>
-test(function () {
-  assert_true(compareWidthHeight("div1", "ref_div1"));
-  assert_true(compareWidthHeight("div2", "ref_div2"));
-  assert_true(compareWidthHeight("div3", "ref_div3"));
-}, "Check that inline-size < min-inline-size or min-inline-size < inline-size <= max-inline-size or inline-size > max-inline-size");
-
-test(function () {
-  assert_true(compareWidthHeight("p1", "ref_p1"));
-  assert_true(compareWidthHeight("p2", "ref_p2"));
-}, "Check that width override inline-size and vice versa");
-
-test(function () {
-  assert_true(compareWidthHeight("table1_cell", "ref_table1_cell"));
-  assert_true(compareWidthHeight("table2_cell", "ref_table2_cell"));
-  assert_true(compareWidthHeight("table3_cell", "ref_table3_cell"));
-}, "Check that inline-size < min-inline-size or min-inline-size < inline-size <= max-inline-size or inline-size > max-inline-size in table");
+checkLayout(".block", false);
+checkLayout(".override", false);
+checkLayout(".tablecell", false);
+done();
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/resources/style-check.js b/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/resources/style-check.js
deleted file mode 100644
index cd129fd5..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/css/css-logical/resources/style-check.js
+++ /dev/null
@@ -1,9 +0,0 @@
-"use strict";
-function compareWidthHeight(id1, id2) {
-  var element1 = document.getElementById(id1);
-  var style1 = getComputedStyle(element1);
-  var element2 = document.getElementById(id2);
-  var style2 = getComputedStyle(element2);
-  return (style1.width == style2.width) &&
-      (style1.height == style2.height)
-}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-shadow-parts/invalidation-change-part-name.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-shadow-parts/invalidation-change-part-name.html
new file mode 100644
index 0000000..7e7a310f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-shadow-parts/invalidation-change-part-name.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>CSS Shadow Parts - Invalidation Change Part Name</title>
+    <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+    <link href="http://www.google.com/" rel="author" title="Google">
+    <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="support/shadow-helper.js"></script>
+  </head>
+  <body>
+    <style>#c-e::part(partp) { color: red; }</style>
+    <script>installCustomElement("custom-element", "custom-element-template");</script>
+    <template id="custom-element-template">
+      <style>span { color: green; }</style>
+      <span id="part" part="partp">This text</span>
+    </template>
+    The following text should be green:
+    <div><custom-element id="c-e"></custom-element></div>
+    <script type="text/javascript">
+      "use strict";
+      test(function() {
+        var part = getElementByShadowIds(document, ["c-e", "part"]);
+        var before = window.getComputedStyle(part).color;
+        part.setAttribute("part", "new-partp");
+        var after = window.getComputedStyle(part).color;
+        assert_not_equals(before, after);
+      }, "Part in selected host changed color");
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-shadow-parts/invalidation-complex-selector.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-shadow-parts/invalidation-complex-selector.html
new file mode 100644
index 0000000..e1f10e5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-shadow-parts/invalidation-complex-selector.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>CSS Shadow Parts - Invalidation Complex Selector</title>
+    <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+    <link href="http://www.google.com/" rel="author" title="Google">
+    <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="support/shadow-helper.js"></script>
+  </head>
+  <body>
+    <style>#elem #c-e::part(partp) { color: red; }</style>
+    <script>installCustomElement("custom-element", "custom-element-template");</script>
+    <template id="custom-element-template">
+      <style>span { color: green; }</style>
+      <span id="part" part="partp">This text</span>
+    </template>
+    The following text should be green:
+    <div id="elem"><custom-element id="c-e"></custom-element></div>
+    <script type="text/javascript">
+      "use strict";
+      test(function() {
+        var part = getElementByShadowIds(document, ["c-e", "part"]);
+        var before = window.getComputedStyle(part).color;
+        document.getElementById("elem").setAttribute("id", "new-elem");
+        var after = window.getComputedStyle(part).color;
+        assert_not_equals(before, after);
+      }, "Part in selected host changed color");
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/range/general.any.js b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/general.any.js
new file mode 100644
index 0000000..2e49ed1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/general.any.js
@@ -0,0 +1,60 @@
+// Helpers that return headers objects with a particular guard
+function headersGuardNone(fill) {
+  if (fill) return new Headers(fill);
+  return new Headers();
+}
+
+function headersGuardResponse(fill) {
+  const opts = {};
+  if (fill) opts.headers = fill;
+  return new Response('', opts).headers;
+}
+
+function headersGuardRequest(fill) {
+  const opts = {};
+  if (fill) opts.headers = fill;
+  return new Request('./', opts).headers;
+}
+
+function headersGuardRequestNoCors(fill) {
+  const opts = { mode: 'no-cors' };
+  if (fill) opts.headers = fill;
+  return new Request('./', opts).headers;
+}
+
+const headerGuardTypes = [
+  ['none', headersGuardNone],
+  ['response', headersGuardResponse],
+  ['request', headersGuardRequest]
+];
+
+for (const [guardType, createHeaders] of headerGuardTypes) {
+  test(() => {
+    // There are three ways to set headers.
+    // Filling, appending, and setting. Test each:
+    let headers = createHeaders({ Range: 'foo' });
+    assert_equals(headers.get('Range'), 'foo');
+
+    headers = createHeaders();
+    headers.append('Range', 'foo');
+    assert_equals(headers.get('Range'), 'foo');
+
+    headers = createHeaders();
+    headers.set('Range', 'foo');
+    assert_equals(headers.get('Range'), 'foo');
+  }, `Range header setting allowed for guard type: ${guardType}`);
+}
+
+test(() => {
+  let headers = headersGuardRequestNoCors({ Range: 'foo' });
+  assert_false(headers.has('Range'));
+
+  headers = headersGuardRequestNoCors();
+  headers.append('Range', 'foo');
+  assert_false(headers.has('Range'));
+
+  headers = headersGuardRequestNoCors();
+  headers.set('Range', 'foo');
+  assert_false(headers.has('Range'));
+}, `Privileged header not allowed for guard type: request-no-cors`);
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/range/partial-script.window.js b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/partial-script.window.js
new file mode 100644
index 0000000..36b4bba
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/partial-script.window.js
@@ -0,0 +1,7 @@
+// META: script=resources/utils.js
+
+// It's weird that browsers do this, but it should continue to work.
+promise_test(async t => {
+  await loadScript('resources/partial-script.py?pretend-offset=90000');
+  assert_true(self.scriptExecuted);
+}, `Script executed from partial response`);
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/basic.html b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/basic.html
new file mode 100644
index 0000000..0e76edd6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/basic.html
@@ -0,0 +1 @@
+<!DOCTYPE html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/long-wav.py b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/long-wav.py
new file mode 100644
index 0000000..d510767
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/long-wav.py
@@ -0,0 +1,111 @@
+"""
+This generates a 30 minute silent wav, and is capable of
+responding to Range requests.
+"""
+import time
+import re
+import struct
+
+
+def create_wav_header(sample_rate, bit_depth, channels, duration):
+    bytes_per_sample = bit_depth / 8
+    block_align = bytes_per_sample * channels
+    byte_rate = sample_rate * block_align
+    sub_chunk_2_size = duration * byte_rate
+
+    data = b''
+    # ChunkID
+    data += b'RIFF'
+    # ChunkSize
+    data += struct.pack('<L', 36 + sub_chunk_2_size)
+    # Format
+    data += b'WAVE'
+    # Subchunk1ID
+    data += b'fmt '
+    # Subchunk1Size
+    data += struct.pack('<L', 16)
+    # AudioFormat
+    data += struct.pack('<H', 1)
+    # NumChannels
+    data += struct.pack('<H', channels)
+    # SampleRate
+    data += struct.pack('<L', sample_rate)
+    # ByteRate
+    data += struct.pack('<L', byte_rate)
+    # BlockAlign
+    data += struct.pack('<H', block_align)
+    # BitsPerSample
+    data += struct.pack('<H', bit_depth)
+    # Subchunk2ID
+    data += b'data'
+    # Subchunk2Size
+    data += struct.pack('<L', sub_chunk_2_size)
+
+    return data
+
+
+def main(request, response):
+    response.headers.set("Content-Type", "audio/wav")
+    response.headers.set("Accept-Ranges", "bytes")
+    response.headers.set("Cache-Control", "no-cache")
+
+    range_header = request.headers.get('Range', '')
+    range_received_key = request.GET.first('range-received-key', '')
+
+    if range_received_key and range_header:
+        # This is later collected using stash-take.py
+        request.stash.put(range_received_key, 'range-header-received', '/fetch/range/')
+
+    # Audio details
+    sample_rate = 8000
+    bit_depth = 8
+    channels = 1
+    duration = 60 * 5
+
+    total_length = (sample_rate * bit_depth * channels * duration) / 8
+    bytes_remaining_to_send = total_length
+    initial_write = ''
+
+    if range_header:
+        response.status = 206
+        start, end = re.search(r'^bytes=(\d*)-(\d*)$', range_header).groups()
+
+        start = int(start)
+        end = int(end) if end else 0
+
+        if end:
+            bytes_remaining_to_send = (end + 1) - start
+        else:
+            bytes_remaining_to_send = total_length - start
+
+        wav_header = create_wav_header(sample_rate, bit_depth, channels, duration)
+
+        if start < len(wav_header):
+            initial_write = wav_header[start:]
+
+            if bytes_remaining_to_send < len(initial_write):
+                initial_write = initial_write[0:bytes_remaining_to_send]
+
+        content_range = "bytes {}-{}/{}".format(start, end or total_length - 1, total_length)
+
+        response.headers.set("Content-Range", content_range)
+    else:
+        initial_write = create_wav_header(sample_rate, bit_depth, channels, duration)
+
+    response.headers.set("Content-Length", bytes_remaining_to_send)
+
+    response.write_status_headers()
+    response.writer.write(initial_write)
+
+    bytes_remaining_to_send -= len(initial_write)
+
+    while bytes_remaining_to_send > 0:
+        if not response.writer.flush():
+            break
+
+        to_send = b'\x00' * min(bytes_remaining_to_send, sample_rate)
+        bytes_remaining_to_send -= len(to_send)
+
+        response.writer.write(to_send)
+        # Throttle the stream
+        time.sleep(0.5)
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/partial-script.py b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/partial-script.py
new file mode 100644
index 0000000..5b642c6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/partial-script.py
@@ -0,0 +1,30 @@
+"""
+This generates a partial response containing valid JavaScript.
+"""
+
+
+def main(request, response):
+    require_range = request.GET.first('require-range', '')
+    pretend_offset = int(request.GET.first('pretend-offset', '0'))
+    range_header = request.headers.get('Range', '')
+
+    if require_range and not range_header:
+        response.set_error(412, "Range header required")
+        response.write()
+        return
+
+    response.headers.set("Content-Type", "text/plain")
+    response.headers.set("Accept-Ranges", "bytes")
+    response.headers.set("Cache-Control", "no-cache")
+    response.status = 206
+
+    to_send = 'self.scriptExecuted = true;'
+    length = len(to_send)
+
+    content_range = "bytes {}-{}/{}".format(
+        pretend_offset, pretend_offset + length - 1, pretend_offset + length)
+
+    response.headers.set("Content-Range", content_range)
+    response.headers.set("Content-Length", length)
+
+    response.content = to_send
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/range-sw.js b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/range-sw.js
new file mode 100644
index 0000000..1dfee58
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/range-sw.js
@@ -0,0 +1,142 @@
+importScripts('/resources/testharness.js');
+
+setup({ explicit_done: true });
+
+function assert_range_request(request, expectedRangeHeader, name) {
+  assert_equals(request.headers.get('Range'), expectedRangeHeader, name);
+}
+
+async function broadcast(msg) {
+  for (const client of await clients.matchAll()) {
+    client.postMessage(msg);
+  }
+}
+
+addEventListener('fetch', event => {
+  /** @type Request */
+  const request = event.request;
+  const url = new URL(request.url);
+  const action = url.searchParams.get('action');
+
+  switch (action) {
+    case 'range-header-filter-test':
+      rangeHeaderFilterTest(request);
+      return;
+    case 'range-header-passthrough-test':
+      rangeHeaderPassthroughTest(event);
+      return;
+    case 'store-ranged-response':
+      storeRangedResponse(event);
+      return;
+    case 'use-stored-ranged-response':
+      useStoredRangeResponse(event);
+      return;
+  }
+});
+
+/**
+ * @param {Request} request
+ */
+function rangeHeaderFilterTest(request) {
+  const rangeValue = request.headers.get('Range');
+
+  test(() => {
+    assert_range_request(new Request(request), rangeValue, `Untampered`);
+    assert_range_request(new Request(request, {}), rangeValue, `Untampered (no init props set)`);
+    assert_range_request(new Request(request, { __foo: 'bar' }), rangeValue, `Untampered (only invalid props set)`);
+    assert_range_request(new Request(request, { mode: 'cors' }), rangeValue, `More permissive mode`);
+    assert_range_request(request.clone(), rangeValue, `Clone`);
+  }, "Range headers correctly preserved");
+
+  test(() => {
+    assert_range_request(new Request(request, { headers: { Range: 'foo' } }), null, `Tampered - range header set`);
+    assert_range_request(new Request(request, { headers: {} }), null, `Tampered - empty headers set`);
+    assert_range_request(new Request(request, { mode: 'no-cors' }), null, `Tampered – mode set`);
+    assert_range_request(new Request(request, { cache: 'no-cache' }), null, `Tampered – cache mode set`);
+  }, "Range headers correctly removed");
+
+  test(() => {
+    let headers;
+
+    headers = new Request(request).headers;
+    headers.delete('does-not-exist');
+    assert_equals(headers.get('Range'), rangeValue, `Preserved if no header actually removed`);
+
+    headers = new Request(request).headers;
+    headers.append('foo', 'bar');
+    assert_equals(headers.get('Range'), rangeValue, `Preserved if silent-failure on append (due to request-no-cors guard)`);
+
+    headers = new Request(request).headers;
+    headers.set('foo', 'bar');
+    assert_equals(headers.get('Range'), rangeValue, `Preserved if silent-failure on set (due to request-no-cors guard)`);
+
+    headers = new Request(request).headers;
+    headers.append('Range', 'foo');
+    assert_equals(headers.get('Range'), rangeValue, `Preserved if silent-failure on append (due to request-no-cors guard)`);
+
+    headers = new Request(request).headers;
+    headers.set('Range', 'foo');
+    assert_equals(headers.get('Range'), rangeValue, `Preserved if silent-failure on set (due to request-no-cors guard)`);
+
+    headers = new Request(request).headers;
+    headers.append('Accept', 'whatever');
+    assert_equals(headers.get('Range'), null, `Stripped if header successfully appended`);
+
+    headers = new Request(request).headers;
+    headers.set('Accept', 'whatever');
+    assert_equals(headers.get('Range'), null, `Stripped if header successfully set`);
+
+    headers = new Request(request).headers;
+    headers.delete('Accept');
+    assert_equals(headers.get('Range'), null, `Stripped if header successfully deleted`);
+
+    headers = new Request(request).headers;
+    headers.delete('Range');
+    assert_equals(headers.get('Range'), null, `Stripped if range header successfully deleted`);
+  }, "Headers correctly filtered");
+
+  done();
+}
+
+function rangeHeaderPassthroughTest(event) {
+  /** @type Request */
+  const request = event.request;
+  const url = new URL(request.url);
+  const key = url.searchParams.get('range-received-key');
+
+  event.waitUntil(new Promise(resolve => {
+    promise_test(async () => {
+      await fetch(event.request);
+      const response = await fetch('stash-take.py?key=' + key);
+      assert_equals(await response.json(), '"range-header-received"');
+      resolve();
+    }, `Include range header in network request`);
+
+    done();
+  }));
+
+  // Just send back any response, it isn't important for the test.
+  event.respondWith(new Response(''));
+}
+
+let storedRangeResponseP;
+
+function storeRangedResponse(event) {
+  /** @type Request */
+  const request = event.request;
+  const id = new URL(request.url).searchParams.get('id');
+
+  storedRangeResponseP = fetch(event.request);
+  broadcast({ id });
+
+  // Just send back any response, it isn't important for the test.
+  event.respondWith(new Response(''));
+}
+
+function useStoredRangeResponse(event) {
+  event.respondWith(async function() {
+    const response = await storedRangeResponseP;
+    if (!response) throw Error("Expected stored range response");
+    return response.clone();
+  }());
+}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/stash-take.py b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/stash-take.py
new file mode 100644
index 0000000..4ec1fe5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/stash-take.py
@@ -0,0 +1,7 @@
+from wptserve.handlers import json_handler
+
+
+@json_handler
+def main(request, response):
+    key = request.GET.first("key")
+    return request.server.stash.take(key, '/fetch/range/')
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/utils.js b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/utils.js
new file mode 100644
index 0000000..567f231
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/resources/utils.js
@@ -0,0 +1,9 @@
+function loadScript(url, { doc = document }={}) {
+  return new Promise((resolve, reject) => {
+    const script = doc.createElement('script');
+    script.onload = () => resolve();
+    script.onerror = () => reject(Error("Script load failed"));
+    script.src = url;
+    doc.body.appendChild(script);
+  })
+}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/range/sw.https.window-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/sw.https.window-expected.txt
new file mode 100644
index 0000000..39b2ca4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/sw.https.window-expected.txt
@@ -0,0 +1,11 @@
+This is a testharness.js-based test.
+PASS Defer range header filter tests to service worker
+PASS Defer range header passthrough tests to service worker
+FAIL Ranged response not allowed following no-cors ranged request assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL Non-opaque ranged response executed promise_test: Unhandled rejection with value: object "Error: Script load failed"
+FAIL Range headers correctly preserved assert_equals: Untampered expected (string) "bytes=0-" but got (object) null
+PASS Range headers correctly removed
+FAIL Headers correctly filtered assert_equals: Preserved if no header actually removed expected (string) "bytes=0-" but got (object) null
+FAIL Include range header in network request assert_equals: expected (string) "\"range-header-received\"" but got (object) null
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/range/sw.https.window.js b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/sw.https.window.js
new file mode 100644
index 0000000..aa3d2c47
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/range/sw.https.window.js
@@ -0,0 +1,128 @@
+// META: script=../../../service-workers/service-worker/resources/test-helpers.sub.js
+// META: script=/common/utils.js
+// META: script=/common/get-host-info.sub.js
+// META: script=resources/utils.js
+
+const { REMOTE_HOST } = get_host_info();
+const SCOPE = 'resources/basic.html' + Math.random();
+
+function appendAudio(document, url) {
+  const audio = document.createElement('audio');
+  audio.muted = true;
+  audio.src = url;
+  audio.preload = true;
+  document.body.appendChild(audio);
+}
+
+async function cleanup() {
+  for (const iframe of document.querySelectorAll('.test-iframe')) {
+    iframe.parentNode.removeChild(iframe);
+  }
+
+  const reg = await navigator.serviceWorker.getRegistration(SCOPE);
+  if (reg) await reg.unregister();
+}
+
+async function setupRegistration(t) {
+  await cleanup();
+  const reg = await navigator.serviceWorker.register('resources/range-sw.js', { scope: SCOPE });
+  await wait_for_state(t, reg.installing, 'activated');
+  return reg;
+}
+
+function awaitMessage(obj, id) {
+  return new Promise(resolve => {
+    obj.addEventListener('message', function listener(event) {
+      if (event.data.id !== id) return;
+      obj.removeEventListener('message', listener);
+      resolve();
+    });
+  });
+}
+
+promise_test(async t => {
+  const reg = await setupRegistration(t);
+  const iframe = await with_iframe(SCOPE);
+  const w = iframe.contentWindow;
+
+  // Trigger a cross-origin range request using media
+  const url = new URL('long-wav.py?action=range-header-filter-test', w.location);
+  url.hostname = REMOTE_HOST;
+  appendAudio(w.document, url);
+
+  // See rangeHeaderFilterTest in resources/range-sw.js
+  await fetch_tests_from_worker(reg.active);
+}, `Defer range header filter tests to service worker`);
+
+promise_test(async t => {
+  const reg = await setupRegistration(t);
+  const iframe = await with_iframe(SCOPE);
+  const w = iframe.contentWindow;
+
+  // Trigger a cross-origin range request using media
+  const url = new URL('long-wav.py', w.location);
+  url.searchParams.set('action', 'range-header-passthrough-test');
+  url.searchParams.set('range-received-key', token());
+  url.hostname = REMOTE_HOST;
+  appendAudio(w.document, url);
+
+  // See rangeHeaderPassthroughTest in resources/range-sw.js
+  await fetch_tests_from_worker(reg.active);
+}, `Defer range header passthrough tests to service worker`);
+
+promise_test(async t => {
+  await setupRegistration(t);
+  const iframe = await with_iframe(SCOPE);
+  const w = iframe.contentWindow;
+  const id = Math.random() + '';
+  const storedRangeResponse = awaitMessage(w.navigator.serviceWorker, id);
+
+  // Trigger a cross-origin range request using media
+  const url = new URL('partial-script.py', w.location);
+  url.searchParams.set('require-range', '1');
+  url.searchParams.set('action', 'store-ranged-response');
+  url.searchParams.set('id', id);
+  url.hostname = REMOTE_HOST;
+
+  appendAudio(w.document, url);
+
+  await storedRangeResponse;
+
+  // Fetching should reject
+  const fetchPromise = w.fetch('?action=use-stored-ranged-response', { mode: 'no-cors' });
+  promise_rejects(t, new TypeError(), fetchPromise);
+
+  // Script loading should error too
+  const loadScriptPromise = loadScript('?action=use-stored-ranged-response', { doc: w.document });
+  promise_rejects(t, new Error(), loadScriptPromise);
+
+  await loadScriptPromise.catch(() => {});
+
+  assert_false(!!w.scriptExecuted, `Partial response shouldn't be executed`);
+}, `Ranged response not allowed following no-cors ranged request`);
+
+promise_test(async t => {
+  await setupRegistration(t);
+  const iframe = await with_iframe(SCOPE);
+  const w = iframe.contentWindow;
+  const id = Math.random() + '';
+  const storedRangeResponse = awaitMessage(w.navigator.serviceWorker, id);
+
+  // Trigger a range request using media
+  const url = new URL('partial-script.py', w.location);
+  url.searchParams.set('require-range', '1');
+  url.searchParams.set('action', 'store-ranged-response');
+  url.searchParams.set('id', id);
+
+  appendAudio(w.document, url);
+
+  await storedRangeResponse;
+
+  // This should not throw
+  await w.fetch('?action=use-stored-ranged-response');
+
+  // This shouldn't throw either
+  await loadScript('?action=use-stored-ranged-response', { doc: w.document });
+
+  assert_true(w.scriptExecuted, `Partial response should be executed`);
+}, `Non-opaque ranged response executed`);
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/test-helpers.sub.js b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/test-helpers.sub.js
index 8fa3e3b..7efde35 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/test-helpers.sub.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/test-helpers.sub.js
@@ -46,9 +46,14 @@
     });
 }
 
-// Adds an iframe to the document and returns a promise that resolves to the
-// iframe when it finishes loading. The caller is responsible for removing the
-// iframe later if needed.
+/**
+ * Adds an iframe to the document and returns a promise that resolves to the
+ * iframe when it finishes loading. The caller is responsible for removing the
+ * iframe later if needed.
+ *
+ * @param {string} url
+ * @returns {HTMLIFrameElement}
+ */
 function with_iframe(url) {
   return new Promise(function(resolve) {
       var frame = document.createElement('iframe');
diff --git a/third_party/WebKit/LayoutTests/external/wpt/svg/types/scripted/SVGGeometryElement.getPointAtLength-01.svg b/third_party/WebKit/LayoutTests/external/wpt/svg/types/scripted/SVGGeometryElement.getPointAtLength-01.svg
new file mode 100644
index 0000000..e268386
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/svg/types/scripted/SVGGeometryElement.getPointAtLength-01.svg
@@ -0,0 +1,44 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink"
+     xmlns:html="http://www.w3.org/1999/xhtml">
+  <title>SVGGeometryElement.prototype.getPointAtLength clamps its argument to [0, length]</title>
+  <metadata>
+    <html:link rel="help" href="https://svgwg.org/svg2-draft/types.html#__svg__SVGGeometryElement__getPointAtLength"/>
+    <html:meta name="assert" content="SVGGeometryElement.prototype.getPointAtLength clamps its argument."/>
+  </metadata>
+  <g stroke="blue">
+    <line id="line" x1="50" y1="60" x2="100" y2="60"/>
+    <path id="path" d="M40,70L110,70"/>
+  </g>
+  <html:script src="/resources/testharness.js"/>
+  <html:script src="/resources/testharnessreport.js"/>
+  <script><![CDATA[
+  test(function() {
+    let line = document.getElementById('line');
+    let point = line.getPointAtLength(-10);
+    assert_equals(point.x, 50, 'starting x');
+    assert_equals(point.y, 60, 'starting y');
+  }, document.title+', less than zero (SVGLineElement).');
+  test(function() {
+    let path = document.getElementById('path');
+    let point = path.getPointAtLength(-10);
+    assert_equals(point.x, 40, 'starting x');
+    assert_equals(point.y, 70, 'starting y');
+  }, document.title+', less than zero (SVGPathElement).');
+
+  test(function() {
+    let line = document.getElementById('line');
+    assert_less_than(line.getTotalLength(), 80);
+    let point = line.getPointAtLength(80);
+    assert_equals(point.x, 100, 'ending x');
+    assert_equals(point.y, 60, 'ending y');
+  }, document.title+', greater than \'length\' (SVGLineElement).');
+  test(function() {
+    let path = document.getElementById('path');
+    assert_less_than(path.getTotalLength(), 80);
+    let point = path.getPointAtLength(80);
+    assert_equals(point.x, 110, 'ending x');
+    assert_equals(point.y, 70, 'ending y');
+  }, document.title+', greater than \'length\' (SVGPathElement).');
+  ]]></script>
+</svg>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/README.md b/third_party/WebKit/LayoutTests/external/wpt/url/README.md
index 4452a6a..34c35dc 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/url/README.md
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/README.md
@@ -2,7 +2,7 @@
 
 These tests are for browsers, but the data for
 `a-element.html`, `url-constructor.html`, `a-element-xhtml.xhtml`, and `failure.html`
-is in `urltestdata.json` and can be re-used by non-browser implementations.
+is in `resources/urltestdata.json` and can be re-used by non-browser implementations.
 This file contains a JSON array of comments as strings and test cases as objects.
 The keys for each test case are:
 
@@ -27,6 +27,18 @@
 converting base URLs into strings properly fails the whole parsing algorithm if the base URL cannot
 be parsed.
 
+## setters_tests.json
+
+`resources/setters_tests.json` is self-documented.
+
+## toascii.json
+
+`resources/toascii.json` is a JSON resource containing an array where each item is an object
+consisting of an optional `comment` field and mandatory `input` and `output` fields. `input` is the
+domain to be parsed according to the rules of UTS #46 (as stipulated by the URL Standard). `output`
+gives the expected output of the parser after serialization. An `output` of `null` means parsing is
+expected to fail.
+
 ## URL parser's encoding argument
 
 Tests in `/encoding` and `/html/infrastructure/urls/resolving-urls/query-encoding/` cover the
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin-xhtml.xhtml b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin-xhtml.xhtml
index 3d0d72e..effcf04 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin-xhtml.xhtml
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin-xhtml.xhtml
@@ -9,7 +9,7 @@
   </head>
   <body>
     <div id="log"></div>
-    <script src="a-element-origin.js"></script>
+    <script src="resources/a-element-origin.js"></script>
   </body>
 </html>
-<!-- Other dependencies: urltestdata.json -->
+<!-- Other dependencies: resources/urltestdata.json -->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin.html b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin.html
index 28ef696..9cc8e94 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin.html
@@ -4,5 +4,5 @@
 <script src=/resources/testharnessreport.js></script>
 <base id=base>
 <div id=log></div>
-<script src=a-element-origin.js></script>
-<!-- Other dependencies: urltestdata.json -->
+<script src=resources/a-element-origin.js></script>
+<!-- Other dependencies: resources/urltestdata.json -->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin.js b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin.js
deleted file mode 100644
index a1202db5..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var setup = async_test("Loading data…")
-setup.step(function() {
-  var request = new XMLHttpRequest()
-  request.open("GET", "urltestdata.json")
-  request.send()
-  request.responseType = "json"
-  request.onload = setup.step_func(function() {
-    runURLTests(request.response)
-    setup.done()
-  })
-})
-
-function setBase(base) {
-  document.getElementById("base").href = base
-}
-
-function bURL(url, base) {
-  base = base || "about:blank"
-  setBase(base)
-  var a = document.createElement("a")
-  a.setAttribute("href", url)
-  return a
-}
-
-function runURLTests(urltests) {
-  for(var i = 0, l = urltests.length; i < l; i++) {
-    var expected = urltests[i]
-    if (typeof expected === "string" || !("origin" in expected)) continue
-
-    test(function() {
-      var url = bURL(expected.input, expected.base)
-      assert_equals(url.origin, expected.origin, "origin")
-    }, "Parsing origin: <" + expected.input + "> against <" + expected.base + ">")
-  }
-}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/a-element-xhtml.xhtml b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-xhtml.xhtml
index fda4c360..c6c67cf 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/url/a-element-xhtml.xhtml
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-xhtml.xhtml
@@ -9,7 +9,7 @@
   </head>
   <body>
     <div id="log"></div>
-    <script src="a-element.js"></script>
+    <script src="resources/a-element.js"></script>
   </body>
 </html>
-<!-- Other dependencies: urltestdata.json -->
+<!-- Other dependencies: resources/urltestdata.json -->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/a-element.html b/third_party/WebKit/LayoutTests/external/wpt/url/a-element.html
index 1b7e2fdd..05c37f3 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/url/a-element.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/a-element.html
@@ -4,5 +4,5 @@
 <script src=/resources/testharnessreport.js></script>
 <base id=base>
 <div id=log></div>
-<script src=a-element.js></script>
-<!-- Other dependencies: urltestdata.json -->
+<script src=resources/a-element.js></script>
+<!-- Other dependencies: resources/urltestdata.json -->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/a-element.js b/third_party/WebKit/LayoutTests/external/wpt/url/a-element.js
deleted file mode 100644
index a3d78139..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/url/a-element.js
+++ /dev/null
@@ -1,52 +0,0 @@
-var setup = async_test("Loading data…")
-setup.step(function() {
-  var request = new XMLHttpRequest()
-  request.open("GET", "urltestdata.json")
-  request.send()
-  request.responseType = "json"
-  request.onload = setup.step_func(function() {
-    runURLTests(request.response)
-    setup.done()
-  })
-})
-
-function setBase(base) {
-  document.getElementById("base").href = base
-}
-
-function bURL(url, base) {
-  base = base || "about:blank"
-  setBase(base)
-  var a = document.createElement("a")
-  a.setAttribute("href", url)
-  return a
-}
-
-function runURLTests(urltests) {
-  for(var i = 0, l = urltests.length; i < l; i++) {
-    var expected = urltests[i]
-    if (typeof expected === "string") continue // skip comments
-
-    test(function() {
-      var url = bURL(expected.input, expected.base)
-      if(expected.failure) {
-        if(url.protocol !== ':') {
-          assert_unreached("Expected URL to fail parsing")
-        }
-        assert_equals(url.href, expected.input, "failure should set href to input")
-        return
-      }
-
-      assert_equals(url.href, expected.href, "href")
-      assert_equals(url.protocol, expected.protocol, "protocol")
-      assert_equals(url.username, expected.username, "username")
-      assert_equals(url.password, expected.password, "password")
-      assert_equals(url.host, expected.host, "host")
-      assert_equals(url.hostname, expected.hostname, "hostname")
-      assert_equals(url.port, expected.port, "port")
-      assert_equals(url.pathname, expected.pathname, "pathname")
-      assert_equals(url.search, expected.search, "search")
-      assert_equals(url.hash, expected.hash, "hash")
-    }, "Parsing: <" + expected.input + "> against <" + expected.base + ">")
-  }
-}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/failure.html b/third_party/WebKit/LayoutTests/external/wpt/url/failure.html
index 8ae9da7..13a90cc 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/url/failure.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/failure.html
@@ -6,7 +6,7 @@
 <div id=log></div>
 <iframe></iframe>
 <script>
-promise_test(() => fetch("urltestdata.json").then(res => res.json()).then(runTests), "Loading data…")
+promise_test(() => fetch("resources/urltestdata.json").then(res => res.json()).then(runTests), "Loading data…")
 
 function runTests(testData) {
   for(const test of testData) {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/resources/a-element-origin.js b/third_party/WebKit/LayoutTests/external/wpt/url/resources/a-element-origin.js
new file mode 100644
index 0000000..3b8cb1cb
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/resources/a-element-origin.js
@@ -0,0 +1,25 @@
+promise_test(() => fetch("resources/urltestdata.json").then(res => res.json()).then(runURLTests), "Loading data…");
+
+function setBase(base) {
+  document.getElementById("base").href = base
+}
+
+function bURL(url, base) {
+  base = base || "about:blank"
+  setBase(base)
+  var a = document.createElement("a")
+  a.setAttribute("href", url)
+  return a
+}
+
+function runURLTests(urltests) {
+  for(var i = 0, l = urltests.length; i < l; i++) {
+    var expected = urltests[i]
+    if (typeof expected === "string" || !("origin" in expected)) continue
+
+    test(function() {
+      var url = bURL(expected.input, expected.base)
+      assert_equals(url.origin, expected.origin, "origin")
+    }, "Parsing origin: <" + expected.input + "> against <" + expected.base + ">")
+  }
+}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/resources/a-element.js b/third_party/WebKit/LayoutTests/external/wpt/url/resources/a-element.js
new file mode 100644
index 0000000..f64531b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/resources/a-element.js
@@ -0,0 +1,42 @@
+promise_test(() => fetch("resources/urltestdata.json").then(res => res.json()).then(runURLTests), "Loading data…");
+
+function setBase(base) {
+  document.getElementById("base").href = base
+}
+
+function bURL(url, base) {
+  base = base || "about:blank"
+  setBase(base)
+  var a = document.createElement("a")
+  a.setAttribute("href", url)
+  return a
+}
+
+function runURLTests(urltests) {
+  for(var i = 0, l = urltests.length; i < l; i++) {
+    var expected = urltests[i]
+    if (typeof expected === "string") continue // skip comments
+
+    test(function() {
+      var url = bURL(expected.input, expected.base)
+      if(expected.failure) {
+        if(url.protocol !== ':') {
+          assert_unreached("Expected URL to fail parsing")
+        }
+        assert_equals(url.href, expected.input, "failure should set href to input")
+        return
+      }
+
+      assert_equals(url.href, expected.href, "href")
+      assert_equals(url.protocol, expected.protocol, "protocol")
+      assert_equals(url.username, expected.username, "username")
+      assert_equals(url.password, expected.password, "password")
+      assert_equals(url.host, expected.host, "host")
+      assert_equals(url.hostname, expected.hostname, "hostname")
+      assert_equals(url.port, expected.port, "port")
+      assert_equals(url.pathname, expected.pathname, "pathname")
+      assert_equals(url.search, expected.search, "search")
+      assert_equals(url.hash, expected.hash, "hash")
+    }, "Parsing: <" + expected.input + "> against <" + expected.base + ">")
+  }
+}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/setters_tests.json b/third_party/WebKit/LayoutTests/external/wpt/url/resources/setters_tests.json
similarity index 100%
rename from third_party/WebKit/LayoutTests/external/wpt/url/setters_tests.json
rename to third_party/WebKit/LayoutTests/external/wpt/url/resources/setters_tests.json
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/toascii.json b/third_party/WebKit/LayoutTests/external/wpt/url/resources/toascii.json
similarity index 100%
rename from third_party/WebKit/LayoutTests/external/wpt/url/toascii.json
rename to third_party/WebKit/LayoutTests/external/wpt/url/resources/toascii.json
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urltestdata.json b/third_party/WebKit/LayoutTests/external/wpt/url/resources/urltestdata.json
similarity index 100%
rename from third_party/WebKit/LayoutTests/external/wpt/url/urltestdata.json
rename to third_party/WebKit/LayoutTests/external/wpt/url/resources/urltestdata.json
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/toascii.window.js b/third_party/WebKit/LayoutTests/external/wpt/url/toascii.window.js
index b49ef20..b28c664 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/url/toascii.window.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/toascii.window.js
@@ -1,12 +1,4 @@
-async_test(t => {
-  const request = new XMLHttpRequest()
-  request.open("GET", "toascii.json")
-  request.send()
-  request.responseType = "json"
-  request.onload = t.step_func_done(() => {
-    runTests(request.response)
-  })
-}, "Loading data…")
+promise_test(() => fetch("resources/toascii.json").then(res => res.json()).then(runTests), "Loading data…");
 
 function makeURL(type, input) {
   input = "https://" + input + "/x"
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/url-constructor.html b/third_party/WebKit/LayoutTests/external/wpt/url/url-constructor.html
index 490917c..6d7c2d6 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/url/url-constructor.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/url-constructor.html
@@ -4,20 +4,6 @@
 <script src=/resources/testharnessreport.js></script>
 <div id=log></div>
 <script>
-function runURLConstructorTests() {
-  var setup = async_test("Loading data…")
-  setup.step(function() {
-    var request = new XMLHttpRequest()
-    request.open("GET", "urltestdata.json")
-    request.send()
-    request.responseType = "json"
-    request.onload = setup.step_func(function() {
-      runURLTests(request.response)
-      setup.done()
-    })
-  })
-}
-
 function bURL(url, base) {
   return new URL(url, base || "about:blank")
 }
@@ -122,5 +108,5 @@
   }, 'URL.searchParams and URL.search setters, update propagation')
 }
 runURLSearchParamTests()
-runURLConstructorTests()
+promise_test(() => fetch("resources/urltestdata.json").then(res => res.json()).then(runURLTests), "Loading data…");
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/url-origin.html b/third_party/WebKit/LayoutTests/external/wpt/url/url-origin.html
index f9d4b3d..fccb643 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/url/url-origin.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/url-origin.html
@@ -4,19 +4,7 @@
 <script src=/resources/testharnessreport.js></script>
 <div id=log></div>
 <script>
-function runURLOriginTests() {
-  var setup = async_test("Loading data…")
-  setup.step(function() {
-    var request = new XMLHttpRequest()
-    request.open("GET", "urltestdata.json")
-    request.send()
-    request.responseType = "json"
-    request.onload = setup.step_func(function() {
-      runURLTests(request.response)
-      setup.done()
-    })
-  })
-}
+promise_test(() => fetch("resources/urltestdata.json").then(res => res.json()).then(runURLTests), "Loading data…");
 
 function bURL(url, base) {
   return new URL(url, base || "about:blank")
@@ -33,5 +21,4 @@
     }, "Origin parsing: <" + expected.input + "> against <" + expected.base + ">")
   }
 }
-runURLOriginTests()
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/url-setters.html b/third_party/WebKit/LayoutTests/external/wpt/url/url-setters.html
index b8b8ee5..db30cf0 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/url/url-setters.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/url-setters.html
@@ -4,19 +4,7 @@
 <script src=/resources/testharnessreport.js></script>
 <div id=log></div>
 <script>
-function startURLSettersTests() {
-  var setup = async_test("Loading data…")
-  setup.step(function() {
-    var request = new XMLHttpRequest()
-    request.open("GET", "setters_tests.json")
-    request.send()
-    request.responseType = "json"
-    request.onload = setup.step_func(function() {
-      runURLSettersTests(request.response)
-      setup.done()
-    })
-  })
-}
+promise_test(() => fetch("resources/setters_tests.json").then(res => res.json()).then(runURLSettersTests), "Loading data…");
 
 function runURLSettersTests(all_test_cases) {
   for (var attribute_to_be_set in all_test_cases) {
@@ -57,6 +45,4 @@
     }
   }
 }
-
-startURLSettersTests()
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-animations/animation-model/animation-types/property-types.js b/third_party/WebKit/LayoutTests/external/wpt/web-animations/animation-model/animation-types/property-types.js
index 60c7d2f..5bafb20 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/web-animations/animation-model/animation-types/property-types.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/web-animations/animation-model/animation-types/property-types.js
@@ -893,6 +893,30 @@
     test(t => {
       const idlName = propertyToIDL(property);
       const target = createTestElement(t, setup);
+      const animation =
+        target.animate({ [idlName]: ['rotate(0deg)',
+                                     'rotate(1080deg) translateX(100px)'] },
+                       1000);
+
+      testAnimationSampleMatrices(animation, idlName,
+        [{ time: 500, expected: [ -1, 0, 0, -1, -50, 0 ] }]);
+    }, `${property}: extend shorter list (from)`);
+
+    test(t => {
+      const idlName = propertyToIDL(property);
+      const target = createTestElement(t, setup);
+      const animation =
+        target.animate({ [idlName]: ['rotate(0deg) translateX(100px)',
+                                     'rotate(1080deg)'] },
+                       1000);
+
+      testAnimationSampleMatrices(animation, idlName,
+        [{ time: 500, expected: [ -1, 0, 0, -1, -50, 0 ] }]);
+    }, `${property}: extend shorter list (to)`);
+
+    test(t => {
+      const idlName = propertyToIDL(property);
+      const target = createTestElement(t, setup);
       const animation =              // matrix(0, 1, -1, 0, 0, 100)
         target.animate({ [idlName]: ['rotate(90deg) translateX(100px)',
                                      // matrix(-1, 0, 0, -1, 200, 0)
@@ -1168,6 +1192,30 @@
     test(t => {
       const idlName = propertyToIDL(property);
       const target = createTestElement(t, setup);
+      target.style[idlName] = 'rotate(45deg) translateX(100px)';
+      const animation = target.animate({ [idlName]: ['rotate(-90deg)',
+                                                     'rotate(90deg)'] },
+                                       { duration: 1000, fill: 'both',
+                                         composite: 'add' });
+
+      testAnimationSampleMatrices(animation, idlName,
+        [{ time: 0,    expected: [ Math.cos(-Math.PI / 4),
+                                   Math.sin(-Math.PI / 4),
+                                  -Math.sin(-Math.PI / 4),
+                                   Math.cos(-Math.PI / 4),
+                                   100 * Math.cos(Math.PI / 4),
+                                   100 * Math.sin(Math.PI / 4) ] },
+         { time: 1000, expected: [ Math.cos(Math.PI * 3 / 4),
+                                   Math.sin(Math.PI * 3 / 4),
+                                  -Math.sin(Math.PI * 3 / 4),
+                                   Math.cos(Math.PI * 3 / 4),
+                                   100 * Math.cos(Math.PI / 4),
+                                   100 * Math.sin(Math.PI / 4) ] }]);
+    }, `${property}: rotate on rotate and translate`);
+
+    test(t => {
+      const idlName = propertyToIDL(property);
+      const target = createTestElement(t, setup);
       target.style[idlName] = 'matrix(0, 1, -1, 0, 0, 0)';
       const animation =               // Same matrices as above.
         target.animate({ [idlName]: [ 'matrix(1, 0, 0, 1, 100, 0)',
@@ -1366,6 +1414,53 @@
     test(t => {
       const idlName = propertyToIDL(property);
       const target = createTestElement(t, setup);
+      target.style[idlName] = 'rotate(45deg)';
+      const animation =
+        target.animate({ [idlName]: ['rotate(45deg) translateX(0px)',
+                                     'rotate(45deg) translateX(100px)'] },
+                       { duration: 1000, fill: 'both', composite: 'accumulate' });
+
+      testAnimationSampleMatrices(animation, idlName,
+        [{ time: 0,    expected: [ Math.cos(Math.PI / 2),
+                                   Math.sin(Math.PI / 2),
+                                  -Math.sin(Math.PI / 2),
+                                   Math.cos(Math.PI / 2),
+                                   0 * Math.cos(Math.PI / 2),
+                                   0 * Math.sin(Math.PI / 2) ] },
+         { time: 1000, expected: [ Math.cos(Math.PI / 2),
+                                   Math.sin(Math.PI / 2),
+                                  -Math.sin(Math.PI / 2),
+                                   Math.cos(Math.PI / 2),
+                                   100 * Math.cos(Math.PI / 2),
+                                   100 * Math.sin(Math.PI / 2) ] }]);
+    }, `${property}: rotate and translate on rotate`);
+
+    test(t => {
+      const idlName = propertyToIDL(property);
+      const target = createTestElement(t, setup);
+      target.style[idlName] = 'rotate(45deg) translateX(100px)';
+      const animation =
+        target.animate({ [idlName]: ['rotate(45deg)', 'rotate(45deg)'] },
+                       { duration: 1000, fill: 'both', composite: 'accumulate' });
+
+      testAnimationSampleMatrices(animation, idlName,
+        [{ time: 0,    expected: [ Math.cos(Math.PI / 2),
+                                   Math.sin(Math.PI / 2),
+                                  -Math.sin(Math.PI / 2),
+                                   Math.cos(Math.PI / 2),
+                                   100 * Math.cos(Math.PI / 2),
+                                   100 * Math.sin(Math.PI / 2) ] },
+         { time: 1000, expected: [ Math.cos(Math.PI / 2),
+                                   Math.sin(Math.PI / 2),
+                                  -Math.sin(Math.PI / 2),
+                                   Math.cos(Math.PI / 2),
+                                   100 * Math.cos(Math.PI / 2),
+                                   100 * Math.sin(Math.PI / 2) ] }]);
+    }, `${property}: rotate on roate and translate`);
+
+    test(t => {
+      const idlName = propertyToIDL(property);
+      const target = createTestElement(t, setup);
       target.style[idlName] = 'matrix(0, 1, -1, 0, 0, 0)';
       const animation =                 // Same matrices as above.
         target.animate({ [idlName]: [ 'matrix(1, 0, 0, 1, 100, 0)',
diff --git a/third_party/WebKit/LayoutTests/external/wpt/xhr/access-control-and-redirects-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/xhr/access-control-and-redirects-expected.txt
deleted file mode 100644
index 8e655909..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/xhr/access-control-and-redirects-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-This is a testharness.js-based test.
-FAIL Local sync redirect to remote origin Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'http://web-platform.test:8001/xhr/resources/redirect-cors.py?location=http://www1.web-platform.test:8001/xhr/resources/access-control-basic-allow.py'.
-PASS Local async redirect to remote origin
-FAIL Remote sync redirect to local origin Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'http://www1.web-platform.test:8001/xhr/resources/redirect-cors.py?location=http://web-platform.test:8001/xhr/resources/access-control-basic-allow.py&allow_origin=true'.
-PASS Remote async redirect to local origin
-FAIL Remote sync redirect to same remote origin Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'http://www1.web-platform.test:8001/xhr/resources/redirect-cors.py?location=http://www1.web-platform.test:8001/xhr/resources/access-control-basic-allow.py&allow_origin=true'.
-PASS Remote async redirect to same remote origin
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-filter-removed-expected.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-filter-removed-expected.html
index d8a3bdb..eb6ff46 100644
--- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-filter-removed-expected.html
+++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-filter-removed-expected.html
@@ -1,7 +1,7 @@
 <svg style="display: block; width: 0; height: 0">
   <defs>
-    <filter id="blur">
-        <feGaussianBlur stdDeviation="2 4"/>
+    <filter id="grayscale">
+      <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"/>
     </filter>
   </defs>
 </svg>
@@ -9,7 +9,7 @@
 <script>
 var canvas = document.getElementById('canvas');
 var ctx = canvas.getContext('2d');
-ctx.filter = 'url(#blur)';
+ctx.filter = 'url(#grayscale)';
 ctx.fillStyle = '#0f0';
 ctx.fillRect(20, 20, 20, 20);
 ctx.filter = 'none';
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-filter-removed.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-filter-removed.html
index 2d8c276b..3fd53c7 100644
--- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-filter-removed.html
+++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-filter-removed.html
@@ -1,7 +1,7 @@
 <svg style="display: block; width: 0; height: 0">
   <defs>
-    <filter id="blur">
-        <feGaussianBlur stdDeviation="2 4"/>
+    <filter id="grayscale">
+      <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"/>
     </filter>
   </defs>
 </svg>
@@ -9,10 +9,10 @@
 <script>
 var canvas = document.getElementById('canvas');
 var ctx = canvas.getContext('2d');
-ctx.filter = 'url(#blur)';
+ctx.filter = 'url(#grayscale)';
 ctx.fillStyle = '#0f0';
 ctx.fillRect(20, 20, 20, 20);
-var filter = document.getElementById('blur');
+var filter = document.getElementById('grayscale');
 filter.parentNode.removeChild(filter);
 ctx.fillRect(60, 20, 20, 20);
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/events/hr-timestamp/input-events.html b/third_party/WebKit/LayoutTests/fast/events/hr-timestamp/input-events.html
index ecfcd25..c727f5b 100644
--- a/third_party/WebKit/LayoutTests/fast/events/hr-timestamp/input-events.html
+++ b/third_party/WebKit/LayoutTests/fast/events/hr-timestamp/input-events.html
@@ -24,10 +24,11 @@
     async_test(function(t) {
         document.addEventListener(eventName, t.step_func(function(e) {
             const platformTimestamp = eventSender.lastEventTimestamp(); // in seconds
-            const expectedTimestamp = Math.floor((internals.monotonicTimeToZeroBasedDocumentTime(platformTimestamp) * 1000) / 0.1) * 0.1;
-            // Use 0.100001 instead of 0.1 to deal with floating point
-            // comparison issues.
-            assert_approx_equals(e.timeStamp, expectedTimestamp, 0.100001);
+            const expectedUnclampedTimestamp = internals.monotonicTimeToZeroBasedDocumentTime(platformTimestamp) * 1000; // in milliseconds
+            // Time clamping logic in Blink can introduce at most 2*100us of
+            // difference. Use 0.200001 instead of 0.2 to deal with floating
+            // point comparison issues.
+            assert_approx_equals(e.timeStamp, expectedUnclampedTimestamp, 0.200001);
             t.done();
         }));
         dispatchEventFn();
diff --git a/third_party/WebKit/LayoutTests/fast/xmlhttprequest/xmlhttprequest-recursive-sync-event-expected.txt b/third_party/WebKit/LayoutTests/fast/xmlhttprequest/xmlhttprequest-recursive-sync-event-expected.txt
index 1736b068..4712755 100644
--- a/third_party/WebKit/LayoutTests/fast/xmlhttprequest/xmlhttprequest-recursive-sync-event-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/xmlhttprequest/xmlhttprequest-recursive-sync-event-expected.txt
@@ -1,6 +1,3 @@
-CONSOLE WARNING: line 27: Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.
-CONSOLE ERROR: line 20: Uncaught RangeError: Maximum call stack size exceeded.
-CONSOLE ERROR: line 21: Uncaught RangeError: Maximum call stack size exceeded.
 This tests that having infinite recursion in XMLHttpRequest event handler does not crash. 
 PASS
 
diff --git a/third_party/WebKit/LayoutTests/fast/xmlhttprequest/xmlhttprequest-recursive-sync-event.html b/third_party/WebKit/LayoutTests/fast/xmlhttprequest/xmlhttprequest-recursive-sync-event.html
index ec88cf2..a4b917e 100644
--- a/third_party/WebKit/LayoutTests/fast/xmlhttprequest/xmlhttprequest-recursive-sync-event.html
+++ b/third_party/WebKit/LayoutTests/fast/xmlhttprequest/xmlhttprequest-recursive-sync-event.html
@@ -11,6 +11,10 @@
 {
     if (window.testRunner) {
         testRunner.dumpAsText();
+        // This test outputs a RangeError to console due to hitting the maximum
+        // call stack size. The exact error message and number of error messages
+        // depend on the testing environment, so suppress console messages.
+        testRunner.setDumpConsoleMessages(false);
     }
     var xhr = new XMLHttpRequest();
     xhr.onreadystatechange = function() {
diff --git a/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/details-open-repaint-expected.txt b/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/details-open-repaint-expected.txt
index fdf7f7e..c1469875 100644
--- a/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/details-open-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/details-open-repaint-expected.txt
@@ -41,10 +41,6 @@
       "reason": "appeared"
     },
     {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
       "object": "HorizontalScrollbar",
       "reason": "scroll control"
     },
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-limited-run-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-limited-run-expected.txt
index 9cc83e5..8728486 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-limited-run-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-limited-run-expected.txt
@@ -10,32 +10,32 @@
 [x] Clear storage
 Run audits: enabled visible
 
-=============== Lighthouse Results ===============
-bootup-time: true
-consistently-interactive: false
-critical-request-chains: true
-dom-size: true
-estimated-input-latency: false
-first-interactive: false
-first-meaningful-paint: false
-font-display: true
-link-blocking-first-paint: false
-mainthread-work-breakdown: true
-offscreen-images: false
-redirects: false
-screenshot-thumbnails: false
-script-blocking-first-paint: false
-speed-index-metric: false
-time-to-first-byte: true
-total-byte-weight: true
-unminified-css: false
-unminified-javascript: false
-unused-css-rules: false
-user-timings: true
-uses-long-cache-ttl: false
-uses-optimized-images: false
-uses-rel-preload: false
-uses-request-compression: false
-uses-responsive-images: false
-uses-webp-images: false
+=============== Audits run ===============
+bootup-time
+consistently-interactive
+critical-request-chains
+dom-size
+estimated-input-latency
+first-interactive
+first-meaningful-paint
+font-display
+link-blocking-first-paint
+mainthread-work-breakdown
+offscreen-images
+redirects
+screenshot-thumbnails
+script-blocking-first-paint
+speed-index-metric
+time-to-first-byte
+total-byte-weight
+unminified-css
+unminified-javascript
+unused-css-rules
+user-timings
+uses-long-cache-ttl
+uses-optimized-images
+uses-rel-preload
+uses-request-compression
+uses-responsive-images
+uses-webp-images
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-limited-run.js b/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-limited-run.js
index a734b97..46096b4 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-limited-run.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-limited-run.js
@@ -22,12 +22,8 @@
   Audits2TestRunner.getRunButton().click();
 
   var results = await Audits2TestRunner.waitForResults();
-  TestRunner.addResult(`\n=============== Lighthouse Results ===============`);
-
-  Object.keys(results.audits).sort().forEach(auditName => {
-    var audit = results.audits[auditName];
-    TestRunner.addResult(`${audit.name}: ${Boolean(audit.rawValue)}`);
-  });
+  TestRunner.addResult(`\n=============== Audits run ===============`);
+  TestRunner.addResult(Object.keys(results.audits).sort().join('\n'));
 
   TestRunner.completeTest();
 })();
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-successful-run-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-successful-run-expected.txt
index c0a57c8f7..0b08b676 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-successful-run-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-successful-run-expected.txt
@@ -174,117 +174,117 @@
 Version: 2.9.1
 
 
-accesskeys: false
-appcache-manifest: true
-aria-allowed-attr: false
-aria-required-attr: false
-aria-required-children: false
-aria-required-parent: false
-aria-roles: false
-aria-valid-attr: false
-aria-valid-attr-value: false
-audio-caption: false
-bootup-time: true
-button-name: false
-bypass: false
-canonical: true
-color-contrast: false
-consistently-interactive: false
-content-width: false
-critical-request-chains: true
-custom-controls-labels: false
-custom-controls-roles: false
-definition-list: false
-deprecations: true
-dlitem: false
-document-title: false
-dom-size: true
-duplicate-id: false
-errors-in-console: false
-estimated-input-latency: false
-external-anchors-use-rel-noopener: true
-first-interactive: false
-first-meaningful-paint: false
-focus-traps: false
-focusable-controls: false
-font-display: true
-font-size: false
-frame-title: false
-geolocation-on-start: true
-heading-levels: false
-hreflang: true
-html-has-lang: false
-html-lang-valid: false
-http-status-code: true
-image-alt: false
-image-aspect-ratio: true
-input-image-alt: false
-is-crawlable: true
-is-on-https: true
-label: false
-layout-table: false
-link-blocking-first-paint: false
-link-name: false
-link-text: true
-list: false
-listitem: false
-load-fast-enough-for-pwa: false
-logical-tab-order: false
-mainthread-work-breakdown: true
-managed-focus: false
-manifest-short-name-length: false
-meta-description: false
-meta-refresh: false
-meta-viewport: false
-mobile-friendly: false
-no-document-write: true
-no-mutation-events: true
-no-vulnerable-libraries: true
-no-websql: true
-notification-on-start: true
-object-alt: false
-offscreen-content-hidden: false
-offscreen-images: false
-password-inputs-can-be-pasted-into: true
-plugins: true
-pwa-cross-browser: false
-pwa-each-page-has-url: false
-pwa-page-transitions: false
-redirects: false
-redirects-http: false
-screenshot-thumbnails: false
-script-blocking-first-paint: false
-service-worker: false
-speed-index-metric: false
-splash-screen: false
-structured-data: false
-tabindex: false
-td-headers-attr: false
-th-has-data-cells: false
-themed-omnibox: false
-time-to-first-byte: true
-total-byte-weight: true
-unminified-css: false
-unminified-javascript: false
-unused-css-rules: false
-use-landmarks: false
-user-timings: true
-uses-http2: false
-uses-long-cache-ttl: false
-uses-optimized-images: false
-uses-passive-event-listeners: true
-uses-rel-preload: false
-uses-request-compression: false
-uses-responsive-images: false
-uses-webp-images: false
-valid-lang: false
-video-caption: false
-video-description: false
-viewport: false
-visual-order-follows-dom: false
-webapp-install-banner: false
-without-javascript: false
-works-offline: false
+accesskeys: not-applicable
+appcache-manifest: pass
+aria-allowed-attr: not-applicable
+aria-required-attr: not-applicable
+aria-required-children: not-applicable
+aria-required-parent: not-applicable
+aria-roles: not-applicable
+aria-valid-attr: not-applicable
+aria-valid-attr-value: not-applicable
+audio-caption: not-applicable
+bootup-time: flaky
+button-name: not-applicable
+bypass: not-applicable
+canonical: not-applicable
+color-contrast: not-applicable
+consistently-interactive: flaky
+content-width: fail
+critical-request-chains: informative
+custom-controls-labels: manual
+custom-controls-roles: manual
+definition-list: not-applicable
+deprecations: pass
+dlitem: not-applicable
+document-title: fail
+dom-size: numeric
+duplicate-id: not-applicable
+errors-in-console: pass
+estimated-input-latency: flaky
+external-anchors-use-rel-noopener: pass
+first-interactive: flaky
+first-meaningful-paint: flaky
+focus-traps: manual
+focusable-controls: manual
+font-display: pass
+font-size: fail
+frame-title: not-applicable
+geolocation-on-start: pass
+heading-levels: manual
+hreflang: pass
+html-has-lang: fail
+html-lang-valid: not-applicable
+http-status-code: pass
+image-alt: not-applicable
+image-aspect-ratio: pass
+input-image-alt: not-applicable
+is-crawlable: pass
+is-on-https: pass
+label: not-applicable
+layout-table: not-applicable
+link-blocking-first-paint: informative
+link-name: not-applicable
+link-text: pass
+list: not-applicable
+listitem: not-applicable
+load-fast-enough-for-pwa: flaky
+logical-tab-order: manual
+mainthread-work-breakdown: informative
+managed-focus: manual
+manifest-short-name-length: fail
+meta-description: fail
+meta-refresh: not-applicable
+meta-viewport: not-applicable
+mobile-friendly: manual
+no-document-write: pass
+no-mutation-events: pass
+no-vulnerable-libraries: pass
+no-websql: pass
+notification-on-start: pass
+object-alt: not-applicable
+offscreen-content-hidden: manual
+offscreen-images: flaky
+password-inputs-can-be-pasted-into: pass
+plugins: pass
+pwa-cross-browser: manual
+pwa-each-page-has-url: manual
+pwa-page-transitions: manual
+redirects: flaky
+redirects-http: fail
+screenshot-thumbnails: flaky
+script-blocking-first-paint: informative
+service-worker: fail
+speed-index-metric: flaky
+splash-screen: fail
+structured-data: manual
+tabindex: not-applicable
+td-headers-attr: not-applicable
+th-has-data-cells: not-applicable
+themed-omnibox: fail
+time-to-first-byte: informative
+total-byte-weight: numeric
+unminified-css: flaky
+unminified-javascript: flaky
+unused-css-rules: flaky
+use-landmarks: manual
+user-timings: flaky
+uses-http2: fail
+uses-long-cache-ttl: numeric
+uses-optimized-images: flaky
+uses-passive-event-listeners: pass
+uses-rel-preload: flaky
+uses-request-compression: informative
+uses-responsive-images: flaky
+uses-webp-images: flaky
+valid-lang: not-applicable
+video-caption: not-applicable
+video-description: not-applicable
+viewport: fail
+visual-order-follows-dom: manual
+webapp-install-banner: fail
+without-javascript: fail
+works-offline: fail
 
 # of .lh-audit divs: 109
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-successful-run.js b/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-successful-run.js
index 45d2c04..6838df5 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-successful-run.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/audits2/audits2-successful-run.js
@@ -3,6 +3,37 @@
 // found in the LICENSE file.
 
 (async function() {
+  // screenshots in content shell are flaky and NO_NAVSTART occurs on bots way more frequently than local
+  // ignore the results of the trace-dependent audits, just make sure they ran
+  var FLAKY_AUDITS = [
+    // metrics
+    'first-contentful-paint',
+    'first-meaningful-paint',
+    'first-interactive',
+    'consistently-interactive',
+    'estimated-input-latency',
+    'speed-index-metric',
+    'metrics',
+    'screenshot-thumbnails',
+    // misc trace-based audits
+    'load-fast-enough-for-pwa',
+    'user-timings',
+    'bootup-time',
+    // opportunities
+    'efficient-animated-content',
+    'offscreen-images',
+    'redirects',
+    'render-blocking-resources',
+    'unminified-css',
+    'unminified-javascript',
+    'unused-css-rules',
+    'uses-optimized-images',
+    'uses-rel-preload',
+    'uses-responsive-images',
+    'uses-text-compression',
+    'uses-webp-images',
+  ];
+
   TestRunner.addResult('Tests that audits panel works.\n');
 
   await TestRunner.loadModule('audits2_test_runner');
@@ -22,7 +53,22 @@
 
   Object.keys(results.audits).sort().forEach(auditName => {
     var audit = results.audits[auditName];
-    TestRunner.addResult(`${audit.name}: ${Boolean(audit.rawValue)}`);
+
+    if (FLAKY_AUDITS.includes(auditName)) {
+      TestRunner.addResult(`${auditName}: flaky`);
+    } else if (audit.notApplicable) {
+      TestRunner.addResult(`${auditName}: not-applicable`);
+    } else if (audit.manual) {
+      TestRunner.addResult(`${auditName}: manual`);
+    } else if (audit.informative) {
+      TestRunner.addResult(`${auditName}: informative`);
+    } else if (audit.error) {
+      TestRunner.addResult(`${auditName}: ERROR ${audit.debugString}`);
+    } else if (audit.scoringMode === 'binary') {
+      TestRunner.addResult(`${auditName}: ${audit.score ? 'pass' : 'fail'}`);
+    } else {
+      TestRunner.addResult(`${auditName}: ${audit.scoringMode}`);
+    }
   });
 
   const resultsElement = Audits2TestRunner.getResultsElement();
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/device-orientation-success-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/device-orientation-success-expected.txt
index 3ebbaec..a4c14257d 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/device-orientation-success-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/device-orientation-success-expected.txt
@@ -10,10 +10,9 @@
 Running: secondOrientationOverride
 
 Running: clearOverride
-device-orientation-success.js:22 alpha: 1.1 beta: 2.2 gamma: 3.3
-device-orientation-success.js:22 alpha: 20 beta: 30 gamma: 40
+device-orientation-success.js:32 alpha: 1.1 beta: 2.2 gamma: 3.3
+device-orientation-success.js:32 alpha: 20 beta: 30 gamma: 40
 inspected-page.html:1 A reload is required so that the existing AbsoluteOrientationSensor and RelativeOrientationSensor objects on this page use the overridden values that have been provided. Close the inspector and reload again to return to the normal behavior.
-device-orientation-success.js:22 alpha: 90 beta: 0 gamma: 0
-device-orientation-success.js:29 quaternion: 0.000000,0.000000,0.707107,0.707107
-device-orientation-success.js:22 alpha: 1.1 beta: 2.2 gamma: 3.3
-
+device-orientation-success.js:32 alpha: 90 beta: 0 gamma: 0
+device-orientation-success.js:39 quaternion: 0.000000,0.000000,0.707107,0.707107
+device-orientation-success.js:32 alpha: 1.1 beta: 2.2 gamma: 3.3
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/device-orientation-success.js b/third_party/WebKit/LayoutTests/http/tests/devtools/device-orientation-success.js
index cc599cf..9e0bc07 100644
--- a/third_party/WebKit/LayoutTests/http/tests/devtools/device-orientation-success.js
+++ b/third_party/WebKit/LayoutTests/http/tests/devtools/device-orientation-success.js
@@ -5,16 +5,26 @@
 (async function() {
   TestRunner.addResult(`Test device orientation\n`);
   await TestRunner.loadModule('console_test_runner');
+  await TestRunner.addScriptTag('/resources/testharness.js');
+  await TestRunner.addScriptTag('/resources/sensor-helpers.js');
+  await TestRunner.addScriptTag('/gen/layout_test_data/mojo/public/js/mojo_bindings.js');
+  await TestRunner.addScriptTag('/gen/services/device/public/mojom/sensor.mojom.js');
+  await TestRunner.addScriptTag('/gen/services/device/public/mojom/sensor_provider.mojom.js');
   await TestRunner.evaluateInPagePromise(`
+      var sensor = null;
       var mockAlpha = 1.1;
       var mockBeta = 2.2;
       var mockGamma = 3.3;
-      var absolute = true;
 
       function setUpDeviceOrientation()
       {
-          testRunner.setMockDeviceOrientation(true, mockAlpha, true, mockBeta, true, mockGamma, absolute);
-          window.addEventListener("deviceorientation", handler, false);
+          sensor = sensorMocks();
+          let mockDataPromise = setMockSensorDataForType(
+              sensor,
+              device.mojom.SensorType.RELATIVE_ORIENTATION_EULER_ANGLES,
+              [mockBeta, mockGamma, mockAlpha]);
+          window.addEventListener("deviceorientation", handler);
+          return mockDataPromise;
       }
 
       function handler(evt)
@@ -33,11 +43,19 @@
                 + orientationSensor.quaternion[3].toFixed(6));
           orientationSensor.start();
       }
+
+      function cleanUpDeviceOrientation()
+      {
+          window.removeEventListener("deviceorientation", handler);
+          sensor.mockSensorProvider.reset();
+          return new Promise(done => setTimeout(done, 0));
+      }
   `);
 
   TestRunner.runTestSuite([
-    function setUpDeviceOrientation(next) {
-      TestRunner.evaluateInPage('setUpDeviceOrientation()', next);
+    async function setUpDeviceOrientation(next) {
+      await TestRunner.evaluateInPageAsync('setUpDeviceOrientation()');
+      ConsoleTestRunner.addConsoleSniffer(next);
     },
 
     function firstOrientationOverride(next) {
@@ -56,6 +74,7 @@
 
     async function clearOverride(next) {
       await TestRunner.DeviceOrientationAgent.clearDeviceOrientationOverride();
+      await TestRunner.evaluateInPageAsync('cleanUpDeviceOrientation()');
       ConsoleTestRunner.dumpConsoleMessages();
       next();
     },
diff --git a/third_party/WebKit/LayoutTests/http/tests/resources/sensor-helpers.js b/third_party/WebKit/LayoutTests/http/tests/resources/sensor-helpers.js
index 847cb82..9694469a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/resources/sensor-helpers.js
+++ b/third_party/WebKit/LayoutTests/http/tests/resources/sensor-helpers.js
@@ -400,11 +400,11 @@
 // Returns a promise that will be resolved when an event equal to the given
 // event is fired.
 function waitForEvent(expectedEvent, targetWindow = window) {
-  let stringify = thing => {
-    if (thing instanceof Object && thing.constructor !== Object) {
+  let stringify = (thing, targetWindow) => {
+    if (thing instanceof targetWindow.Object && thing.constructor !== targetWindow.Object) {
       let str = '{';
       for (let key of Object.keys(Object.getPrototypeOf(thing))) {
-        str += JSON.stringify(key) + ': ' + stringify(thing[key]) + ', ';
+        str += JSON.stringify(key) + ': ' + stringify(thing[key], targetWindow) + ', ';
       }
       return str + '}';
     } else if (thing instanceof Number) {
@@ -417,9 +417,9 @@
     let events = [];
     let timeoutId = null;
 
-    let expectedEventString = stringify(expectedEvent);
+    let expectedEventString = stringify(expectedEvent, window);
     function listener(event) {
-      let eventString = stringify(event);
+      let eventString = stringify(event, targetWindow);
       if (eventString === expectedEventString) {
         targetWindow.clearTimeout(timeoutId);
         targetWindow.removeEventListener(expectedEvent.type, listener);
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/powerfulFeatureRestrictions/old-powerful-features-on-insecure-origin-expected.txt b/third_party/WebKit/LayoutTests/http/tests/security/powerfulFeatureRestrictions/old-powerful-features-on-insecure-origin-expected.txt
index 00afa36..533e6b4d 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/powerfulFeatureRestrictions/old-powerful-features-on-insecure-origin-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/security/powerfulFeatureRestrictions/old-powerful-features-on-insecure-origin-expected.txt
@@ -1,8 +1,8 @@
 CONSOLE WARNING: Application Cache is deprecated in non-secure contexts, and will be restricted to secure contexts in M69, around September 2018. Please consider migrating your application to HTTPS, and eventually shifting over to Service Workers. See https://goo.gl/rStTGz for more details.
-CONSOLE WARNING: line 26: The devicemotion event is deprecated on insecure origins, and support will be removed in the future. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.
-CONSOLE WARNING: line 31: The deviceorientation event is deprecated on insecure origins, and support will be removed in the future. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.
-CONSOLE WARNING: line 36: getCurrentPosition() and watchPosition() no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.
-CONSOLE WARNING: line 55: getUserMedia() no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.
+CONSOLE WARNING: line 68: getCurrentPosition() and watchPosition() no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.
+CONSOLE WARNING: line 87: getUserMedia() no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.
+CONSOLE WARNING: line 431: The devicemotion event is deprecated on insecure origins, and support will be removed in the future. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.
+CONSOLE WARNING: line 431: The deviceorientation event is deprecated on insecure origins, and support will be removed in the future. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.
 This is a testharness.js-based test.
 PASS device motion
 PASS device orientation
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/powerfulFeatureRestrictions/old-powerful-features-on-insecure-origin.html b/third_party/WebKit/LayoutTests/http/tests/security/powerfulFeatureRestrictions/old-powerful-features-on-insecure-origin.html
index 7f96c54..e2d63a6 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/powerfulFeatureRestrictions/old-powerful-features-on-insecure-origin.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/powerfulFeatureRestrictions/old-powerful-features-on-insecure-origin.html
@@ -6,6 +6,9 @@
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script src="/resources/get-host-info.js"></script>
+<script src="/resources/sensor-helpers.js"></script>
+<script src="/gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="/gen/services/device/public/mojom/sensor_provider.mojom.js"></script>
 
 <body>
 <div id="target"></div>
@@ -18,17 +21,46 @@
 
     // Tests for APIs that are deprecated, but still allowed, on
     // insecure origins
-    async_test(function() {
-        testRunner.setMockDeviceMotion(true, 0, true, 0, true, 0,
-                                       true, 0, true, 0, true, 0,
-                                       true, 0, true, 0, true, 0,
-                                       0);
-        window.addEventListener('devicemotion', this.step_func_done());
+    sensor_test(async sensor => {
+        const fakeAccelerometerData = [1, 2, 3];
+        const fakeLinearAccelerationData = [4, 5, 6];
+        const fakeGyroscopeData = [7, 8, 9];
+
+        setMockSensorDataForType(sensor, device.mojom.SensorType.ACCELEROMETER, fakeAccelerometerData);
+        setMockSensorDataForType(sensor, device.mojom.SensorType.LINEAR_ACCELERATION, fakeLinearAccelerationData);
+        setMockSensorDataForType(sensor, device.mojom.SensorType.GYROSCOPE, fakeGyroscopeData);
+
+        const radToDeg = 180 / Math.PI;
+        return waitForEvent(new DeviceMotionEvent('devicemotion', {
+            acceleration: {
+                x: fakeLinearAccelerationData[0],
+                y: fakeLinearAccelerationData[1],
+                z: fakeLinearAccelerationData[2],
+            },
+            accelerationIncludingGravity: {
+                x: fakeAccelerometerData[0],
+                y: fakeAccelerometerData[1],
+                z: fakeAccelerometerData[2],
+            },
+            rotationRate: {
+                alpha: fakeGyroscopeData[0] * radToDeg,
+                beta: fakeGyroscopeData[1] * radToDeg,
+                gamma: fakeGyroscopeData[2] * radToDeg,
+            },
+            interval: 16,
+        }));
     }, 'device motion');
 
-    async_test(function() {
-        testRunner.setMockDeviceOrientation(11.1, 22.2, 33.3, true);
-        window.addEventListener('deviceorientation', this.step_func_done());
+    sensor_test(async sensor => {
+        const fakeOrientationData = [1.1, 2.2, 3.3];
+        setMockSensorDataForType(sensor, device.mojom.SensorType.RELATIVE_ORIENTATION_EULER_ANGLES, fakeOrientationData);
+
+        return waitForEvent(new DeviceOrientationEvent('deviceorientation', {
+            alpha: fakeOrientationData[2],
+            beta: fakeOrientationData[0],
+            gamma: fakeOrientationData[1],
+            absolute: false,
+        }));
     }, 'device orientation');
 
     // Tests for APIs that have been turned off on insecure origins
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-external-entity-redirect-expected.txt b/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-external-entity-redirect-expected.txt
index 8cd59a53..3831903f 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-external-entity-redirect-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-external-entity-redirect-expected.txt
@@ -1,2 +1,6 @@
+CONSOLE ERROR: Unsafe attempt to load URL http://localhost:8000/security/resources/target.xml from frame with URL http://127.0.0.1:8000/security/xss-DENIED-xsl-external-entity-redirect.xml. Domains, protocols and ports must match.
+
+CONSOLE ERROR: Unsafe attempt to load URL http://localhost:8000/security/resources/target.xml from frame with URL http://127.0.0.1:8000/security/xss-DENIED-xsl-external-entity-redirect.xml. Domains, protocols and ports must match.
+
 This test includes a cross-origin external entity. It passes if the load fails and thus there is no text below this line.
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-post-sync-expected.txt b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-post-sync-expected.txt
index 4412c7cd..f380eaad 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-post-sync-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-post-sync-expected.txt
@@ -1,4 +1,5 @@
 CONSOLE WARNING: line 30: Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.
+CONSOLE ERROR: line 31: Failed to load http://localhost:8000/xmlhttprequest/resources/reply.xml: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
 Test that a cross-origin redirect to a server that responds is indistinguishable from one that does not. Should say PASS:
 
 PASS
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-sync-double-expected.txt b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-sync-double-expected.txt
index e2cde19..adb03c3 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-sync-double-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-sync-double-expected.txt
@@ -1,4 +1,5 @@
 CONSOLE WARNING: line 25: Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.
+CONSOLE ERROR: line 26: Failed to load http://localhost:8000/xmlhttprequest/resources/redirect.php?url=/xmlhttprequest/resources/reply.xml: Redirect from 'http://localhost:8000/xmlhttprequest/resources/redirect.php?url=/xmlhttprequest/resources/reply.xml' to 'http://localhost:8000/xmlhttprequest/resources/reply.xml' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
 Test that a cross-origin chain of redirects to a server that responds is indistinguishable from one that does not. Should say PASS:
 
 PASS
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-sync-expected.txt b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-sync-expected.txt
index 84783c5..28fa719 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-sync-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-sync-expected.txt
@@ -1,4 +1,5 @@
 CONSOLE WARNING: line 25: Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.
+CONSOLE ERROR: line 26: Failed to load http://localhost:8000/xmlhttprequest/resources/reply.xml: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
 Test that a cross-origin redirect to a server that responds is indistinguishable from one that does not. Should say PASS:
 
 PASS
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-tripmine-expected.txt b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-tripmine-expected.txt
index 4cb39d41..ec2f7afa 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-tripmine-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-tripmine-expected.txt
@@ -9,6 +9,16 @@
 CONSOLE ERROR: Failed to load http://localhost:8000/resources/tripmine.php: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
 CONSOLE ERROR: Failed to load http://localhost:8000/resources/tripmine.php: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
 CONSOLE ERROR: Failed to load http://localhost:8000/resources/tripmine.php: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
+CONSOLE ERROR: line 1: Failed to load http://localhost:8000/resources/tripmine.php: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
+CONSOLE ERROR: line 1: Failed to load http://localhost:8000/resources/tripmine.php: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
+CONSOLE ERROR: line 1: Failed to load http://localhost:8000/resources/tripmine.php: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
+CONSOLE ERROR: line 1: Failed to load http://localhost:8000/resources/tripmine.php: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
+CONSOLE ERROR: line 1: Failed to load http://localhost:8000/resources/tripmine.php: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
+CONSOLE ERROR: line 1: Failed to load http://localhost:8000/resources/tripmine.php: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
+CONSOLE ERROR: line 1: Failed to load http://localhost:8000/resources/tripmine.php: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
+CONSOLE ERROR: line 1: Failed to load http://localhost:8000/resources/tripmine.php: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
+CONSOLE ERROR: line 1: Failed to load http://localhost:8000/resources/tripmine.php: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
+CONSOLE ERROR: line 1: Failed to load http://localhost:8000/resources/tripmine.php: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
 Test that a cross-origin redirect does not result in a non-simple request being sent to the target.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/xmlhttprequest-unsafe-redirect-expected.txt b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/xmlhttprequest-unsafe-redirect-expected.txt
index d4e1fcbb..73ddf4b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/xmlhttprequest-unsafe-redirect-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/xmlhttprequest-unsafe-redirect-expected.txt
@@ -1,4 +1,5 @@
 CONSOLE WARNING: line 52: Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.
+CONSOLE ERROR: line 54: Failed to load http://localhost:8080/xmlhttprequest/resources/forbidden.txt: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
 CONSOLE ERROR: Failed to load http://localhost:8080/xmlhttprequest/resources/forbidden.txt: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8000' is therefore not allowed access.
 This tests that unsafe redirects won't be allowed when making an XMLHttpRequest.
 Sync XHR started.
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/pointer-events-composited-scrolling-expected.txt b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/pointer-events-composited-scrolling-expected.txt
index a98dfa32..52459195 100644
--- a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/pointer-events-composited-scrolling-expected.txt
+++ b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/pointer-events-composited-scrolling-expected.txt
@@ -57,14 +57,6 @@
       "reason": "compositing update"
     },
     {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
       "object": "LayoutBlockFlow DIV id='content'",
       "reason": "compositing update"
     }
diff --git a/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-bufferbeforeonload.html b/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-bufferbeforeonload.html
index a38f5eb8..5ea68b7 100644
--- a/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-bufferbeforeonload.html
+++ b/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-bufferbeforeonload.html
@@ -15,23 +15,26 @@
     const entries = performance.getEntriesByName('click');
     const onloadTime = performance.timing.loadEventStart - performance.timeOrigin;
 
-    const entriesBeforeOnload = entries.filter(e => e.startTime <
-      onloadTime);
+    const entriesBeforeOnload = entries.filter(
+        e => e.startTime < onloadTime);
     assert_equals(entriesBeforeOnload.length, 1,
-      "Long latency events before onload should be buffered."
-    );
+        "Long latency events before onload should be buffered.");
     const entry = entriesBeforeOnload[0];
     verifyClickEvent(entry);
 
-    assert_greater_than(entry.processingStart, processingStartMin);
-    assert_greater_than(onloadTime, entry.processingStart);
-    assert_greater_than(entry.startTime, clickTimeMin);
-    assert_greater_than(onloadTime, entry.startTime);
+    assert_greater_than(entry.processingStart, processingStartMin,
+        "The entry should be processed later than processingStartMin.");
+    assert_greater_than(onloadTime, entry.processingStart,
+        "Onload should occur later than the entry's processing start.");
+    assert_greater_than(entry.startTime, clickTimeMin,
+        "The entry's start time should be later than clickTimeMin.");
+    assert_greater_than(onloadTime, entry.startTime,
+        "onload should occur later than the entry's start time.");
 
-    const entriesAfterOnload = entries.filter(e => e.startTime >
-      onloadTime);
+    const entriesAfterOnload = entries.filter(
+        e => e.startTime > onloadTime);
     assert_equals(entriesAfterOnload.length, 0,
-      "Events after onload shouldn't be buffered.");
+        "Events after onload shouldn't be buffered.");
   }
 
   /* Timeline:
diff --git a/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-crossiframe.html b/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-crossiframe.html
index 8564da1..4d14cd9 100644
--- a/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-crossiframe.html
+++ b/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-crossiframe.html
@@ -29,10 +29,14 @@
     const entry = entries[0];
     verifyClickEvent(entry);
 
-    assert_true(entry.processingStart > processingStartMin);
-    assert_true(entry.processingStart < onloadTime);
-    assert_true(entry.startTime > clickTimeMin);
-    assert_true(entry.startTime < onloadTime);
+    assert_greater_than(entry.processingStart, processingStartMin,
+        "The entry's processing start should be later than processingStartMin.");
+    assert_greater_than(onloadTime, entry.processingStart,
+        "onload should occur later than the entry's procesisng start.");
+    assert_greater_than(entry.startTime, clickTimeMin,
+        "The entry's start time should be later than clickTimeMin.");
+    assert_greater_than(onloadTime, entry.startTime,
+        "onload should occur later than the entry's start time.");
   }
 
   function validateChildFrameEntries(msg) {
@@ -43,12 +47,20 @@
     const entry = entries[0];
     verifyClickEvent(entry);
 
-    assert_true(entry.processingStart > childFrameData.processingStartMin);
-    assert_true(entry.processingStart < childFrameData.onloadTime);
-    assert_true(entry.startTime > childFrameData.clickTimeMin);
-    assert_true(entry.startTime < childFrameData.onloadTime);
+    assert_greater_than(entry.processingStart, childFrameData.processingStartMin,
+        "The entry's processing start should be later than the child frame's processingStartMin.");
+    assert_greater_than(childFrameData.onloadTime, entry.processingStart,
+        "Child frame's onload should occur later than the entry's processing \
+        start.");
+    assert_greater_than(entry.startTime, childFrameData.clickTimeMin,
+        "The entry's start time should be later than the child frame's \
+        clickTimeMin.");
+    assert_greater_than(childFrameData.onloadTime, entry.startTime,
+        "Child frame's onload should be later than the entry's start time.");
 
-    assert_array_equals(childFrameData.observedEntries, childFrameData.bufferedEntries);
+    assert_array_equals(childFrameData.observedEntries,
+        childFrameData.bufferedEntries,
+        "The child frame's observed entries should be buffered as well.");
   }
 
   async_test(function(t) {
diff --git a/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-observethenonload.html b/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-observethenonload.html
index 9d63987..143c8e6e 100644
--- a/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-observethenonload.html
+++ b/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-observethenonload.html
@@ -14,37 +14,44 @@
 
   function verifyBuffer(bufferedEntries) {
     const loadStart =
-      performance.timing.loadEventStart - performance.timeOrigin;
+        performance.timing.loadEventStart - performance.timeOrigin;
     assert_equals(bufferedEntries.length, 1,
-      "Only events before onload should be buffered");
+        "Only events before onload should be buffered.");
     const entry = bufferedEntries[0];
-    assert_true(entry.startTime < loadStart);
-    assert_true(entry.processingStart > processingStartMin);
+    assert_greater_than(loadStart, entry.startTime,
+        "onload should be later than entry's start time.");
+    assert_greater_than(entry.processingStart, processingStartMin,
+        "The entry's processing start should be later than processingStartMin.");
     verifyClickEvent(entry);
   }
 
   function verifyObserverEntries(observedEntries) {
-    const observedEntriesHappenAfterObserver = observedEntries.filter(e => e.startTime >
-      observerStart);
+    const observedEntriesHappenAfterObserver = observedEntries.filter(
+        e => e.startTime > observerStart);
     assert_equals(observedEntriesHappenAfterObserver.length, 1,
-      'Events DISPATCHED after observer start should be observed.');
+        'Events DISPATCHED after observer start should be observed.');
     const entry1 = observedEntriesHappenAfterObserver[0];
     verifyClickEvent(entry1);
-    assert_true(entry1.processingStart > processingStartMin);
-    assert_true(entry1.startTime > observerStart);
+    assert_greater_than(entry1.processingStart, processingStartMin,
+        "entry1's processing start should be later than processingStartMin.");
+    assert_greater_than(entry1.startTime, observerStart,
+        "entry1's start time should be later than observer start.");
 
     // This case is tricky in that the click happened before observer,
     // but the dispatching of it is delayed until after observer start
     // due to busy mainthread. The observer is thus able to observe the click.
     const observedEntriesHappenBeforeObserver =
-      observedEntries.filter(e => e.startTime < observerStart);
+        observedEntries.filter(e => e.startTime < observerStart);
     assert_equals(observedEntriesHappenBeforeObserver.length, 1,
-      'Events HAPPENING before observer but DISPATCHED after observer start should be observed.'
+        'Events HAPPENING before observer but DISPATCHED after observer start \
+        should be observed.'
     );
     const entry2 = observedEntriesHappenBeforeObserver[0];
     verifyClickEvent(entry2);
-    assert_true(entry2.processingStart > processingStartMin);
-    assert_true(entry2.startTime < observerStart);
+    assert_greater_than(entry2.processingStart, processingStartMin,
+        "entry2's processing start should be later than processingStartMin.");
+    assert_greater_than(observerStart, entry2.startTime,
+        "observer start should be later than entry2's start time.");
   }
 
   /* Timeline:
diff --git a/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-onloadthenobserve.html b/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-onloadthenobserve.html
index 67d038d5..85e59f1 100644
--- a/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-onloadthenobserve.html
+++ b/third_party/WebKit/LayoutTests/performance/event-timing/event-timing-onloadthenobserve.html
@@ -26,10 +26,14 @@
     assert_equals(observedEntries.length, 1, "Long latency task after observer start should be observed.");
     const entry = observedEntries[0];
     verifyClickEvent(entry);
-    assert_true(entry.processingStart > processingStartMin);
-    assert_true(entry.processingStart < callbackTime);
-    assert_true(entry.startTime > observerStart);
-    assert_true(entry.startTime < callbackTime);
+    assert_greater_than(entry.processingStart, processingStartMin,
+        "The entry's processing start should be later than processingStartMin.");
+    assert_greater_than(callbackTime, entry.processingStart,
+        "The callback time should be later than the entry's processing start.");
+    assert_greater_than(entry.startTime, observerStart,
+        "The entry's start time should be later than observer start.");
+    assert_greater_than(callbackTime, entry.startTime,
+        "The callback time should be later than entry's start time.");
   }
 
   function startObserver(t) {
diff --git a/third_party/WebKit/LayoutTests/performance/event-timing/resources/event-timing-support.js b/third_party/WebKit/LayoutTests/performance/event-timing/resources/event-timing-support.js
index b8f0b70..35a2b99 100644
--- a/third_party/WebKit/LayoutTests/performance/event-timing/resources/event-timing-support.js
+++ b/third_party/WebKit/LayoutTests/performance/event-timing/resources/event-timing-support.js
@@ -25,7 +25,8 @@
   assert_true(entry.cancelable);
   assert_equals(entry.name, 'click');
   assert_equals(entry.entryType, 'event');
-  assert_true(entry.duration > 50);
+  assert_greater_than(entry.duration, 50,
+      "The entry's duration should be greater than 50ms.");
 }
 
 function wait() {
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/details-open-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/details-open-repaint-expected.txt
index 76635a45..d249994 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/details-open-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/details-open-repaint-expected.txt
@@ -52,10 +52,6 @@
       "reason": "appeared"
     },
     {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
       "object": "HorizontalScrollbar",
       "reason": "scroll control"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/animation/state-at-end-event-transform-layer-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/animation/state-at-end-event-transform-layer-expected.png
deleted file mode 100644
index 528d5a8d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/animation/state-at-end-event-transform-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/color-matching/image-color-matching-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/color-matching/image-color-matching-expected.png
deleted file mode 100644
index 81713d1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/color-matching/image-color-matching-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/compositing-visible-descendant-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/compositing-visible-descendant-expected.png
deleted file mode 100644
index f7f781e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/compositing-visible-descendant-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/compositing-visible-descendant-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/compositing-visible-descendant-expected.txt
deleted file mode 100644
index 2853073..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/compositing-visible-descendant-expected.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x576
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 253x19
-          text run at (0,0) width 253: "You should see one green square below."
-layer at (20,40) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (20,40) size 100x100 [bgcolor=#FF0000]
-hidden layer at (20,40) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (20,40) size 100x100
-layer at (20,40) size 100x100
-  LayoutBlockFlow (relative positioned) {DIV} at (0,0) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/direct-image-compositing-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/direct-image-compositing-expected.png
deleted file mode 100644
index 9093d985..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/direct-image-compositing-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/direct-image-compositing-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/direct-image-compositing-expected.txt
deleted file mode 100644
index 4cc9e31..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/direct-image-compositing-expected.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 756
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 785x756 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {HTML} at (0,0) size 785x755.88
-    LayoutBlockFlow {BODY} at (8,21.44) size 769x118.44
-      LayoutBlockFlow {H1} at (0,0) size 769x37
-        LayoutText {#text} at (0,0) size 389x36
-          text run at (0,0) width 389: "Image optimisation in layers"
-      LayoutBlockFlow {P} at (0,58.44) size 769x60
-        LayoutText {#text} at (0,0) size 747x59
-          text run at (0,0) width 595: "This test exercises direct compositing of images with hardware acceleration. The visual results "
-          text run at (595,0) width 34: "using"
-          text run at (0,20) width 681: "ACCELERATED_COMPOSITING and regular TOT should be identical. Running this test manually with "
-          text run at (681,20) width 66: "the correct"
-          text run at (0,40) width 442: "debug options will show which elements are directly composited. See "
-        LayoutInline {A} at (0,0) size 305x19 [color=#0000EE]
-          LayoutText {#text} at (442,40) size 305x19
-            text run at (442,40) width 305: "https://bugs.webkit.org/show_bug.cgi?id=23361"
-        LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow (floating) {DIV} at (0,134.44) size 260x200
-        LayoutText {#text} at (150,0) size 106x79
-          text run at (150,0) width 106: "Basic image - no"
-          text run at (150,20) width 83: "style - can be"
-          text run at (150,40) width 47: "directly"
-          text run at (150,60) width 72: "composited"
-      LayoutBlockFlow (floating) {DIV} at (260,134.44) size 260x200
-        LayoutText {#text} at (160,0) size 100x79
-          text run at (160,0) width 100: "5px blue border"
-          text run at (160,20) width 88: "- can NOT be"
-          text run at (160,40) width 47: "directly"
-          text run at (160,60) width 72: "composited"
-      LayoutBlockFlow (floating) {DIV} at (0,334.44) size 260x200
-        LayoutText {#text} at (160,0) size 79x79
-          text run at (160,0) width 79: "margin - can"
-          text run at (160,20) width 53: "NOT be"
-          text run at (160,40) width 47: "directly"
-          text run at (160,60) width 72: "composited"
-      LayoutBlockFlow (floating) {DIV} at (260,334.44) size 260x200
-        LayoutText {#text} at (150,0) size 109x59
-          text run at (150,0) width 109: "solid background"
-          text run at (150,20) width 101: "- can be directly"
-          text run at (150,40) width 72: "composited"
-      LayoutBlockFlow (floating) {DIV} at (0,534.44) size 260x200
-        LayoutText {#text} at (150,0) size 104x79
-          text run at (150,0) width 75: "background"
-          text run at (150,20) width 73: "image - can"
-          text run at (150,40) width 104: "NOT be directly"
-          text run at (150,60) width 72: "composited"
-      LayoutBlockFlow (floating) {DIV} at (260,534.44) size 260x200
-        LayoutText {#text} at (150,0) size 83x99
-          text run at (150,0) width 67: "rotated but"
-          text run at (150,20) width 81: "otherwise no"
-          text run at (150,40) width 83: "style - can be"
-          text run at (150,60) width 47: "directly"
-          text run at (150,80) width 72: "composited"
-layer at (8,156) size 150x150
-  LayoutImage (floating) {IMG} at (0,0) size 150x150
-layer at (268,156) size 160x160
-  LayoutImage (floating) {IMG} at (0,0) size 160x160 [border: (5px solid #0000FF)]
-layer at (13,361) size 150x150
-  LayoutImage (floating) {IMG} at (5,5) size 150x150
-layer at (268,356) size 150x150
-  LayoutImage (floating) {IMG} at (0,0) size 150x150 [bgcolor=#808080]
-layer at (8,556) size 150x150 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutImage (floating) {IMG} at (0,0) size 150x150 [bgcolor=#FFA500]
-layer at (268,556) size 150x150 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutImage (floating) {IMG} at (0,0) size 150x150
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/generated-content-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/generated-content-expected.png
deleted file mode 100644
index 3d4061ed..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/generated-content-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/generated-content-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/generated-content-expected.txt
deleted file mode 100644
index f35b92df..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/generated-content-expected.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x298
-  LayoutBlockFlow {HTML} at (0,0) size 800x298
-    LayoutBlockFlow {BODY} at (8,16) size 784x274
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutInline {A} at (0,0) size 305x19 [color=#0000EE]
-          LayoutText {#text} at (0,0) size 305x19
-            text run at (0,0) width 305: "https://bugs.webkit.org/show_bug.cgi?id=26095"
-      LayoutBlockFlow {P} at (0,36) size 784x20
-        LayoutText {#text} at (0,0) size 387x19
-          text run at (0,0) width 387: "Tests that a 3D transform on a generated node does not crash."
-      LayoutBlockFlow {DIV} at (0,72) size 202x202 [border: (1px solid #000000)]
-layer at (9,89) size 200x200
-  LayoutBlockFlow {<pseudo:after>} at (1,1) size 200x200
-    LayoutTextFragment (anonymous) at (0,0) size 65x19
-      text run at (0,0) width 65: "Generated"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/abs-position-inside-opacity-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/abs-position-inside-opacity-expected.png
deleted file mode 100644
index 42d1c8d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/abs-position-inside-opacity-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/abs-position-inside-opacity-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/abs-position-inside-opacity-expected.txt
deleted file mode 100644
index eea554e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/abs-position-inside-opacity-expected.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x542
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 326x19
-          text run at (0,0) width 326: "You should see two green boxes below, with no red"
-layer at (58,78) size 120x120
-  LayoutBlockFlow (relative positioned) {DIV} at (50,70) size 120x120 [border: (1px solid #000000)]
-layer at (69,89) size 100x100 transparent
-  LayoutBlockFlow {DIV} at (11,11) size 100x100 [bgcolor=#FF0000]
-layer at (69,89) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (11,11) size 100x100 [bgcolor=#008000]
-layer at (58,248) size 120x120
-  LayoutBlockFlow (relative positioned) {DIV} at (50,240) size 120x120 [border: (1px solid #000000)]
-layer at (69,259) size 100x100 transparent
-  LayoutBlockFlow {DIV} at (11,11) size 100x100 [bgcolor=#FF0000]
-layer at (69,259) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (11,11) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/clipping-foreground-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/clipping-foreground-expected.png
deleted file mode 100644
index aa9c7fc..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/clipping-foreground-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/clipping-foreground-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/clipping-foreground-expected.txt
deleted file mode 100644
index 375494e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/clipping-foreground-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 436x19
-          text run at (0,0) width 436: "The layering of the boxes should not be affected by overflow:hidden."
-      LayoutBlockFlow (anonymous) at (0,36) size 784x477
-        LayoutText {#text} at (320,305) size 4x19
-          text run at (320,305) width 4: " "
-        LayoutText {#text} at (0,0) size 0x0
-layer at (68,261) size 200x200 layerType: background only
-layer at (28,221) size 150x150
-  LayoutBlockFlow (positioned) zI: -1 {DIV} at (-40,-40) size 150x150 [color=#808080] [bgcolor=#C86464] [border: (2px solid #000000)]
-    LayoutText zI: -1 {#text} at (22,22) size 106x40
-      text run at (22,22) width 106: "Behind"
-layer at (50,303) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (22,82) size 100x100 [bgcolor=#008000] [border: (2px solid #000000)]
-    LayoutText {#text} at (22,22) size 55x41
-      text run at (22,22) width 55: "Behind"
-      text run at (22,43) width 53: "behind"
-layer at (68,261) size 200x200 layerType: foreground only
-  LayoutBlockFlow (relative positioned) {DIV} at (60,217) size 200x200 [color=#0000FF] [bgcolor=#FFFFFFCC] [border: (10px solid #000000)]
-    LayoutText {#text} at (30,30) size 126x81
-      text run at (30,30) width 59: "Box"
-      text run at (30,71) width 126: "contents"
-layer at (158,351) size 150x150
-  LayoutBlockFlow (positioned) zI: 1 {DIV} at (90,90) size 150x150 [color=#808080] [bgcolor=#C8C880] [border: (2px solid #000000)]
-    LayoutText zI: 1 {#text} at (22,22) size 85x81
-      text run at (22,22) width 33: "In"
-      text run at (22,63) width 85: "Front"
-layer at (392,104) size 200x200 clip at (402,114) size 180x180 scrollWidth 230 scrollHeight 230 layerType: background only
-layer at (352,64) size 150x150 backgroundClip at (402,114) size 180x180 clip at (402,114) size 180x180
-  LayoutBlockFlow (positioned) zI: -1 {DIV} at (-40,-40) size 150x150 [color=#808080] [bgcolor=#C86464] [border: (2px solid #000000)]
-    LayoutText zI: -1 {#text} at (22,22) size 106x40
-      text run at (22,22) width 106: "Behind"
-layer at (374,146) size 100x100 backgroundClip at (402,114) size 180x180 clip at (402,114) size 180x180
-  LayoutBlockFlow (positioned) {DIV} at (22,82) size 100x100 [bgcolor=#008000] [border: (2px solid #000000)]
-    LayoutText {#text} at (22,22) size 55x41
-      text run at (22,22) width 55: "Behind"
-      text run at (22,43) width 53: "behind"
-layer at (392,104) size 200x200 clip at (402,114) size 180x180 scrollWidth 230 scrollHeight 230 layerType: foreground only
-  LayoutBlockFlow (relative positioned) {DIV} at (384,60) size 200x200 [color=#0000FF] [bgcolor=#FFFFFFCC] [border: (10px solid #000000)]
-    LayoutText {#text} at (30,30) size 126x81
-      text run at (30,30) width 59: "Box"
-      text run at (30,71) width 126: "contents"
-layer at (482,194) size 150x150 backgroundClip at (402,114) size 180x180 clip at (402,114) size 180x180
-  LayoutBlockFlow (positioned) zI: 1 {DIV} at (90,90) size 150x150 [color=#808080] [bgcolor=#C8C880] [border: (2px solid #000000)]
-    LayoutText zI: 1 {#text} at (22,22) size 85x81
-      text run at (22,22) width 33: "In"
-      text run at (22,63) width 85: "Front"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/composited-html-size-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/composited-html-size-expected.png
deleted file mode 100644
index f6d4ae1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/composited-html-size-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-in-composited-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-in-composited-expected.png
deleted file mode 100644
index b049280..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-in-composited-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-in-composited-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-in-composited-expected.txt
deleted file mode 100644
index 8679498..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-in-composited-expected.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollY 50.00 scrollHeight 1000
-  LayoutView at (0,0) size 800x600
-layer at (0,-50) size 785x1000 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {HTML} at (0,0) size 785x1000
-    LayoutBlockFlow {BODY} at (0,0) size 785x1000
-      LayoutBlockFlow {P} at (0,210) size 785x20
-        LayoutText {#text} at (0,0) size 186x19
-          text run at (0,0) width 186: "You should see no red above."
-layer at (20,20) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (20,70) size 100x100 [bgcolor=#FF0000]
-layer at (220,70) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (220,120) size 100x100 [bgcolor=#FF0000]
-layer at (420,70) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (420,120) size 100x100 [bgcolor=#FF0000]
-layer at (0,-50) size 60x60 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {DIV} at (0,0) size 60x60 [bgcolor=#0000FF33]
-layer at (95,95) size 50x50
-  LayoutBlockFlow (positioned) zI: 1 {DIV} at (95,145) size 50x50
-layer at (20,20) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (20,20) size 100x100 [bgcolor=#008000]
-layer at (200,50) size 50x50
-  LayoutBlockFlow (positioned) zI: 1 {DIV} at (200,100) size 50x50
-layer at (220,70) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (20,20) size 100x100 [bgcolor=#008000]
-layer at (400,50) size 50x50
-  LayoutBlockFlow (positioned) zI: 1 {DIV} at (400,100) size 50x50
-layer at (400,50) size 100x100
-  LayoutBlockFlow {DIV} at (0,0) size 100x100
-layer at (420,70) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (20,20) size 100x100 [bgcolor=#008000]
-scrolled to 0,50
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-composited-page-scale-down-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-composited-page-scale-down-expected.png
deleted file mode 100644
index 02a7a3a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-composited-page-scale-down-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-composited-page-scale-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-composited-page-scale-expected.png
deleted file mode 100644
index d66728f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-composited-page-scale-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-expected.png
deleted file mode 100644
index 9e61412..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-expected.txt
deleted file mode 100644
index 5d8e7708..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-expected.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-layer at (0,0) size 800x600 scrollX 50.00 scrollY 50.00 scrollWidth 1008 scrollHeight 1016
-  LayoutView at (0,0) size 800x600
-layer at (-50,-50) size 800x1016 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x1016
-    LayoutBlockFlow {BODY} at (8,8) size 1000x1000
-layer at (0,116) size 437x20
-  LayoutBlockFlow (positioned) {P} at (50,166) size 437x20
-    LayoutText {#text} at (0,0) size 437x19
-      text run at (0,0) width 437: "You should see a green square in the top left corner of an orange box."
-layer at (0,0) size 100x100 transparent
-  LayoutBlockFlow (positioned) {DIV} at (0,0) size 100x100 [bgcolor=#FFA500]
-layer at (0,0) size 50x50
-  LayoutBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#008000]
-scrolled to 50,50
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-iframe-composited-page-scale-down-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-iframe-composited-page-scale-down-expected.png
deleted file mode 100644
index 6464c5e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-iframe-composited-page-scale-down-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-iframe-composited-page-scale-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-iframe-composited-page-scale-expected.png
deleted file mode 100644
index 2e6870d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-iframe-composited-page-scale-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-transform-composited-page-scale-down-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-transform-composited-page-scale-down-expected.png
deleted file mode 100644
index 31e99d54..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-transform-composited-page-scale-down-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-transform-composited-page-scale-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-transform-composited-page-scale-expected.png
deleted file mode 100644
index 8a3ea89..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/fixed-position-transform-composited-page-scale-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/layer-due-to-layer-children-deep-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/layer-due-to-layer-children-deep-expected.png
deleted file mode 100644
index c86200fc..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/layer-due-to-layer-children-deep-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/layer-due-to-layer-children-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/layer-due-to-layer-children-expected.png
deleted file mode 100644
index 21bc51a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/layer-due-to-layer-children-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/outline-change-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/outline-change-expected.png
deleted file mode 100644
index d41c276..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/outline-change-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/partial-layout-update-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/partial-layout-update-expected.png
deleted file mode 100644
index 9f36e72..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/partial-layout-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/partial-layout-update-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/partial-layout-update-expected.txt
deleted file mode 100644
index 4c439fe3..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/partial-layout-update-expected.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 360x19
-          text run at (0,0) width 360: "The green box should always obscure the red box below."
-layer at (8,44) size 402x202 clip at (9,45) size 400x200
-  LayoutBlockFlow (relative positioned) {DIV} at (0,36) size 402x202 [border: (1px solid #000000)]
-layer at (9,45) size 200x200
-  LayoutBlockFlow (positioned) zI: 3 {DIV} at (1,1) size 200x200 [bgcolor=#BBBBBB]
-layer at (9,45) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (0,0) size 100x100 [bgcolor=#FF0000]
-layer at (9,45) size 100x100
-  LayoutBlockFlow {DIV} at (0,0) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/preserve-3d-switching-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/preserve-3d-switching-expected.txt
deleted file mode 100644
index b57a21c3..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/preserve-3d-switching-expected.txt
+++ /dev/null
@@ -1,121 +0,0 @@
-The green box appear angled out from the yellow box and embedded in it.
-
-transform: translateZ(-100px) rotateY(45deg);
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='container'",
-      "position": [108, 73],
-      "bounds": [304, 304]
-    },
-    {
-      "name": "Child Transform Layer",
-      "bounds": [304, 304],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='parent'",
-      "bounds": [280, 280],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFF00",
-      "transform": 4
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "bounds": [200, 200],
-      "opacity": 0.699999988079071,
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 6
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [108, 73, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, -0.002],
-        [0, 0, 0, 1]
-      ],
-      "origin": [152, 152]
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [12, 12, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [0.766044443118978, -0.556670399226419, -0.32139380484327, 0],
-        [0, 0.5, -0.866025403784439, 0],
-        [0.642787609686539, 0.663413948168938, 0.383022221559489, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [140, 140],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 5,
-      "parent": 4,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [40, 40, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 6,
-      "parent": 5,
-      "transform": [
-        [0.766044443118978, 0, 0.642787609686539, 0],
-        [0, 1, 0, 0],
-        [-0.642787609686539, 0, 0.766044443118978, 0],
-        [0, 0, 50, 1]
-      ],
-      "origin": [100, 100],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/root-layer-update-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/root-layer-update-expected.png
deleted file mode 100644
index cbd6684..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/root-layer-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/root-layer-update-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/root-layer-update-expected.txt
deleted file mode 100644
index 9c28ab4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/root-layer-update-expected.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x174
-  LayoutBlockFlow {HTML} at (0,0) size 800x174
-    LayoutBlockFlow {BODY} at (100,0) size 600x158
-      LayoutBlockFlow {P} at (0,118) size 600x40
-        LayoutInline {A} at (0,0) size 149x19 [color=#0000EE]
-          LayoutText {#text} at (0,0) size 149x19
-            text run at (0,0) width 149: "rdar://problem/7026010"
-        LayoutBR {BR} at (149,0) size 0x19
-        LayoutText {#text} at (0,20) size 462x19
-          text run at (0,20) width 462: "Test for the root layer getting correctly positioned. You should see no red."
-layer at (350,1) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (350,1) size 100x100 [bgcolor=#FF0000]
-layer at (-100,0) size 300x100 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow (positioned) {DIV} at (-100,0) size 300x100 [bgcolor=#808080]
-layer at (100,0) size 600x102
-  LayoutBlockFlow (relative positioned) {DIV} at (0,0) size 600x102 [border: (1px solid #000000)]
-layer at (350,1) size 100x100
-  LayoutBlockFlow {DIV} at (250,1) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/transfrom-origin-on-zero-size-layer-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/transfrom-origin-on-zero-size-layer-expected.png
deleted file mode 100644
index e186ea19..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/transfrom-origin-on-zero-size-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/transfrom-origin-on-zero-size-layer-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/transfrom-origin-on-zero-size-layer-expected.txt
deleted file mode 100644
index a0a4e7d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/transfrom-origin-on-zero-size-layer-expected.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (0,0) size 800x584
-      LayoutBlockFlow {P} at (0,0) size 800x20
-        LayoutText {#text} at (0,0) size 31x19
-          text run at (0,0) width 31: "Bug "
-        LayoutInline {A} at (0,0) size 40x19 [color=#0000EE]
-          LayoutText {#text} at (31,0) size 40x19
-            text run at (31,0) width 40: "29495"
-        LayoutText {#text} at (71,0) size 324x19
-          text run at (71,0) width 324: ". You should see one green box below, with no red."
-layer at (10,60) size 50x50
-  LayoutBlockFlow (positioned) {DIV} at (10,60) size 50x50 [bgcolor=#FF0000]
-layer at (10,10) size 0x0
-  LayoutBlockFlow (positioned) {DIV} at (10,10) size 0x0
-layer at (10,10) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (0,0) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/video-fixed-scrolling-expected.png
deleted file mode 100644
index 0dd049d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/video-fixed-scrolling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/video-fixed-scrolling-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/video-fixed-scrolling-expected.txt
deleted file mode 100644
index 003ad1f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/video-fixed-scrolling-expected.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollY 50.00 scrollHeight 1016
-  LayoutView at (0,0) size 800x600
-layer at (0,-50) size 785x1016 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {HTML} at (0,0) size 785x1016
-    LayoutBlockFlow {BODY} at (8,8) size 769x1000
-      LayoutBlockFlow (anonymous) at (0,0) size 769x385
-        LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {P} at (0,401) size 769x20
-        LayoutText {#text} at (0,0) size 445x19
-          text run at (0,0) width 445: "The blue bar should be in front of the video, and at the top of the page."
-layer at (8,38) size 400x300
-  LayoutVideo {VIDEO} at (0,80) size 400x300
-layer at (8,38) size 400x300
-  LayoutFlexibleBox (relative positioned) {DIV} at (0,0) size 400x300
-    LayoutBlockFlow {DIV} at (200,0) size 0x0
-    LayoutFlexibleBox {DIV} at (0,0) size 400x300
-layer at (0,0) size 500x60
-  LayoutBlockFlow (positioned) {DIV} at (0,0) size 500x60 [bgcolor=#0000FFCC]
-scrolled to 0,50
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/video-opacity-overlay-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/video-opacity-overlay-expected.png
deleted file mode 100644
index 7a93399..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/video-opacity-overlay-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/video-opacity-overlay-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/video-opacity-overlay-expected.txt
deleted file mode 100644
index 54c4dbba..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/geometry/video-opacity-overlay-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x362
-  LayoutBlockFlow {HTML} at (0,0) size 800x362
-    LayoutBlockFlow {BODY} at (8,16) size 784x338
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 294x19
-          text run at (0,0) width 294: "The orange bar should be in front of the video."
-layer at (8,52) size 402x302
-  LayoutBlockFlow (relative positioned) {DIV} at (0,36) size 402x302 [border: (1px solid #000000)]
-    LayoutBlockFlow (anonymous) at (1,1) size 400x305
-      LayoutText {#text} at (0,0) size 0x0
-layer at (9,53) size 400x300
-  LayoutVideo {VIDEO} at (0,0) size 400x300
-layer at (9,53) size 400x300
-  LayoutFlexibleBox (relative positioned) {DIV} at (0,0) size 400x300
-    LayoutBlockFlow {DIV} at (200,0) size 0x0
-    LayoutFlexibleBox {DIV} at (0,0) size 400x300
-layer at (9,358) size 10x10 transparent
-  LayoutBlockFlow {DIV} at (1,306) size 10x10 [bgcolor=#008000]
-layer at (9,293) size 400x60
-  LayoutBlockFlow (positioned) {DIV} at (1,241) size 400x60 [bgcolor=#FFA500]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-pixel-rotated-div-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-pixel-rotated-div-expected.png
deleted file mode 100644
index 0aa2636..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-pixel-rotated-div-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-pixel-rotated-link-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-pixel-rotated-link-expected.png
deleted file mode 100644
index 263ade9..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-pixel-rotated-link-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-pixel-transparent-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-pixel-transparent-expected.png
deleted file mode 100644
index 076147ef..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-pixel-transparent-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-skew-matrix-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-skew-matrix-expected.png
deleted file mode 100644
index 55f76324..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-skew-matrix-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-with-box-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-with-box-shadow-expected.png
deleted file mode 100644
index f9adb9c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-with-box-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-with-squashing-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-with-squashing-expected.png
deleted file mode 100644
index 467115d6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/gestures/gesture-tapHighlight-with-squashing-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/iframes/composited-iframe-alignment-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/iframes/composited-iframe-alignment-expected.png
deleted file mode 100644
index b357b2eb..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/iframes/composited-iframe-alignment-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/iframes/composited-iframe-alignment-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/iframes/composited-iframe-alignment-expected.txt
deleted file mode 100644
index f2bd1c1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/iframes/composited-iframe-alignment-expected.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x76
-  LayoutBlockFlow {HTML} at (0,0) size 800x76
-    LayoutBlockFlow {BODY} at (8,8) size 784x60
-      LayoutText {#text} at (0,0) size 769x39
-        text run at (0,0) width 594: "Simple test of composited iframe content. There should be a blue box with a gray background "
-        text run at (594,0) width 175: "inside the black border. The"
-        text run at (0,20) width 384: "gray background should fit perfectly within the block border "
-        text run at (384,20) width 89: "with no gaps. "
-      LayoutBR {BR} at (0,0) size 0x0
-      LayoutBR {BR} at (0,40) size 0x19
-layer at (100,100) size 440x340
-  LayoutIFrame (positioned) {IFRAME} at (100,100) size 440x340 [border: (20px solid #000000)]
-    layer at (0,0) size 400x300
-      LayoutView at (0,0) size 400x300
-    layer at (0,0) size 400x230
-      LayoutBlockFlow {HTML} at (0,0) size 400x230
-        LayoutBlockFlow {BODY} at (8,10) size 384x210 [bgcolor=#C0C0C0]
-    layer at (18,10) size 210x210
-      LayoutBlockFlow {DIV} at (10,0) size 210x210 [bgcolor=#0000FF]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/iframes/iframe-copy-on-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/iframes/iframe-copy-on-scroll-expected.png
deleted file mode 100644
index b5ab3172..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/iframes/iframe-copy-on-scroll-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-background-color-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-background-color-expected.png
deleted file mode 100644
index 237b6ce3..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-background-color-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-background-color-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-background-color-expected.txt
deleted file mode 100644
index c943644..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-background-color-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,20) size 784x564
-      LayoutImage {IMG} at (20,0) size 280x200 [bgcolor=#00008080]
-      LayoutBlockFlow {P} at (0,440) size 784x20
-        LayoutText {#text} at (0,0) size 241x19
-          text run at (0,0) width 241: "Top and bottom should look the same."
-layer at (28,240) size 280x200
-  LayoutImage {IMG} at (20,220) size 280x200 [bgcolor=#00008080]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-clip-path-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-clip-path-expected.png
deleted file mode 100644
index 29bcae693..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-clip-path-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-dynamic-clip-path-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-dynamic-clip-path-expected.png
deleted file mode 100644
index 29bcae693..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-dynamic-clip-path-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/layers-inside-overflow-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/layers-inside-overflow-scroll-expected.png
deleted file mode 100644
index 72d2d37..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/layers-inside-overflow-scroll-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/layers-inside-overflow-scroll-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/layers-inside-overflow-scroll-expected.txt
deleted file mode 100644
index 11b5e627..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/layers-inside-overflow-scroll-expected.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x431
-  LayoutBlockFlow {HTML} at (0,0) size 800x431
-    LayoutBlockFlow {BODY} at (8,16) size 784x405
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 436x19
-          text run at (0,0) width 436: "The red box in the overflow:scroll div should be scrolled out of view."
-      LayoutBlockFlow {DIV} at (10,36) size 302x207 [border: (1px solid #000000)]
-        LayoutText {#text} at (0,0) size 0x0
-layer at (19,53) size 300x200
-  LayoutVideo {VIDEO} at (1,1) size 300x200
-layer at (18,269) size 302x152 clip at (19,270) size 285x150 scrollY 100.00 scrollHeight 500
-  LayoutBlockFlow {DIV} at (10,253) size 302x152 [border: (1px solid #000000)]
-    LayoutBlockFlow {DIV} at (1,1) size 285x500
-layer at (19,53) size 300x200
-  LayoutFlexibleBox (relative positioned) {DIV} at (0,0) size 300x200
-    LayoutBlockFlow {DIV} at (150,0) size 0x0
-    LayoutFlexibleBox {DIV} at (0,0) size 300x200
-layer at (19,170) size 100x100 backgroundClip at (19,270) size 285x150 clip at (19,270) size 285x150
-  LayoutBlockFlow {DIV} at (0,0) size 100x100 [bgcolor=#FF0000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/layout-width-change-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/layout-width-change-expected.png
deleted file mode 100644
index 3da3bc7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/layout-width-change-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/direct-image-mask-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/direct-image-mask-expected.png
deleted file mode 100644
index 187bc849..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/direct-image-mask-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/direct-image-mask-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/direct-image-mask-expected.txt
deleted file mode 100644
index 09b17d30..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/direct-image-mask-expected.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 580x19
-          text run at (0,0) width 580: "Testing reflections on directly composited images. Left and right sides should look the same."
-      LayoutBlockFlow (anonymous) at (0,36) size 784x169
-        LayoutText {#text} at (224,149) size 4x19
-          text run at (224,149) width 4: " "
-        LayoutText {#text} at (0,0) size 0x0
-layer at (28,64) size 184x124 transparent
-  LayoutImage {IMG} at (20,20) size 184x124
-layer at (256,64) size 184x124 transparent
-  LayoutImage {IMG} at (248,20) size 184x124
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/mask-with-added-filters-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/mask-with-added-filters-expected.png
deleted file mode 100644
index b55138b8..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/mask-with-added-filters-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/mask-with-removed-filters-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/mask-with-removed-filters-expected.png
deleted file mode 100644
index 56f6eebf..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/mask-with-removed-filters-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/masked-ancestor-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/masked-ancestor-expected.png
deleted file mode 100644
index 2893d5c6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/masked-ancestor-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/multiple-masks-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/multiple-masks-expected.png
deleted file mode 100644
index 50633eb..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/multiple-masks-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/multiple-masks-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/multiple-masks-expected.txt
deleted file mode 100644
index 65fb9a0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/multiple-masks-expected.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 619
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 785x619 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {HTML} at (0,0) size 785x619
-    LayoutBlockFlow {BODY} at (8,8) size 769x603
-      LayoutBlockFlow {P} at (0,0) size 769x20
-        LayoutText {#text} at (0,0) size 523x19
-          text run at (0,0) width 523: "Testing masks on compositing layers. Left and right columns should look the same."
-      LayoutBlockFlow (anonymous) at (0,36) size 769x567
-        LayoutBlockFlow {DIV} at (0,0) size 262x562 [border: (1px solid #000000)]
-        LayoutText {#text} at (262,547) size 4x19
-          text run at (262,547) width 4: " "
-        LayoutBlockFlow {DIV} at (266,0) size 262x562 [border: (1px solid #000000)]
-        LayoutText {#text} at (0,0) size 0x0
-layer at (39,75) size 200x200 transparent
-  LayoutBlockFlow (relative positioned) {DIV} at (31,31) size 200x200 [bgcolor=#6464FFCC] [border: (10px solid #000000)]
-layer at (305,75) size 200x200 transparent
-  LayoutBlockFlow (relative positioned) {DIV} at (31,31) size 200x200 [bgcolor=#6464FFCC] [border: (10px solid #000000)]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/simple-composited-mask-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/simple-composited-mask-expected.png
deleted file mode 100644
index a4ea481..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/simple-composited-mask-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/simple-composited-mask-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/simple-composited-mask-expected.txt
deleted file mode 100644
index 1f5ee43..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/masks/simple-composited-mask-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 619
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 785x619 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {HTML} at (0,0) size 785x619
-    LayoutBlockFlow {BODY} at (8,8) size 769x603
-      LayoutBlockFlow {P} at (0,0) size 769x20
-        LayoutText {#text} at (0,0) size 523x19
-          text run at (0,0) width 523: "Testing masks on compositing layers. Left and right columns should look the same."
-      LayoutBlockFlow (anonymous) at (0,36) size 769x567
-        LayoutBlockFlow {DIV} at (0,0) size 262x562 [border: (1px solid #000000)]
-        LayoutText {#text} at (262,547) size 4x19
-          text run at (262,547) width 4: " "
-        LayoutBlockFlow {DIV} at (266,0) size 262x562 [border: (1px solid #000000)]
-        LayoutText {#text} at (0,0) size 0x0
-layer at (39,75) size 200x200 transparent
-  LayoutBlockFlow (relative positioned) {DIV} at (31,31) size 200x200 [bgcolor=#6464FFCC] [border: (10px solid #000000)]
-layer at (39,305) size 200x200 transparent
-  LayoutBlockFlow (relative positioned) {DIV} at (31,261) size 200x200 [bgcolor=#6464FFCC] [border: (10px solid #000000)]
-layer at (305,75) size 200x200 transparent
-  LayoutBlockFlow (relative positioned) {DIV} at (31,31) size 200x200 [bgcolor=#6464FFCC] [border: (10px solid #000000)]
-layer at (305,305) size 200x200 transparent
-  LayoutBlockFlow (relative positioned) {DIV} at (31,261) size 200x200 [bgcolor=#6464FFCC] [border: (10px solid #000000)]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/accelerated-scrolling-with-clip-path-text-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/accelerated-scrolling-with-clip-path-text-expected.png
deleted file mode 100644
index 28968cc..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/accelerated-scrolling-with-clip-path-text-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/ancestor-overflow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/ancestor-overflow-expected.png
deleted file mode 100644
index 1f3761e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/ancestor-overflow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/ancestor-overflow-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/ancestor-overflow-expected.txt
deleted file mode 100644
index cdaa1eb..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/ancestor-overflow-expected.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x434
-  LayoutBlockFlow {HTML} at (0,0) size 800x434
-    LayoutBlockFlow {BODY} at (8,16) size 784x410
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 458x19
-          text run at (0,0) width 458: "Test overflow clipping of composited elements in various configurations."
-      LayoutBlockFlow (anonymous) at (0,36) size 784x374
-        LayoutText {#text} at (182,167) size 4x19
-          text run at (182,167) width 4: " "
-        LayoutText {#text} at (368,167) size 4x19
-          text run at (368,167) width 4: " "
-        LayoutText {#text} at (554,167) size 4x19
-          text run at (554,167) width 4: " "
-        LayoutBR {BR} at (0,0) size 0x0
-        LayoutText {#text} at (182,354) size 4x19
-          text run at (182,354) width 4: " "
-        LayoutText {#text} at (368,354) size 4x19
-          text run at (368,354) width 4: " "
-        LayoutText {#text} at (0,0) size 0x0
-layer at (28,72) size 142x142 clip at (29,73) size 140x140 scrollHeight 171
-  LayoutBlockFlow {DIV} at (20,20) size 142x142 [border: (1px solid #000000)]
-    LayoutBlockFlow {DIV} at (11,11) size 122x122 [border: (1px solid #0000FF)]
-layer at (214,72) size 142x142 clip at (215,73) size 140x140
-  LayoutBlockFlow {DIV} at (206,20) size 142x142 [border: (1px solid #000000)]
-layer at (28,259) size 142x142 clip at (29,260) size 140x140 scrollHeight 171
-  LayoutBlockFlow {DIV} at (20,207) size 142x142 [border: (1px solid #000000)]
-    LayoutBlockFlow {DIV} at (11,11) size 122x122 [border: (1px solid #0000FF)]
-layer at (214,259) size 142x142 clip at (215,260) size 140x140
-  LayoutBlockFlow {DIV} at (206,207) size 142x142 [border: (1px solid #000000)]
-layer at (50,94) size 100x150 backgroundClip at (29,73) size 140x140 clip at (29,73) size 140x140
-  LayoutBlockFlow {DIV} at (11,11) size 100x150 [bgcolor=#808080]
-layer at (225,83) size 122x122
-  LayoutBlockFlow (positioned) {DIV} at (225,83) size 122x122 [border: (1px solid #0000FF)]
-layer at (236,94) size 100x150
-  LayoutBlockFlow {DIV} at (11,11) size 100x150 [bgcolor=#808080]
-layer at (400,72) size 142x142 clip at (401,73) size 140x140 scrollHeight 171
-  LayoutBlockFlow (relative positioned) {DIV} at (392,20) size 142x142 [border: (1px solid #000000)]
-layer at (411,83) size 122x122
-  LayoutBlockFlow (positioned) {DIV} at (11,11) size 122x122 [border: (1px solid #0000FF)]
-layer at (422,94) size 100x150 backgroundClip at (401,73) size 140x140 clip at (401,73) size 140x140
-  LayoutBlockFlow {DIV} at (11,11) size 100x150 [bgcolor=#808080]
-layer at (50,281) size 100x150 backgroundClip at (29,260) size 140x140 clip at (29,260) size 140x140
-  LayoutBlockFlow {DIV} at (11,11) size 100x150 [bgcolor=#808080]
-layer at (225,270) size 122x122
-  LayoutBlockFlow (positioned) {DIV} at (225,270) size 122x122 [border: (1px solid #0000FF)]
-layer at (236,281) size 100x150
-  LayoutBlockFlow {DIV} at (11,11) size 100x150 [bgcolor=#808080]
-layer at (400,259) size 142x142 clip at (401,260) size 140x140 scrollHeight 171
-  LayoutBlockFlow (relative positioned) {DIV} at (392,207) size 142x142 [border: (1px solid #000000)]
-layer at (411,270) size 122x122
-  LayoutBlockFlow (positioned) {DIV} at (11,11) size 122x122 [border: (1px solid #0000FF)]
-layer at (422,281) size 100x150 backgroundClip at (401,260) size 140x140 clip at (401,260) size 140x140
-  LayoutBlockFlow {DIV} at (11,11) size 100x150 [bgcolor=#808080]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/border-radius-composited-subframe-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/border-radius-composited-subframe-expected.png
deleted file mode 100644
index 8540490..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/border-radius-composited-subframe-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png
deleted file mode 100644
index bd218e4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/clip-parent-reset-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/clip-parent-reset-expected.png
deleted file mode 100644
index 0efecaa8..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/clip-parent-reset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
deleted file mode 100644
index da8fbe92..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/fixed-position-ancestor-clip-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/fixed-position-ancestor-clip-expected.png
deleted file mode 100644
index e399a9b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/fixed-position-ancestor-clip-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/fixed-position-ancestor-clip-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/fixed-position-ancestor-clip-expected.txt
deleted file mode 100644
index 0b5b47f0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/fixed-position-ancestor-clip-expected.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-layer at (0,0) size 800x600 scrollX 50.00 scrollY 50.00 scrollWidth 1008 scrollHeight 1016
-  LayoutView at (0,0) size 800x600
-layer at (-50,-50) size 800x1016 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x1016
-    LayoutBlockFlow {BODY} at (8,8) size 1000x1000
-layer at (0,116) size 316x20
-  LayoutBlockFlow (positioned) {P} at (50,166) size 316x20
-    LayoutText {#text} at (0,0) size 316x19
-      text run at (0,0) width 316: "You should see a single green square, with no red."
-layer at (8,8) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (8,8) size 100x100 [bgcolor=#FF0000]
-layer at (8,8) size 100x100
-  LayoutBlockFlow {DIV} at (0,0) size 100x100 [bgcolor=#008000]
-scrolled to 50,50
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/mask-with-small-content-rect-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/mask-with-small-content-rect-expected.png
deleted file mode 100644
index a50cfe6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/mask-with-small-content-rect-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/mask-with-small-content-rect-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/mask-with-small-content-rect-expected.txt
deleted file mode 100644
index cdaeb8f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/mask-with-small-content-rect-expected.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x273
-  LayoutBlockFlow {HTML} at (0,0) size 800x273
-    LayoutBlockFlow {BODY} at (8,16) size 784x249
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 523x19
-          text run at (0,0) width 523: "Testing masks on compositing layers. Left and right columns should look the same."
-      LayoutBlockFlow (anonymous) at (0,36) size 784x213
-        LayoutText {#text} at (208,193) size 4x19
-          text run at (208,193) width 4: " "
-        LayoutText {#text} at (0,0) size 0x0
-layer at (8,52) size 208x208 clip at (12,56) size 200x200 scrollWidth 225 scrollHeight 225
-  LayoutBlockFlow (relative positioned) {DIV} at (0,0) size 208x208 [bgcolor=#0000FF] [border: (4px solid #FF0000)]
-layer at (187,231) size 50x50 backgroundClip at (12,56) size 200x200 clip at (12,56) size 200x200
-  LayoutBlockFlow (positioned) {DIV} at (179,179) size 50x50 [bgcolor=#000000]
-layer at (270,52) size 208x208 clip at (274,56) size 200x200 scrollWidth 225 scrollHeight 225
-  LayoutBlockFlow (relative positioned) {DIV} at (212,0) size 208x208 [bgcolor=#0000FF] [border: (4px solid #FF0000)]
-layer at (449,231) size 50x50 backgroundClip at (274,56) size 200x200 clip at (274,56) size 200x200
-  LayoutBlockFlow (positioned) {DIV} at (179,179) size 50x50 [bgcolor=#000000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/nested-border-radius-clipping-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/nested-border-radius-clipping-expected.png
deleted file mode 100644
index 9e42b7185..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/nested-border-radius-clipping-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/nested-scrolling-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/nested-scrolling-expected.png
deleted file mode 100644
index bd0686c9..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/nested-scrolling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/nested-scrolling-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/nested-scrolling-expected.txt
deleted file mode 100644
index 535f82f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/nested-scrolling-expected.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 838
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 785x838 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {HTML} at (0,0) size 785x838
-    LayoutBlockFlow {BODY} at (8,8) size 769x822
-      LayoutBlockFlow (anonymous) at (0,0) size 769x20
-        LayoutText {#text} at (0,0) size 81x19
-          text run at (0,0) width 81: "Text outside."
-layer at (8,28) size 702x802 backgroundClip at (8,28) size 702x572 clip at (9,29) size 685x571 scrollHeight 1286
-  LayoutBlockFlow {DIV} at (0,20) size 702x802 [border: (1px solid #000000)]
-    LayoutBlockFlow {P} at (1,17) size 685x165
-      LayoutText {#text} at (0,7) size 674x151
-        text run at (0,7) width 642: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et"
-        text run at (0,40) width 670: "dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex"
-        text run at (0,73) width 674: "ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat"
-        text run at (0,106) width 671: "nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim"
-        text run at (0,139) width 93: "id est laborum."
-    LayoutBlockFlow {P} at (1,230) size 685x165
-      LayoutText {#text} at (0,7) size 674x151
-        text run at (0,7) width 642: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et"
-        text run at (0,40) width 670: "dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex"
-        text run at (0,73) width 674: "ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat"
-        text run at (0,106) width 671: "nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim"
-        text run at (0,139) width 93: "id est laborum."
-    LayoutBlockFlow {P} at (1,861) size 685x165
-      LayoutText {#text} at (0,7) size 674x151
-        text run at (0,7) width 642: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et"
-        text run at (0,40) width 670: "dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex"
-        text run at (0,73) width 674: "ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat"
-        text run at (0,106) width 671: "nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim"
-        text run at (0,139) width 93: "id est laborum."
-    LayoutBlockFlow {P} at (1,1074) size 685x165
-      LayoutText {#text} at (0,7) size 674x151
-        text run at (0,7) width 642: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et"
-        text run at (0,40) width 670: "dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex"
-        text run at (0,73) width 674: "ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat"
-        text run at (0,106) width 671: "nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim"
-        text run at (0,139) width 93: "id est laborum."
-layer at (19,471) size 602x402 backgroundClip at (19,471) size 602x129 clip at (20,472) size 585x128 scrollHeight 442
-  LayoutBlockFlow {DIV} at (11,443) size 602x402 [border: (1px solid #000000)]
-    LayoutBlockFlow {P} at (1,17) size 585x165
-      LayoutText {#text} at (0,7) size 584x151
-        text run at (0,7) width 584: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut"
-        text run at (0,40) width 574: "labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco"
-        text run at (0,73) width 559: "laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in"
-        text run at (0,106) width 568: "voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat"
-        text run at (0,139) width 465: "non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-    LayoutBlockFlow {P} at (1,230) size 585x165
-      LayoutText {#text} at (0,7) size 584x151
-        text run at (0,7) width 584: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut"
-        text run at (0,40) width 574: "labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco"
-        text run at (0,73) width 559: "laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in"
-        text run at (0,106) width 568: "voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat"
-        text run at (0,139) width 465: "non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-compositing-descendant-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-compositing-descendant-expected.png
deleted file mode 100644
index 214acd4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-compositing-descendant-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-compositing-descendant-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-compositing-descendant-expected.txt
deleted file mode 100644
index dc64b192..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-compositing-descendant-expected.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x52
-  LayoutBlockFlow {HTML} at (0,0) size 800x52
-    LayoutBlockFlow {BODY} at (8,16) size 784x20
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 465x19
-          text run at (0,0) width 465: "You should see a green box under the video. If you see red, the test failed."
-layer at (8,52) size 132x222 clip at (9,53) size 130x220 scrollHeight 225
-  LayoutBlockFlow (positioned) {DIV} at (8,52) size 132x222 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
-    LayoutBlockFlow (anonymous) at (11,11) size 110x105
-      LayoutText {#text} at (0,0) size 0x0
-    LayoutBlockFlow {DIV} at (11,116) size 100x100 [bgcolor=#FF0000]
-layer at (19,63) size 100x100
-  LayoutVideo {VIDEO} at (0,0) size 100x100 [bgcolor=#000000]
-layer at (19,63) size 100x100
-  LayoutFlexibleBox (relative positioned) {DIV} at (0,0) size 100x100
-    LayoutBlockFlow {DIV} at (50,0) size 0x0
-    LayoutFlexibleBox {DIV} at (0,0) size 100x100
-layer at (19,168) size 100x100
-  LayoutBlockFlow (relative positioned) {DIV} at (11,116) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-positioning-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-positioning-expected.png
deleted file mode 100644
index c7daf65..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-positioning-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-scroll-background-opaque-to-transparent-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-scroll-background-opaque-to-transparent-expected.png
deleted file mode 100644
index 484a39c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-scroll-background-opaque-to-transparent-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-scroll-background-transparent-to-opaque-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-scroll-background-transparent-to-opaque-expected.png
deleted file mode 100644
index 43ff136..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-scroll-background-transparent-to-opaque-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-scroll-expected.png
deleted file mode 100644
index 9e9e782..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/overflow-scroll-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/paint-neg-z-order-descendants-into-scrolling-contents-layer-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/paint-neg-z-order-descendants-into-scrolling-contents-layer-expected.png
deleted file mode 100644
index 8cf4c695..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/paint-neg-z-order-descendants-into-scrolling-contents-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/parent-overflow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/parent-overflow-expected.png
deleted file mode 100644
index 0c81665..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/parent-overflow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/remove-overflow-crash2-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/remove-overflow-crash2-expected.png
deleted file mode 100644
index f350eb3a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/remove-overflow-crash2-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/remove-overflow-crash2-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/remove-overflow-crash2-expected.txt
deleted file mode 100644
index 61f8448..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/remove-overflow-crash2-expected.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x218
-  LayoutBlockFlow {HTML} at (0,0) size 800x218
-    LayoutBlockFlow {BODY} at (8,8) size 784x202
-layer at (8,8) size 103x202 clip at (9,9) size 86x185 scrollHeight 1600
-  LayoutBlockFlow {DIV} at (0,0) size 103x202 [border: (1px solid #000000)]
-    LayoutText {#text} at (1,1) size 86x1599
-      text run at (1,1) width 84: "Lorem ipsum"
-      text run at (1,21) width 51: "dolor sit"
-      text run at (1,41) width 34: "amet,"
-      text run at (1,61) width 71: "consectetur"
-      text run at (1,81) width 68: "adipisicing"
-      text run at (1,101) width 68: "elit, sed do"
-      text run at (1,121) width 53: "eiusmod"
-      text run at (1,141) width 44: "tempor"
-      text run at (1,161) width 79: "incididunt ut"
-      text run at (1,181) width 54: "labore et"
-      text run at (1,201) width 86: "dolore magna"
-      text run at (1,221) width 62: "aliqua. Ut"
-      text run at (1,241) width 50: "enim ad"
-      text run at (1,261) width 40: "minim"
-      text run at (1,281) width 80: "veniam, quis"
-      text run at (1,301) width 47: "nostrud"
-      text run at (1,321) width 73: "exercitation"
-      text run at (1,341) width 50: "ullamco"
-      text run at (1,361) width 84: "laboris nisi ut"
-      text run at (1,381) width 80: "aliquip ex ea"
-      text run at (1,401) width 63: "commodo"
-      text run at (1,421) width 67: "consequat."
-      text run at (1,441) width 60: "Duis aute"
-      text run at (1,461) width 82: "irure dolor in"
-      text run at (1,481) width 83: "reprehenderit"
-      text run at (1,501) width 74: "in voluptate"
-      text run at (1,521) width 57: "velit esse"
-      text run at (1,541) width 83: "cillum dolore"
-      text run at (1,561) width 55: "eu fugiat"
-      text run at (1,581) width 86: "nulla pariatur."
-      text run at (1,601) width 64: "Excepteur"
-      text run at (1,621) width 80: "sint occaecat"
-      text run at (1,641) width 85: "cupidatat non"
-      text run at (1,661) width 86: "proident, sunt"
-      text run at (1,681) width 74: "in culpa qui"
-      text run at (1,701) width 40: "officia"
-      text run at (1,721) width 53: "deserunt"
-      text run at (1,741) width 71: "mollit anim"
-      text run at (1,761) width 33: "id est"
-      text run at (1,781) width 56: "laborum."
-      text run at (1,801) width 84: "Lorem ipsum"
-      text run at (1,821) width 51: "dolor sit"
-      text run at (1,841) width 34: "amet,"
-      text run at (1,861) width 71: "consectetur"
-      text run at (1,881) width 68: "adipisicing"
-      text run at (1,901) width 68: "elit, sed do"
-      text run at (1,921) width 53: "eiusmod"
-      text run at (1,941) width 44: "tempor"
-      text run at (1,961) width 79: "incididunt ut"
-      text run at (1,981) width 54: "labore et"
-      text run at (1,1001) width 86: "dolore magna"
-      text run at (1,1021) width 62: "aliqua. Ut"
-      text run at (1,1041) width 50: "enim ad"
-      text run at (1,1061) width 40: "minim"
-      text run at (1,1081) width 80: "veniam, quis"
-      text run at (1,1101) width 47: "nostrud"
-      text run at (1,1121) width 73: "exercitation"
-      text run at (1,1141) width 50: "ullamco"
-      text run at (1,1161) width 84: "laboris nisi ut"
-      text run at (1,1181) width 80: "aliquip ex ea"
-      text run at (1,1201) width 63: "commodo"
-      text run at (1,1221) width 67: "consequat."
-      text run at (1,1241) width 60: "Duis aute"
-      text run at (1,1261) width 82: "irure dolor in"
-      text run at (1,1281) width 83: "reprehenderit"
-      text run at (1,1301) width 74: "in voluptate"
-      text run at (1,1321) width 57: "velit esse"
-      text run at (1,1341) width 83: "cillum dolore"
-      text run at (1,1361) width 55: "eu fugiat"
-      text run at (1,1381) width 86: "nulla pariatur."
-      text run at (1,1401) width 64: "Excepteur"
-      text run at (1,1421) width 80: "sint occaecat"
-      text run at (1,1441) width 85: "cupidatat non"
-      text run at (1,1461) width 86: "proident, sunt"
-      text run at (1,1481) width 74: "in culpa qui"
-      text run at (1,1501) width 40: "officia"
-      text run at (1,1521) width 53: "deserunt"
-      text run at (1,1541) width 71: "mollit anim"
-      text run at (1,1561) width 33: "id est"
-      text run at (1,1581) width 56: "laborum."
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scaled-mask-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scaled-mask-expected.png
deleted file mode 100644
index a2e2af2..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scaled-mask-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scaled-mask-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scaled-mask-expected.txt
deleted file mode 100644
index c7afb2a3..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scaled-mask-expected.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x52
-  LayoutBlockFlow {HTML} at (0,0) size 800x52
-    LayoutBlockFlow {BODY} at (8,16) size 784x20
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 515x19
-          text run at (0,0) width 515: "Testing masks on compositing layers. Top and bottom rows should look the same."
-layer at (8,52) size 0x0
-  LayoutBlockFlow (positioned) {DIV} at (8,52) size 0x0
-layer at (8,52) size 208x208 clip at (12,56) size 200x200 scrollWidth 500 scrollHeight 500
-  LayoutBlockFlow (positioned) {DIV} at (0,0) size 208x208 [bgcolor=#808080] [border: (4px solid #FF0000)]
-layer at (12,56) size 500x500 backgroundClip at (16,56) size 400x200 clip at (16,56) size 400x200
-  LayoutBlockFlow (positioned) {DIV} at (4,4) size 500x500 [bgcolor=#000000]
-layer at (8,300) size 0x0
-  LayoutBlockFlow (positioned) {DIV} at (8,300) size 0x0
-layer at (8,300) size 208x208 clip at (12,304) size 200x200 scrollWidth 500 scrollHeight 500
-  LayoutBlockFlow (positioned) {DIV} at (0,0) size 208x208 [bgcolor=#808080] [border: (4px solid #FF0000)]
-layer at (12,304) size 500x500 backgroundClip at (16,304) size 400x200 clip at (16,304) size 400x200
-  LayoutBlockFlow (positioned) {DIV} at (4,4) size 500x500 [bgcolor=#000000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scroll-ancestor-update-expected.png
deleted file mode 100644
index 83951000..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scroll-ancestor-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scroll-ancestor-update-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scroll-ancestor-update-expected.txt
deleted file mode 100644
index b51d45ae..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scroll-ancestor-update-expected.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x105
-  LayoutBlockFlow {HTML} at (0,0) size 800x105
-    LayoutBlockFlow {BODY} at (0,0) size 800x105
-      LayoutText {#text} at (0,0) size 0x0
-layer at (0,0) size 100x100
-  LayoutVideo {VIDEO} at (0,0) size 100x100
-layer at (50,50) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (50,50) size 100x100 [bgcolor=#FF0000]
-layer at (50,50) size 200x200
-  LayoutBlockFlow (positioned) {DIV} at (50,50) size 200x200
-    LayoutBlockFlow {P} at (0,218) size 200x60
-      LayoutText {#text} at (0,0) size 191x59
-        text run at (0,0) width 191: "The green box should obscure"
-        text run at (0,20) width 180: "the red box, and move when"
-        text run at (0,40) width 140: "you drag the scrollbar."
-layer at (50,50) size 202x202 clip at (51,51) size 185x200 scrollY 50.00 scrollHeight 550
-  LayoutBlockFlow {DIV} at (0,0) size 202x202 [border: (1px solid #000000)]
-    LayoutBlockFlow {DIV} at (1,51) size 185x500
-layer at (51,51) size 100x100
-  LayoutBlockFlow (relative positioned) {DIV} at (0,0) size 100x100 [bgcolor=#008000]
-layer at (0,0) size 100x100
-  LayoutFlexibleBox (relative positioned) {DIV} at (0,0) size 100x100
-    LayoutBlockFlow {DIV} at (50,0) size 0x0
-    LayoutFlexibleBox {DIV} at (0,0) size 100x100
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scrollbar-painting-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scrollbar-painting-expected.png
deleted file mode 100644
index 4c72d915..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scrollbar-painting-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scrollbar-painting-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scrollbar-painting-expected.txt
deleted file mode 100644
index 88bc438..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scrollbar-painting-expected.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x272
-  LayoutBlockFlow {HTML} at (0,0) size 800x272
-    LayoutBlockFlow {BODY} at (8,16) size 784x246
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 474x19
-          text run at (0,0) width 474: "You should see scrollbars on the gray square, and a resizer control below it."
-layer at (18,52) size 100x100 clip at (18,52) size 85x85 scrollWidth 500 scrollHeight 500
-  LayoutBlockFlow (relative positioned) {DIV} at (10,36) size 100x100
-layer at (18,52) size 500x500 backgroundClip at (18,52) size 85x85 clip at (18,52) size 85x85
-  LayoutBlockFlow {DIV} at (0,0) size 500x500 [bgcolor=#808080]
-layer at (18,162) size 100x100
-  LayoutBlockFlow {DIV} at (10,146) size 100x100
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/tiled-mask-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/tiled-mask-expected.txt
deleted file mode 100644
index ca6e510..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/tiled-mask-expected.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x585 scrollX 31.00 scrollY 239.00 scrollWidth 816 scrollHeight 824
-  LayoutView at (0,0) size 800x600
-layer at (-31,-239) size 785x824 backgroundClip at (0,0) size 785x585 clip at (0,0) size 785x585
-  LayoutBlockFlow {HTML} at (0,0) size 785x824
-    LayoutBlockFlow {BODY} at (8,8) size 769x808
-layer at (-23,-231) size 808x808 backgroundClip at (0,0) size 785x577 clip at (0,0) size 781x573 scrollWidth 2000 scrollHeight 2000
-  LayoutBlockFlow {DIV} at (0,0) size 808x808 [bgcolor=#808080] [border: (4px solid #FF0000)]
-layer at (-19,-227) size 2000x2000 backgroundClip at (0,0) size 781x573 clip at (0,0) size 781x573
-  LayoutBlockFlow (positioned) {DIV} at (4,4) size 2000x2000 [bgcolor=#FFEFD5]
-    LayoutText {#text} at (0,0) size 125x19
-      text run at (0,0) width 125: "There's stuff in here"
-layer at (-19,-227) size 50x50 backgroundClip at (0,0) size 781x573 clip at (0,0) size 781x573
-  LayoutBlockFlow (positioned) {DIV} at (4,4) size 50x50 [bgcolor=#800000]
-layer at (-19,473) size 100x100 backgroundClip at (0,0) size 781x573 clip at (0,0) size 781x573
-  LayoutBlockFlow (positioned) {DIV} at (4,704) size 100x100 [bgcolor=#FFA500]
-layer at (-79,-157) size 100x100 backgroundClip at (0,0) size 781x573 clip at (0,0) size 781x573
-  LayoutBlockFlow (positioned) {DIV} at (-56,74) size 100x100 [bgcolor=#008000]
-layer at (101,473) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (124,704) size 100x100 [bgcolor=#0000FF]
-layer at (731,-227) size 100x100 backgroundClip at (0,0) size 781x573 clip at (0,0) size 781x573
-  LayoutBlockFlow (positioned) {DIV} at (754,4) size 100x100 [bgcolor=#FFFF00]
-layer at (61,73) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (84,304) size 100x100
-layer at (1,173) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (24,404) size 100x100 [bgcolor=#FF0000]
-layer at (731,523) size 50x50
-  LayoutBlockFlow (positioned) {DIV} at (754,754) size 50x50 [bgcolor=#800080]
-scrolled to 31,239
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png
deleted file mode 100644
index 609d706..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overlap-blending/children-opacity-huge-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overlap-blending/children-opacity-huge-expected.png
deleted file mode 100644
index 3b6f150..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overlap-blending/children-opacity-huge-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overlap-blending/children-opacity-no-overlap-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overlap-blending/children-opacity-no-overlap-expected.png
deleted file mode 100644
index a3947d0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overlap-blending/children-opacity-no-overlap-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overlap-blending/reflection-opacity-huge-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overlap-blending/reflection-opacity-huge-expected.png
deleted file mode 100644
index c4d609ac..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overlap-blending/reflection-opacity-huge-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overlap-blending/reflection-opacity-huge-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overlap-blending/reflection-opacity-huge-expected.txt
deleted file mode 100644
index b8f0e0b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overlap-blending/reflection-opacity-huge-expected.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 800x585 scrollWidth 2150
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x240
-  LayoutBlockFlow {HTML} at (0,0) size 800x240
-    LayoutBlockFlow {BODY} at (0,0) size 800x240
-      LayoutBlockFlow {P} at (0,0) size 800x40
-        LayoutText {#text} at (0,0) size 776x39
-          text run at (0,0) width 776: "Opacity should be applied after reflection, so you should see a green rectangle below. The overlap between the original and"
-          text run at (0,20) width 197: "reflection should not be visible."
-layer at (0,40) size 2150x200 backgroundClip at (0,0) size 800x585 clip at (0,0) size 800x585 transparent
-  LayoutBlockFlow (relative positioned) {DIV} at (0,40) size 2150x200 [bgcolor=#008000]
-    LayoutText {#text} at (0,0) size 8x19
-      text run at (0,0) width 8: "1"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/animation-inside-reflection-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/animation-inside-reflection-expected.png
deleted file mode 100644
index e8bbca6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/animation-inside-reflection-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/compositing-change-inside-reflection-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/compositing-change-inside-reflection-expected.png
deleted file mode 100644
index 5cc9aa2..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/compositing-change-inside-reflection-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/compositing-change-inside-reflection-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/compositing-change-inside-reflection-expected.txt
deleted file mode 100644
index 5ef41c1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/compositing-change-inside-reflection-expected.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x52
-  LayoutBlockFlow {HTML} at (0,0) size 800x52
-    LayoutBlockFlow {BODY} at (8,16) size 784x20
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 570x19
-          text run at (0,0) width 570: "Test dynamically created compositing layer inside reflection. You should see no red below."
-layer at (8,52) size 784x0
-  LayoutBlockFlow (relative positioned) {DIV} at (0,36) size 784x0
-layer at (19,183) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (11,131) size 100x100 [bgcolor=#FF0000]
-layer at (8,52) size 120x120
-  LayoutBlockFlow (positioned) {DIV} at (0,0) size 120x120 [border: (1px solid #000000)]
-layer at (19,63) size 100x100
-  LayoutBlockFlow {DIV} at (11,11) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/deeply-nested-reflections-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/deeply-nested-reflections-expected.png
deleted file mode 100644
index 5996928..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/deeply-nested-reflections-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/load-video-in-reflection-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/load-video-in-reflection-expected.png
deleted file mode 100644
index c942a89..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/load-video-in-reflection-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/load-video-in-reflection-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/load-video-in-reflection-expected.txt
deleted file mode 100644
index 34f5b0a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/load-video-in-reflection-expected.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x353
-  LayoutBlockFlow {HTML} at (0,0) size 800x353
-    LayoutBlockFlow {BODY} at (8,16) size 784x329
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 490x19
-          text run at (0,0) width 490: "You should see a reflected video below, rather than the red video background."
-layer at (8,52) size 300x293
-  LayoutBlockFlow {DIV} at (0,36) size 300x293
-    LayoutText {#text} at (0,0) size 0x0
-layer at (8,52) size 352x288
-  LayoutVideo {VIDEO} at (0,0) size 352x288 [bgcolor=#FF0000]
-layer at (8,52) size 352x288
-  LayoutFlexibleBox (relative positioned) {DIV} at (0,0) size 352x288
-    LayoutBlockFlow {DIV} at (176,0) size 0x0
-    LayoutFlexibleBox {DIV} at (0,0) size 352x288
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/masked-reflection-on-composited-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/masked-reflection-on-composited-expected.png
deleted file mode 100644
index 4b45887..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/masked-reflection-on-composited-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-expected.png
deleted file mode 100644
index 196142c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-expected.txt
deleted file mode 100644
index ada19717..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-expected.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x308
-  LayoutBlockFlow {HTML} at (0,0) size 800x308
-    LayoutBlockFlow {BODY} at (8,16) size 784x272
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 380x19
-          text run at (0,0) width 380: "You should see the original and three copies of the blue box."
-layer at (28,56) size 122x232
-  LayoutBlockFlow {DIV} at (20,40) size 122x232 [border: (1px solid #000000)]
-layer at (39,67) size 100x100
-  LayoutBlockFlow {DIV} at (11,11) size 100x100 [bgcolor=#008000]
-    LayoutText {#text} at (33,1) size 34x76
-      text run at (33,1) width 34: "1"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-mask-change-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-mask-change-expected.png
deleted file mode 100644
index f9edfb5..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-mask-change-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-on-overflow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-on-overflow-expected.png
deleted file mode 100644
index 54685771..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-on-overflow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-on-overflow-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-on-overflow-expected.txt
deleted file mode 100644
index ea46bc9..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-on-overflow-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x308
-  LayoutBlockFlow {HTML} at (0,0) size 800x308
-    LayoutBlockFlow {BODY} at (8,16) size 784x272
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 447x19
-          text run at (0,0) width 447: "You should see the original and three copies of the green box with text."
-layer at (28,56) size 122x232
-  LayoutBlockFlow {DIV} at (20,40) size 122x232 [border: (1px solid #000000)]
-layer at (39,67) size 100x100
-  LayoutBlockFlow {DIV} at (11,11) size 100x100 [bgcolor=#008000]
-layer at (39,67) size 100x100 clip at (39,67) size 85x85 scrollHeight 500
-  LayoutBlockFlow (relative positioned) {DIV} at (0,0) size 100x100
-layer at (39,67) size 85x500 backgroundClip at (39,67) size 85x85 clip at (39,67) size 85x85
-  LayoutBlockFlow {DIV} at (0,0) size 85x500
-    LayoutText {#text} at (0,0) size 84x459
-      text run at (0,0) width 84: "Lorem ipsum"
-      text run at (0,20) width 51: "dolor sit"
-      text run at (0,40) width 34: "amet,"
-      text run at (0,60) width 71: "consectetur"
-      text run at (0,80) width 68: "adipisicing"
-      text run at (0,100) width 68: "elit, sed do"
-      text run at (0,120) width 53: "eiusmod"
-      text run at (0,140) width 44: "tempor"
-      text run at (0,160) width 79: "incididunt ut"
-      text run at (0,180) width 54: "labore et"
-      text run at (0,200) width 40: "dolore"
-      text run at (0,220) width 42: "magna"
-      text run at (0,240) width 62: "aliqua. Ut"
-      text run at (0,260) width 50: "enim ad"
-      text run at (0,280) width 40: "minim"
-      text run at (0,300) width 80: "veniam, quis"
-      text run at (0,320) width 47: "nostrud"
-      text run at (0,340) width 73: "exercitation"
-      text run at (0,360) width 50: "ullamco"
-      text run at (0,380) width 84: "laboris nisi ut"
-      text run at (0,400) width 80: "aliquip ex ea"
-      text run at (0,420) width 63: "commodo"
-      text run at (0,440) width 67: "consequat."
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-opacity-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-opacity-expected.png
deleted file mode 100644
index 917c49d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-opacity-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-size-change-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-size-change-expected.png
deleted file mode 100644
index bc1c606..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-size-change-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed-expected.png
deleted file mode 100644
index fd9b6ddd..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed-expected.txt
deleted file mode 100644
index dfb2ccf..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed-expected.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x308
-  LayoutBlockFlow {HTML} at (0,0) size 800x308
-    LayoutBlockFlow {BODY} at (8,16) size 784x272
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 548x19
-          text run at (0,0) width 548: "Test transform change on reflected elements. Left and right side should be symmetrical."
-layer at (28,56) size 122x232
-  LayoutBlockFlow {DIV} at (20,40) size 122x232 [border: (1px solid #000000)]
-layer at (39,67) size 100x100
-  LayoutBlockFlow {DIV} at (11,11) size 100x100 [bgcolor=#008000]
-    LayoutText {#text} at (33,1) size 34x76
-      text run at (33,1) width 34: "1"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed2-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed2-expected.png
deleted file mode 100644
index 29f53d9..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed2-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed2-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed2-expected.txt
deleted file mode 100644
index 4896cf002..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed2-expected.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x328
-  LayoutBlockFlow {HTML} at (0,0) size 800x328
-    LayoutBlockFlow {BODY} at (8,16) size 784x292
-      LayoutBlockFlow {P} at (0,0) size 784x40
-        LayoutText {#text} at (0,0) size 778x39
-          text run at (0,0) width 778: "Test transform change on reflected elements, with compositing layers larger than render layers. Left and right side should be"
-          text run at (0,20) width 80: "symmetrical."
-layer at (28,76) size 122x232
-  LayoutBlockFlow {DIV} at (20,60) size 122x232 [border: (1px solid #000000)]
-layer at (39,87) size 100x100
-  LayoutBlockFlow {DIV} at (11,11) size 100x100 [bgcolor=#008000]
-    LayoutText {#text} at (33,1) size 34x76
-      text run at (33,1) width 34: "1"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-in-composited-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-in-composited-expected.png
deleted file mode 100644
index 48156158..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-in-composited-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-in-composited-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-in-composited-expected.txt
deleted file mode 100644
index 76720b1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-in-composited-expected.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x576
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 409x19
-          text run at (0,0) width 409: "Reflection should not be cropped by being in a composited layer."
-      LayoutBlockFlow {P} at (0,292) size 784x20
-        LayoutText {#text} at (0,0) size 240x19
-          text run at (0,0) width 240: "This is the next paragraph in the page."
-layer at (208,78) size 342x172
-  LayoutBlockFlow {DIV} at (200,70) size 342x172 [border: (1px solid #000000)]
-    LayoutBlockFlow {P} at (21,27) size 300x20
-      LayoutText {#text} at (0,0) size 228x19
-        text run at (0,0) width 228: "This element has a composited layer"
-layer at (349,119) size 260x72
-  LayoutBlockFlow (positioned) {DIV} at (141,41) size 260x72 [bgcolor=#DDDDDD]
-    LayoutBlockFlow {P} at (10,26) size 240x20
-      LayoutText {#text} at (0,0) size 223x19
-        text run at (0,0) width 223: "This is a positioned, reflected child."
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-on-composited-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-on-composited-expected.png
deleted file mode 100644
index 9bd02acf..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-on-composited-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-opacity-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-opacity-expected.png
deleted file mode 100644
index 2fd198e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-opacity-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-opacity-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-opacity-expected.txt
deleted file mode 100644
index 2a8179c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-opacity-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x180
-  LayoutBlockFlow {HTML} at (0,0) size 800x180
-    LayoutBlockFlow {BODY} at (8,16) size 784x156
-      LayoutBlockFlow {P} at (0,0) size 784x40
-        LayoutText {#text} at (0,0) size 776x39
-          text run at (0,0) width 776: "Opacity should be applied after reflection, so you should see a green rectangle below. The overlap between the original and"
-          text run at (0,20) width 197: "reflection should not be visible."
-layer at (8,72) size 150x100 transparent
-  LayoutBlockFlow (relative positioned) {DIV} at (0,56) size 150x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-ordering-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-ordering-expected.png
deleted file mode 100644
index 378274ba..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-ordering-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-ordering-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-ordering-expected.txt
deleted file mode 100644
index 8dfe3466..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-ordering-expected.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x196
-  LayoutBlockFlow {HTML} at (0,0) size 800x196
-    LayoutBlockFlow {BODY} at (8,16) size 784x160
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 767x19
-          text run at (0,0) width 767: "You should see a black rectangle divided into two parts; the top part should be taller (reflection should be behind original)."
-layer at (28,56) size 220x120
-  LayoutBlockFlow {DIV} at (20,40) size 220x120 [bgcolor=#FFFFFF] [border: (10px solid #000000)]
-    LayoutText {#text} at (67,10) size 86x27
-      text run at (67,10) width 86: "Contents"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-positioning-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-positioning-expected.png
deleted file mode 100644
index ca05e6a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-positioning-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-positioning-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-positioning-expected.txt
deleted file mode 100644
index 0f26aba0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-positioning-expected.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x52
-  LayoutBlockFlow {HTML} at (0,0) size 800x52
-    LayoutBlockFlow {BODY} at (8,16) size 784x20
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 505x19
-          text run at (0,0) width 505: "Position of reflected layer should update correctly. You should see no red below."
-layer at (20,50) size 150x120
-  LayoutBlockFlow (positioned) {DIV} at (20,50) size 150x120
-layer at (46,185) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (26,135) size 100x100 [bgcolor=#FF0000]
-layer at (20,50) size 150x120
-  LayoutBlockFlow (relative positioned) {DIV} at (0,0) size 150x120 [border: (1px solid #000000)]
-layer at (46,61) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (26,11) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-positioning2-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-positioning2-expected.png
deleted file mode 100644
index ede9a990..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-positioning2-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-positioning2-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-positioning2-expected.txt
deleted file mode 100644
index 71104b4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/reflection-positioning2-expected.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x52
-  LayoutBlockFlow {HTML} at (0,0) size 800x52
-    LayoutBlockFlow {BODY} at (8,16) size 784x20
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 505x19
-          text run at (0,0) width 505: "Position of reflected layer should update correctly. You should see no red below."
-layer at (50,50) size 150x120
-  LayoutBlockFlow (positioned) {DIV} at (50,50) size 150x120
-layer at (76,185) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (26,135) size 100x100 [bgcolor=#FF0000]
-layer at (50,50) size 150x120
-  LayoutBlockFlow (relative positioned) {DIV} at (0,0) size 150x120 [border: (1px solid #000000)]
-layer at (76,61) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (26,11) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/simple-composited-reflections-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/simple-composited-reflections-expected.png
deleted file mode 100644
index c536759..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/simple-composited-reflections-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/simple-composited-reflections-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/simple-composited-reflections-expected.txt
deleted file mode 100644
index 79e22ae1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/simple-composited-reflections-expected.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 580x19
-          text run at (0,0) width 580: "Testing reflections on directly composited images. Left and right sides should look the same."
-      LayoutBlockFlow (anonymous) at (0,36) size 784x169
-        LayoutText {#text} at (224,149) size 4x19
-          text run at (224,149) width 4: " "
-        LayoutText {#text} at (0,0) size 0x0
-layer at (28,64) size 184x124
-  LayoutImage {IMG} at (20,20) size 184x124
-layer at (256,64) size 184x124
-  LayoutImage {IMG} at (248,20) size 184x124
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/transform-inside-reflection-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/transform-inside-reflection-expected.png
deleted file mode 100644
index a51968c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/transform-inside-reflection-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/transform-inside-reflection-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/transform-inside-reflection-expected.txt
deleted file mode 100644
index 0d4a444..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/reflections/transform-inside-reflection-expected.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x328
-  LayoutBlockFlow {HTML} at (0,0) size 800x328
-    LayoutBlockFlow {BODY} at (8,16) size 784x292
-      LayoutBlockFlow {P} at (0,0) size 784x40
-        LayoutText {#text} at (0,0) size 782x39
-          text run at (0,0) width 782: "Transform inside nested reflections should be applied correctly. You should see four rotated green boxes, as mirror images of"
-          text run at (0,20) width 68: "each other."
-layer at (28,76) size 122x232
-  LayoutBlockFlow {DIV} at (20,60) size 122x232 [border: (1px solid #000000)]
-layer at (39,87) size 102x102
-  LayoutBlockFlow {DIV} at (11,11) size 102x102 [border: (1px solid #000000)]
-layer at (50,98) size 80x80
-  LayoutBlockFlow {DIV} at (11,11) size 80x80 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/self-painting-layers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/self-painting-layers-expected.png
deleted file mode 100644
index 7517d26..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/self-painting-layers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/self-painting-layers-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/self-painting-layers-expected.txt
deleted file mode 100644
index b7450f2..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/self-painting-layers-expected.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x431
-  LayoutBlockFlow {HTML} at (0,0) size 800x431
-    LayoutBlockFlow {BODY} at (8,16) size 784x405
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 324x19
-          text run at (0,0) width 324: "You should not see double text when the div scrolls"
-      LayoutBlockFlow {DIV} at (10,36) size 302x207 [border: (1px solid #000000)]
-        LayoutText {#text} at (0,0) size 0x0
-layer at (19,53) size 300x200
-  LayoutVideo {VIDEO} at (1,1) size 300x200
-layer at (18,269) size 302x152 clip at (19,270) size 285x150 scrollY 24.00 scrollHeight 500
-  LayoutBlockFlow {DIV} at (10,253) size 302x152 [border: (1px solid #000000)]
-    LayoutBlockFlow {DIV} at (1,1) size 285x500
-      LayoutText {#text} at (0,6) size 107x36
-        text run at (0,6) width 107: "Scrolled"
-      LayoutBR {BR} at (107,6) size 0x36
-      LayoutText {#text} at (0,54) size 48x36
-        text run at (0,54) width 48: "text"
-      LayoutBR {BR} at (48,54) size 0x36
-      LayoutText {#text} at (0,102) size 63x36
-        text run at (0,102) width 63: "here."
-layer at (19,53) size 300x200
-  LayoutFlexibleBox (relative positioned) {DIV} at (0,0) size 300x200
-    LayoutBlockFlow {DIV} at (150,0) size 0x0
-    LayoutFlexibleBox {DIV} at (0,0) size 300x200
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/shadows/shadow-drawing-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/shadows/shadow-drawing-expected.png
deleted file mode 100644
index 85512f0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/shadows/shadow-drawing-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/sibling-positioning-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/sibling-positioning-expected.png
deleted file mode 100644
index 6928cbc..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/sibling-positioning-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/squashing/dont-squash-into-videos-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/squashing/dont-squash-into-videos-expected.txt
deleted file mode 100644
index e96d59e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/squashing/dont-squash-into-videos-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutVideo (positioned) VIDEO",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6"
-    },
-    {
-      "name": "LayoutFlexibleBox (relative positioned) DIV class='phase-pre-ready state-no-source sizing-small'",
-      "bounds": [100, 100]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "position": [50, 50],
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/squashing/selection-repaint-with-gaps-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/squashing/selection-repaint-with-gaps-expected.png
deleted file mode 100644
index 77a55e4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/squashing/selection-repaint-with-gaps-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/squashing/vertical-writing-mode-squashed-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/squashing/vertical-writing-mode-squashed-expected.png
deleted file mode 100644
index 07b475f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/squashing/vertical-writing-mode-squashed-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/text-on-large-layer-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/text-on-large-layer-expected.png
deleted file mode 100644
index 32703b0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/text-on-large-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/text-on-large-layer-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/text-on-large-layer-expected.txt
deleted file mode 100644
index abc6477..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/text-on-large-layer-expected.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-layer at (0,0) size 800x600 scrollWidth 2003 scrollHeight 10001
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x8
-  LayoutBlockFlow {HTML} at (0,0) size 800x8
-    LayoutBlockFlow {BODY} at (8,8) size 784x0
-layer at (3,1) size 2000x10000 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow (positioned) {DIV} at (3,1) size 2000x10000
-    LayoutText {#text} at (0,0) size 542x19
-      text run at (0,0) width 542: "This is some text inside a very large composited layer to test that it is rendered sharply."
-    LayoutBR {BR} at (542,0) size 0x19
-    LayoutText {#text} at (0,20) size 212x19
-      text run at (0,20) width 212: "The test passes if this text is crisp."
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/text-on-scaled-surface-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/text-on-scaled-surface-expected.png
deleted file mode 100644
index 7d30896..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/text-on-scaled-surface-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/transitions/scale-transition-no-start-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/transitions/scale-transition-no-start-expected.png
deleted file mode 100644
index eaac012..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/transitions/scale-transition-no-start-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/transitions/singular-scale-transition-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/transitions/singular-scale-transition-expected.png
deleted file mode 100644
index 7eb3aea..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/transitions/singular-scale-transition-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/video-frame-size-change-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/video-frame-size-change-expected.png
deleted file mode 100644
index bc7cd35..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/video-frame-size-change-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/video-frame-size-change-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/video-frame-size-change-expected.txt
deleted file mode 100644
index 9ea4fee..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/video-frame-size-change-expected.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x305
-  LayoutBlockFlow {HTML} at (0,0) size 800x305
-    LayoutBlockFlow {BODY} at (8,16) size 784x281
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 483x19
-          text run at (0,0) width 483: "Tests decoding and rendering a video element that has a changing resolution."
-      LayoutBlockFlow (anonymous) at (0,36) size 784x245
-        LayoutText {#text} at (320,225) size 4x19
-          text run at (320,225) width 4: " "
-        LayoutText {#text} at (0,0) size 0x0
-layer at (8,112) size 320x180
-  LayoutVideo {VIDEO} at (0,60) size 320x180
-layer at (332,52) size 320x240
-  LayoutVideo {VIDEO} at (324,0) size 320x240
-layer at (8,112) size 320x180
-  LayoutFlexibleBox (relative positioned) {DIV} at (0,0) size 320x180
-    LayoutBlockFlow {DIV} at (160,0) size 0x0
-    LayoutFlexibleBox {DIV} at (0,0) size 320x180
-layer at (332,52) size 320x240
-  LayoutFlexibleBox (relative positioned) {DIV} at (0,0) size 320x240
-    LayoutBlockFlow {DIV} at (160,0) size 0x0
-    LayoutFlexibleBox {DIV} at (0,0) size 320x240
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/video/video-controls-layer-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/video/video-controls-layer-creation-expected.png
deleted file mode 100644
index 62abc7e8..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/video/video-controls-layer-creation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/video/video-poster-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/video/video-poster-expected.txt
deleted file mode 100644
index aa85d81..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/video/video-poster-expected.txt
+++ /dev/null
@@ -1,87 +0,0 @@
-A <video> should not have a layer until playback begins.
-This test can not be run manually, it requires testRunner.layerTreeAsText.
-
-Case: No src, no poster
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
-
-Case: Displaying poster
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 781],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
-
-Case: Displaying movie
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 1165],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutVideo VIDEO",
-      "position": [8, 8],
-      "bounds": [352, 288],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small phase-ready state-stopped'",
-      "position": [8, 8],
-      "bounds": [352, 288]
-    }
-  ]
-}
-
-
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/webgl/webgl-background-color-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/webgl/webgl-background-color-expected.png
deleted file mode 100644
index 790c3ad..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/webgl/webgl-background-color-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/webgl/webgl-background-color-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/webgl/webgl-background-color-expected.txt
deleted file mode 100644
index a2cc0f6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/webgl/webgl-background-color-expected.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x537
-  LayoutBlockFlow {HTML} at (0,0) size 800x537
-    LayoutBlockFlow {BODY} at (8,20) size 784x501
-      LayoutBlockFlow {DIV} at (20,0) size 240x200 [bgcolor=#00008080]
-      LayoutBlockFlow (anonymous) at (0,220) size 784x245
-        LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {P} at (0,481) size 784x20
-        LayoutText {#text} at (0,0) size 241x19
-          text run at (0,0) width 241: "Top and bottom should look the same."
-layer at (28,260) size 240x200
-  LayoutHTMLCanvas {CANVAS} at (20,20) size 240x200 [bgcolor=#00008080]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/webgl/webgl-reflection-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/webgl/webgl-reflection-expected.png
deleted file mode 100644
index 4ed823a0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/webgl/webgl-reflection-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/webgl/webgl-reflection-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/webgl/webgl-reflection-expected.txt
deleted file mode 100644
index b74f3bb..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/webgl/webgl-reflection-expected.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x309
-  LayoutBlockFlow {HTML} at (0,0) size 800x309
-    LayoutBlockFlow {BODY} at (8,16) size 784x285
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 309x19
-          text run at (0,0) width 309: "You should see a green triangle and its reflection."
-      LayoutBlockFlow (anonymous) at (0,36) size 784x249
-        LayoutText {#text} at (0,0) size 0x0
-layer at (28,72) size 244x204
-  LayoutHTMLCanvas {CANVAS} at (20,20) size 244x204 [border: (2px solid #000000)]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/bidi-002-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/bidi-002-expected.png
deleted file mode 100644
index bb3db379..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/bidi-002-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/bidi-009a-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/bidi-009a-expected.png
deleted file mode 100644
index 69ec488f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/bidi-009a-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/bidi-012-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/bidi-012-expected.png
deleted file mode 100644
index 1a1e2ef..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/bidi-012-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/block-mask-overlay-image-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/block-mask-overlay-image-expected.png
deleted file mode 100644
index f9c9c4d6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/block-mask-overlay-image-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/block-mask-overlay-image-outset-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/block-mask-overlay-image-outset-expected.png
deleted file mode 100644
index c6eaa89..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/block-mask-overlay-image-outset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-antialiasing-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-antialiasing-expected.png
deleted file mode 100644
index 38f9221..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-antialiasing-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-image-border-radius-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-image-border-radius-expected.png
deleted file mode 100644
index 71b017cc..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-image-border-radius-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-image-scaled-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-image-scaled-expected.png
deleted file mode 100644
index 8e11a49..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-image-scaled-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-inner-bleed-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-inner-bleed-expected.png
deleted file mode 100644
index 3b8a790..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-inner-bleed-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-constraints-double-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-constraints-double-expected.png
deleted file mode 100644
index b48fdcf8..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-constraints-double-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-constraints-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-constraints-expected.png
deleted file mode 100644
index 1ef1016..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-constraints-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-huge-assert-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-huge-assert-expected.png
deleted file mode 100644
index 51310b9..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-huge-assert-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-inline-flow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-inline-flow-expected.png
deleted file mode 100644
index fcf5a0a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-inline-flow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-all-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-all-expected.png
deleted file mode 100644
index 04c9682..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-all-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-border-expected.png
deleted file mode 100644
index d854633..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-border-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-expected.png
deleted file mode 100644
index 9376445..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-padding-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-padding-expected.png
deleted file mode 100644
index 24ef754..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-padding-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-mask-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-mask-expected.png
deleted file mode 100644
index b3327cff..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-mask-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-shadow-expected.png
deleted file mode 100644
index e1f0237..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-video-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-video-expected.png
deleted file mode 100644
index 4c2c8ca7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-video-ratio-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-video-ratio-expected.png
deleted file mode 100644
index 4d7c1f6c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-video-ratio-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-video-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-video-shadow-expected.png
deleted file mode 100644
index a9b0844..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-video-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-percent-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-percent-expected.png
deleted file mode 100644
index 9ed0935a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-percent-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-split-inline-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-split-inline-expected.png
deleted file mode 100644
index b2230d8d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-split-inline-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-with-composited-child-expected.png
deleted file mode 100644
index 76ff66f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-with-composited-child-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/borderRadiusAllStylesAllCorners-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/borderRadiusAllStylesAllCorners-expected.png
deleted file mode 100644
index 166129c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/borderRadiusAllStylesAllCorners-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/borderRadiusInvalidColor-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/borderRadiusInvalidColor-expected.png
deleted file mode 100644
index 11580b6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/borderRadiusInvalidColor-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/dashed-1px-with-border-radius-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/dashed-1px-with-border-radius-expected.png
deleted file mode 100644
index be5eff4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/dashed-1px-with-border-radius-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/different-color-borders-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/different-color-borders-expected.png
deleted file mode 100644
index bad48bd..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/different-color-borders-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/inline-mask-overlay-image-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/inline-mask-overlay-image-expected.png
deleted file mode 100644
index ad8cba9..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/inline-mask-overlay-image-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/inline-mask-overlay-image-outset-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/inline-mask-overlay-image-outset-expected.png
deleted file mode 100644
index d3b036ae..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/inline-mask-overlay-image-outset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/inline-mask-overlay-image-outset-vertical-rl-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/inline-mask-overlay-image-outset-vertical-rl-expected.png
deleted file mode 100644
index cc76d97..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/inline-mask-overlay-image-outset-vertical-rl-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/outline-alpha-block-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/outline-alpha-block-expected.png
deleted file mode 100644
index 7ffb78f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/outline-alpha-block-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/outline-alpha-inline-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/outline-alpha-inline-expected.png
deleted file mode 100644
index a8a4577..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/outline-alpha-inline-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-01-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-01-expected.png
deleted file mode 100644
index e632d7d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-01-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-02-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-02-expected.png
deleted file mode 100644
index b2635b2..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-02-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-03-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-03-expected.png
deleted file mode 100644
index 697e9322..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-03-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-04-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-04-expected.png
deleted file mode 100644
index 134b7b9..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-04-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-05-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-05-expected.png
deleted file mode 100644
index d8d8b068..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/rtl-border-05-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/scaled-border-image-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/scaled-border-image-expected.png
deleted file mode 100644
index b6a0c98..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/scaled-border-image-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/border-radius-clipped-layer-second-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/border-radius-clipped-layer-second-column-expected.png
deleted file mode 100644
index 5b7cd2f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/border-radius-clipped-layer-second-column-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-inner-multicol-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-inner-multicol-expected.png
deleted file mode 100644
index b34ca25..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-inner-multicol-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-layer-multiple-fragments-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-layer-multiple-fragments-expected.png
deleted file mode 100644
index 74dc5bd..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-layer-multiple-fragments-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-layer-multiple-fragments-translated-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-layer-multiple-fragments-translated-expected.png
deleted file mode 100644
index 65efe80..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-layer-multiple-fragments-translated-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-layer-nested-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-layer-nested-expected.png
deleted file mode 100644
index f7c58c98..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-layer-nested-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-layer-will-change-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-layer-will-change-expected.png
deleted file mode 100644
index 8641a70..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-layer-will-change-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-opacity-2nd-and-3rd-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-opacity-2nd-and-3rd-column-expected.png
deleted file mode 100644
index efd3c0a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-opacity-2nd-and-3rd-column-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-clipped-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-clipped-expected.png
deleted file mode 100644
index a70d2c5..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-clipped-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-expected.png
deleted file mode 100644
index 8b48032..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-in-clipped-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-in-clipped-expected.png
deleted file mode 100644
index cc0ca79..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-in-clipped-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-overlapping-will-change-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-overlapping-will-change-expected.png
deleted file mode 100644
index bc5a46b8..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-overlapping-will-change-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-resize-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-resize-expected.png
deleted file mode 100644
index a619ca9..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-relpos-resize-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-with-child-layer-in-next-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-with-child-layer-in-next-column-expected.png
deleted file mode 100644
index d644c09..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-with-child-layer-in-next-column-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-with-overflow-in-next-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-with-overflow-in-next-column-expected.png
deleted file mode 100644
index 9b0b2ee..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/composited-with-overflow-in-next-column-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/input-with-overflow-second-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/input-with-overflow-second-column-expected.png
deleted file mode 100644
index cc6ead4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/input-with-overflow-second-column-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/layers-in-multicol-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/layers-in-multicol-expected.png
deleted file mode 100644
index e9188de..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/layers-in-multicol-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/layers-split-across-columns-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/layers-split-across-columns-expected.png
deleted file mode 100644
index fd7b91f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/layers-split-across-columns-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png
deleted file mode 100644
index 7f7af7f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/span/invalid-spanner-in-transform-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/span/invalid-spanner-in-transform-expected.png
deleted file mode 100644
index c39d22fc..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/span/invalid-spanner-in-transform-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.png
deleted file mode 100644
index 7210a57..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.png
deleted file mode 100644
index d91d615..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fragmentation/transformed-clip-before-second-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fragmentation/transformed-clip-before-second-column-expected.png
deleted file mode 100644
index 3c9bd03..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fragmentation/transformed-clip-before-second-column-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/filters/clip-filter-overflow-clip-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/filters/clip-filter-overflow-clip-expected.png
deleted file mode 100644
index e05bb46..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/filters/clip-filter-overflow-clip-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/filters/clip-filter-overflow-clip-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/filters/clip-filter-overflow-clip-expected.txt
deleted file mode 100644
index e242ea93..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/filters/clip-filter-overflow-clip-expected.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x96
-  LayoutBlockFlow {HTML} at (0,0) size 800x96
-    LayoutBlockFlow {BODY} at (8,8) size 784x80
-      LayoutText {#text} at (0,0) size 488x19
-        text run at (0,0) width 488: "This test verifies CSS clip, filter, and overflow clip are applied in the order of:"
-      LayoutBR {BR} at (488,0) size 0x19
-      LayoutText {#text} at (0,20) size 418x19
-        text run at (0,20) width 418: "output <-- clip <-- filter <-- overflow clip <-- normal-flow contents"
-      LayoutBR {BR} at (418,20) size 0x19
-      LayoutText {#text} at (0,40) size 776x39
-        text run at (0,40) width 776: "The test succeeds if the green box below has a crisp left edge, blurred top/bottom dashed border, and a crisp right edge with"
-        text run at (0,60) width 346: "blurred partial dashed border. No red should be visible."
-layer at (10,200) size 110x110 backgroundClip at (65,191) size 50x128 clip at (65,205) size 50x100 scrollWidth 105 scrollHeight 105
-  LayoutBlockFlow (positioned) {DIV} at (10,200) size 110x110 [bgcolor=#008000] [border: (5px dashed #000000)]
-    LayoutBlockFlow {DIV} at (0,0) size 110x110 [border: (5px solid #FF0000)]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/frames/frameset-with-stacking-context-and-not-stacking-context-children-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/frames/frameset-with-stacking-context-and-not-stacking-context-children-expected.png
deleted file mode 100644
index 7cacffd..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/frames/frameset-with-stacking-context-and-not-stacking-context-children-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/frames/frameset-with-stacking-contexts-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/frames/frameset-with-stacking-contexts-expected.png
deleted file mode 100644
index df70011e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/frames/frameset-with-stacking-contexts-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/inline/outline-offset-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/inline/outline-offset-expected.png
deleted file mode 100644
index 3364f20..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/inline/outline-offset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/4774354-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/4774354-expected.png
deleted file mode 100644
index dc29a02d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/4774354-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/4774354-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/4774354-expected.txt
deleted file mode 100644
index 3bfe07c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/4774354-expected.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutText {#text} at (0,0) size 0x0
-layer at (8,8) size 304x154
-  LayoutIFrame {IFRAME} at (0,0) size 304x154 [border: (2px inset #EEEEEE)]
-    layer at (0,0) size 300x150
-      LayoutView at (0,0) size 300x150
-    layer at (0,0) size 300x150
-      LayoutBlockFlow {HTML} at (0,0) size 300x150
-        LayoutBlockFlow {BODY} at (8,8) size 284x134 [bgcolor=#FFFFE0]
-          LayoutText {#text} at (0,0) size 238x19
-            text run at (0,0) width 238: "You should not see a caret in this text."
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/4776765-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/4776765-expected.png
deleted file mode 100644
index f4a1fab..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/4776765-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/block-no-inflow-children-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/block-no-inflow-children-expected.txt
deleted file mode 100644
index c1a27d1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/block-no-inflow-children-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [0, 0, 62, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 0, 62, 19],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'La la la la'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/bugzilla-6278-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/bugzilla-6278-expected.txt
deleted file mode 100644
index 7207a1d1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/bugzilla-6278-expected.txt
+++ /dev/null
@@ -1,135 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 138, 292, 160],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 303, 292, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 138, 291, 159],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 138, 242, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 343, 242, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD id='col1'",
-          "rect": [10, 353, 242, 40],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 138, 235, 199],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD id='target'",
-          "rect": [254, 138, 52, 255],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD id='col1'",
-          "rect": [252, 138, 50, 215],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell TD id='col1'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Curabitur pretium, quam quis semper'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'malesuada, est libero feugiat libero,'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'vel fringilla orci nibh sed neque.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Quisque eu nulla non nisi molestie'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'accumsan. Etiam tellus urna, laoreet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'ac, laoreet non, suscipit sed, sapien.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Phasellus vehicula, sem at posuere'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'vehicula, augue nibh molestie nisl,'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'nec ullamcorper lacus ante vulputate'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'pede.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD id='target'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/bugzilla-7235-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/bugzilla-7235-expected.png
deleted file mode 100644
index 1bd77d5..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/bugzilla-7235-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/canvas-resize-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/canvas-resize-expected.png
deleted file mode 100644
index a27a349..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/canvas-resize-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/canvas-resize-no-full-invalidation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/canvas-resize-no-full-invalidation-expected.png
deleted file mode 100644
index 25a69a4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/canvas-resize-no-full-invalidation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/caret-outside-block-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/caret-outside-block-expected.png
deleted file mode 100644
index b8d26e7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/caret-outside-block-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/become-overlay-composited-layer-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/become-overlay-composited-layer-expected.png
deleted file mode 100644
index 363f3b0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/become-overlay-composited-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/composited-document-element-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/composited-document-element-expected.png
deleted file mode 100644
index 04f29056..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/composited-document-element-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/layer-repaint-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/layer-repaint-expected.png
deleted file mode 100644
index 2dbfcc49..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/layer-repaint-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/layer-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/layer-repaint-expected.txt
deleted file mode 100644
index 7d1c20d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/layer-repaint-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x362
-  LayoutBlockFlow {HTML} at (0,0) size 800x362
-    LayoutBlockFlow {BODY} at (8,16) size 784x338
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 426x19
-          text run at (0,0) width 426: "Test for repaint in a composited layer. You should see no red below."
-layer at (8,52) size 202x302
-  LayoutBlockFlow {DIV} at (0,36) size 202x302 [border: (1px solid #000000)]
-    LayoutBlockFlow {DIV} at (51,51) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/layer-repaint-rects-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/layer-repaint-rects-expected.png
deleted file mode 100644
index 2343e6d6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/layer-repaint-rects-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/layer-repaint-rects-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/layer-repaint-rects-expected.txt
deleted file mode 100644
index 8673c18..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/layer-repaint-rects-expected.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x52
-  LayoutBlockFlow {HTML} at (0,0) size 800x52
-    LayoutBlockFlow {BODY} at (0,16) size 800x20
-      LayoutBlockFlow {P} at (0,0) size 800x20
-        LayoutText {#text} at (0,0) size 653x19
-          text run at (0,0) width 653: "Tests repaint after a layer stops compositing. You should see no red below after the end of the transition."
-layer at (0,100) size 402x232
-  LayoutBlockFlow (positioned) {DIV} at (0,100) size 402x232 [border: (1px solid #000000)]
-layer at (1,111) size 200x100
-  LayoutBlockFlow (positioned) {DIV} at (1,11) size 200x100 [bgcolor=#8888FF]
-layer at (1,221) size 200x100
-  LayoutBlockFlow (positioned) {DIV} at (1,121) size 200x100 [bgcolor=#FF0000]
-layer at (1,221) size 200x100
-  LayoutBlockFlow (positioned) {DIV} at (1,221) size 200x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/opacity-between-absolute-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/opacity-between-absolute-expected.png
deleted file mode 100644
index 6ad4b1c8..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/opacity-between-absolute-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/opacity-between-absolute2-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/opacity-between-absolute2-expected.png
deleted file mode 100644
index 33bf48a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/opacity-between-absolute2-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/text-color-change-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/text-color-change-expected.png
deleted file mode 100644
index 1b02a3c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/text-color-change-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/text-match-highlight-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/text-match-highlight-expected.png
deleted file mode 100644
index cf5667af..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/text-match-highlight-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/text-match-highlight-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/text-match-highlight-expected.txt
deleted file mode 100644
index 537279f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/text-match-highlight-expected.txt
+++ /dev/null
@@ -1,130 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 135, 223, 19],
-          "reason": "DocumentMarker change"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [20, 224, 181, 72],
-          "reason": "DocumentMarker change"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 191, 138, 12],
-          "reason": "DocumentMarker change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [278, 40, 44, 19],
-          "reason": "DocumentMarker change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [264, 60, 44, 19],
-          "reason": "DocumentMarker change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [220, 60, 44, 19],
-          "reason": "DocumentMarker change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [89, 60, 44, 19],
-          "reason": "DocumentMarker change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [51, 80, 44, 19],
-          "reason": "DocumentMarker change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'findme'",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'findme'",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'findme'",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'findme'",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'findme'",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'Can you findme in this boring text?'",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'Findme in a typewriter!'",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'Findme on a path! Did you findme?'",
-      "reason": "DocumentMarker change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-container-and-content-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-container-and-content-expected.png
deleted file mode 100644
index e4cdd06..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-container-and-content-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-container-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-container-expected.png
deleted file mode 100644
index 65ffefc..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-container-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/delete-into-nested-block-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/delete-into-nested-block-expected.png
deleted file mode 100644
index a216988..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/delete-into-nested-block-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/details-open-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/details-open-repaint-expected.txt
deleted file mode 100644
index d7ddf26..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/details-open-repaint-expected.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='details-content'",
-          "rect": [8, 72, 784, 22],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTextControl INPUT",
-          "rect": [8, 72, 181, 22],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 75, 177, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutDetailsMarker DIV id='details-marker'",
-          "rect": [8, 56, 11, 11],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutDetailsMarker DIV id='details-marker'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='details-content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTextControl INPUT",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/flexbox/repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/flexbox/repaint-expected.txt
deleted file mode 100644
index a3b70659..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/flexbox/repaint-expected.txt
+++ /dev/null
@@ -1,171 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='content'",
-          "rect": [138, 128, 654, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [138, 128, 654, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='content'",
-          "rect": [148, 128, 644, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [148, 128, 644, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [138, 128, 636, 99],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [148, 128, 635, 99],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [148, 128, 635, 99],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='content'",
-          "rect": [400, 128, 392, 180],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [400, 128, 392, 180],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='left'",
-          "rect": [8, 228, 392, 80],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [400, 128, 391, 179],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='left'",
-          "rect": [148, 128, 252, 180],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='left'",
-          "rect": [138, 128, 10, 100],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='left'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='content'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet dolor id urna eleifend aliquet.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Nulla vel dolor ipsum. Aliquam ut turpis nisl, in vulputate sapien. Cum sociis natoque penatibus et'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'magnis dis parturient montes, nascetur ridiculus mus. Sed congue magna vitae dolor feugiat vehicula.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Sed volutpat, tellus vel varius vestibulum, purus quam mollis sapien, in condimentum leo neque sed'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'nulla. Nunc quis porta elit. Pellentesque erat lectus, ultricies a lobortis id, faucibus id quam.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='left'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='content'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet dolor id urna eleifend aliquet.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Nulla vel dolor ipsum. Aliquam ut turpis nisl, in vulputate sapien. Cum sociis natoque penatibus et'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'magnis dis parturient montes, nascetur ridiculus mus. Sed congue magna vitae dolor feugiat vehicula.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Sed volutpat, tellus vel varius vestibulum, purus quam mollis sapien, in condimentum leo neque sed'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'nulla. Nunc quis porta elit. Pellentesque erat lectus, ultricies a lobortis id, faucibus id quam.'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/forms/button-checkbox-click-method-repaint-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/forms/button-checkbox-click-method-repaint-expected.png
deleted file mode 100644
index da609f9..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/forms/button-checkbox-click-method-repaint-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.png
deleted file mode 100644
index 3e4e1ce..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.png
deleted file mode 100644
index dabcb37..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/forms/textarea-caret-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/forms/textarea-caret-expected.png
deleted file mode 100644
index d6888e0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/forms/textarea-caret-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/iframe-display-block-to-display-none-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/iframe-display-block-to-display-none-expected.png
deleted file mode 100644
index 21e62f7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/iframe-display-block-to-display-none-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/iframe-display-none-to-display-block-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/iframe-display-none-to-display-block-expected.png
deleted file mode 100644
index 076294c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/iframe-display-none-to-display-block-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt
deleted file mode 100644
index d1c96ed..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt
+++ /dev/null
@@ -1,433 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 933],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='copyvideo'",
-          "rect": [571, 515, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-atopvideo'",
-          "rect": [571, 415, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-invideo'",
-          "rect": [571, 315, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-outvideo'",
-          "rect": [571, 165, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-invideo'",
-          "rect": [571, 115, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='copycanvas'",
-          "rect": [429, 515, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-atopcanvas'",
-          "rect": [429, 415, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-incanvas'",
-          "rect": [429, 315, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-outcanvas'",
-          "rect": [429, 165, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-incanvas'",
-          "rect": [429, 115, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='copyimage'",
-          "rect": [287, 515, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-atopimage'",
-          "rect": [287, 415, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-inimage'",
-          "rect": [287, 315, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-outimage'",
-          "rect": [287, 165, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-inimage'",
-          "rect": [287, 115, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='copysolid color'",
-          "rect": [145, 515, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-atopsolid color'",
-          "rect": [145, 415, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-insolid color'",
-          "rect": [145, 315, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-outsolid color'",
-          "rect": [145, 165, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-insolid color'",
-          "rect": [145, 115, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='xorvideo'",
-          "rect": [601, 565, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='lightervideo'",
-          "rect": [601, 465, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-outvideo'",
-          "rect": [601, 365, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-overvideo'",
-          "rect": [601, 265, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-atopvideo'",
-          "rect": [601, 215, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-overvideo'",
-          "rect": [601, 65, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='xorcanvas'",
-          "rect": [459, 565, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='lightercanvas'",
-          "rect": [459, 465, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-outcanvas'",
-          "rect": [459, 365, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-overcanvas'",
-          "rect": [459, 265, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-atopcanvas'",
-          "rect": [459, 215, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-overcanvas'",
-          "rect": [459, 65, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='xorimage'",
-          "rect": [317, 565, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='lighterimage'",
-          "rect": [317, 465, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-outimage'",
-          "rect": [317, 365, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-overimage'",
-          "rect": [317, 265, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-atopimage'",
-          "rect": [317, 215, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-overimage'",
-          "rect": [317, 65, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='xorsolid color'",
-          "rect": [175, 565, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='lightersolid color'",
-          "rect": [175, 465, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-outsolid color'",
-          "rect": [175, 365, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-oversolid color'",
-          "rect": [175, 265, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-atopsolid color'",
-          "rect": [175, 215, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-oversolid color'",
-          "rect": [175, 65, 50, 40],
-          "reason": "invalidate paint rectangle"
-        }
-      ]
-    },
-    {
-      "name": "LayoutVideo VIDEO id='video'",
-      "position": [15, 859],
-      "bounds": [150, 60],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small phase-ready state-stopped'",
-      "position": [15, 859],
-      "bounds": [150, 60]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-oversolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-overimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-overcanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-overvideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-insolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-inimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-incanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-invideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-outsolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-outimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-outcanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-outvideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-atopsolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-atopimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-atopcanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-atopvideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-oversolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-overimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-overcanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-overvideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-insolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-inimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-incanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-invideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-outsolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-outimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-outcanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-outvideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-atopsolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-atopimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-atopcanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-atopvideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='lightersolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='lighterimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='lightercanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='lightervideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='copysolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='copyimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='copycanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='copyvideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='xorsolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='xorimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='xorcanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='xorvideo'",
-      "reason": "invalidate paint rectangle"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/invalidation-after-opacity-change-subtree-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/invalidation-after-opacity-change-subtree-expected.png
deleted file mode 100644
index 6a14bf8..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/invalidation-after-opacity-change-subtree-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-1-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-1-expected.png
deleted file mode 100644
index fe5c073b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-1-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-10-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-10-expected.png
deleted file mode 100644
index adc11b8..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-10-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-10-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-10-expected.txt
deleted file mode 100644
index 1d3962be..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-10-expected.txt
+++ /dev/null
@@ -1,235 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 520, 407, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 240, 406, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 360, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 440, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 420, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 460, 354, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 400, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 363, 48, 65],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 374, 48, 64],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself, and was'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this, there was generally'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she wanted to send the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers were always'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the ground, Alice'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soon came to the conclusion that it was a very\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'game indeed.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The players all played at once without waiting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for turns,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for the hedgehogs; and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Queen'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' was in a furious passion, and went\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'stamping'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'about, and shouting \u2018Off with his head!\u2019 or \u2018Off with'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her head!\u2019 about once in a minute.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Alice began to feel very uneasy: to be sure, she had not as\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'yet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'had any dispute with the Queen, but she knew that it might'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'happen any minute, \u2018and then,\u2019 thought she, \u2018what would'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'become of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'me? They\u2019re dreadfully fond of beheading people'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'here; the great\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'wonder is, that there\u2018s any one left alive!\u2019'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-2-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-2-expected.png
deleted file mode 100644
index f1938e18..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-2-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-2-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-2-expected.txt
deleted file mode 100644
index b16809f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-2-expected.txt
+++ /dev/null
@@ -1,405 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 74, 418, 526],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 520, 407, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 241, 406, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 240, 406, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 181, 406, 79],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 180, 406, 79],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 361, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 360, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 421, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 420, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 80, 354, 120],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 461, 354, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 460, 354, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 401, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 400, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [302, 441, 66, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [302, 440, 66, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-          "rect": [372, 404, 48, 81],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-          "rect": [372, 403, 48, 81],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 364, 48, 65],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 363, 48, 65],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [235, 180, 45, 20],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [485, 0, 15, 600],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The chief difficulty Alice found at first was in managing'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'flamingo: she succeeded in getting its body tucked'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'away,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'comfortably enough, under her arm, with its legs'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hanging down,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'but generally, just as she had got its'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'neck nicely straightened\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'out, and was going to give the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog a blow with its head, it\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline I id='would'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'would'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' twist itself round and'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'look up in her face, with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'such a puzzled expression that she'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'could not help bursting out\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'laughing: and when she had got its'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'head down, and was going to\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself, and was'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this, there was generally'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she wanted to send the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers were always'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the ground, Alice'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soon came to the conclusion that it was a very\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'game indeed.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The players all played at once without waiting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for turns,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for the hedgehogs; and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the Queen'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'was in a furious passion, and went\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'stamping about, and'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'shouting \u2018Off with his head!\u2019 or \u2018Off with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her head!\u2019'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'about once in a minute.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Alice began to feel very uneasy: to be sure, she had not as\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'yet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'had any dispute with the Queen, but she knew that it might'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'happen any minute, \u2018and then,\u2019 thought she, \u2018what would'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'become of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'me? They\u2019re dreadfully fond of beheading people'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'here; the great\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'wonder is, that there\u2018s any one left alive!\u2019'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-3-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-3-expected.png
deleted file mode 100644
index 8ee1791..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-3-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-3-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-3-expected.txt
deleted file mode 100644
index 0d54a5d13..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-3-expected.txt
+++ /dev/null
@@ -1,249 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 520, 407, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 240, 406, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 400, 406, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 360, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 460, 354, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 440, 338, 79],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 400, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [302, 440, 66, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [242, 440, 65, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-          "rect": [356, 423, 64, 81],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-          "rect": [372, 403, 48, 81],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself, and was'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this, there was generally'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she wanted to send the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers were always'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the ground, Alice'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soon came to the conclusion that it was a very\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'game indeed.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The players all played at once without waiting\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for turns,'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting for the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehogs; and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the Queen'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' was in'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a furious passion, and went\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'stamping about, and'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'shouting \u2018Off with his head!\u2019 or \u2018Off with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her head!\u2019'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'about once in a minute.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Alice began to feel very uneasy: to be sure, she had not as\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'yet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'had any dispute with the Queen, but she knew that it might'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'happen any minute, \u2018and then,\u2019 thought she, \u2018what would'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'become of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'me? They\u2019re dreadfully fond of beheading people'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'here; the great\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'wonder is, that there\u2018s any one left alive!\u2019'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-4-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-4-expected.png
deleted file mode 100644
index f33e7bb..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-4-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-4-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-4-expected.txt
deleted file mode 100644
index 67e65a0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-4-expected.txt
+++ /dev/null
@@ -1,230 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 520, 407, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 240, 406, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 460, 406, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 360, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 420, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 400, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [302, 440, 66, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-          "rect": [372, 403, 48, 81],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself, and was'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this, there was generally'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she wanted to send the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers were always'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the ground, Alice'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soon came to the conclusion that it was a very\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'game indeed.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The players all played at once without waiting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for turns,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for the hedgehogs; and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the Queen'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'was in a furious passion, and went\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'stamping about, and'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'shouting \u2018Off with his head!\u2019 or \u2018Off with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her head!\u2019 about once'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in a minute.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Alice began to feel very uneasy: to be sure, she had not as\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'yet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'had any dispute with the Queen, but she knew that it might'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'happen any minute, \u2018and then,\u2019 thought she, \u2018what would'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'become of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'me? They\u2019re dreadfully fond of beheading people'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'here; the great\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'wonder is, that there\u2018s any one left alive!\u2019'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-5-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-5-expected.png
deleted file mode 100644
index 6c530b80..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-5-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-5-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-5-expected.txt
deleted file mode 100644
index 4dbd0ebda..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-5-expected.txt
+++ /dev/null
@@ -1,248 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 520, 407, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 240, 406, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [49, 360, 372, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 400, 356, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 440, 354, 79],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 400, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [49, 400, 302, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [302, 440, 66, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [245, 440, 65, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 363, 48, 65],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself, and was'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this, there was generally'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she wanted to send the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers were always'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the ground, Alice'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soon came to the conclusion that it was a very\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'game indeed.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The players all played at once without waiting\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'turns,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting for the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehogs; and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the Queen'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' was in a'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'furious passion, and went\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'stamping about, and shouting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u2018Off with his head!\u2019 or \u2018Off with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her head!\u2019 about once'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in a minute.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Alice began to feel very uneasy: to be sure, she had not as\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'yet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'had any dispute with the Queen, but she knew that it might'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'happen any minute, \u2018and then,\u2019 thought she, \u2018what would'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'become of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'me? They\u2019re dreadfully fond of beheading people'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'here; the great\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'wonder is, that there\u2018s any one left alive!\u2019'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-6-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-6-expected.png
deleted file mode 100644
index 3a4e7f6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-6-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-6-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-6-expected.txt
deleted file mode 100644
index 5593049..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-6-expected.txt
+++ /dev/null
@@ -1,126 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 240, 406, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 360, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 363, 48, 65],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [27, 363, 22, 20],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself, and was'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this, there was generally'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she wanted to send the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers were always'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the ground, Alice'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soon came to the conclusion that it was a very\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'foo'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'game indeed.\n'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-7-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-7-expected.png
deleted file mode 100644
index 9abc148..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-7-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-8-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-8-expected.png
deleted file mode 100644
index 600696a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-8-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-8-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-8-expected.txt
deleted file mode 100644
index db66a4cc..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-8-expected.txt
+++ /dev/null
@@ -1,321 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 74, 418, 526],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 240, 406, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 180, 406, 79],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 360, 406, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 360, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 440, 355, 79],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 420, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 80, 354, 119],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 400, 354, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 400, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 400, 297, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [184, 440, 68, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [302, 440, 66, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 363, 48, 65],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [238, 180, 40, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The chief difficulty Alice found at first was in managing'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'flamingo: she succeeded in getting its body tucked'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'away,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'comfortably enough, under her arm, with its legs'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hanging down,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'but generally, just as she had got its'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'neck nicely straightened\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'out, and was going to give the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog a blow with its head, it\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'would'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' twist itself round and'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'look up in her face, with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'such a puzzled expression that she'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'could not help bursting out\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'laughing: and when she had got its'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'head down, and was going to\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself, and was'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this, there was generally'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she wanted to send the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers were always'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the ground, Alice'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soon came to the conclusion that it was a very\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult game'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'indeed.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The players all played at once without waiting\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for turns,'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting for the hedgehogs;'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the Queen'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' was in a furious'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'passion, and went\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'stamping about, and shouting \u2018Off'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'with his head!\u2019 or \u2018Off with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her head!\u2019 about once in a'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'minute.\n'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-9-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-9-expected.png
deleted file mode 100644
index 4fdf895..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-9-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-9-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-9-expected.txt
deleted file mode 100644
index 694d13e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-9-expected.txt
+++ /dev/null
@@ -1,273 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 520, 407, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 240, 406, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 180, 406, 79],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 360, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 440, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 420, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 460, 354, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 400, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 383, 48, 65],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 363, 48, 65],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='yellowFloat'",
-          "rect": [372, 243, 48, 49],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' twist itself round and'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'look up in her face, with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'such a puzzled expression that she'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'could not help bursting out\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'laughing: and when she had got its'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'head down, and was going to\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='yellowFloat'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself,'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'and was in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this,'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'there was generally a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'wanted to send the hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'were always getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'ground, Alice soon came to the conclusion that it was a very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult game indeed.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The players all played at once without waiting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for turns,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for the hedgehogs; and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Queen'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' was in a furious passion, and went\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'stamping'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'about, and shouting \u2018Off with his head!\u2019 or \u2018Off with'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her head!\u2019 about once in a minute.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Alice began to feel very uneasy: to be sure, she had not as\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'yet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'had any dispute with the Queen, but she knew that it might'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'happen any minute, \u2018and then,\u2019 thought she, \u2018what would'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'become of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'me? They\u2019re dreadfully fond of beheading people'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'here; the great\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'wonder is, that there\u2018s any one left alive!\u2019'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/list-marker-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/list-marker-expected.png
deleted file mode 100644
index b566348..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/list-marker-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/list-marker-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/list-marker-expected.txt
deleted file mode 100644
index f54a7eb5..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/list-marker-expected.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x576
-      LayoutBlockFlow {P} at (0,0) size 784x40
-        LayoutText {#text} at (0,0) size 52x19
-          text run at (0,0) width 52: "Test for "
-        LayoutInline {I} at (0,0) size 784x39
-          LayoutInline {A} at (0,0) size 300x19 [color=#0000EE]
-            LayoutText {#text} at (52,0) size 300x19
-              text run at (52,0) width 300: "http://bugs.webkit.org/show_bug.cgi?id=12910"
-          LayoutText {#text} at (352,0) size 784x39
-            text run at (352,0) width 4: " "
-            text run at (356,0) width 428: "REGRESSION (r18756-r18765): list-bullet doesn't redraw properly"
-            text run at (0,20) width 310: "when changing the list's content using JavaScript"
-        LayoutText {#text} at (310,20) size 4x19
-          text run at (310,20) width 4: "."
-      LayoutBlockFlow {UL} at (0,56) size 784x20
-        LayoutListItem {LI} at (40,0) size 744x20
-          LayoutBlockFlow (anonymous) at (0,0) size 744x20
-            LayoutListMarker (anonymous) at (-18,0) size 7x19: bullet
-            LayoutText {#text} at (0,0) size 21x19
-              text run at (0,0) width 21: "foo"
-          LayoutBlockFlow {DIV} at (10,30) size 724x0
-      LayoutBlockFlow {UL} at (0,92) size 784x20
-        LayoutListItem {LI} at (40,0) size 744x20
-          LayoutBlockFlow (anonymous) at (0,0) size 744x20
-            LayoutListMarker (anonymous) at (-1,0) size 7x19: bullet
-            LayoutText {#text} at (22,0) size 20x19
-              text run at (22,0) width 20: "bar"
-          LayoutBlockFlow {DIV} at (10,30) size 724x0
-      LayoutBlockFlow {UL} at (0,128) size 784x20
-        LayoutListItem {LI} at (0,0) size 744x20
-          LayoutBlockFlow (anonymous) at (0,0) size 744x20
-            LayoutListMarker (anonymous) at (755,0) size 7x19: bullet
-            LayoutText {#text} at (723,0) size 21x19
-              text run at (723,0) width 21: "foo"
-          LayoutBlockFlow {DIV} at (10,30) size 724x0
-      LayoutBlockFlow {UL} at (0,164) size 784x20
-        LayoutListItem {LI} at (0,0) size 744x20
-          LayoutBlockFlow (anonymous) at (0,0) size 744x20
-            LayoutListMarker (anonymous) at (738,0) size 7x19: bullet
-            LayoutText {#text} at (702,0) size 20x19
-              text run at (702,0) width 20: "bar"
-          LayoutBlockFlow {DIV} at (10,30) size 724x0
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/make-children-non-inline-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/make-children-non-inline-expected.txt
deleted file mode 100644
index 0e156a8..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/make-children-non-inline-expected.txt
+++ /dev/null
@@ -1,364 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 64, 784, 280],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 64, 784, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 264, 784, 80],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 264, 110, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 164, 110, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 144, 79, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 144, 79, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 104, 79, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 104, 79, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 284, 67, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 184, 67, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 324, 62, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 224, 62, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 124, 44, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 124, 44, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 84, 43, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 84, 43, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 64, 39, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 64, 39, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 304, 29, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 204, 29, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 164, 10, 100],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Word,'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'words,'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'more words.'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'I could'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'write a book'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'about all the stuff'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'that comes'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'after'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'the break.'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multi-layout-one-frame-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multi-layout-one-frame-expected.txt
deleted file mode 100644
index e8b8cb2..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multi-layout-one-frame-expected.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [195, 11, 177, 16],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 11, 177, 16],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [195, 11, 53, 16],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 11, 53, 16],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASSED'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASSED'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/column-rules-fixed-height-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/column-rules-fixed-height-expected.png
deleted file mode 100644
index 7b41229..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/column-rules-fixed-height-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-as-paint-container-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-as-paint-container-expected.txt
deleted file mode 100644
index ee88730..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-as-paint-container-expected.txt
+++ /dev/null
@@ -1,195 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='target'",
-      "position": [8, 8],
-      "bounds": [630, 180],
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutMultiColumnSet (anonymous)",
-          "rect": [0, 0, 630, 180],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 0, 300, 180],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [325, 0, 300, 160],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'dolor sit amet,'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'consectetur'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'adipiscing'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'elit. Fusce'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'varius, metus'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'eu fringilla'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'pulvinar, ipsum'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'sapien'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'ultricies arcu,'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'non condimentum'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'quam est eu'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'purus. Ut nisl'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'libero,'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'suscipit ut leo'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'eget, dapibus'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'ultrices dolor.'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'dolor sit amet,'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'consectetur'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'adipiscing'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'elit. Fusce'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'varius, metus'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'eu fringilla'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'pulvinar, ipsum'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'sapien'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'ultricies arcu,'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'non condimentum'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'quam est eu'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'purus. Ut nisl'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'libero,'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'suscipit ut leo'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'eget, dapibus'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'ultrices dolor.'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutMultiColumnSet (anonymous)",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-repaint-expected.txt
deleted file mode 100644
index 5318de04..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-repaint-expected.txt
+++ /dev/null
@@ -1,108 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutInline SPAN id='a'",
-          "rect": [234, 10, 300, 57],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [234, 15, 300, 50],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutMultiColumnFlowThread (anonymous)",
-          "rect": [9, 9, 175, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutMultiColumnFlowThread (anonymous)",
-          "rect": [234, 9, 175, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [234, 15, 50, 50],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [9, 10, 13, 57],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='a'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'XXXXXX'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-inline-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-inline-expected.txt
deleted file mode 100644
index a0fd037..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-inline-expected.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [488, 8, 80, 20],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutInline SPAN id='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-overflowing-block-rl-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-overflowing-block-rl-expected.txt
deleted file mode 100644
index 034a9709..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-overflowing-block-rl-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='elm'",
-          "rect": [8, 174, 500, 168],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='elm'",
-          "rect": [8, 341, 500, 167],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='elm'",
-          "rect": [8, 8, 500, 167],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='elm'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='elm'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='elm'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-text-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-text-expected.txt
deleted file mode 100644
index 2a337b0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-text-expected.txt
+++ /dev/null
@@ -1,124 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutMultiColumnSet (anonymous)",
-          "rect": [8, 8, 630, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutMultiColumnFlowThread (anonymous)",
-          "rect": [488, 8, 150, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutMultiColumnFlowThread (anonymous)",
-          "rect": [328, 8, 150, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutMultiColumnFlowThread (anonymous)",
-          "rect": [168, 8, 150, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutMultiColumnFlowThread (anonymous)",
-          "rect": [8, 8, 150, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [488, 8, 80, 20],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutMultiColumnSet (anonymous)",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/non-text-link-invalidation-optimization-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/non-text-link-invalidation-optimization-expected.png
deleted file mode 100644
index aa3271a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/non-text-link-invalidation-optimization-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/continuation-after-outline-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/continuation-after-outline-expected.png
deleted file mode 100644
index 7d023ee6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/continuation-after-outline-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/focus-enable-continuations-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/focus-enable-continuations-expected.png
deleted file mode 100644
index f4c9168..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/focus-enable-continuations-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/focus-layers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/focus-layers-expected.png
deleted file mode 100644
index 1b85754e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/focus-layers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/inline-focus-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/inline-focus-expected.png
deleted file mode 100644
index deb9cbbc..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/inline-focus-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/inline-focus-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/inline-focus-expected.txt
deleted file mode 100644
index fcee9c75..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/inline-focus-expected.txt
+++ /dev/null
@@ -1,87 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [0, 36, 800, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [0, 0, 800, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 36, 418, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline A id='link'",
-          "rect": [585, -1, 216, 234],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 0, 39, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline A id='link'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Home'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'crbug.com/424078: ensure inline elements get their outline painted'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/inline-outline-repaint-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/inline-outline-repaint-expected.png
deleted file mode 100644
index 18ed59d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/inline-outline-repaint-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-child-outline-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-child-outline-expected.png
deleted file mode 100644
index 00fdc32..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-child-outline-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-outline-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-outline-expected.png
deleted file mode 100644
index 50213af..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-outline-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-outline-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-outline-expected.txt
deleted file mode 100644
index e3b15a02..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-outline-expected.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 207x19
-          text run at (0,0) width 207: "This tests for regressions against "
-        LayoutInline {I} at (0,0) size 540x19
-          LayoutInline {A} at (0,0) size 347x19 [color=#0000EE]
-            LayoutText {#text} at (207,0) size 347x19
-              text run at (207,0) width 347: "http://bugzilla.opendarwin.org/show_bug.cgi?id=7943"
-          LayoutText {#text} at (554,0) size 193x19
-            text run at (554,0) width 193: " Layer outline does not repaint"
-        LayoutText {#text} at (747,0) size 4x19
-          text run at (747,0) width 4: "."
-layer at (8,44) size 784x2 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,36) size 784x2 [border: (1px inset #EEEEEE)]
-layer at (18,194) size 100x100 clip at (19,195) size 98x98
-  LayoutBlockFlow {DIV} at (10,186) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
-layer at (8,54) size 784x130
-  LayoutBlockFlow (relative positioned) {DIV} at (0,46) size 784x130
-layer at (18,64) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (10,10) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
-layer at (148,64) size 100x100 backgroundClip at (138,54) size 100x100 clip at (138,54) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (140,10) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
-layer at (278,64) size 100x100 backgroundClip at (268,54) size 5x5 clip at (268,54) size 5x5
-  LayoutBlockFlow (positioned) {DIV} at (270,10) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
-layer at (408,64) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (400,10) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
-layer at (538,64) size 100x100 backgroundClip at (548,74) size 100x100 clip at (548,74) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (530,10) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
-layer at (668,64) size 100x100 backgroundClip at (773,169) size 5x5 clip at (773,169) size 5x5
-  LayoutBlockFlow (positioned) {DIV} at (660,10) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
-layer at (18,324) size 100x100
-  LayoutBlockFlow (relative positioned) {DIV} at (0,296) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-outline-horizontal-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-outline-horizontal-expected.png
deleted file mode 100644
index 50213af..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-outline-horizontal-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-outline-horizontal-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-outline-horizontal-expected.txt
deleted file mode 100644
index e3b15a02..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/layer-outline-horizontal-expected.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 207x19
-          text run at (0,0) width 207: "This tests for regressions against "
-        LayoutInline {I} at (0,0) size 540x19
-          LayoutInline {A} at (0,0) size 347x19 [color=#0000EE]
-            LayoutText {#text} at (207,0) size 347x19
-              text run at (207,0) width 347: "http://bugzilla.opendarwin.org/show_bug.cgi?id=7943"
-          LayoutText {#text} at (554,0) size 193x19
-            text run at (554,0) width 193: " Layer outline does not repaint"
-        LayoutText {#text} at (747,0) size 4x19
-          text run at (747,0) width 4: "."
-layer at (8,44) size 784x2 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,36) size 784x2 [border: (1px inset #EEEEEE)]
-layer at (18,194) size 100x100 clip at (19,195) size 98x98
-  LayoutBlockFlow {DIV} at (10,186) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
-layer at (8,54) size 784x130
-  LayoutBlockFlow (relative positioned) {DIV} at (0,46) size 784x130
-layer at (18,64) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (10,10) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
-layer at (148,64) size 100x100 backgroundClip at (138,54) size 100x100 clip at (138,54) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (140,10) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
-layer at (278,64) size 100x100 backgroundClip at (268,54) size 5x5 clip at (268,54) size 5x5
-  LayoutBlockFlow (positioned) {DIV} at (270,10) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
-layer at (408,64) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (400,10) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
-layer at (538,64) size 100x100 backgroundClip at (548,74) size 100x100 clip at (548,74) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (530,10) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
-layer at (668,64) size 100x100 backgroundClip at (773,169) size 5x5 clip at (773,169) size 5x5
-  LayoutBlockFlow (positioned) {DIV} at (660,10) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
-layer at (18,324) size 100x100
-  LayoutBlockFlow (relative positioned) {DIV} at (0,296) size 100x100 [bgcolor=#EEEEEE] [border: (1px solid #000000)]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/outline-continuations-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/outline-continuations-expected.png
deleted file mode 100644
index f95bf37..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/outline/outline-continuations-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/flexible-box-overflow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/flexible-box-overflow-expected.png
deleted file mode 100644
index 617e877..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/flexible-box-overflow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/flexible-box-overflow-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/flexible-box-overflow-expected.txt
deleted file mode 100644
index 6fd40d6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/flexible-box-overflow-expected.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x552
-      LayoutBlockFlow {P} at (0,0) size 784x40
-        LayoutText {#text} at (0,0) size 226x19
-          text run at (0,0) width 226: "This is a test for regressions against "
-        LayoutInline {I} at (0,0) size 760x39
-          LayoutInline {A} at (0,0) size 347x19 [color=#0000EE]
-            LayoutText {#text} at (226,0) size 347x19
-              text run at (226,0) width 347: "http://bugzilla.opendarwin.org/show_bug.cgi?id=8056"
-          LayoutText {#text} at (573,0) size 760x39
-            text run at (573,0) width 4: " "
-            text run at (577,0) width 183: "Flexible boxes do not repaint"
-            text run at (0,20) width 237: "their top, left and children's overflows"
-        LayoutText {#text} at (237,20) size 4x19
-          text run at (237,20) width 4: "."
-      LayoutBlockFlow {DIV} at (0,66) size 784x100
-        LayoutDeprecatedFlexibleBox {DIV} at (10,10) size 80x80 [bgcolor=#FFFF00]
-          LayoutBlockFlow {DIV} at (-10,-10) size 100x100 [border: (1px solid #000000)]
-            LayoutText {#text} at (1,1) size 177x19
-              text run at (1,1) width 177: "Lorem ipsum dolor sit amet."
-      LayoutBlockFlow {DIV} at (0,186) size 784x100
-        LayoutDeprecatedFlexibleBox {DIV} at (10,10) size 80x80 [bgcolor=#FFFF00]
-          LayoutBlockFlow {DIV} at (-10,-10) size 100x100 [border: (1px solid #000000)]
-      LayoutBlockFlow {DIV} at (0,306) size 784x100
-        LayoutDeprecatedFlexibleBox {DIV} at (10,10) size 80x80 [bgcolor=#FFFF00]
-          LayoutBlockFlow {DIV} at (-10,-10) size 100x100 [border: (1px solid #000000)]
-      LayoutBlockFlow {DIV} at (0,426) size 784x100
-        LayoutDeprecatedFlexibleBox {DIV} at (10,10) size 80x80 [bgcolor=#FFFF00]
-          LayoutBlockFlow {DIV} at (-10,-10) size 100x100 [border: (1px solid #000000)]
-            LayoutText {#text} at (1,1) size 98x159
-              text run at (1,1) width 84: "Lorem ipsum"
-              text run at (1,21) width 89: "dolor sit amet,"
-              text run at (1,41) width 78: "consectetuer"
-              text run at (1,61) width 91: "adipiscing elit."
-              text run at (1,81) width 98: "Etiam et ipsum."
-              text run at (1,101) width 31: "Nam"
-              text run at (1,121) width 98: "consectetuer mi"
-              text run at (1,141) width 61: "eget velit."
-layer at (8,64) size 784x2 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,56) size 784x2 [border: (1px inset #EEEEEE)]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.png
deleted file mode 100644
index 617e877..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.txt
deleted file mode 100644
index 6fd40d6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/flexible-box-overflow-horizontal-expected.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x552
-      LayoutBlockFlow {P} at (0,0) size 784x40
-        LayoutText {#text} at (0,0) size 226x19
-          text run at (0,0) width 226: "This is a test for regressions against "
-        LayoutInline {I} at (0,0) size 760x39
-          LayoutInline {A} at (0,0) size 347x19 [color=#0000EE]
-            LayoutText {#text} at (226,0) size 347x19
-              text run at (226,0) width 347: "http://bugzilla.opendarwin.org/show_bug.cgi?id=8056"
-          LayoutText {#text} at (573,0) size 760x39
-            text run at (573,0) width 4: " "
-            text run at (577,0) width 183: "Flexible boxes do not repaint"
-            text run at (0,20) width 237: "their top, left and children's overflows"
-        LayoutText {#text} at (237,20) size 4x19
-          text run at (237,20) width 4: "."
-      LayoutBlockFlow {DIV} at (0,66) size 784x100
-        LayoutDeprecatedFlexibleBox {DIV} at (10,10) size 80x80 [bgcolor=#FFFF00]
-          LayoutBlockFlow {DIV} at (-10,-10) size 100x100 [border: (1px solid #000000)]
-            LayoutText {#text} at (1,1) size 177x19
-              text run at (1,1) width 177: "Lorem ipsum dolor sit amet."
-      LayoutBlockFlow {DIV} at (0,186) size 784x100
-        LayoutDeprecatedFlexibleBox {DIV} at (10,10) size 80x80 [bgcolor=#FFFF00]
-          LayoutBlockFlow {DIV} at (-10,-10) size 100x100 [border: (1px solid #000000)]
-      LayoutBlockFlow {DIV} at (0,306) size 784x100
-        LayoutDeprecatedFlexibleBox {DIV} at (10,10) size 80x80 [bgcolor=#FFFF00]
-          LayoutBlockFlow {DIV} at (-10,-10) size 100x100 [border: (1px solid #000000)]
-      LayoutBlockFlow {DIV} at (0,426) size 784x100
-        LayoutDeprecatedFlexibleBox {DIV} at (10,10) size 80x80 [bgcolor=#FFFF00]
-          LayoutBlockFlow {DIV} at (-10,-10) size 100x100 [border: (1px solid #000000)]
-            LayoutText {#text} at (1,1) size 98x159
-              text run at (1,1) width 84: "Lorem ipsum"
-              text run at (1,21) width 89: "dolor sit amet,"
-              text run at (1,41) width 78: "consectetuer"
-              text run at (1,61) width 91: "adipiscing elit."
-              text run at (1,81) width 98: "Etiam et ipsum."
-              text run at (1,101) width 31: "Nam"
-              text run at (1,121) width 98: "consectetuer mi"
-              text run at (1,141) width 61: "eget velit."
-layer at (8,64) size 784x2 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,56) size 784x2 [border: (1px inset #EEEEEE)]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/inline-block-overflow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/inline-block-overflow-expected.png
deleted file mode 100644
index 04c039c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/inline-block-overflow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/inline-block-overflow-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/inline-block-overflow-expected.txt
deleted file mode 100644
index 3780744..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/inline-block-overflow-expected.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 322x19
-          text run at (0,0) width 322: "This is a repaint test of inline blocks with overflow."
-      LayoutBlockFlow (anonymous) at (0,46) size 784x20
-        LayoutInline {SPAN} at (0,0) size 198x19
-          LayoutText {#text} at (0,0) size 98x19
-            text run at (0,0) width 98: "Here comes an "
-          LayoutBlockFlow {SPAN} at (98,0) size 100x20 [bgcolor=#C0C0C0]
-            LayoutText {#text} at (0,0) size 92x39
-              text run at (0,0) width 74: "inline block"
-              text run at (0,20) width 92: "with overflow."
-        LayoutText {#text} at (0,0) size 0x0
-layer at (8,44) size 784x2 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,36) size 784x2 [border: (1px inset #EEEEEE)]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/line-overflow-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/line-overflow-expected.txt
deleted file mode 100644
index d6374be4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/line-overflow-expected.txt
+++ /dev/null
@@ -1,116 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 122, 195, 99],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 82, 192, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN id='t'",
-          "rect": [114, 92, 35, 49],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [114, 122, 35, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN id='t'",
-          "rect": [38, 142, 35, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [38, 142, 35, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Cras faucibus. Nunc'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'adipiscing, enim in scelerisque'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'convallis,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'augue '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='t'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'purus'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' eleifend'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'lacus, at sagittis eros leo'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'pulvinar velit. Integer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'sollicitudin nisi ut urna blandit'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'convallis.'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/overflow-outline-repaint-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/overflow-outline-repaint-expected.png
deleted file mode 100644
index 6e97975..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/overflow-outline-repaint-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/paged-with-overflowing-block-rl-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/paged-with-overflowing-block-rl-expected.png
deleted file mode 100644
index edb6a9d1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/paged-with-overflowing-block-rl-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/paged-with-overflowing-block-rl-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/paged-with-overflowing-block-rl-expected.txt
deleted file mode 100644
index 3702517..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/paged-with-overflowing-block-rl-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='elm'",
-          "rect": [8, 8, 500, 485],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='elm'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='elm'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-child-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-child-expected.png
deleted file mode 100644
index d4caa87..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-child-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-parent-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-parent-expected.png
deleted file mode 100644
index 13e03f4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-parent-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-same-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-same-expected.png
deleted file mode 100644
index 502aba4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-same-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries-expected.png
deleted file mode 100644
index 1b63290..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/position/fixed-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/position/fixed-expected.png
deleted file mode 100644
index f2aa6f89..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/position/fixed-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/reflection/reflection-with-rotation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/reflection/reflection-with-rotation-expected.png
deleted file mode 100644
index 516eec240..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/reflection/reflection-with-rotation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/remove-block-after-layout-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/remove-block-after-layout-expected.txt
deleted file mode 100644
index 13fa50a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/remove-block-after-layout-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [8, 108, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 108, 98, 39],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/remove-inline-after-layout-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/remove-inline-after-layout-expected.txt
deleted file mode 100644
index e776f72d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/remove-inline-after-layout-expected.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 108, 784, 105],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [112, 193, 178, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [290, 108, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [112, 108, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 108, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [108, 193, 4, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutInline SPAN id='target'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/remove-inline-layer-after-layout-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/remove-inline-layer-after-layout-expected.txt
deleted file mode 100644
index 5299844..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/remove-inline-layer-after-layout-expected.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 108, 784, 105],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN id='target'",
-          "rect": [112, 108, 178, 104],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [112, 193, 178, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [290, 108, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [112, 108, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 108, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [108, 193, 4, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutInline SPAN id='target'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png
deleted file mode 100644
index 076f67e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.txt
deleted file mode 100644
index a36959b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutBlockFlow {DIV} at (0,0) size 784x22
-        LayoutTextControl {INPUT} at (0,0) size 181x22 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow (anonymous) at (0,22) size 784x20
-        LayoutText {#text} at (0,0) size 4x19
-          text run at (0,0) width 4: " "
-      LayoutBlockFlow {DIV} at (0,42) size 784x0
-layer at (10,11) size 177x16
-  LayoutBlockFlow {DIV} at (2,3) size 177x16
-caret: position 0 of child 0 {DIV} of {#document-fragment} of child 1 {INPUT} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/repaint-across-writing-mode-boundary-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/repaint-across-writing-mode-boundary-expected.png
deleted file mode 100644
index 064dc257..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/repaint-across-writing-mode-boundary-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/resize-iframe-text-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/resize-iframe-text-expected.png
deleted file mode 100644
index 4d2f66a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/resize-iframe-text-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scale-page-shrink-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scale-page-shrink-expected.png
deleted file mode 100644
index 9fb425f1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scale-page-shrink-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png
deleted file mode 100644
index 908a204..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/caret-with-composited-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/caret-with-composited-scroll-expected.png
deleted file mode 100644
index 0c9ab9d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/caret-with-composited-scroll-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/destroy-composited-scrollbar-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/destroy-composited-scrollbar-expected.png
deleted file mode 100644
index 2714d14..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/destroy-composited-scrollbar-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/destroy-overlay-scrollbar-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/destroy-overlay-scrollbar-expected.png
deleted file mode 100644
index 89f5d55..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/destroy-overlay-scrollbar-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/destroy-scrollbar-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/destroy-scrollbar-expected.png
deleted file mode 100644
index cb1a922..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/destroy-scrollbar-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-move-after-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-move-after-scroll-expected.png
deleted file mode 100644
index 3c821d6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-move-after-scroll-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-fixed-move-after-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-fixed-move-after-scroll-expected.png
deleted file mode 100644
index 3c821d6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-fixed-move-after-scroll-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.png
deleted file mode 100644
index c3ec9e2..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-transformed-scrolled-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-transformed-scrolled-expected.png
deleted file mode 100644
index 6bcf79b4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-transformed-scrolled-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-descendant-of-transformed-scrolled-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-descendant-of-transformed-scrolled-expected.png
deleted file mode 100644
index 1dea899..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-descendant-of-transformed-scrolled-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-move-after-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-move-after-scroll-expected.png
deleted file mode 100644
index 3c821d6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/fixed-move-after-scroll-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.png
deleted file mode 100644
index f7d2d44..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt
deleted file mode 100644
index 2f81d948..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2000, 2000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 320, 413, 19],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-200, -200, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Text Text Text Text Text Text Text Text Text Text Text Text Text'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/invalidate-caret-in-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/invalidate-caret-in-composited-scrolling-container-expected.txt
deleted file mode 100644
index 0306481..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/invalidate-caret-in-composited-scrolling-container-expected.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutTextControl INPUT id='root'",
-      "position": [7, 7],
-      "bounds": [63, 24],
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl INPUT id='root'",
-          "rect": [0, 0, 63, 24],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutTextControl INPUT id='root'",
-          "rect": [0, 0, 61, 22],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [3, 4, 57, 16],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [3, 4, 57, 16],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl INPUT id='root'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'test test test'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/invalidate-caret-in-non-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/invalidate-caret-in-non-composited-scrolling-container-expected.txt
deleted file mode 100644
index 0306481..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/invalidate-caret-in-non-composited-scrolling-container-expected.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutTextControl INPUT id='root'",
-      "position": [7, 7],
-      "bounds": [63, 24],
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl INPUT id='root'",
-          "rect": [0, 0, 63, 24],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutTextControl INPUT id='root'",
-          "rect": [0, 0, 61, 22],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [3, 4, 57, 16],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [3, 4, 57, 16],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl INPUT id='root'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'test test test'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset-expected.png
deleted file mode 100644
index c2abdda..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset2-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset2-expected.png
deleted file mode 100644
index 55350b6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset2-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset3-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset3-expected.png
deleted file mode 100644
index 1fa8e4b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset3-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/line-in-scrolled-clipped-block-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/line-in-scrolled-clipped-block-expected.png
deleted file mode 100644
index 28a2876d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/line-in-scrolled-clipped-block-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-move-after-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-move-after-scroll-expected.png
deleted file mode 100644
index 641b72f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-move-after-scroll-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-after-move-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-after-move-expected.png
deleted file mode 100644
index d64d794..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-after-move-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-body-appear-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-body-appear-expected.png
deleted file mode 100644
index b9c1e60..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-body-appear-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt
deleted file mode 100644
index da67bef1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt
+++ /dev/null
@@ -1,125 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2096],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 16, 784, 2072],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 52, 784, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 16, 784, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [124, 52, 383, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 16, 340, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 52, 116, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [507, 52, 4, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'You should see both vertical and horizontal scrollbars.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'This is the test for '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Bug 36461 - No vertical scrollbar after the CSS class change'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '.'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-delete-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-delete-expected.png
deleted file mode 100644
index 9e23a5e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-delete-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-delete-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-delete-expected.txt
deleted file mode 100644
index a65f7db4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-delete-expected.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 136, 43, 17],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Passed'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Test'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.png
deleted file mode 100644
index cca85bc..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.png
deleted file mode 100644
index bc540d2..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/resize-scrollable-div-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/resize-scrollable-div-expected.png
deleted file mode 100644
index fd21e82..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/resize-scrollable-div-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/resize-scrollable-iframe-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/resize-scrollable-iframe-expected.png
deleted file mode 100644
index 9901092b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/resize-scrollable-iframe-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-damage-and-full-viewport-repaint-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-damage-and-full-viewport-repaint-expected.png
deleted file mode 100644
index ea746fe1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-damage-and-full-viewport-repaint-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-invalidation-on-resize-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-invalidation-on-resize-expected.png
deleted file mode 100644
index ef2bc858..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-invalidation-on-resize-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-invalidation-on-resize-with-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-invalidation-on-resize-with-border-expected.png
deleted file mode 100644
index 2519b35e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-invalidation-on-resize-with-border-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/search-field-cancel-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/search-field-cancel-expected.txt
deleted file mode 100644
index 988dc00..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/search-field-cancel-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [11, 47, 164, 16],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [11, 47, 58, 16],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'some text'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-clear-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-clear-expected.png
deleted file mode 100644
index c52fa1c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-clear-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-clear-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-clear-expected.txt
deleted file mode 100644
index 5ff000a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-clear-expected.txt
+++ /dev/null
@@ -1,91 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [334, 123, 441, 404],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u305B\u3063\u304B\u304F\u898B\u3064\u3051\u305F\u3059\u3070\u3089\u3057\u3044\u8A18\u4E8B\u304C\u3069\u3053\u306B'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3042\u3063\u305F\u304B\u5FD8\u308C\u3066\u3057\u307E\u3063\u305F\u7D4C\u9A13\u306F\u3042\u308A\u307E\u3059\u304B'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u306A\u3089\u30BF\u30A4\u30C8\u30EB\u3068\u30A2\u30C9\u30EC\u30B9\u3060\u3051\u3067\u306A\u304F\u3001\u8A2A\u554F'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3057\u305F\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u304B\u3089\u3082\u691C\u7D22'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u305B\u3063\u304B\u304F\u898B\u3064\u3051\u305F\u3059'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3070\u3089\u3057\u3044\u8A18\u4E8B\u304C\u3069\u3053\u306B\u3042\u3063\u305F\u304B\u5FD8\u308C\u3066\u3057\u307E'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3063\u305F\u7D4C\u9A13\u306F\u3042\u308A\u307E\u3059\u304B \u306A\u3089\u30BF\u30A4\u30C8\u30EB\u3068\u30A2'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u30C9\u30EC\u30B9\u3060\u3051\u3067\u306A\u304F\u3001\u8A2A\u554F\u3057\u305F\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u304B\u3089\u3082\u691C\u7D22\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3059\u3002\u8A2A\u554F\u3057\u305F\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u304B'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3089\u3082\u691C\u7D22\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u305B\u3063\u304B\u304F\u898B'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3064\u3051\u305F\u3059\u3070\u3089\u3057\u3044\u8A18\u4E8B\u304C\u3069\u3053\u306B\u3042\u3063\u305F\u304B\u5FD8'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u308C\u3066\u3057\u307E\u3063\u305F\u7D4C\u9A13\u306F\u3042\u308A\u307E\u3059\u304B \u306A\u3089\u30BF\u30A4'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u30C8\u30EB\u3068\u30A2\u30C9\u30EC\u30B9\u3060\u3051\u3067\u306A\u304F\u3001\u8A2A\u554F'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-repaint-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-repaint-expected.png
deleted file mode 100644
index 91743eb..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-repaint-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-repaint-expected.txt
deleted file mode 100644
index fcdf5b5e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-repaint-expected.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [462, 23, 313, 556],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u305B\u3063\u304B\u304F\u898B\u3064\u3051\u305F\u3059\u3070\u3089\u3057\u3044\u8A18\u4E8B\u304C\u3069\u3053\u306B\u3042\u3063\u305F\u304B\u5FD8\u308C\u3066'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3057\u307E\u3063\u305F\u7D4C\u9A13\u306F\u3042\u308A\u307E\u3059\u304B\u306A\u3089\u30BF\u30A4\u30C8\u30EB\u3068\u30A2\u30C9\u30EC\u30B9\u3060\u3051\u3067'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u306A\u304F\u3001\u8A2A\u554F\u3057\u305F\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u304B\u3089\u3082\u691C\u7D22\u3059\u308B'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u305B\u3063\u304B\u304F\u898B\u3064\u3051\u305F\u3059\u3070\u3089\u3057\u3044\u8A18\u4E8B\u304C\u3069\u3053'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u306B\u3042\u3063\u305F\u304B\u5FD8\u308C\u3066\u3057\u307E\u3063\u305F\u7D4C\u9A13\u306F\u3042\u308A\u307E\u3059\u304B \u306A\u3089\u30BF\u30A4\u30C8\u30EB'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3068\u30A2\u30C9\u30EC\u30B9\u3060\u3051\u3067\u306A\u304F\u3001\u8A2A\u554F\u3057\u305F\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8\u306E\u30B3\u30F3\u30C6\u30F3'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u30C4\u304B\u3089\u3082\u691C\u7D22\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u8A2A\u554F\u3057\u305F\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u304B\u3089\u3082\u691C\u7D22\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u305B\u3063\u304B\u304F\u898B'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3064\u3051\u305F\u3059\u3070\u3089\u3057\u3044\u8A18\u4E8B\u304C\u3069\u3053\u306B\u3042\u3063\u305F\u304B\u5FD8\u308C\u3066\u3057\u307E\u3063\u305F\u7D4C'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u9A13\u306F\u3042\u308A\u307E\u3059\u304B \u306A\u3089\u30BF\u30A4\u30C8\u30EB\u3068\u30A2\u30C9\u30EC\u30B9\u3060\u3051\u3067\u306A\u304F\u3001\u8A2A\u554F'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/repaint-rect-for-vertical-writing-mode-with-positioned-root-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/repaint-rect-for-vertical-writing-mode-with-positioned-root-expected.png
deleted file mode 100644
index f0989c9..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/repaint-rect-for-vertical-writing-mode-with-positioned-root-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selected-replaced-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selected-replaced-expected.png
deleted file mode 100644
index b3d1df59..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selected-replaced-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-after-delete-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-after-delete-expected.png
deleted file mode 100644
index f42d68e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-after-delete-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-after-remove-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-after-remove-expected.png
deleted file mode 100644
index c794521..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-after-remove-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-after-remove-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-after-remove-expected.txt
deleted file mode 100644
index 74d9ea6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-after-remove-expected.txt
+++ /dev/null
@@ -1,393 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [39, 79, 154, 99],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [38, 78, 152, 102],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [70, 158, 41, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [74, 79, 37, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [39, 79, 35, 19],
-          "reason": "geometry"
-        }
-      ],
-      "underPaintInvalidations": [
-        {
-          "x": 194,
-          "y": 79,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 80,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 81,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 82,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 83,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 84,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 85,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 86,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 87,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 88,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 89,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 90,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 91,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 92,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 93,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 94,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 95,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 96,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 97,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 98,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 99,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 100,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 101,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 102,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 103,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 104,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 105,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 106,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 107,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 108,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 109,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 110,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 111,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 112,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 113,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 114,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 115,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 116,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 117,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 118,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 119,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 120,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 121,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 122,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 123,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 124,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 125,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 126,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 127,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 128,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutInline SPAN id='removeme'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hello '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'world'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-clear-after-move-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-clear-after-move-expected.png
deleted file mode 100644
index f1e32b2..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-clear-after-move-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png
deleted file mode 100644
index b50099b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
deleted file mode 100644
index a934828..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl INPUT id='target'",
-          "rect": [7, 7, 63, 24],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 11, 57, 16],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 11, 57, 16],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl INPUT id='target'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'test test test'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png
deleted file mode 100644
index 11b6e48..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
deleted file mode 100644
index a934828..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl INPUT id='target'",
-          "rect": [7, 7, 63, 24],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 11, 57, 16],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 11, 57, 16],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl INPUT id='target'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'test test test'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-rl-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-rl-expected.png
deleted file mode 100644
index 7d9d8c7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-rl-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-within-composited-scroller-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-within-composited-scroller-expected.png
deleted file mode 100644
index 88f02cb..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/selection-within-composited-scroller-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/text-selection-rect-in-overflow-2-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/text-selection-rect-in-overflow-2-expected.png
deleted file mode 100644
index aa2eb69..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/text-selection-rect-in-overflow-2-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/text-selection-rect-in-overflow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/text-selection-rect-in-overflow-expected.png
deleted file mode 100644
index e17ca35..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/selection/text-selection-rect-in-overflow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/shadow-multiple-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/shadow-multiple-expected.png
deleted file mode 100644
index 2f02cd9b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/shadow-multiple-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/stacked-diacritics-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/stacked-diacritics-expected.txt
deleted file mode 100644
index 74b6cb7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/stacked-diacritics-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='stacked'",
-          "rect": [19, 167, 200, 43],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [19, 166, 130, 43],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='stacked'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/subtree-root-skipped-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/subtree-root-skipped-expected.png
deleted file mode 100644
index d58ff92..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/subtree-root-skipped-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/subtree-root-skipped-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/subtree-root-skipped-expected.txt
deleted file mode 100644
index 1763cc5..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/subtree-root-skipped-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 11, 177, 16],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 11, 35, 16],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='div'",
-          "rect": [8, 288, 10, 20],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='div'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png
deleted file mode 100644
index 7e6d79f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animate-fill-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animate-fill-expected.txt
deleted file mode 100644
index ea2e28c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animate-fill-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [0, 0, 110, 110],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-expected.png
deleted file mode 100644
index e46b68ef..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-no-fixed-intrinsic-size-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-no-fixed-intrinsic-size-expected.png
deleted file mode 100644
index aa5455f1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-no-fixed-intrinsic-size-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-same-image-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-same-image-expected.png
deleted file mode 100644
index e46b68ef..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-same-image-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/append-text-node-to-tspan-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/append-text-node-to-tspan-expected.png
deleted file mode 100644
index 3400d97d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/append-text-node-to-tspan-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/circle-move-invalidation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/circle-move-invalidation-expected.png
deleted file mode 100644
index dd5a4398..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/circle-move-invalidation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/embedded-svg-size-changes-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/embedded-svg-size-changes-expected.png
deleted file mode 100644
index b9c0c2b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/embedded-svg-size-changes-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/ems-display-none-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/ems-display-none-expected.png
deleted file mode 100644
index 963af22..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/ems-display-none-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/ems-display-none-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/ems-display-none-expected.txt
deleted file mode 100644
index 3bfbc91..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/ems-display-none-expected.txt
+++ /dev/null
@@ -1,113 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 54, 571, 86],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [50, 54, 571, 86],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [50, 54, 571, 86],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [50, 54, 571, 86],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [50, 54, 571, 86],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan id='tspan'",
-          "rect": [50, 54, 571, 86],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='text'",
-          "rect": [50, 54, 571, 86],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='text'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan id='tspan'",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Two lines of text should be visible.'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Two lines of text should be visible.'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/exs-display-none-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/exs-display-none-expected.png
deleted file mode 100644
index feb5985..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/exs-display-none-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/exs-display-none-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/exs-display-none-expected.txt
deleted file mode 100644
index 5b29e77..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/exs-display-none-expected.txt
+++ /dev/null
@@ -1,113 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 52, 571, 84],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [50, 52, 571, 84],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [50, 52, 571, 84],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [50, 52, 571, 84],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [50, 52, 571, 84],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan id='tspan'",
-          "rect": [50, 52, 571, 84],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='text'",
-          "rect": [50, 52, 571, 84],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='text'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan id='tspan'",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Two lines of text should be visible.'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Two lines of text should be visible.'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/filter-refresh-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/filter-refresh-expected.txt
deleted file mode 100644
index bbe1a786..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/filter-refresh-expected.txt
+++ /dev/null
@@ -1,470 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [10, 170, 132, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [10, 130, 132, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRect rect id='separate2'",
-          "rect": [140, 140, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRect rect id='filtered'",
-          "rect": [140, 100, 36, 36],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [140, 60, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [90, 170, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [90, 130, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [90, 90, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [90, 90, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [90, 50, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [90, 50, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 170, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 130, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 90, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 90, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 50, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 50, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [10, 90, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [10, 50, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRect rect id='separate1'",
-          "rect": [140, 60, 30, 30],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 170, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 170, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 130, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 130, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 90, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 90, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 50, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 50, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 170, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 170, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 130, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 130, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 90, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 90, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 50, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 50, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 170, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 170, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 130, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 130, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 90, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 90, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 50, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 50, 30, 30],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='separate1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='filtered'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGRect rect id='separate2'",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/filter-repaint-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/filter-repaint-expected.png
deleted file mode 100644
index 9a05c5c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/filter-repaint-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/filter-width-update-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/filter-width-update-expected.png
deleted file mode 100644
index 72aeb33..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/filter-width-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/foreign-object-repaint-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/foreign-object-repaint-expected.png
deleted file mode 100644
index 17bdbb7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/foreign-object-repaint-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/foreignObject-crash-on-hover-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/foreignObject-crash-on-hover-expected.png
deleted file mode 100644
index 0d8b5d10..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/foreignObject-crash-on-hover-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/hit-test-unclosed-subpaths-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/hit-test-unclosed-subpaths-expected.png
deleted file mode 100644
index ed927aa..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/hit-test-unclosed-subpaths-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/hit-test-with-br-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/hit-test-with-br-expected.png
deleted file mode 100644
index 913572e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/hit-test-with-br-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/inner-svg-change-viewPort-relative-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/inner-svg-change-viewPort-relative-expected.png
deleted file mode 100644
index f6ade2c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/inner-svg-change-viewPort-relative-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.png
deleted file mode 100644
index 7668615..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-creation-expected.png
deleted file mode 100644
index 7668615..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-creation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.png
deleted file mode 100644
index 4d47317..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-creation-expected.png
deleted file mode 100644
index fcb4f4b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-creation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.png
deleted file mode 100644
index 89860359..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-creation-expected.png
deleted file mode 100644
index 3cc5823..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-creation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-update-bounce-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-update-bounce-expected.png
deleted file mode 100644
index 46d0f00..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-update-bounce-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-update-stop-linked-gradient-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-update-stop-linked-gradient-expected.png
deleted file mode 100644
index 5d26900..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-update-stop-linked-gradient-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/modify-text-node-in-tspan-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/modify-text-node-in-tspan-expected.png
deleted file mode 100644
index 3400d97d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/modify-text-node-in-tspan-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/nested-embedded-svg-size-changes-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/nested-embedded-svg-size-changes-expected.png
deleted file mode 100644
index 440ca39..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/nested-embedded-svg-size-changes-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.png
deleted file mode 100644
index 4f07c41..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.txt
deleted file mode 100644
index b0ef29e7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.txt
+++ /dev/null
@@ -1,120 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGPath polygon",
-          "rect": [168, 150, 164, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='poly'",
-          "rect": [168, 150, 164, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGPath polygon",
-          "rect": [441, 150, 163, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGPath polygon id='t3'",
-          "rect": [305, 150, 163, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGPath polygon",
-          "rect": [32, 150, 163, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='poly'",
-          "rect": [32, 150, 163, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGContainer use id='t2'",
-          "rect": [181, 163, 138, 137],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [454, 163, 137, 137],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg",
-          "rect": [318, 163, 137, 137],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer use id='t1'",
-          "rect": [45, 163, 137, 137],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer use id='t1'",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='poly'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGPath polygon",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGContainer use id='t2'",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='poly'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGPath polygon",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGPath polygon id='t3'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='poly2'",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGPath polygon",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-content-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-content-expected.png
deleted file mode 100644
index 093bad78..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-content-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-content-with-resources-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-content-with-resources-expected.png
deleted file mode 100644
index 85717f3..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-content-with-resources-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-deep-shadow-tree-content-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-deep-shadow-tree-content-expected.png
deleted file mode 100644
index abfe259..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-deep-shadow-tree-content-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-image-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-image-expected.png
deleted file mode 100644
index 77c9e3c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-image-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-inner-svg-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-inner-svg-expected.png
deleted file mode 100644
index eb0a7fe5..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-inner-svg-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-shadow-tree-content-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-shadow-tree-content-expected.png
deleted file mode 100644
index 1a8e5c4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-shadow-tree-content-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-shadow-tree-content-with-symbol-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-shadow-tree-content-with-symbol-expected.png
deleted file mode 100644
index e12ba40..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-shadow-tree-content-with-symbol-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-use-on-symbol-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-use-on-symbol-expected.png
deleted file mode 100644
index 8e91e0cd..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-use-on-symbol-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-use-without-attributes-on-symbol-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-use-without-attributes-on-symbol-expected.png
deleted file mode 100644
index eb0a7fe5..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/relative-sized-use-without-attributes-on-symbol-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/remove-text-node-from-tspan-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/remove-text-node-from-tspan-expected.png
deleted file mode 100644
index 278b00c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/remove-text-node-from-tspan-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/remove-tspan-from-text-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/remove-tspan-from-text-expected.png
deleted file mode 100644
index 8306e7b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/remove-tspan-from-text-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/repaint-paintorder-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/repaint-paintorder-expected.png
deleted file mode 100644
index 0651818..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/repaint-paintorder-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.png
deleted file mode 100644
index 7d4a51288..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt
deleted file mode 100644
index 3ec0ae0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt
+++ /dev/null
@@ -1,130 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1026, 996],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [24, 971, 737, 21],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [208, 972, 173, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [427, 972, 150, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline A",
-          "rect": [383, 971, 42, 21],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [384, 972, 40, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [423, 972, 5, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [380, 972, 5, 19],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -411, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'pservers-pattern-01-b \u2190'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline A",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'index'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u2192 script-handle-01-b'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/svg-background-partial-redraw-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/svg-background-partial-redraw-expected.png
deleted file mode 100644
index 8ed0be8..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/svg-background-partial-redraw-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/svg-image-change-content-size-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/svg-image-change-content-size-expected.png
deleted file mode 100644
index 9d58a03..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/svg-image-change-content-size-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/tabgroup-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/tabgroup-expected.png
deleted file mode 100644
index ff5e4e4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/tabgroup-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/tabgroup-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/tabgroup-expected.txt
deleted file mode 100644
index 335ce0c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/tabgroup-expected.txt
+++ /dev/null
@@ -1,2067 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='tabgroupRound'",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='tabgroupRectRound'",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='tabgroupRectTriangle'",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='tabgroupTriangle'",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='tabgroupTriangle__0_content'",
-          "rect": [15, 291, 211, 37],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [15, 291, 211, 37],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [15, 291, 211, 37],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [15, 291, 211, 37],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [15, 291, 211, 37],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [15, 291, 211, 37],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='contentTabGroupTriangle0'",
-          "rect": [15, 291, 211, 37],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='tabgroupRect'",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupTriangle__1'",
-          "rect": [60, 256, 69, 31],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectRound__0'",
-          "rect": [361, 277, 68, 68],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectTriangle__0'",
-          "rect": [506, 232, 68, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRound__0'",
-          "rect": [389, 37, 68, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectRound__1'",
-          "rect": [415, 331, 64, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectTriangle__1'",
-          "rect": [570, 232, 64, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRound__1'",
-          "rect": [453, 37, 64, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupTriangle__0'",
-          "rect": [6, 256, 59, 31],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupTriangle__2'",
-          "rect": [125, 256, 57, 31],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [66, 257, 57, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [66, 257, 57, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [66, 257, 57, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [66, 257, 57, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [66, 257, 57, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [511, 234, 57, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [511, 234, 57, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [511, 234, 57, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [394, 38, 57, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [394, 38, 57, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [394, 38, 57, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectRound__3'",
-          "rect": [505, 422, 56, 55],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectRound__2'",
-          "rect": [466, 382, 53, 53],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [575, 234, 53, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [575, 234, 53, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [575, 234, 53, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [458, 38, 53, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [458, 38, 53, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [458, 38, 53, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRound__3'",
-          "rect": [557, 37, 52, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [370, 285, 51, 51],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [370, 285, 51, 51],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [370, 285, 51, 51],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectTriangle__3'",
-          "rect": [675, 232, 51, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [423, 339, 49, 48],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [423, 339, 49, 48],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [423, 339, 49, 48],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectTriangle__2'",
-          "rect": [630, 232, 49, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [11, 257, 48, 29],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [11, 257, 48, 29],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [11, 257, 48, 29],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [11, 257, 48, 29],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [11, 257, 48, 29],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRound__2'",
-          "rect": [513, 37, 48, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [130, 257, 46, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [130, 257, 46, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [130, 257, 46, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [130, 257, 46, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [130, 257, 46, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupTriangle__3'",
-          "rect": [178, 256, 43, 31],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [680, 234, 41, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [680, 234, 41, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [680, 234, 41, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [563, 38, 41, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [563, 38, 41, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [563, 38, 41, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [514, 429, 40, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [514, 429, 40, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [514, 429, 40, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [474, 389, 38, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [474, 389, 38, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [474, 389, 38, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [635, 234, 38, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [635, 234, 38, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [635, 234, 38, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [518, 38, 38, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [518, 38, 38, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [518, 38, 38, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [183, 257, 32, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [183, 257, 32, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [183, 257, 32, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [183, 257, 32, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [183, 257, 32, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRect__0'",
-          "rect": [178, 6, 19, 68],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRect__1'",
-          "rect": [178, 70, 19, 64],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRect__3'",
-          "rect": [178, 175, 19, 51],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRect__2'",
-          "rect": [178, 130, 19, 49],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [180, 11, 16, 57],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [180, 11, 16, 57],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [180, 11, 16, 57],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [180, 75, 16, 53],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [180, 75, 16, 53],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [180, 75, 16, 53],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [180, 180, 16, 41],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [180, 180, 16, 41],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [180, 180, 16, 41],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [180, 135, 16, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [180, 135, 16, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [180, 135, 16, 38],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRect__1'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRect__1_content'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Geodata'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Browser'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Download'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Folder'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Your'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Account'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupTriangle__0'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGHiddenContainer g id='tabgroupTriangle__0_content'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Help'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox '& Info'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectTriangle__2'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectTriangle__2_content'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRound__1'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRound__1_content'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectRound__0'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectRound__0_content'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGHiddenContainer g id='oversizeContent'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupTriangle__0'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupTriangle__0_content'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRect__0'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Biography'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRect__0_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRect__2'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Events'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRect__2_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRect__3'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Portrait'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRect__3_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRect__1'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Relations'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRect__1_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupTriangle'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupTriangle__1'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Download'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Folder'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupTriangle__2'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Your'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Account'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupTriangle__3'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Help'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox '& Info'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupTriangle__0'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Geodata'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Browser'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupTriangle__0_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='contentTabGroupTriangle0'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'This is a tabgroup with triangular tab corners'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'and a double line tab. (use \"\\n\" as a line separator)'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Click on the second tab to see oversize content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectTriangle'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectTriangle__0'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Biography'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectTriangle__0_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectTriangle__1'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Relations'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectTriangle__1_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectTriangle__3'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Portrait'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectTriangle__3_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectTriangle__2'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Events'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectTriangle__2_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRound'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRound__0'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Biography'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRound__0_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRound__2'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Events'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRound__2_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRound__3'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Portrait'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRound__3_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRound__1'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Relations'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRound__1_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectRound'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectRound__1'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Relations'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectRound__1_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectRound__2'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Events'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectRound__2_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectRound__3'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Portrait'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectRound__3_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectRound__0'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Biography'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectRound__0_content'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-mask-update-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-mask-update-expected.png
deleted file mode 100644
index ac5b43f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-mask-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-mask-update-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-mask-update-expected.txt
deleted file mode 100644
index b28f9ad..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-mask-update-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 3, 45, 22],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 33, 43, 17],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-repaint-including-stroke-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-repaint-including-stroke-expected.png
deleted file mode 100644
index 02f7447..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-repaint-including-stroke-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-rescale-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-rescale-expected.png
deleted file mode 100644
index 1bd34b6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-rescale-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-rescale-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-rescale-expected.txt
deleted file mode 100644
index b9a2a37..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-rescale-expected.txt
+++ /dev/null
@@ -1,435 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='text2g'",
-          "rect": [0, 63, 401, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer g id='text1g'",
-          "rect": [0, 13, 401, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGContainer g id='text3g'",
-          "rect": [0, 113, 401, 87],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 114, 192, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 114, 192, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 114, 192, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [0, 114, 192, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 114, 192, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 14, 192, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 14, 192, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 14, 192, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [0, 14, 192, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 14, 192, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGForeignObject foreignObject",
-          "rect": [210, 13, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGForeignObject foreignObject",
-          "rect": [210, 113, 100, 87],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [210, 113, 100, 48],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [210, 13, 100, 48],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [310, 114, 91, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [310, 114, 91, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg",
-          "rect": [310, 114, 91, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [310, 14, 91, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [310, 14, 91, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg",
-          "rect": [310, 14, 91, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [210, 114, 91, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [210, 14, 91, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGContainer g id='text3g'",
-          "rect": [0, 3, 14, 4],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 3, 8, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 3, 8, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 3, 8, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [0, 3, 8, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 3, 8, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGContainer g id='text1g'",
-          "rect": [0, 0, 8, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 0, 8, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 0, 8, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 0, 8, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [0, 0, 8, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 0, 8, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [9, 3, 5, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [9, 3, 5, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg",
-          "rect": [9, 3, 5, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 0, 5, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 0, 5, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg",
-          "rect": [0, 0, 5, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGForeignObject foreignObject",
-          "rect": [6, 3, 4, 4],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [6, 3, 4, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [6, 3, 4, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [0, 0, 1, 1],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGForeignObject foreignObject",
-          "rect": [0, 0, 1, 1],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 0, 1, 1],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='text1g'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS '",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGForeignObject foreignObject",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGContainer g id='text2g'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGContainer g id='text3g'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS '",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGForeignObject foreignObject",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-selection-text-05-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-selection-text-05-t-expected.png
deleted file mode 100644
index aeebe176..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-selection-text-05-t-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-viewbox-rescale-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-viewbox-rescale-expected.png
deleted file mode 100644
index 2f167dd..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-viewbox-rescale-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-xy-updates-SVGList-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-xy-updates-SVGList-expected.png
deleted file mode 100644
index 259331a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-xy-updates-SVGList-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/tspan-dynamic-positioning-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/tspan-dynamic-positioning-expected.png
deleted file mode 100644
index f3008fbe..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/tspan-dynamic-positioning-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/use-clipped-hit-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/use-clipped-hit-expected.png
deleted file mode 100644
index f1552a9..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/use-clipped-hit-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/use-clipped-hit-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/use-clipped-hit-expected.txt
deleted file mode 100644
index a95095e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/use-clipped-hit-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [90, 115, 64, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGText text id='status'",
-          "rect": [90, 115, 64, 19],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [90, 115, 43, 19],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text id='status'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Passed'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/use-detach-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/use-detach-expected.png
deleted file mode 100644
index 3c3e491..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/use-detach-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/use-event-handler-on-use-element-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/use-event-handler-on-use-element-expected.png
deleted file mode 100644
index aa41b33..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/use-event-handler-on-use-element-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/window-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/window-expected.png
deleted file mode 100644
index 599be54..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/window-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/window-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/window-expected.txt
deleted file mode 100644
index ba1cc75..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/window-expected.txt
+++ /dev/null
@@ -1,2015 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='Windows'",
-          "rect": [38, 81, 760, 454],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer g id='Windows'",
-          "rect": [38, 92, 760, 443],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='bigWindow'",
-          "rect": [38, 143, 549, 392],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowMainGroupbigWindow'",
-          "rect": [38, 143, 549, 392],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [38, 143, 549, 392],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowTitlebarGroupbigWindow'",
-          "rect": [38, 143, 549, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='titleBarbigWindow'",
-          "rect": [38, 143, 549, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [38, 523, 549, 12],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='nestedWindow'",
-          "rect": [77, 182, 315, 236],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowMainGroupnestedWindow'",
-          "rect": [77, 182, 315, 236],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [77, 182, 315, 236],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowTitlebarGroupnestedWindow'",
-          "rect": [77, 182, 315, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='titleBarnestedWindow'",
-          "rect": [77, 182, 315, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [77, 406, 315, 12],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='navWindow'",
-          "rect": [613, 81, 185, 169],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer g id='decoGroupnavWindow'",
-          "rect": [613, 81, 185, 159],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowTitlebarGroupnavWindow'",
-          "rect": [613, 81, 185, 159],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect id='decoGroupMinimizednavWindow'",
-          "rect": [613, 81, 185, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='navWindow'",
-          "rect": [624, 92, 174, 158],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowMainGroupnavWindow'",
-          "rect": [624, 92, 174, 158],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [624, 92, 174, 158],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='colourPickerWindow'",
-          "rect": [77, 195, 174, 143],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowMainGroupcolourPickerWindow'",
-          "rect": [77, 195, 174, 143],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [77, 195, 174, 143],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowTitlebarGroupcolourPickerWindow'",
-          "rect": [77, 195, 174, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='titleBarcolourPickerWindow'",
-          "rect": [77, 195, 174, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [624, 238, 174, 12],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [77, 326, 174, 12],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='textNavWindow'",
-          "rect": [632, 101, 160, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='smallWindow'",
-          "rect": [312, 377, 158, 143],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowMainGroupsmallWindow'",
-          "rect": [312, 377, 158, 143],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [312, 377, 158, 143],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowTitlebarGroupsmallWindow'",
-          "rect": [312, 377, 158, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='titleBarsmallWindow'",
-          "rect": [312, 377, 158, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [312, 508, 158, 12],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='statusWindow'",
-          "rect": [249, 344, 143, 64],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowMainGroupstatusWindow'",
-          "rect": [249, 344, 143, 64],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [249, 344, 143, 64],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowTitlebarGroupstatusWindow'",
-          "rect": [249, 344, 143, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='titleBarstatusWindow'",
-          "rect": [249, 344, 143, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='textSmallWindow'",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [80, 326, 133, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [80, 326, 133, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [80, 182, 131, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [80, 182, 131, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [80, 406, 125, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [80, 406, 125, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [256, 364, 121, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [256, 364, 121, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [256, 364, 121, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [256, 364, 121, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [256, 364, 121, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [256, 364, 121, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='textStatusWindow'",
-          "rect": [256, 364, 121, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='minimalWindow'",
-          "rect": [39, 476, 119, 48],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowMainGroupminimalWindow'",
-          "rect": [39, 476, 119, 48],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [39, 476, 119, 48],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [42, 480, 115, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [42, 480, 115, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [42, 480, 115, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [42, 480, 115, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [42, 480, 115, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [42, 480, 115, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='textMinimalWindow'",
-          "rect": [42, 480, 115, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [41, 524, 101, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [41, 524, 101, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [314, 508, 90, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [314, 508, 90, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [252, 344, 73, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [252, 344, 73, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [314, 378, 68, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [314, 378, 68, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [80, 196, 67, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [80, 196, 67, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [41, 143, 57, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [41, 143, 57, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowTitlebarGroupnavWindow'",
-          "rect": [756, 94, 37, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [627, 238, 33, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [627, 238, 33, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [613, 81, 16, 159],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [615, 153, 13, 81],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [615, 153, 13, 81],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtonnavWindow'",
-          "rect": [769, 94, 11, 11],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtonnavWindow'",
-          "rect": [769, 94, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [769, 94, 11, 11],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [769, 94, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [769, 94, 11, 11],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [769, 94, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtonbigWindow'",
-          "rect": [558, 145, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [558, 145, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [558, 145, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='closeButtonnestedWindow'",
-          "rect": [376, 184, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [376, 184, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [376, 184, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='closeButton'",
-          "rect": [376, 184, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtonnestedWindow'",
-          "rect": [363, 184, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [363, 184, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [363, 184, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtonnavWindow'",
-          "rect": [756, 95, 11, 10],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtonnavWindow'",
-          "rect": [756, 95, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [756, 95, 11, 10],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [756, 95, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtonbigWindow'",
-          "rect": [545, 146, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [545, 146, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtonsmallWindow'",
-          "rect": [441, 380, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [441, 380, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [441, 380, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtonstatusWindow'",
-          "rect": [376, 346, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [376, 346, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [376, 346, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtonstatusWindow'",
-          "rect": [363, 346, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [363, 346, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtoncolourPickerWindow'",
-          "rect": [209, 198, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [209, 198, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [756, 103, 11, 2],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [756, 103, 11, 2],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [545, 154, 11, 2],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [209, 206, 11, 2],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [363, 355, 11, 1],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='closeButtonnavWindow'",
-          "rect": [783, 94, 10, 11],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer use id='closeButtonnavWindow'",
-          "rect": [783, 94, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [783, 94, 10, 11],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [783, 94, 10, 11],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [783, 94, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [783, 94, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='closeButton'",
-          "rect": [783, 94, 10, 11],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='closeButton'",
-          "rect": [783, 94, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='closeButtonbigWindow'",
-          "rect": [572, 145, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [572, 145, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [572, 145, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='closeButton'",
-          "rect": [572, 145, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtonnavWindow'",
-          "rect": [616, 100, 10, 10],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [616, 100, 10, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [616, 100, 10, 10],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer use id='closeButtonnavWindow'",
-          "rect": [616, 84, 10, 10],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [616, 84, 10, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [616, 84, 10, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [616, 84, 10, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='closeButton'",
-          "rect": [616, 84, 10, 10],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer use id='closeButtonsmallWindow'",
-          "rect": [455, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [455, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [455, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [455, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='closeButton'",
-          "rect": [455, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtonsmallWindow'",
-          "rect": [428, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [428, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [428, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtonnestedWindow'",
-          "rect": [350, 185, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [350, 185, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='closeButtoncolourPickerWindow'",
-          "rect": [236, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [236, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [236, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [236, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='closeButton'",
-          "rect": [236, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtoncolourPickerWindow'",
-          "rect": [223, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [223, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [223, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [783, 95, 10, 9],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [783, 95, 10, 9],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtonnavWindow'",
-          "rect": [616, 116, 10, 9],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [616, 116, 10, 9],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [616, 116, 10, 9],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [572, 146, 10, 9],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [350, 185, 10, 9],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [428, 388, 10, 2],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [350, 193, 10, 2],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [616, 124, 10, 1],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [364, 346, 9, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [210, 198, 9, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [757, 95, 9, 9],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [757, 95, 9, 9],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [546, 146, 9, 9],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [377, 185, 9, 9],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='Windows'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='navWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowMainGroupnavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='textNavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'This window should'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'contain navigation tools'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Click on button'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox ''Resize Navigation Window' for a'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'random resize of this Window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Note that this window also'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'features a window decoration'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Statusbar'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupnavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='closeButtonnavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='closeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='maximizeButtonnavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='minimizeButtonnavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='bigWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowMainGroupbigWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'This is a big movable window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='nestedWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowMainGroupnestedWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'This window contains other windows'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='colourPickerWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowMainGroupcolourPickerWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Changing a colour changes background'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupcolourPickerWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='titleBarcolourPickerWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Colour Picker'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='closeButtoncolourPickerWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='closeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='maximizeButtoncolourPickerWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='minimizeButtoncolourPickerWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='statusWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowMainGroupstatusWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='textStatusWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'This is a none-moveable'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'none-closeable status'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupstatusWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='titleBarstatusWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Status Window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='maximizeButtonstatusWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='minimizeButtonstatusWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupnestedWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='titleBarnestedWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Nested middlesize Window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='closeButtonnestedWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='closeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='maximizeButtonnestedWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='minimizeButtonnestedWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='smallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowMainGroupsmallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='textSmallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'This window has a callback'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'function indicating mouse'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'movements in the statusbar'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'and alerting window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'events'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Callback function is active'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupsmallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='titleBarsmallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Small Window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='closeButtonsmallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='closeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='maximizeButtonsmallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='minimizeButtonsmallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='minimalWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowMainGroupminimalWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='textMinimalWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'This is a minimal window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'without title and status bar.'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'it is also not moveable'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupminimalWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupbigWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='titleBarbigWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Big Window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='closeButtonbigWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='closeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='maximizeButtonbigWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='minimizeButtonbigWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='Windows'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer g id='navWindow'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupnavWindow'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer g id='decoGroupnavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='decoGroupMinimizednavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Navigation Window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='closeButtonnavWindow'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='closeButton'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer use id='maximizeButtonnavWindow'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer use id='minimizeButtonnavWindow'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupminimalWindow'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png
deleted file mode 100644
index e995cf8..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/zoom-foreignObject-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/zoom-foreignObject-expected.png
deleted file mode 100644
index a0e3f6b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/zoom-foreignObject-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/caret-contenteditable-content-after-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/caret-contenteditable-content-after-expected.png
deleted file mode 100644
index 87a6a23..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/caret-contenteditable-content-after-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/caret-contenteditable-content-after-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/caret-contenteditable-content-after-expected.txt
deleted file mode 100644
index 760a401..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/caret-contenteditable-content-after-expected.txt
+++ /dev/null
@@ -1,187 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='editor'",
-          "rect": [7, 47, 786, 22],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='editor'",
-          "rect": [7, 47, 786, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='editor'",
-          "rect": [7, 47, 786, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='editor'",
-          "rect": [7, 47, 786, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 48, 22, 19],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 48, 15, 19],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [30, 48, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [23, 48, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [23, 48, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [15, 48, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [15, 48, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [8, 48, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 48, 7, 19],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='editor'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='editor'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'a'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTextFragment (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='editor'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'ab'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutTextFragment (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='editor'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'abc'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutTextFragment (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-expected.png
deleted file mode 100644
index 90118ce..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-initial-empty-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-initial-empty-expected.png
deleted file mode 100644
index 90118ce..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-initial-empty-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-span-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-span-expected.png
deleted file mode 100644
index c58033a3..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-span-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-span-initial-empty-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-span-initial-empty-expected.png
deleted file mode 100644
index c58033a3..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-span-initial-empty-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-colgroup-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-colgroup-expected.png
deleted file mode 100644
index 90118ce..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-colgroup-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-colgroup-initial-empty-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-colgroup-initial-empty-expected.png
deleted file mode 100644
index 90118ce..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-colgroup-initial-empty-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-composited-row-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-composited-row-expected.png
deleted file mode 100644
index 80c9f0c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-composited-row-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-composited-row-initial-empty-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-composited-row-initial-empty-expected.png
deleted file mode 100644
index 80c9f0c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-composited-row-initial-empty-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-expected.png
deleted file mode 100644
index 80c9f0c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-initial-empty-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-initial-empty-expected.png
deleted file mode 100644
index 80c9f0c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-initial-empty-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-composited-row-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-composited-row-expected.png
deleted file mode 100644
index 49e8be91..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-composited-row-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-composited-row-initial-empty-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-composited-row-initial-empty-expected.png
deleted file mode 100644
index 49e8be91..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-composited-row-initial-empty-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-expected.png
deleted file mode 100644
index 5d6d0ec7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-initial-empty-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-initial-empty-expected.png
deleted file mode 100644
index 5d6d0ec7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-initial-empty-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-row-expected.png
deleted file mode 100644
index bdae7ed..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/composited-table-row-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/no-caret-repaint-in-non-content-editable-element-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/no-caret-repaint-in-non-content-editable-element-expected.png
deleted file mode 100644
index 163abf96..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/no-caret-repaint-in-non-content-editable-element-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.png
deleted file mode 100644
index 389f921..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/table-shrink-row-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/table-shrink-row-repaint-expected.txt
deleted file mode 100644
index dae10a58..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/table/table-shrink-row-repaint-expected.txt
+++ /dev/null
@@ -1,476 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 850],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 850, 785, 200],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutTableCell TD id='resizeMe'",
-          "rect": [8, 117, 769, 205],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 982, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 922, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 862, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 802, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 782, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 742, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 722, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 682, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 662, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 622, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 602, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 562, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 542, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 502, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 482, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 442, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 422, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 382, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 362, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 322, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 302, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 242, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 182, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 122, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 1002, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 942, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 822, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 802, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 742, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 622, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 882, 15, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 682, 15, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 762, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 702, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 642, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 582, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 562, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 522, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 502, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 462, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 442, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 402, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 382, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 342, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 322, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 262, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 202, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 142, 8, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutTableCell TD id='resizeMe'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '5'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '6'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '7'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '8'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '9'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '10'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '11'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '12'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '13'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-append-dirty-lines-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-append-dirty-lines-expected.txt
deleted file mode 100644
index 662d582e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-append-dirty-lines-expected.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 44, 756, 139],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse placerat. Morbi tristique. Mauris eu lacus sed felis'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'pellentesque cursus. Proin vitae nulla. Vivamus in ipsum. Etiam mi. Nam malesuada purus in sem. Sed eget elit vel erat'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'laoreet feugiat. Phasellus mollis pulvinar mi. Etiam ut neque sed eros egestas laoreet. Vestibulum ullamcorper, nulla non'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'feugiat molestie, mi lorem bibendum leo, ac gravida orci nunc nec nulla. Nunc nunc lorem, rhoncus et, rutrum ac,'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'fermentum ut, tortor. Sed rhoncus. Quisque enim metus, luctus tincidunt, vestibulum eu, vestibulum eu, libero. Mauris'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'sagittis aliquam nunc. Nullam pharetra molestie eros. Donec tempus purus ut ligula. Phasellus non nisl. Etiam eu mauris.'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Curabitur a velit.'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-match-document-change-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-match-document-change-expected.png
deleted file mode 100644
index 00b187c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-match-document-change-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-shadow-expected.png
deleted file mode 100644
index e450883..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-shadow-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-shadow-expected.txt
deleted file mode 100644
index 5ec8090a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-shadow-expected.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x562
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 172x19
-          text run at (0,0) width 172: "This is a regression test for "
-        LayoutInline {I} at (0,0) size 594x19
-          LayoutInline {A} at (0,0) size 347x19 [color=#0000EE]
-            LayoutText {#text} at (172,0) size 347x19
-              text run at (172,0) width 347: "http://bugzilla.opendarwin.org/show_bug.cgi?id=7301"
-          LayoutText {#text} at (519,0) size 247x19
-            text run at (519,0) width 4: " "
-            text run at (523,0) width 243: "Text shadow does not repaint correctly"
-        LayoutText {#text} at (766,0) size 4x19
-          text run at (766,0) width 4: "."
-      LayoutBlockFlow {DIV} at (30,68) size 724x21
-        LayoutInline {SPAN} at (0,0) size 202x20 [bgcolor=#C0C0C0]
-          LayoutText {#text} at (0,0) size 202x20
-            text run at (0,0) width 202: "Lorem ipsum dolor sit amet"
-        LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {DIV} at (30,119) size 724x21
-        LayoutInline {SPAN} at (0,0) size 202x20 [bgcolor=#C0C0C0]
-          LayoutText {#text} at (0,0) size 202x20
-            text run at (0,0) width 202: "Lorem ipsum dolor sit amet"
-        LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {DIV} at (30,170) size 724x21
-        LayoutText {#text} at (0,1) size 88x19
-          text run at (0,1) width 88: "Lorem ipsum "
-        LayoutInline {SPAN} at (0,0) size 100x20 [bgcolor=#C0C0C0]
-          LayoutText {#text} at (88,0) size 100x20
-            text run at (88,0) width 100: "dolor sit amet"
-        LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {DIV} at (30,221) size 724x21
-        LayoutInline {SPAN} at (0,0) size 97x20 [bgcolor=#C0C0C0]
-          LayoutText {#text} at (0,0) size 97x20
-            text run at (0,0) width 97: "Lorem ipsum"
-        LayoutText {#text} at (97,1) size 89x19
-          text run at (97,1) width 89: " dolor sit amet"
-layer at (8,44) size 784x2 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,36) size 784x2 [border: (1px inset #EEEEEE)]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-shadow-horizontal-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-shadow-horizontal-expected.png
deleted file mode 100644
index e450883..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-shadow-horizontal-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-shadow-horizontal-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-shadow-horizontal-expected.txt
deleted file mode 100644
index 5ec8090a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/text-shadow-horizontal-expected.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x562
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 172x19
-          text run at (0,0) width 172: "This is a regression test for "
-        LayoutInline {I} at (0,0) size 594x19
-          LayoutInline {A} at (0,0) size 347x19 [color=#0000EE]
-            LayoutText {#text} at (172,0) size 347x19
-              text run at (172,0) width 347: "http://bugzilla.opendarwin.org/show_bug.cgi?id=7301"
-          LayoutText {#text} at (519,0) size 247x19
-            text run at (519,0) width 4: " "
-            text run at (523,0) width 243: "Text shadow does not repaint correctly"
-        LayoutText {#text} at (766,0) size 4x19
-          text run at (766,0) width 4: "."
-      LayoutBlockFlow {DIV} at (30,68) size 724x21
-        LayoutInline {SPAN} at (0,0) size 202x20 [bgcolor=#C0C0C0]
-          LayoutText {#text} at (0,0) size 202x20
-            text run at (0,0) width 202: "Lorem ipsum dolor sit amet"
-        LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {DIV} at (30,119) size 724x21
-        LayoutInline {SPAN} at (0,0) size 202x20 [bgcolor=#C0C0C0]
-          LayoutText {#text} at (0,0) size 202x20
-            text run at (0,0) width 202: "Lorem ipsum dolor sit amet"
-        LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {DIV} at (30,170) size 724x21
-        LayoutText {#text} at (0,1) size 88x19
-          text run at (0,1) width 88: "Lorem ipsum "
-        LayoutInline {SPAN} at (0,0) size 100x20 [bgcolor=#C0C0C0]
-          LayoutText {#text} at (88,0) size 100x20
-            text run at (88,0) width 100: "dolor sit amet"
-        LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {DIV} at (30,221) size 724x21
-        LayoutInline {SPAN} at (0,0) size 97x20 [bgcolor=#C0C0C0]
-          LayoutText {#text} at (0,0) size 97x20
-            text run at (0,0) width 97: "Lorem ipsum"
-        LayoutText {#text} at (97,1) size 89x19
-          text run at (97,1) width 89: " dolor sit amet"
-layer at (8,44) size 784x2 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,36) size 784x2 [border: (1px inset #EEEEEE)]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/transform/caret-with-transformation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/transform/caret-with-transformation-expected.png
deleted file mode 100644
index 95027cb..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/transform/caret-with-transformation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/vertical-align1-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/vertical-align1-expected.txt
deleted file mode 100644
index 8a80204a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/vertical-align1-expected.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 800, 105],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [20, 0, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [120, 80, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [120, 34, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [0, 80, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [0, 34, 20, 20],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/vertical-align2-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/vertical-align2-expected.txt
deleted file mode 100644
index 12b09115..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/vertical-align2-expected.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 800, 246],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [300, 0, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [0, 0, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [200, 146, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [200, 100, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/video-paint-invalidation-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/video-paint-invalidation-expected.txt
deleted file mode 100644
index 5cc432a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/video-paint-invalidation-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutVideo VIDEO id='video'",
-      "position": [8, 8],
-      "bounds": [320, 240],
-      "drawsContent": false
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small test-mode phase-ready state-stopped'",
-      "position": [8, 8],
-      "bounds": [320, 240]
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutFlexibleBox DIV)",
-      "position": [8, 8],
-      "bounds": [320, 240]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutVideo VIDEO id='video'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt
deleted file mode 100644
index 5a9bf28..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt
+++ /dev/null
@@ -1,478 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 235],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [939, 235],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 939, 235],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 8, 923, 219],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 8, 920, 212],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [339, 0, 600, 500],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [505, 8, 426, 484],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [507, 8, 423, 482],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-339, 0, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AAAA'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'BBBB'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'CCCC'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'DDDD'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'EEEE'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'FFFF'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'GGGG'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'HHHH'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'IIII JJJJ'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'KKKK'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'LLLL'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'MMMM'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'NNNN'",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 235],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [939, 235],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [200, 0, 939, 235],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 939, 235],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [208, 8, 923, 219],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 8, 923, 219],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [210, 8, 920, 212],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 8, 920, 212],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-539, 0, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AAAA'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'BBBB'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'CCCC'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'DDDD'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'EEEE'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'FFFF'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'GGGG'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'HHHH'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'IIII JJJJ'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'KKKK'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'LLLL'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'MMMM'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'NNNN'",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [-539, 0, 939, 235],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [-531, 8, 923, 219],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [-529, 8, 920, 212],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 400, 600],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [37, 8, 355, 584],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [39, 8, 352, 562],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AAAA BBBB CCCC'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'DDDD EEEE FFFF'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'GGGG HHHH IIII JJJJ'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'KKKK LLLL MMMM'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'NNNN'",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [400, 0, 400, 600],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [437, 8, 355, 584],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [37, 8, 355, 584],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [439, 8, 352, 562],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [39, 8, 352, 562],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AAAA BBBB CCCC'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'DDDD EEEE FFFF'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'GGGG HHHH IIII JJJJ'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'KKKK LLLL MMMM'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'NNNN'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/active-suggestion-marker-basic-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/active-suggestion-marker-basic-expected.png
deleted file mode 100644
index 5ed8a860..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/active-suggestion-marker-basic-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/active-suggestion-marker-basic-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/active-suggestion-marker-basic-expected.txt
deleted file mode 100644
index eec715a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/active-suggestion-marker-basic-expected.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x260
-  LayoutBlockFlow {HTML} at (0,0) size 800x260
-    LayoutBlockFlow {BODY} at (8,8) size 784x0
-      LayoutBlockFlow (floating) {DIV} at (706,0) size 78x192
-        LayoutBlockFlow {P} at (0,16) size 78x20
-          LayoutText {#text} at (48,0) size 30x19
-            text run at (48,0) width 30: "RTL"
-        LayoutBlockFlow {DIV} at (0,52) size 78x20
-          LayoutText {#text} at (36,0) size 42x19
-            text run at (36,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,72) size 78x20
-          LayoutText {#text} at (36,0) size 42x19
-            text run at (36,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,92) size 78x20
-          LayoutText {#text} at (36,0) size 42x19
-            text run at (36,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,112) size 78x20
-          LayoutText {#text} at (36,0) size 42x19
-            text run at (36,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,132) size 78x20
-          LayoutText {#text} at (36,0) size 42x19
-            text run at (36,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,152) size 78x40
-          LayoutBlockFlow {DIV} at (0,0) size 78x20
-            LayoutText {#text} at (0,0) size 42x19
-              text run at (0,0) width 42: "abcdef"
-            LayoutInline {SPAN} at (0,0) size 36x19
-              LayoutText {#text} at (42,0) size 36x19
-                text run at (42,0) width 36: "ghijkl"
-          LayoutBlockFlow {DIV} at (0,20) size 78x20
-            LayoutText {#text} at (29,0) size 49x19
-              text run at (29,0) width 49: "mnopqr"
-      LayoutBlockFlow (floating) {DIV} at (0,0) size 78x252
-        LayoutBlockFlow {P} at (0,16) size 78x20
-          LayoutText {#text} at (0,0) size 30x19
-            text run at (0,0) width 30: "LTR"
-        LayoutBlockFlow {DIV} at (0,52) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,72) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,92) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,112) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,132) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,152) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,172) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,192) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,212) size 78x40
-          LayoutBlockFlow {DIV} at (0,0) size 78x20
-            LayoutText {#text} at (0,0) size 42x19
-              text run at (0,0) width 42: "abcdef"
-            LayoutInline {SPAN} at (0,0) size 36x19
-              LayoutText {#text} at (42,0) size 36x19
-                text run at (42,0) width 36: "ghijkl"
-          LayoutBlockFlow {DIV} at (0,20) size 78x20
-            LayoutText {#text} at (0,0) size 49x19
-              text run at (0,0) width 49: "mnopqr"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/active-suggestion-marker-split-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/active-suggestion-marker-split-expected.png
deleted file mode 100644
index e3b23c4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/active-suggestion-marker-split-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/composition-marker-basic-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/composition-marker-basic-expected.png
deleted file mode 100644
index 5ed8a860..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/composition-marker-basic-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/composition-marker-basic-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/composition-marker-basic-expected.txt
deleted file mode 100644
index eec715a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/composition-marker-basic-expected.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x260
-  LayoutBlockFlow {HTML} at (0,0) size 800x260
-    LayoutBlockFlow {BODY} at (8,8) size 784x0
-      LayoutBlockFlow (floating) {DIV} at (706,0) size 78x192
-        LayoutBlockFlow {P} at (0,16) size 78x20
-          LayoutText {#text} at (48,0) size 30x19
-            text run at (48,0) width 30: "RTL"
-        LayoutBlockFlow {DIV} at (0,52) size 78x20
-          LayoutText {#text} at (36,0) size 42x19
-            text run at (36,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,72) size 78x20
-          LayoutText {#text} at (36,0) size 42x19
-            text run at (36,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,92) size 78x20
-          LayoutText {#text} at (36,0) size 42x19
-            text run at (36,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,112) size 78x20
-          LayoutText {#text} at (36,0) size 42x19
-            text run at (36,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,132) size 78x20
-          LayoutText {#text} at (36,0) size 42x19
-            text run at (36,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,152) size 78x40
-          LayoutBlockFlow {DIV} at (0,0) size 78x20
-            LayoutText {#text} at (0,0) size 42x19
-              text run at (0,0) width 42: "abcdef"
-            LayoutInline {SPAN} at (0,0) size 36x19
-              LayoutText {#text} at (42,0) size 36x19
-                text run at (42,0) width 36: "ghijkl"
-          LayoutBlockFlow {DIV} at (0,20) size 78x20
-            LayoutText {#text} at (29,0) size 49x19
-              text run at (29,0) width 49: "mnopqr"
-      LayoutBlockFlow (floating) {DIV} at (0,0) size 78x252
-        LayoutBlockFlow {P} at (0,16) size 78x20
-          LayoutText {#text} at (0,0) size 30x19
-            text run at (0,0) width 30: "LTR"
-        LayoutBlockFlow {DIV} at (0,52) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,72) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,92) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,112) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,132) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,152) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,172) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,192) size 78x20
-          LayoutText {#text} at (0,0) size 42x19
-            text run at (0,0) width 42: "abcdef"
-        LayoutBlockFlow {DIV} at (0,212) size 78x40
-          LayoutBlockFlow {DIV} at (0,0) size 78x20
-            LayoutText {#text} at (0,0) size 42x19
-              text run at (0,0) width 42: "abcdef"
-            LayoutInline {SPAN} at (0,0) size 36x19
-              LayoutText {#text} at (42,0) size 36x19
-                text run at (42,0) width 36: "ghijkl"
-          LayoutBlockFlow {DIV} at (0,20) size 78x20
-            LayoutText {#text} at (0,0) size 49x19
-              text run at (0,0) width 49: "mnopqr"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/composition-marker-split-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/composition-marker-split-expected.png
deleted file mode 100644
index e3b23c4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/composition-marker-split-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-expected.png
deleted file mode 100644
index 51aec6c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-125-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-125-expected.png
deleted file mode 100644
index 540058b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-125-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-150-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-150-expected.png
deleted file mode 100644
index a10b14f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-150-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-175-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-175-expected.png
deleted file mode 100644
index d84ba1e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-175-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-200-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-200-expected.png
deleted file mode 100644
index be8d0cf1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-200-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-250-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-250-expected.png
deleted file mode 100644
index 66dc4c8d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-250-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.png
deleted file mode 100644
index e4463b1..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.txt
deleted file mode 100644
index 4222c9ce..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-ltr-text-in-ltr-flow-with-markers-expected.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x196
-  LayoutBlockFlow {HTML} at (0,0) size 800x196
-    LayoutBlockFlow {BODY} at (8,8) size 784x180
-layer at (8,8) size 100x20 scrollWidth 133
-  LayoutBlockFlow {DIV} at (0,0) size 100x20
-    LayoutText {#text} at (0,0) size 133x19
-      text run at (0,0) width 133: "markAllComposition"
-layer at (8,28) size 100x20 scrollWidth 142
-  LayoutBlockFlow {DIV} at (0,20) size 100x20
-    LayoutText {#text} at (0,0) size 142x19
-      text run at (0,0) width 142: "markStartComposition"
-layer at (8,48) size 100x20 scrollWidth 139
-  LayoutBlockFlow {DIV} at (0,40) size 100x20
-    LayoutText {#text} at (0,0) size 139x19
-      text run at (0,0) width 139: "markEndComposition"
-layer at (8,68) size 100x20 scrollWidth 104
-  LayoutBlockFlow {DIV} at (0,60) size 100x20
-    LayoutText {#text} at (0,0) size 104x19
-      text run at (0,0) width 104: "markAllSpelling"
-layer at (8,88) size 100x20 scrollWidth 113
-  LayoutBlockFlow {DIV} at (0,80) size 100x20
-    LayoutText {#text} at (0,0) size 113x19
-      text run at (0,0) width 113: "markStartSpelling"
-layer at (8,108) size 100x20 scrollWidth 110
-  LayoutBlockFlow {DIV} at (0,100) size 100x20
-    LayoutText {#text} at (0,0) size 110x19
-      text run at (0,0) width 110: "markEndSpelling"
-layer at (8,128) size 100x20 scrollWidth 120
-  LayoutBlockFlow {DIV} at (0,120) size 100x20
-    LayoutText {#text} at (0,0) size 120x19
-      text run at (0,0) width 120: "markAllTextMatch"
-layer at (8,148) size 100x20 scrollWidth 129
-  LayoutBlockFlow {DIV} at (0,140) size 100x20
-    LayoutText {#text} at (0,0) size 129x19
-      text run at (0,0) width 129: "markStartTextMatch"
-layer at (8,168) size 100x20 scrollWidth 126
-  LayoutBlockFlow {DIV} at (0,160) size 100x20
-    LayoutText {#text} at (0,0) size 126x19
-      text run at (0,0) width 126: "markEndTextMatch"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png
deleted file mode 100644
index cd9a820..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-ltr-text-in-rtl-flow-with-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-mixed-text-in-ltr-flow-with-markers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-mixed-text-in-ltr-flow-with-markers-expected.png
deleted file mode 100644
index 940baec6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-mixed-text-in-ltr-flow-with-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-mixed-text-in-ltr-flow-with-markers-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-mixed-text-in-ltr-flow-with-markers-expected.txt
deleted file mode 100644
index 6af9e91..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-mixed-text-in-ltr-flow-with-markers-expected.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x256
-  LayoutBlockFlow {HTML} at (0,0) size 800x256
-    LayoutBlockFlow {BODY} at (8,8) size 784x240
-layer at (8,8) size 100x20 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,0) size 100x20
-    LayoutText {#text} at (0,0) size 134x19
-      text run at (0,0) width 35: "Hello"
-      text run at (35,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (67,0) width 35: "Hello"
-      text run at (102,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-layer at (8,28) size 100x20 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,20) size 100x20
-    LayoutText {#text} at (0,0) size 134x19
-      text run at (0,0) width 35: "Hello"
-      text run at (35,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (67,0) width 35: "Hello"
-      text run at (102,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-layer at (8,48) size 100x20 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,40) size 100x20
-    LayoutText {#text} at (0,0) size 134x19
-      text run at (0,0) width 35: "Hello"
-      text run at (35,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (67,0) width 35: "Hello"
-      text run at (102,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-layer at (8,68) size 100x20 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,60) size 100x20
-    LayoutText {#text} at (0,0) size 134x19
-      text run at (0,0) width 35: "Hello"
-      text run at (35,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (67,0) width 35: "Hello"
-      text run at (102,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-layer at (8,88) size 100x20 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,80) size 100x20
-    LayoutText {#text} at (0,0) size 134x19
-      text run at (0,0) width 35: "Hello"
-      text run at (35,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (67,0) width 35: "Hello"
-      text run at (102,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-layer at (8,108) size 100x20 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,100) size 100x20
-    LayoutText {#text} at (0,0) size 134x19
-      text run at (0,0) width 35: "Hello"
-      text run at (35,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (67,0) width 35: "Hello"
-      text run at (102,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-layer at (8,128) size 100x20 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,120) size 100x20
-    LayoutText {#text} at (0,0) size 134x19
-      text run at (0,0) width 35: "Hello"
-      text run at (35,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (67,0) width 35: "Hello"
-      text run at (102,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-layer at (8,148) size 100x20 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,140) size 100x20
-    LayoutText {#text} at (0,0) size 134x19
-      text run at (0,0) width 35: "Hello"
-      text run at (35,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (67,0) width 35: "Hello"
-      text run at (102,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-layer at (8,168) size 100x20 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,160) size 100x20
-    LayoutText {#text} at (0,0) size 134x19
-      text run at (0,0) width 35: "Hello"
-      text run at (35,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (67,0) width 35: "Hello"
-      text run at (102,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-layer at (8,188) size 100x20 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,180) size 100x20
-    LayoutText {#text} at (0,0) size 134x19
-      text run at (0,0) width 35: "Hello"
-      text run at (35,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (67,0) width 35: "Hello"
-      text run at (102,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-layer at (8,208) size 100x20 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,200) size 100x20
-    LayoutText {#text} at (0,0) size 134x19
-      text run at (0,0) width 35: "Hello"
-      text run at (35,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (67,0) width 35: "Hello"
-      text run at (102,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-layer at (8,228) size 100x20 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,220) size 100x20
-    LayoutText {#text} at (0,0) size 134x19
-      text run at (0,0) width 35: "Hello"
-      text run at (35,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (67,0) width 35: "Hello"
-      text run at (102,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-mixed-text-in-rtl-flow-with-markers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-mixed-text-in-rtl-flow-with-markers-expected.png
deleted file mode 100644
index abceddd5..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-mixed-text-in-rtl-flow-with-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-mixed-text-in-rtl-flow-with-markers-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-mixed-text-in-rtl-flow-with-markers-expected.txt
deleted file mode 100644
index 9d776d5..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-mixed-text-in-rtl-flow-with-markers-expected.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x256
-  LayoutBlockFlow {HTML} at (0,0) size 800x256
-    LayoutBlockFlow {BODY} at (8,8) size 784x240
-layer at (8,8) size 100x20 scrollX 34.00 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,0) size 100x20
-    LayoutText {#text} at (-34,0) size 134x19
-      text run at (-34,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (-2,0) width 35: "Hello"
-      text run at (33,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (65,0) width 35: "Hello"
-layer at (8,28) size 100x20 scrollX 34.00 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,20) size 100x20
-    LayoutText {#text} at (-34,0) size 134x19
-      text run at (-34,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (-2,0) width 35: "Hello"
-      text run at (33,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (65,0) width 35: "Hello"
-layer at (8,48) size 100x20 scrollX 34.00 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,40) size 100x20
-    LayoutText {#text} at (-34,0) size 134x19
-      text run at (-34,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (-2,0) width 35: "Hello"
-      text run at (33,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (65,0) width 35: "Hello"
-layer at (8,68) size 100x20 scrollX 34.00 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,60) size 100x20
-    LayoutText {#text} at (-34,0) size 134x19
-      text run at (-34,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (-2,0) width 35: "Hello"
-      text run at (33,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (65,0) width 35: "Hello"
-layer at (8,88) size 100x20 scrollX 34.00 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,80) size 100x20
-    LayoutText {#text} at (-34,0) size 134x19
-      text run at (-34,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (-2,0) width 35: "Hello"
-      text run at (33,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (65,0) width 35: "Hello"
-layer at (8,108) size 100x20 scrollX 34.00 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,100) size 100x20
-    LayoutText {#text} at (-34,0) size 134x19
-      text run at (-34,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (-2,0) width 35: "Hello"
-      text run at (33,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (65,0) width 35: "Hello"
-layer at (8,128) size 100x20 scrollX 34.00 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,120) size 100x20
-    LayoutText {#text} at (-34,0) size 134x19
-      text run at (-34,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (-2,0) width 35: "Hello"
-      text run at (33,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (65,0) width 35: "Hello"
-layer at (8,148) size 100x20 scrollX 34.00 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,140) size 100x20
-    LayoutText {#text} at (-34,0) size 134x19
-      text run at (-34,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (-2,0) width 35: "Hello"
-      text run at (33,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (65,0) width 35: "Hello"
-layer at (8,168) size 100x20 scrollX 34.00 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,160) size 100x20
-    LayoutText {#text} at (-34,0) size 134x19
-      text run at (-34,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (-2,0) width 35: "Hello"
-      text run at (33,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (65,0) width 35: "Hello"
-layer at (8,188) size 100x20 scrollX 34.00 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,180) size 100x20
-    LayoutText {#text} at (-34,0) size 134x19
-      text run at (-34,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (-2,0) width 35: "Hello"
-      text run at (33,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (65,0) width 35: "Hello"
-layer at (8,208) size 100x20 scrollX 34.00 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,200) size 100x20
-    LayoutText {#text} at (-34,0) size 134x19
-      text run at (-34,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (-2,0) width 35: "Hello"
-      text run at (33,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (65,0) width 35: "Hello"
-layer at (8,228) size 100x20 scrollX 34.00 scrollWidth 134
-  LayoutBlockFlow {DIV} at (0,220) size 100x20
-    LayoutText {#text} at (-34,0) size 134x19
-      text run at (-34,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (-2,0) width 35: "Hello"
-      text run at (33,0) width 32 RTL: "\x{5E9}\x{5DC}\x{5D5}\x{5DD}"
-      text run at (65,0) width 35: "Hello"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png
deleted file mode 100644
index f8d109ca..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.txt
deleted file mode 100644
index b774771..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-rtl-text-in-ltr-flow-with-markers-expected.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x196
-  LayoutBlockFlow {HTML} at (0,0) size 800x196
-    LayoutBlockFlow {BODY} at (8,8) size 784x180
-layer at (8,8) size 100x20 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,0) size 100x20
-    LayoutText {#text} at (0,0) size 201x19
-      text run at (0,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,28) size 100x20 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,20) size 100x20
-    LayoutText {#text} at (0,0) size 201x19
-      text run at (0,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,48) size 100x20 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,40) size 100x20
-    LayoutText {#text} at (0,0) size 201x19
-      text run at (0,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,68) size 100x20 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,60) size 100x20
-    LayoutText {#text} at (0,0) size 201x19
-      text run at (0,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,88) size 100x20 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,80) size 100x20
-    LayoutText {#text} at (0,0) size 201x19
-      text run at (0,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,108) size 100x20 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,100) size 100x20
-    LayoutText {#text} at (0,0) size 201x19
-      text run at (0,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,128) size 100x20 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,120) size 100x20
-    LayoutText {#text} at (0,0) size 201x19
-      text run at (0,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,148) size 100x20 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,140) size 100x20
-    LayoutText {#text} at (0,0) size 201x19
-      text run at (0,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,168) size 100x20 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,160) size 100x20
-    LayoutText {#text} at (0,0) size 201x19
-      text run at (0,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png
deleted file mode 100644
index 5dd4841b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.txt
deleted file mode 100644
index 6a76b38..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/ellipsis-rtl-text-in-rtl-flow-with-markers-expected.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x196
-  LayoutBlockFlow {HTML} at (0,0) size 800x196
-    LayoutBlockFlow {BODY} at (8,8) size 784x180
-layer at (8,8) size 100x20 scrollX 101.00 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,0) size 100x20
-    LayoutText {#text} at (-101,0) size 201x19
-      text run at (-101,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,28) size 100x20 scrollX 101.00 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,20) size 100x20
-    LayoutText {#text} at (-101,0) size 201x19
-      text run at (-101,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,48) size 100x20 scrollX 101.00 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,40) size 100x20
-    LayoutText {#text} at (-101,0) size 201x19
-      text run at (-101,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,68) size 100x20 scrollX 101.00 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,60) size 100x20
-    LayoutText {#text} at (-101,0) size 201x19
-      text run at (-101,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,88) size 100x20 scrollX 101.00 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,80) size 100x20
-    LayoutText {#text} at (-101,0) size 201x19
-      text run at (-101,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,108) size 100x20 scrollX 101.00 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,100) size 100x20
-    LayoutText {#text} at (-101,0) size 201x19
-      text run at (-101,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,128) size 100x20 scrollX 101.00 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,120) size 100x20
-    LayoutText {#text} at (-101,0) size 201x19
-      text run at (-101,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,148) size 100x20 scrollX 101.00 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,140) size 100x20
-    LayoutText {#text} at (-101,0) size 201x19
-      text run at (-101,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
-layer at (8,168) size 100x20 scrollX 101.00 scrollWidth 201
-  LayoutBlockFlow {DIV} at (0,160) size 100x20
-    LayoutText {#text} at (-101,0) size 201x19
-      text run at (-101,0) width 201 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DB}\x{5DA}\x{5DC}\x{5DE}\x{5DD}\x{5E1}\x{5E2}\x{5E4}\x{5E3}\x{5E6}\x{5E5}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/first-letter-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/first-letter-expected.png
deleted file mode 100644
index 42254a77..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/first-letter-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/grammar-markers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/grammar-markers-expected.png
deleted file mode 100644
index d841567..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/grammar-markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/grammar-markers-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/grammar-markers-expected.txt
deleted file mode 100644
index bb6d633..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/grammar-markers-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x36
-  LayoutBlockFlow {HTML} at (0,0) size 800x36
-    LayoutBlockFlow {BODY} at (8,8) size 784x20
-      LayoutBlockFlow {DIV} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 111x19
-          text run at (0,0) width 111: "You has the right."
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/grammar-markers-hidpi-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/grammar-markers-hidpi-expected.png
deleted file mode 100644
index ca8b5c8..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/grammar-markers-hidpi-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/grammar-markers-hidpi-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/grammar-markers-hidpi-expected.txt
deleted file mode 100644
index d062c77..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/grammar-markers-hidpi-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-layer at (0,0) size 1600x1200
-  LayoutView at (0,0) size 1600x1200
-layer at (0,0) size 1600x69
-  LayoutBlockFlow {HTML} at (0,0) size 1600x69
-    LayoutBlockFlow {BODY} at (16,16) size 1568x37
-      LayoutBlockFlow {DIV} at (0,0) size 1568x37
-        LayoutText {#text} at (0,0) size 226x36
-          text run at (0,0) width 226: "You has the right."
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline-spelling-markers-hidpi-composited-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
deleted file mode 100644
index 2dec7baf..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline-spelling-markers-hidpi-composited-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline-spelling-markers-hidpi-composited-expected.txt
deleted file mode 100644
index d594f168..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline-spelling-markers-hidpi-composited-expected.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-layer at (0,0) size 1600x1200
-  LayoutView at (0,0) size 1600x1200
-layer at (0,0) size 1600x356
-  LayoutBlockFlow {HTML} at (0,0) size 1600x356
-    LayoutBlockFlow {BODY} at (16,16) size 1568x324
-      LayoutBlockFlow (anonymous) at (0,0) size 1568x37
-        LayoutText {#text} at (0,0) size 58x36
-          text run at (0,0) width 58: "LTR"
-      LayoutBlockFlow (anonymous) at (0,81) size 1568x37
-        LayoutText {#text} at (0,0) size 59x36
-          text run at (0,0) width 59: "RTL"
-      LayoutBlockFlow (anonymous) at (0,162) size 1568x37
-        LayoutText {#text} at (0,0) size 367x36
-          text run at (0,0) width 367: "LTR (text-overflow:ellipses)"
-      LayoutBlockFlow (anonymous) at (0,243) size 1568x37
-        LayoutText {#text} at (0,0) size 368x36
-          text run at (0,0) width 368: "RTL (text-overflow:ellipses)"
-layer at (16,53) size 404x44 clip at (18,55) size 400x40 scrollWidth 452
-  LayoutBlockFlow {DIV} at (0,37) size 404x44 [border: (2px solid #000000)]
-    LayoutText {#text} at (2,2) size 451x36
-      text run at (2,2) width 451: "the the adlj adaasj sdklj. there there"
-layer at (16,134) size 404x44 clip at (18,136) size 400x40 scrollX 51.00 scrollWidth 451
-  LayoutBlockFlow {DIV} at (0,118) size 404x44 [border: (2px solid #000000)]
-    LayoutText {#text} at (-49,2) size 451x36
-      text run at (-49,2) width 451 RTL override: "the the adlj adaasj sdklj. there there"
-layer at (16,215) size 404x44 clip at (18,217) size 400x40 scrollWidth 452
-  LayoutBlockFlow {DIV} at (0,199) size 404x44 [border: (2px solid #000000)]
-    LayoutText {#text} at (2,2) size 451x36
-      text run at (2,2) width 451: "the the adlj adaasj sdklj. there there"
-layer at (16,296) size 404x44 clip at (18,298) size 400x40 scrollX 51.00 scrollWidth 451
-  LayoutBlockFlow {DIV} at (0,280) size 404x44 [border: (2px solid #000000)]
-    LayoutText {#text} at (-49,2) size 451x36
-      text run at (-49,2) width 451 RTL override: "the the adlj adaasj sdklj. there there"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline-spelling-markers-hidpi-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline-spelling-markers-hidpi-expected.png
deleted file mode 100644
index c5c7ab09..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline-spelling-markers-hidpi-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline-spelling-markers-hidpi-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline-spelling-markers-hidpi-expected.txt
deleted file mode 100644
index d594f168..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline-spelling-markers-hidpi-expected.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-layer at (0,0) size 1600x1200
-  LayoutView at (0,0) size 1600x1200
-layer at (0,0) size 1600x356
-  LayoutBlockFlow {HTML} at (0,0) size 1600x356
-    LayoutBlockFlow {BODY} at (16,16) size 1568x324
-      LayoutBlockFlow (anonymous) at (0,0) size 1568x37
-        LayoutText {#text} at (0,0) size 58x36
-          text run at (0,0) width 58: "LTR"
-      LayoutBlockFlow (anonymous) at (0,81) size 1568x37
-        LayoutText {#text} at (0,0) size 59x36
-          text run at (0,0) width 59: "RTL"
-      LayoutBlockFlow (anonymous) at (0,162) size 1568x37
-        LayoutText {#text} at (0,0) size 367x36
-          text run at (0,0) width 367: "LTR (text-overflow:ellipses)"
-      LayoutBlockFlow (anonymous) at (0,243) size 1568x37
-        LayoutText {#text} at (0,0) size 368x36
-          text run at (0,0) width 368: "RTL (text-overflow:ellipses)"
-layer at (16,53) size 404x44 clip at (18,55) size 400x40 scrollWidth 452
-  LayoutBlockFlow {DIV} at (0,37) size 404x44 [border: (2px solid #000000)]
-    LayoutText {#text} at (2,2) size 451x36
-      text run at (2,2) width 451: "the the adlj adaasj sdklj. there there"
-layer at (16,134) size 404x44 clip at (18,136) size 400x40 scrollX 51.00 scrollWidth 451
-  LayoutBlockFlow {DIV} at (0,118) size 404x44 [border: (2px solid #000000)]
-    LayoutText {#text} at (-49,2) size 451x36
-      text run at (-49,2) width 451 RTL override: "the the adlj adaasj sdklj. there there"
-layer at (16,215) size 404x44 clip at (18,217) size 400x40 scrollWidth 452
-  LayoutBlockFlow {DIV} at (0,199) size 404x44 [border: (2px solid #000000)]
-    LayoutText {#text} at (2,2) size 451x36
-      text run at (2,2) width 451: "the the adlj adaasj sdklj. there there"
-layer at (16,296) size 404x44 clip at (18,298) size 400x40 scrollX 51.00 scrollWidth 451
-  LayoutBlockFlow {DIV} at (0,280) size 404x44 [border: (2px solid #000000)]
-    LayoutText {#text} at (-49,2) size 451x36
-      text run at (-49,2) width 451 RTL override: "the the adlj adaasj sdklj. there there"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline_spelling_markers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline_spelling_markers-expected.png
deleted file mode 100644
index 40ecfa5..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline_spelling_markers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline_spelling_markers-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline_spelling_markers-expected.txt
deleted file mode 100644
index 58791be..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/inline_spelling_markers-expected.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x184
-  LayoutBlockFlow {HTML} at (0,0) size 800x184
-    LayoutBlockFlow {BODY} at (8,8) size 784x168
-      LayoutBlockFlow (anonymous) at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 30x19
-          text run at (0,0) width 30: "LTR"
-      LayoutBlockFlow (anonymous) at (0,42) size 784x20
-        LayoutText {#text} at (0,0) size 30x19
-          text run at (0,0) width 30: "RTL"
-      LayoutBlockFlow (anonymous) at (0,84) size 784x20
-        LayoutText {#text} at (0,0) size 183x19
-          text run at (0,0) width 183: "LTR (text-overflow:ellipses):"
-      LayoutBlockFlow (anonymous) at (0,126) size 784x20
-        LayoutText {#text} at (0,0) size 183x19
-          text run at (0,0) width 183: "RTL (text-overflow:ellipses):"
-layer at (8,28) size 202x22 clip at (9,29) size 200x20 scrollWidth 221
-  LayoutBlockFlow {DIV} at (0,20) size 202x22 [border: (1px solid #000000)]
-    LayoutText {#text} at (1,1) size 220x19
-      text run at (1,1) width 220: "the the adlj adaasj sdklj. there there"
-layer at (8,70) size 202x22 clip at (9,71) size 200x20 scrollX 20.00 scrollWidth 220
-  LayoutBlockFlow {DIV} at (0,62) size 202x22 [border: (1px solid #000000)]
-    LayoutText {#text} at (-19,1) size 220x19
-      text run at (-19,1) width 220 RTL override: "the the adlj adaasj sdklj. there there"
-layer at (8,112) size 202x22 clip at (9,113) size 200x20 scrollWidth 221
-  LayoutBlockFlow {DIV} at (0,104) size 202x22 [border: (1px solid #000000)]
-    LayoutText {#text} at (1,1) size 220x19
-      text run at (1,1) width 220: "the the adlj adaasj sdklj. there there"
-layer at (8,154) size 202x22 clip at (9,155) size 200x20 scrollX 20.00 scrollWidth 220
-  LayoutBlockFlow {DIV} at (0,146) size 202x22 [border: (1px solid #000000)]
-    LayoutText {#text} at (-19,1) size 220x19
-      text run at (-19,1) width 220 RTL override: "the the adlj adaasj sdklj. there there"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/marker-early-break-bug-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/marker-early-break-bug-expected.png
deleted file mode 100644
index 8e3e861..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/marker-early-break-bug-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/suggestion-marker-basic-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/suggestion-marker-basic-expected.png
deleted file mode 100644
index bfc3a5f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/suggestion-marker-basic-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/suggestion-marker-basic-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/suggestion-marker-basic-expected.txt
deleted file mode 100644
index b7f8efe..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/suggestion-marker-basic-expected.txt
+++ /dev/null
@@ -1,102 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x460
-  LayoutBlockFlow {HTML} at (0,0) size 800x460
-    LayoutBlockFlow {BODY} at (8,8) size 784x0
-      LayoutBlockFlow (floating) {DIV} at (586,0) size 198x192
-        LayoutBlockFlow {P} at (0,16) size 198x20
-          LayoutText {#text} at (168,0) size 30x19
-            text run at (168,0) width 30: "RTL"
-        LayoutBlockFlow {DIV} at (0,52) size 198x20
-          LayoutText {#text} at (127,0) size 71x19
-            text run at (127,0) width 71: "markRtlAll"
-        LayoutBlockFlow {DIV} at (0,72) size 198x20
-          LayoutText {#text} at (90,0) size 108x19
-            text run at (90,0) width 108: "markRtlAllThick"
-        LayoutBlockFlow {DIV} at (0,92) size 198x20
-          LayoutText {#text} at (81,0) size 117x19
-            text run at (81,0) width 117: "markRtlBeginning"
-        LayoutBlockFlow {DIV} at (0,112) size 198x20
-          LayoutText {#text} at (0,0) size 198x19
-            text run at (0,0) width 198: "markRtlAllExceptFirstAndLast"
-        LayoutBlockFlow {DIV} at (0,132) size 198x20
-          LayoutText {#text} at (121,0) size 77x19
-            text run at (121,0) width 77: "markRtlEnd"
-        LayoutBlockFlow {DIV} at (0,152) size 198x40
-          LayoutBlockFlow {DIV} at (0,0) size 198x20
-            LayoutText {#text} at (147,0) size 32x19
-              text run at (147,0) width 32: "mark"
-            LayoutInline {SPAN} at (0,0) size 19x19
-              LayoutText {#text} at (179,0) size 19x19
-                text run at (179,0) width 19: "Rtl"
-          LayoutBlockFlow {DIV} at (0,20) size 198x20
-            LayoutText {#text} at (113,0) size 85x19
-              text run at (113,0) width 85: "AcrossNodes"
-      LayoutBlockFlow (floating) {DIV} at (0,0) size 331x452
-        LayoutBlockFlow {P} at (0,16) size 331x20
-          LayoutText {#text} at (0,0) size 30x19
-            text run at (0,0) width 30: "LTR"
-        LayoutBlockFlow {DIV} at (0,52) size 331x20
-          LayoutText {#text} at (0,0) size 52x19
-            text run at (0,0) width 52: "markAll"
-        LayoutBlockFlow {DIV} at (0,72) size 331x20
-          LayoutText {#text} at (0,0) size 89x19
-            text run at (0,0) width 89: "markAllThick"
-        LayoutBlockFlow {DIV} at (0,92) size 331x20
-          LayoutText {#text} at (0,0) size 151x19
-            text run at (0,0) width 151: "markAllDifferentColors"
-        LayoutBlockFlow {DIV} at (0,112) size 331x20
-          LayoutText {#text} at (0,0) size 98x19
-            text run at (0,0) width 98: "markBeginning"
-        LayoutBlockFlow {DIV} at (0,132) size 331x20
-          LayoutText {#text} at (0,0) size 179x19
-            text run at (0,0) width 179: "markAllExceptFirstAndLast"
-        LayoutBlockFlow {DIV} at (0,152) size 331x20
-          LayoutText {#text} at (0,0) size 58x19
-            text run at (0,0) width 58: "markEnd"
-        LayoutBlockFlow {DIV} at (0,172) size 331x20
-          LayoutText {#text} at (0,0) size 114x19
-            text run at (0,0) width 114: "markNothingZero"
-        LayoutBlockFlow {DIV} at (0,192) size 331x20
-          LayoutText {#text} at (0,0) size 110x19
-            text run at (0,0) width 110: "markNothingEnd"
-        LayoutBlockFlow {DIV} at (0,212) size 331x40
-          LayoutBlockFlow {DIV} at (0,0) size 331x20
-            LayoutText {#text} at (0,0) size 32x19
-              text run at (0,0) width 32: "mark"
-            LayoutInline {SPAN} at (0,0) size 44x19
-              LayoutText {#text} at (32,0) size 44x19
-                text run at (32,0) width 44: "Across"
-          LayoutBlockFlow {DIV} at (0,20) size 331x20
-            LayoutText {#text} at (0,0) size 41x19
-              text run at (0,0) width 41: "Nodes"
-        LayoutBlockFlow {DIV} at (0,252) size 331x20
-          LayoutText {#text} at (0,0) size 245x19
-            text run at (0,0) width 245: "overridingSpellingMarkerAtBeginning"
-        LayoutBlockFlow {DIV} at (0,272) size 331x20
-          LayoutText {#text} at (0,0) size 205x19
-            text run at (0,0) width 205: "overridingSpellingMarkerAtEnd"
-        LayoutBlockFlow {DIV} at (0,292) size 331x20
-          LayoutText {#text} at (0,0) size 302x19
-            text run at (0,0) width 302: "overridingSpellingMarkerIntersectingBeginning"
-        LayoutBlockFlow {DIV} at (0,312) size 331x20
-          LayoutText {#text} at (0,0) size 262x19
-            text run at (0,0) width 262: "overridingSpellingMarkerIntersectingEnd"
-        LayoutBlockFlow {DIV} at (0,332) size 331x20
-          LayoutText {#text} at (0,0) size 253x19
-            text run at (0,0) width 253: "notOverridingSpellingMarkersTouching"
-        LayoutBlockFlow {DIV} at (0,352) size 331x20
-          LayoutText {#text} at (0,0) size 274x19
-            text run at (0,0) width 274: "overridingCompositionMarkerAtBeginning"
-        LayoutBlockFlow {DIV} at (0,372) size 331x20
-          LayoutText {#text} at (0,0) size 234x19
-            text run at (0,0) width 234: "overridingCompositionMarkerAtEnd"
-        LayoutBlockFlow {DIV} at (0,392) size 331x20
-          LayoutText {#text} at (0,0) size 331x19
-            text run at (0,0) width 331: "overridingCompositionMarkerIntersectingBeginning"
-        LayoutBlockFlow {DIV} at (0,412) size 331x20
-          LayoutText {#text} at (0,0) size 291x19
-            text run at (0,0) width 291: "overridingCompositionMarkerIntersectingEnd"
-        LayoutBlockFlow {DIV} at (0,432) size 331x20
-          LayoutText {#text} at (0,0) size 282x19
-            text run at (0,0) width 282: "notOverridingCompositionMarkersTouching"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/suggestion-marker-split-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/suggestion-marker-split-expected.png
deleted file mode 100644
index e3b23c4..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/suggestion-marker-split-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/alpha-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/alpha-expected.png
deleted file mode 100644
index 919688d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/alpha-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/arc360-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/arc360-expected.png
deleted file mode 100644
index bcb1d5b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/arc360-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-arc-circumference-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-arc-circumference-expected.png
deleted file mode 100644
index 8a7fd70..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-arc-circumference-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-arc-circumference-fill-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-arc-circumference-fill-expected.png
deleted file mode 100644
index e3bf0d2..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-arc-circumference-fill-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-expected.png
deleted file mode 100644
index 6333921..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-fill-repaint-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-fill-repaint-expected.png
deleted file mode 100644
index 3808e354..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-fill-repaint-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-shadow-expected.png
deleted file mode 100644
index 3667e28..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-video-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-video-expected.png
deleted file mode 100644
index c84d109..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-video-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-video-shadow-expected.png
deleted file mode 100644
index 8a42b60..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-composite-video-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-drawImage-antiAlias-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-drawImage-antiAlias-expected.png
deleted file mode 100644
index 69f7f93..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-drawImage-antiAlias-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-drawtext-width-return-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-drawtext-width-return-expected.txt
deleted file mode 100644
index 172fcd0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-drawtext-width-return-expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-On success, two same text string with equal width will be rendered.
-
-TEST PASSED
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-ellipse-circumference-fill-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-ellipse-circumference-fill-expected.png
deleted file mode 100644
index 0e5ff6a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-ellipse-circumference-fill-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-ellipse-connecting-line-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-ellipse-connecting-line-expected.txt
deleted file mode 100644
index 0dec203..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-ellipse-connecting-line-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x320
-  LayoutBlockFlow {HTML} at (0,0) size 800x320
-    LayoutBlockFlow {BODY} at (8,8) size 784x304
-      LayoutText {#text} at (0,0) size 0x0
-layer at (8,8) size 300x300
-  LayoutHTMLCanvas {CANVAS} at (0,0) size 300x300
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-imageSmoothingEnabled-patterns-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-imageSmoothingEnabled-patterns-expected.png
deleted file mode 100644
index dbc24cee..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-imageSmoothingEnabled-patterns-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-imageSmoothingQuality-pixel-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-imageSmoothingQuality-pixel-expected.png
deleted file mode 100644
index bc2983f17..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-imageSmoothingQuality-pixel-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-incremental-repaint-2-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-incremental-repaint-2-expected.png
deleted file mode 100644
index aa7b19b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-incremental-repaint-2-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-incremental-repaint-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-incremental-repaint-expected.png
deleted file mode 100644
index 918f37d5..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-incremental-repaint-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-normalize-string-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-normalize-string-expected.txt
deleted file mode 100644
index 172fcd0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-normalize-string-expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-On success, two same text string with equal width will be rendered.
-
-TEST PASSED
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-pattern-no-repeat-with-transformations-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-pattern-no-repeat-with-transformations-expected.png
deleted file mode 100644
index 066d118..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-pattern-no-repeat-with-transformations-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-render-layer-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-render-layer-expected.png
deleted file mode 100644
index 6f1c89b7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-render-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-resize-after-paint-without-layout-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-resize-after-paint-without-layout-expected.png
deleted file mode 100644
index 68706a6e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-resize-after-paint-without-layout-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-shadow-source-in-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-shadow-source-in-expected.png
deleted file mode 100644
index e7342a7b..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-shadow-source-in-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-text-alignment-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-text-alignment-expected.png
deleted file mode 100644
index 837d1a904..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-text-alignment-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-text-baseline-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-text-baseline-expected.png
deleted file mode 100644
index 6dcb6d3d..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-text-baseline-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-text-baseline-tiny-fonts-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-text-baseline-tiny-fonts-expected.png
deleted file mode 100644
index 4ec1df6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-text-baseline-tiny-fonts-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-text-space-characters-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-text-space-characters-expected.png
deleted file mode 100644
index de96da2e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-text-space-characters-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-toDataURL-jpeg-maximum-quality-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-toDataURL-jpeg-maximum-quality-expected.png
deleted file mode 100644
index d523c07..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-toDataURL-jpeg-maximum-quality-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-transforms-during-path-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-transforms-during-path-expected.png
deleted file mode 100644
index 7f1e359..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/canvas-transforms-during-path-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/composited-rounded-clip-floating-element-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/composited-rounded-clip-floating-element-expected.png
deleted file mode 100644
index 8eb45b2a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/composited-rounded-clip-floating-element-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/downsample-quality-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/downsample-quality-expected.png
deleted file mode 100644
index 38523ea..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/downsample-quality-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/fill-stroke-clip-reset-path-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/fill-stroke-clip-reset-path-expected.txt
deleted file mode 100644
index ce320ec..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/fill-stroke-clip-reset-path-expected.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutBlockFlow {P} at (0,0) size 784x18
-        LayoutText {#text} at (0,0) size 373x18
-          text run at (0,0) width 373: "All three of these small canvases should be green, not red."
-      LayoutBlockFlow (anonymous) at (0,34) size 784x24
-        LayoutText {#text} at (20,6) size 4x18
-          text run at (20,6) width 4: " "
-        LayoutText {#text} at (44,6) size 4x18
-          text run at (44,6) width 4: " "
-        LayoutText {#text} at (0,0) size 0x0
-layer at (8,42) size 20x20
-  LayoutHTMLCanvas {CANVAS} at (0,0) size 20x20
-layer at (32,42) size 20x20
-  LayoutHTMLCanvas {CANVAS} at (24,0) size 20x20
-layer at (56,42) size 20x20
-  LayoutHTMLCanvas {CANVAS} at (48,0) size 20x20
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/fillrect_gradient-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/fillrect_gradient-expected.png
deleted file mode 100644
index 32c9e3e8..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/fillrect_gradient-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/fixed-background-scroll-window-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/fixed-background-scroll-window-expected.png
deleted file mode 100644
index 7641a0f..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/fixed-background-scroll-window-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/image-object-in-canvas-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/image-object-in-canvas-expected.png
deleted file mode 100644
index 9000e4c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/image-object-in-canvas-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/quadraticCurveTo-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/quadraticCurveTo-expected.png
deleted file mode 100644
index 41a2abe..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/quadraticCurveTo-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/webgl/webgl-composite-modes-tabswitching-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/webgl/webgl-composite-modes-tabswitching-expected.png
deleted file mode 100644
index 13fd014..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/webgl/webgl-composite-modes-tabswitching-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/webgl/webgl-layer-update-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/webgl/webgl-layer-update-expected.png
deleted file mode 100644
index 136cf43..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/overflow/webgl/webgl-layer-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/printing/print-text-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/printing/print-text-shadow-expected.png
deleted file mode 100644
index 2336f99a..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/printing/print-text-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/roundedrects/circle-with-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/roundedrects/circle-with-shadow-expected.png
deleted file mode 100644
index c243e2f5..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/roundedrects/circle-with-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
deleted file mode 100644
index e80d5b6..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.txt
deleted file mode 100644
index 294d4c7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x46
-  LayoutBlockFlow {HTML} at (0,0) size 800x46
-    LayoutBlockFlow {BODY} at (8,8) size 784x30
-      LayoutTextControl {INPUT} at (0,0) size 199x30 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-      LayoutText {#text} at (0,0) size 0x0
-layer at (22,16) size 155x15
-  LayoutBlockFlow {DIV} at (14,8) size 155x15
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-inline-block-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-inline-block-expected.png
deleted file mode 100644
index a625e5c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-inline-block-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-inline-block-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-inline-block-rtl-expected.png
deleted file mode 100644
index 1badda5..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-inline-block-rtl-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-newline-clipped-by-overflow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-newline-clipped-by-overflow-expected.png
deleted file mode 100644
index 2317cde..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-newline-clipped-by-overflow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png
deleted file mode 100644
index 93c9a475..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt
deleted file mode 100644
index 40c5003..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x136
-  LayoutBlockFlow {HTML} at (0,0) size 800x136
-    LayoutBlockFlow {BODY} at (8,16) size 784x112
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 339x19
-          text run at (0,0) width 339: "Passes if there are no overpainted selection highlights."
-      LayoutBlockFlow (anonymous) at (0,36) size 784x76
-        LayoutInline {SPAN} at (0,0) size 216x73
-          LayoutText {#text} at (0,1) size 216x73
-            text run at (0,1) width 96: "text"
-            text run at (96,1) width 120 RTL: "\x{645}\x{62A}\x{646}:"
-        LayoutText {#text} at (0,0) size 0x0
-selection start: position 5 of child 0 {#text} of child 2 {SPAN} of body
-selection end:   position 13 of child 0 {#text} of child 2 {SPAN} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png
deleted file mode 100644
index e6496288..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-newline-rtl-double-linebreak-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-with-composition-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-with-composition-expected.png
deleted file mode 100644
index 3f74859..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-with-composition-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-with-composition-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-with-composition-expected.txt
deleted file mode 100644
index f873b40..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/selection/text-selection-with-composition-expected.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x38
-  LayoutBlockFlow {HTML} at (0,0) size 800x38
-    LayoutBlockFlow {BODY} at (8,8) size 784x22
-      LayoutTextControl {INPUT} at (0,0) size 181x22 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-      LayoutText {#text} at (0,0) size 0x0
-layer at (10,11) size 177x16
-  LayoutBlockFlow {DIV} at (2,3) size 177x16
-    LayoutText {#text} at (0,0) size 71x16
-      text run at (0,0) width 71: "Hello, world!"
-selection start: position 0 of child 0 {#text} of child 0 {DIV} of {#document-fragment} of child 1 {INPUT} of body
-selection end:   position 13 of child 0 {#text} of child 0 {DIV} of {#document-fragment} of child 1 {INPUT} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/tables/composited-collapsed-table-borders-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/tables/composited-collapsed-table-borders-expected.png
deleted file mode 100644
index cd4cd569..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/tables/composited-collapsed-table-borders-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/text/selection-no-clip-text-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/text/selection-no-clip-text-expected.png
deleted file mode 100644
index d90c4648..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/text/selection-no-clip-text-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/absolute-position-headers-and-footers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/absolute-position-headers-and-footers-expected.png
deleted file mode 100644
index a5ebde7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/absolute-position-headers-and-footers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-but-static-headers-and-footers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-but-static-headers-and-footers-expected.png
deleted file mode 100644
index ab7f11c..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-but-static-headers-and-footers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-absolute-covering-some-pages-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-absolute-covering-some-pages-expected.png
deleted file mode 100644
index 3d6e2ad..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-absolute-covering-some-pages-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-clipped-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-clipped-expected.png
deleted file mode 100644
index e908e63..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-clipped-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-expected.png
deleted file mode 100644
index 10437982..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-inside-transform-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-inside-transform-expected.png
deleted file mode 100644
index fe4c60fb..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-inside-transform-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-larger-than-page-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-larger-than-page-expected.png
deleted file mode 100644
index c125f809..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-larger-than-page-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/forced-break-tree-dump-only-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/forced-break-tree-dump-only-expected.txt
deleted file mode 100644
index 11a30c2..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/forced-break-tree-dump-only-expected.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-layer at (0,0) size 800x600 scrollHeight 827
-  LayoutView at (0,0) size 1066x799
-layer at (0,0) size 1066x827 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1066x827
-    LayoutBlockFlow {BODY} at (8,16) size 1050x803
-      LayoutBlockFlow {P} at (0,0) size 1050x40
-        LayoutText {#text} at (0,0) size 1010x39
-          text run at (0,0) width 554: "This is a test that only dumps the layout tree, and doesn't actually display the page. This "
-          text run at (554,0) width 456: "tests some peculiarities in the test framework for printing. To run this test"
-          text run at (0,20) width 102: "manually, run it "
-          text run at (102,20) width 214: "with content_shell --run-web-tests"
-      LayoutBlockFlow {DIV} at (0,56) size 1050x20
-        LayoutText {#text} at (0,0) size 163x19
-          text run at (0,0) width 163: "This should be on page 1."
-      LayoutBlockFlow {DIV} at (0,783) size 1050x20
-        LayoutText {#text} at (0,0) size 163x19
-          text run at (0,0) width 163: "This should be on page 2."
-
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/iframe-print-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/iframe-print-expected.png
deleted file mode 100644
index 7fa63c7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/iframe-print-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/iframe-print-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/iframe-print-expected.txt
deleted file mode 100644
index 970fdbb..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/iframe-print-expected.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 1066x799
-layer at (0,0) size 1066x799 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1066x799
-    LayoutBlockFlow {BODY} at (8,8) size 1050x783
-      LayoutText {#text} at (304,289) size 4x19
-        text run at (304,289) width 4: " "
-      LayoutText {#text} at (0,0) size 0x0
-layer at (8,208) size 304x104
-  LayoutIFrame {IFRAME} at (0,200) size 304x104 [border: (2px inset #EEEEEE)]
-    layer at (0,0) size 300x100
-      LayoutView at (0,0) size 300x100
-    layer at (0,0) size 300x36
-      LayoutBlockFlow {HTML} at (0,0) size 300x36
-        LayoutBlockFlow {BODY} at (8,8) size 284x20
-          LayoutText {#text} at (0,0) size 240x19
-            text run at (0,0) width 240: "You should see this text when printed."
-layer at (316,8) size 304x304
-  LayoutIFrame {IFRAME} at (308,0) size 304x304 [border: (2px inset #EEEEEE)]
-    layer at (0,0) size 300x300
-      LayoutView at (0,0) size 300x300
-    layer at (35,0) size 265x300
-      LayoutBlockFlow {HTML} at (0,0) size 265x300
-        LayoutBlockFlow {BODY} at (8,8) size 249x284
-          LayoutText {#text} at (0,0) size 19x244
-            text run at (0,0) width 244: "You should see this text when printed. "
-          LayoutBR {BR} at (0,244) size 19x0
-          LayoutText {#text} at (20,0) size 19x159
-            text run at (20,0) width 159: "Vertical text on the right. "
-          LayoutBR {BR} at (20,159) size 19x0
-          LayoutText {#text} at (0,0) size 0x0
-    layer at (48,8) size 204x154
-      LayoutIFrame {IFRAME} at (40,0) size 204x154 [border: (2px inset #EEEEEE)]
-        layer at (0,0) size 200x150
-          LayoutView at (0,0) size 200x150
-        layer at (0,0) size 200x56
-          LayoutBlockFlow {HTML} at (0,0) size 200x56
-            LayoutBlockFlow {BODY} at (8,8) size 184x40
-              LayoutText {#text} at (0,0) size 149x39
-                text run at (0,0) width 149: "You should see this text"
-                text run at (0,20) width 87: "when printed."
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/list-item-with-empty-first-line-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/list-item-with-empty-first-line-expected.png
deleted file mode 100644
index 4230ab2..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/list-item-with-empty-first-line-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/tfoot-repeats-at-bottom-of-each-page-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/tfoot-repeats-at-bottom-of-each-page-expected.png
deleted file mode 100644
index 6fb418f0..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/tfoot-repeats-at-bottom-of-each-page-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/tfoot-repeats-at-bottom-of-each-page-multiple-tables-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/tfoot-repeats-at-bottom-of-each-page-multiple-tables-expected.png
deleted file mode 100644
index 7b6e2cf88..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/tfoot-repeats-at-bottom-of-each-page-multiple-tables-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/thead-repeats-at-top-of-each-page-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/thead-repeats-at-top-of-each-page-expected.png
deleted file mode 100644
index cadfb27..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/thead-repeats-at-top-of-each-page-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/thead-repeats-at-top-of-each-page-multiple-tables-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/thead-repeats-at-top-of-each-page-multiple-tables-expected.png
deleted file mode 100644
index 09c6cc7..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/thead-repeats-at-top-of-each-page-multiple-tables-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/thead-under-multicol-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/thead-under-multicol-expected.png
deleted file mode 100644
index 4cb7655..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/thead-under-multicol-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/thead-under-multicol-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/thead-under-multicol-expected.txt
deleted file mode 100644
index c23bb20..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/printing/thead-under-multicol-expected.txt
+++ /dev/null
@@ -1,373 +0,0 @@
-layer at (0,0) size 800x600 scrollHeight 2016
-  LayoutView at (0,0) size 1561x1193
-layer at (0,0) size 1561x2016 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1561x2016
-    LayoutBlockFlow {BODY} at (8,8) size 1545x2000
-layer at (8,8) size 1545x2000 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {DIV} at (0,0) size 1545x2000
-    LayoutMultiColumnSet (anonymous) at (0,0) size 1545x2000
-layer at (8,8) size 765x3840 backgroundClip at (0,0) size 781x600 clip at (0,0) size 781x600
-  LayoutMultiColumnFlowThread (anonymous) at (0,0) size 764.50x3840
-    LayoutTable {TABLE} at (0,0) size 305x3840
-      LayoutTableSection {THEAD} at (0,0) size 305x31
-        LayoutTableRow {TR} at (0,2) size 305x27
-          LayoutTableCell {TH} at (2,2) size 99x27 [r=0 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 97x24
-              text run at (1,1) width 97: "Column 1"
-          LayoutTableCell {TH} at (103,2) size 99x27 [r=0 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 97x24
-              text run at (1,1) width 97: "Column 2"
-          LayoutTableCell {TH} at (204,2) size 99x27 [r=0 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 97x24
-              text run at (1,1) width 97: "Column 3"
-      LayoutTableSection {TBODY} at (0,31) size 305x3809
-        LayoutTableRow {TR} at (0,0) size 305x102
-          LayoutTableCell {TD} at (2,37) size 99x27 [r=0 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-1"
-          LayoutTableCell {TD} at (103,37) size 99x27 [r=0 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-1"
-          LayoutTableCell {TD} at (204,37) size 99x27 [r=0 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-1"
-        LayoutTableRow {TR} at (0,104) size 305x102
-          LayoutTableCell {TD} at (2,141) size 99x27 [r=1 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-2"
-          LayoutTableCell {TD} at (103,141) size 99x27 [r=1 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-2"
-          LayoutTableCell {TD} at (204,141) size 99x27 [r=1 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-2"
-        LayoutTableRow {TR} at (0,208) size 305x102
-          LayoutTableCell {TD} at (2,245) size 99x27 [r=2 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-3"
-          LayoutTableCell {TD} at (103,245) size 99x27 [r=2 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-3"
-          LayoutTableCell {TD} at (204,245) size 99x27 [r=2 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-3"
-        LayoutTableRow {TR} at (0,312) size 305x102
-          LayoutTableCell {TD} at (2,349) size 99x27 [r=3 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-4"
-          LayoutTableCell {TD} at (103,349) size 99x27 [r=3 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-4"
-          LayoutTableCell {TD} at (204,349) size 99x27 [r=3 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-4"
-        LayoutTableRow {TR} at (0,416) size 305x102
-          LayoutTableCell {TD} at (2,453) size 99x27 [r=4 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-5"
-          LayoutTableCell {TD} at (103,453) size 99x27 [r=4 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-5"
-          LayoutTableCell {TD} at (204,453) size 99x27 [r=4 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-5"
-        LayoutTableRow {TR} at (0,520) size 305x102
-          LayoutTableCell {TD} at (2,557) size 99x27 [r=5 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-6"
-          LayoutTableCell {TD} at (103,557) size 99x27 [r=5 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-6"
-          LayoutTableCell {TD} at (204,557) size 99x27 [r=5 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-6"
-        LayoutTableRow {TR} at (0,624) size 305x102
-          LayoutTableCell {TD} at (2,661) size 99x27 [r=6 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-7"
-          LayoutTableCell {TD} at (103,661) size 99x27 [r=6 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-7"
-          LayoutTableCell {TD} at (204,661) size 99x27 [r=6 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-7"
-        LayoutTableRow {TR} at (0,728) size 305x102
-          LayoutTableCell {TD} at (2,765) size 99x27 [r=7 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-8"
-          LayoutTableCell {TD} at (103,765) size 99x27 [r=7 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-8"
-          LayoutTableCell {TD} at (204,765) size 99x27 [r=7 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-8"
-        LayoutTableRow {TR} at (0,832) size 305x102
-          LayoutTableCell {TD} at (2,869) size 99x27 [r=8 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-9"
-          LayoutTableCell {TD} at (103,869) size 99x27 [r=8 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-9"
-          LayoutTableCell {TD} at (204,869) size 99x27 [r=8 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-9"
-        LayoutTableRow {TR} at (0,936) size 305x102
-          LayoutTableCell {TD} at (2,973) size 99x27 [r=9 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-10"
-          LayoutTableCell {TD} at (103,973) size 99x27 [r=9 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-10"
-          LayoutTableCell {TD} at (204,973) size 99x27 [r=9 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-10"
-        LayoutTableRow {TR} at (0,1040) size 305x102
-          LayoutTableCell {TD} at (2,1077) size 99x27 [r=10 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 41x24
-              text run at (1,1) width 41: "1-11"
-          LayoutTableCell {TD} at (103,1077) size 99x27 [r=10 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 41x24
-              text run at (1,1) width 41: "2-11"
-          LayoutTableCell {TD} at (204,1077) size 99x27 [r=10 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 41x24
-              text run at (1,1) width 41: "3-11"
-        LayoutTableRow {TR} at (0,1185) size 305x102
-          LayoutTableCell {TD} at (2,1222) size 99x27 [r=11 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-12"
-          LayoutTableCell {TD} at (103,1222) size 99x27 [r=11 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-12"
-          LayoutTableCell {TD} at (204,1222) size 99x27 [r=11 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-12"
-        LayoutTableRow {TR} at (0,1289) size 305x102
-          LayoutTableCell {TD} at (2,1326) size 99x27 [r=12 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-13"
-          LayoutTableCell {TD} at (103,1326) size 99x27 [r=12 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-13"
-          LayoutTableCell {TD} at (204,1326) size 99x27 [r=12 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-13"
-        LayoutTableRow {TR} at (0,1393) size 305x102
-          LayoutTableCell {TD} at (2,1430) size 99x27 [r=13 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-14"
-          LayoutTableCell {TD} at (103,1430) size 99x27 [r=13 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-14"
-          LayoutTableCell {TD} at (204,1430) size 99x27 [r=13 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-14"
-        LayoutTableRow {TR} at (0,1497) size 305x102
-          LayoutTableCell {TD} at (2,1534) size 99x27 [r=14 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-15"
-          LayoutTableCell {TD} at (103,1534) size 99x27 [r=14 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-15"
-          LayoutTableCell {TD} at (204,1534) size 99x27 [r=14 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-15"
-        LayoutTableRow {TR} at (0,1601) size 305x102
-          LayoutTableCell {TD} at (2,1638) size 99x27 [r=15 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-16"
-          LayoutTableCell {TD} at (103,1638) size 99x27 [r=15 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-16"
-          LayoutTableCell {TD} at (204,1638) size 99x27 [r=15 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-16"
-        LayoutTableRow {TR} at (0,1705) size 305x102
-          LayoutTableCell {TD} at (2,1742) size 99x27 [r=16 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-17"
-          LayoutTableCell {TD} at (103,1742) size 99x27 [r=16 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-17"
-          LayoutTableCell {TD} at (204,1742) size 99x27 [r=16 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-17"
-        LayoutTableRow {TR} at (0,1809) size 305x102
-          LayoutTableCell {TD} at (2,1846) size 99x27 [r=17 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-18"
-          LayoutTableCell {TD} at (103,1846) size 99x27 [r=17 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-18"
-          LayoutTableCell {TD} at (204,1846) size 99x27 [r=17 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-18"
-        LayoutTableRow {TR} at (0,1913) size 305x102
-          LayoutTableCell {TD} at (2,1950) size 99x27 [r=18 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-19"
-          LayoutTableCell {TD} at (103,1950) size 99x27 [r=18 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-19"
-          LayoutTableCell {TD} at (204,1950) size 99x27 [r=18 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-19"
-        LayoutTableRow {TR} at (0,2017) size 305x102
-          LayoutTableCell {TD} at (2,2054) size 99x27 [r=19 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-20"
-          LayoutTableCell {TD} at (103,2054) size 99x27 [r=19 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-20"
-          LayoutTableCell {TD} at (204,2054) size 99x27 [r=19 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-20"
-        LayoutTableRow {TR} at (0,2121) size 305x102
-          LayoutTableCell {TD} at (2,2158) size 99x27 [r=20 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-21"
-          LayoutTableCell {TD} at (103,2158) size 99x27 [r=20 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-21"
-          LayoutTableCell {TD} at (204,2158) size 99x27 [r=20 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-21"
-        LayoutTableRow {TR} at (0,2225) size 305x102
-          LayoutTableCell {TD} at (2,2262) size 99x27 [r=21 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-22"
-          LayoutTableCell {TD} at (103,2262) size 99x27 [r=21 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-22"
-          LayoutTableCell {TD} at (204,2262) size 99x27 [r=21 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-22"
-        LayoutTableRow {TR} at (0,2370) size 305x102
-          LayoutTableCell {TD} at (2,2407) size 99x27 [r=22 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-23"
-          LayoutTableCell {TD} at (103,2407) size 99x27 [r=22 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-23"
-          LayoutTableCell {TD} at (204,2407) size 99x27 [r=22 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-23"
-        LayoutTableRow {TR} at (0,2474) size 305x102
-          LayoutTableCell {TD} at (2,2511) size 99x27 [r=23 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-24"
-          LayoutTableCell {TD} at (103,2511) size 99x27 [r=23 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-24"
-          LayoutTableCell {TD} at (204,2511) size 99x27 [r=23 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-24"
-        LayoutTableRow {TR} at (0,2578) size 305x102
-          LayoutTableCell {TD} at (2,2615) size 99x27 [r=24 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-25"
-          LayoutTableCell {TD} at (103,2615) size 99x27 [r=24 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-25"
-          LayoutTableCell {TD} at (204,2615) size 99x27 [r=24 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-25"
-        LayoutTableRow {TR} at (0,2682) size 305x102
-          LayoutTableCell {TD} at (2,2719) size 99x27 [r=25 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-26"
-          LayoutTableCell {TD} at (103,2719) size 99x27 [r=25 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-26"
-          LayoutTableCell {TD} at (204,2719) size 99x27 [r=25 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-26"
-        LayoutTableRow {TR} at (0,2786) size 305x102
-          LayoutTableCell {TD} at (2,2823) size 99x27 [r=26 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-27"
-          LayoutTableCell {TD} at (103,2823) size 99x27 [r=26 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-27"
-          LayoutTableCell {TD} at (204,2823) size 99x27 [r=26 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-27"
-        LayoutTableRow {TR} at (0,2890) size 305x102
-          LayoutTableCell {TD} at (2,2927) size 99x27 [r=27 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-28"
-          LayoutTableCell {TD} at (103,2927) size 99x27 [r=27 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-28"
-          LayoutTableCell {TD} at (204,2927) size 99x27 [r=27 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-28"
-        LayoutTableRow {TR} at (0,2994) size 305x102
-          LayoutTableCell {TD} at (2,3031) size 99x27 [r=28 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-29"
-          LayoutTableCell {TD} at (103,3031) size 99x27 [r=28 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-29"
-          LayoutTableCell {TD} at (204,3031) size 99x27 [r=28 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-29"
-        LayoutTableRow {TR} at (0,3185) size 305x102
-          LayoutTableCell {TD} at (2,3222) size 99x27 [r=29 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-30"
-          LayoutTableCell {TD} at (103,3222) size 99x27 [r=29 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-30"
-          LayoutTableCell {TD} at (204,3222) size 99x27 [r=29 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-30"
-        LayoutTableRow {TR} at (0,3289) size 305x102
-          LayoutTableCell {TD} at (2,3326) size 99x27 [r=30 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-31"
-          LayoutTableCell {TD} at (103,3326) size 99x27 [r=30 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-31"
-          LayoutTableCell {TD} at (204,3326) size 99x27 [r=30 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-31"
-        LayoutTableRow {TR} at (0,3393) size 305x102
-          LayoutTableCell {TD} at (2,3430) size 99x27 [r=31 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-32"
-          LayoutTableCell {TD} at (103,3430) size 99x27 [r=31 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-32"
-          LayoutTableCell {TD} at (204,3430) size 99x27 [r=31 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-32"
-        LayoutTableRow {TR} at (0,3497) size 305x102
-          LayoutTableCell {TD} at (2,3534) size 99x27 [r=32 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-33"
-          LayoutTableCell {TD} at (103,3534) size 99x27 [r=32 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-33"
-          LayoutTableCell {TD} at (204,3534) size 99x27 [r=32 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-33"
-        LayoutTableRow {TR} at (0,3601) size 305x102
-          LayoutTableCell {TD} at (2,3638) size 99x27 [r=33 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-34"
-          LayoutTableCell {TD} at (103,3638) size 99x27 [r=33 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-34"
-          LayoutTableCell {TD} at (204,3638) size 99x27 [r=33 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-34"
-        LayoutTableRow {TR} at (0,3705) size 305x102
-          LayoutTableCell {TD} at (2,3742) size 99x27 [r=34 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-35"
-          LayoutTableCell {TD} at (103,3742) size 99x27 [r=34 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-35"
-          LayoutTableCell {TD} at (204,3742) size 99x27 [r=34 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-35"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
index 65818d5..f7318aa 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 581 tests; 405 PASS, 176 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 583 tests; 405 PASS, 178 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS align-content (type: discrete) has testAccumulation function
 PASS align-content: "flex-end" onto "flex-start"
 PASS align-content: "flex-start" onto "flex-end"
@@ -521,6 +521,8 @@
 FAIL transform: skew assert_approx_equals: expected matrix(1,0.5773502691896257,-0.36397023426620234,1,0,0) but got matrix(1, 0.36397, -0.57735, 1, 0, 0): The value should be matrix(1,0.5773502691896257,-0.36397023426620234,1,0,0) at 0ms but got matrix(1, 0.36397, -0.57735, 1, 0, 0) expected 0.5773502691896257 +/- 0.0001 but got 0.36397
 FAIL transform: rotate on translate assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(6.12323e-17, 1, -1, 6.12323e-17, 0, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(6.12323e-17, 1, -1, 6.12323e-17, 0, 0) expected 100 +/- 0.0001 but got 0
 FAIL transform: translate on rotate assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(1, 0, 0, 1, 100, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(1, 0, 0, 1, 100, 0) expected 0 +/- 0.0001 but got 1
+FAIL transform: rotate and translate on rotate assert_approx_equals: expected matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,0,0) but got matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0): The value should be matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,0,0) at 0ms but got matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0) expected 6.123233995736766e-17 +/- 0.0001 but got 0.707107
+FAIL transform: rotate on roate and translate assert_approx_equals: expected matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,6.123233995736766e-15,100) but got matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0): The value should be matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,6.123233995736766e-15,100) at 0ms but got matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0) expected 6.123233995736766e-17 +/- 0.0001 but got 0.707107
 FAIL transform: matrix assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(1, 0, 0, 1, 100, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(1, 0, 0, 1, 100, 0) expected 0 +/- 0.0001 but got 1
 FAIL transform: rotate3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.5, 0.5, 0.707107, 0, 0.5, 0.5, -0.707107, 0, -0.707107, 0.707107, 6.12323e-17, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.5, 0.5, 0.707107, 0, 0.5, 0.5, -0.707107, 0, -0.707107, 0.707107, 6.12323e-17, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.5
 FAIL transform: matrix3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.5, 0.5, 0.707107, 0, 0.5, 0.5, -0.707107, 0, -0.707107, 0.707107, 4.44089e-16, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.5, 0.5, 0.707107, 0, 0.5, 0.5, -0.707107, 0, -0.707107, 0.707107, 4.44089e-16, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.5
diff --git a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
index 833d706..ba3a083 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 578 tests; 536 PASS, 42 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 579 tests; 537 PASS, 42 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS align-content (type: discrete) has testAddition function
 PASS align-content: "flex-end" onto "flex-start"
 PASS align-content: "flex-start" onto "flex-end"
@@ -521,6 +521,7 @@
 PASS transform: skew
 PASS transform: rotate on translate
 PASS transform: translate on rotate
+PASS transform: rotate on rotate and translate
 PASS transform: matrix
 PASS transform: rotate3d
 PASS transform: matrix3d
diff --git a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
index 1eee23f8..1abce08 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 721 tests; 646 PASS, 75 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 723 tests; 646 PASS, 77 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS align-content (type: discrete) has testInterpolation function
 PASS align-content uses discrete animation when animating between "flex-start" and "flex-end" with linear easing
 PASS align-content uses discrete animation when animating between "flex-start" and "flex-end" with effect easing
@@ -652,6 +652,8 @@
 PASS transform: skew
 PASS transform: rotate and translate
 PASS transform: translate and rotate
+FAIL transform: extend shorter list (from) assert_approx_equals: expected matrix(-1,0,0,-1,-50,0) but got matrix(1, 0, 0, 1, 50, -3.67394e-14): The value should be matrix(-1,0,0,-1,-50,0) at 500ms but got matrix(1, 0, 0, 1, 50, -3.67394e-14) expected -1 +/- 0.0001 but got 1
+FAIL transform: extend shorter list (to) assert_approx_equals: expected matrix(-1,0,0,-1,-50,0) but got matrix(1, 0, 0, 1, 50, 0): The value should be matrix(-1,0,0,-1,-50,0) at 500ms but got matrix(1, 0, 0, 1, 50, 0) expected -1 +/- 0.0001 but got 1
 FAIL transform: mismatch order of translate and rotate assert_approx_equals: expected matrix(-0.7071067811865475,0.7071067811865476,-0.7071067811865476,-0.7071067811865475,100,50) but got matrix(0.707107, -0.707107, 0.707107, 0.707107, 100, 50): The value should be matrix(-0.7071067811865475,0.7071067811865476,-0.7071067811865476,-0.7071067811865475,100,50) at 500ms but got matrix(0.707107, -0.707107, 0.707107, 0.707107, 100, 50) expected -0.7071067811865475 +/- 0.0001 but got 0.707107
 FAIL transform: matrix assert_approx_equals: expected matrix(-0.7071067811865475,0.7071067811865476,-0.7071067811865476,-0.7071067811865475,100,50) but got matrix(0.707107, -0.707107, 0.707107, 0.707107, 100, 50): The value should be matrix(-0.7071067811865475,0.7071067811865476,-0.7071067811865476,-0.7071067811865475,100,50) at 500ms but got matrix(0.707107, -0.707107, 0.707107, 0.707107, 100, 50) expected -0.7071067811865475 +/- 0.0001 but got 0.707107
 PASS transform: rotate3d
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/details-open-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/details-open-repaint-expected.txt
index a6dc0f4..e51b523 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/details-open-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/details-open-repaint-expected.txt
@@ -52,10 +52,6 @@
       "reason": "appeared"
     },
     {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
       "object": "HorizontalScrollbar",
       "reason": "scroll control"
     },
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng/fast/block/float/014-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng/fast/block/float/014-expected.png
new file mode 100644
index 0000000..29e0b64
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng/fast/block/float/014-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt b/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
index d1fcefb2..fadcbc7 100644
--- a/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 581 tests; 404 PASS, 177 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 583 tests; 404 PASS, 179 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS align-content (type: discrete) has testAccumulation function
 PASS align-content: "flex-end" onto "flex-start"
 PASS align-content: "flex-start" onto "flex-end"
@@ -521,6 +521,8 @@
 FAIL transform: skew assert_approx_equals: expected matrix(1,0.5773502691896257,-0.36397023426620234,1,0,0) but got matrix(1, 0.36397, -0.57735, 1, 0, 0): The value should be matrix(1,0.5773502691896257,-0.36397023426620234,1,0,0) at 0ms but got matrix(1, 0.36397, -0.57735, 1, 0, 0) expected 0.5773502691896257 +/- 0.0001 but got 0.36397
 FAIL transform: rotate on translate assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(6.12323e-17, 1, -1, 6.12323e-17, 0, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(6.12323e-17, 1, -1, 6.12323e-17, 0, 0) expected 100 +/- 0.0001 but got 0
 FAIL transform: translate on rotate assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(1, 0, 0, 1, 100, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(1, 0, 0, 1, 100, 0) expected 0 +/- 0.0001 but got 1
+FAIL transform: rotate and translate on rotate assert_approx_equals: expected matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,0,0) but got matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0): The value should be matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,0,0) at 0ms but got matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0) expected 6.123233995736766e-17 +/- 0.0001 but got 0.707107
+FAIL transform: rotate on roate and translate assert_approx_equals: expected matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,6.123233995736766e-15,100) but got matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0): The value should be matrix(6.123233995736766e-17,1,-1,6.123233995736766e-17,6.123233995736766e-15,100) at 0ms but got matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0) expected 6.123233995736766e-17 +/- 0.0001 but got 0.707107
 FAIL transform: matrix assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(1, 0, 0, 1, 100, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(1, 0, 0, 1, 100, 0) expected 0 +/- 0.0001 but got 1
 FAIL transform: rotate3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.5, 0.5, 0.707107, 0, 0.5, 0.5, -0.707107, 0, -0.707107, 0.707107, 6.12323e-17, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.5, 0.5, 0.707107, 0, 0.5, 0.5, -0.707107, 0, -0.707107, 0.707107, 6.12323e-17, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.5
 FAIL transform: matrix3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.5, 0.5, 0.707107, 0, 0.5, 0.5, -0.707107, 0, -0.707107, 0.707107, 4.44089e-16, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.5, 0.5, 0.707107, 0, 0.5, 0.5, -0.707107, 0, -0.707107, 0.707107, 4.44089e-16, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.5
diff --git a/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt b/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
index f50490c8..66ccba8 100644
--- a/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 578 tests; 535 PASS, 43 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 579 tests; 536 PASS, 43 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS align-content (type: discrete) has testAddition function
 PASS align-content: "flex-end" onto "flex-start"
 PASS align-content: "flex-start" onto "flex-end"
@@ -521,6 +521,7 @@
 PASS transform: skew
 PASS transform: rotate on translate
 PASS transform: translate on rotate
+PASS transform: rotate on rotate and translate
 PASS transform: matrix
 PASS transform: rotate3d
 PASS transform: matrix3d
diff --git a/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt b/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
index e41032f..a9f5d1d8 100644
--- a/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 721 tests; 643 PASS, 78 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 723 tests; 643 PASS, 80 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS align-content (type: discrete) has testInterpolation function
 PASS align-content uses discrete animation when animating between "flex-start" and "flex-end" with linear easing
 PASS align-content uses discrete animation when animating between "flex-start" and "flex-end" with effect easing
@@ -652,6 +652,8 @@
 PASS transform: skew
 PASS transform: rotate and translate
 PASS transform: translate and rotate
+FAIL transform: extend shorter list (from) assert_approx_equals: expected matrix(-1,0,0,-1,-50,0) but got matrix(1, 0, 0, 1, 50, -3.67394e-14): The value should be matrix(-1,0,0,-1,-50,0) at 500ms but got matrix(1, 0, 0, 1, 50, -3.67394e-14) expected -1 +/- 0.0001 but got 1
+FAIL transform: extend shorter list (to) assert_approx_equals: expected matrix(-1,0,0,-1,-50,0) but got matrix(1, 0, 0, 1, 50, 0): The value should be matrix(-1,0,0,-1,-50,0) at 500ms but got matrix(1, 0, 0, 1, 50, 0) expected -1 +/- 0.0001 but got 1
 FAIL transform: mismatch order of translate and rotate assert_approx_equals: expected matrix(-0.7071067811865475,0.7071067811865476,-0.7071067811865476,-0.7071067811865475,100,50) but got matrix(0.707107, -0.707107, 0.707107, 0.707107, 100, 50): The value should be matrix(-0.7071067811865475,0.7071067811865476,-0.7071067811865476,-0.7071067811865475,100,50) at 500ms but got matrix(0.707107, -0.707107, 0.707107, 0.707107, 100, 50) expected -0.7071067811865475 +/- 0.0001 but got 0.707107
 FAIL transform: matrix assert_approx_equals: expected matrix(-0.7071067811865475,0.7071067811865476,-0.7071067811865476,-0.7071067811865475,100,50) but got matrix(0.707107, -0.707107, 0.707107, 0.707107, 100, 50): The value should be matrix(-0.7071067811865475,0.7071067811865476,-0.7071067811865476,-0.7071067811865475,100,50) at 500ms but got matrix(0.707107, -0.707107, 0.707107, 0.707107, 100, 50) expected -0.7071067811865475 +/- 0.0001 but got 0.707107
 PASS transform: rotate3d
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/details-open-repaint-expected.txt b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/details-open-repaint-expected.txt
index 3cccbce..7e12a06 100644
--- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/details-open-repaint-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/details-open-repaint-expected.txt
@@ -52,10 +52,6 @@
       "reason": "appeared"
     },
     {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
       "object": "HorizontalScrollbar",
       "reason": "scroll control"
     },
diff --git a/third_party/WebKit/LayoutTests/svg/as-image/resources/view-in-inner-svg.svg b/third_party/WebKit/LayoutTests/svg/as-image/resources/view-in-inner-svg.svg
new file mode 100644
index 0000000..41f8817
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/svg/as-image/resources/view-in-inner-svg.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
+  <rect x="100" width="100" height="100" fill="green"/>
+  <svg>
+    <view id="innerview" viewBox="100 0 100 100"/>
+    <rect width="100" height="100" fill="red"/>
+  </svg>
+</svg>
diff --git a/third_party/WebKit/LayoutTests/svg/as-image/view-in-inner-svg-expected.html b/third_party/WebKit/LayoutTests/svg/as-image/view-in-inner-svg-expected.html
new file mode 100644
index 0000000..f718ea6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/svg/as-image/view-in-inner-svg-expected.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+<div style="width: 100px; height: 100px; background-color: green"></div>
diff --git a/third_party/WebKit/LayoutTests/svg/as-image/view-in-inner-svg.html b/third_party/WebKit/LayoutTests/svg/as-image/view-in-inner-svg.html
new file mode 100644
index 0000000..886d741
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/svg/as-image/view-in-inner-svg.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+<img src="resources/view-in-inner-svg.svg#innerview" width="100">
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/README.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/README.txt
deleted file mode 100644
index 315232a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-# This suite runs tests with --disable-blink-features=SlimmingPaintV175
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/absolute-inside-out-of-view-fixed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/absolute-inside-out-of-view-fixed-expected.txt
deleted file mode 100644
index c3a4e55..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/absolute-inside-out-of-view-fixed-expected.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 2513],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [0, 200],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -200, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/background-color/view-blending-base-background-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/background-color/view-blending-base-background-expected.txt
deleted file mode 100644
index 70b7aed..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/background-color/view-blending-base-background-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#7F7FBF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#7F7FBF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/checkerboard-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/checkerboard-expected.txt
deleted file mode 100644
index b430162..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/checkerboard-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-layer at (0,0) size 800x600 scrollX 1255.00 scrollY 1023.00 scrollWidth 2055 scrollHeight 2063
-  LayoutView at (0,0) size 800x600
-layer at (-1255,-1023) size 800x2063 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x2063
-    LayoutBlockFlow {BODY} at (8,8) size 784x2047
-      LayoutBlockFlow {DIV} at (0,0) size 2047x2047
-layer at (-1247,-1015) size 784x0
-  LayoutBlockFlow {DIV} at (0,0) size 784x0
-scrolled to 1255,1023
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/clip-child-by-non-stacking-ancestor-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/clip-child-by-non-stacking-ancestor-expected.txt
deleted file mode 100644
index a6a6b33..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/clip-child-by-non-stacking-ancestor-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='container'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/columns/composited-in-paginated-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/columns/composited-in-paginated-expected.txt
deleted file mode 100644
index a5c0d0e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/columns/composited-in-paginated-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1600, 585],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited box'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [818, 145, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/background-clip-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/background-clip-expected.txt
deleted file mode 100644
index 3fd09a47..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/background-clip-expected.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box composited padding-clip'",
-      "bounds": [100, 100],
-      "backgroundColor": "#008000",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box composited content-clip'",
-      "bounds": [100, 100],
-      "backgroundColor": "#008000",
-      "transform": 3
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [13, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [13, 113, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [13, 218, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/background-color-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/background-color-expected.txt
deleted file mode 100644
index 88dfcc22..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/background-color-expected.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box composited'",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box translucent composited'",
-      "bounds": [100, 100],
-      "backgroundColor": "#00FF0080",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box opaque composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 3
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 108, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 208, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/body-background-painted-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/body-background-painted-expected.txt
deleted file mode 100644
index db7e770..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/body-background-painted-expected.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#D3D3D3"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3"
-    },
-    {
-      "name": "LayoutBlockFlow HTML",
-      "bounds": [800, 600],
-      "backgroundColor": "#D3D3D3"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='underbody'",
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow HTML (foreground) Layer",
-      "bounds": [800, 600]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/body-background-skipped-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/body-background-skipped-expected.txt
deleted file mode 100644
index 89bcba5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/body-background-skipped-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "LayoutBlockFlow HTML",
-      "bounds": [800, 600]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='underbody'",
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow HTML (foreground) Layer",
-      "bounds": [800, 600]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/filter-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/filter-expected.txt
deleted file mode 100644
index 4324d4b1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/filter-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited container-box'",
-      "bounds": [157, 157],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited container-box'",
-      "bounds": [100, 100],
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-18, -18, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [10, 120, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/hidden-with-visible-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/hidden-with-visible-child-expected.txt
deleted file mode 100644
index 357dbef6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/hidden-with-visible-child-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='caption'",
-      "bounds": [200, 100],
-      "backgroundColor": "#008000",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/hidden-with-visible-text-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/hidden-with-visible-text-expected.txt
deleted file mode 100644
index a6dbd2d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/hidden-with-visible-text-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-Caption
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='caption'",
-      "bounds": [200, 100],
-      "backgroundColor": "#008000",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/layer-opacity-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/layer-opacity-expected.txt
deleted file mode 100644
index 8a6fde7c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/layer-opacity-expected.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box opaque-background translucent composited'",
-      "bounds": [100, 100],
-      "opacity": 0.5,
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/layer-transform-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/layer-transform-expected.txt
deleted file mode 100644
index bf74a6d9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/layer-transform-expected.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [0.866025403784439, 0.5, 0, 0],
-        [-0.5, 0.866025403784439, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [50, 50]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/overflow-hidden-child-layers-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/overflow-hidden-child-layers-expected.txt
deleted file mode 100644
index 6606743..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/overflow-hidden-child-layers-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box'",
-      "bounds": [138, 138],
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [39, 31, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/visibility-hidden-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/visibility-hidden-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/contents-opaque/visibility-hidden-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/draws-content/canvas-background-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/draws-content/canvas-background-layer-expected.txt
deleted file mode 100644
index 7426a57..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/draws-content/canvas-background-layer-expected.txt
+++ /dev/null
@@ -1,72 +0,0 @@
- {
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutHTMLCanvas CANVAS id='canvas-simple'",
-      "position": [13, 8],
-      "bounds": [50, 50],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutHTMLCanvas CANVAS id='canvas-transparent-background'",
-      "position": [13, 73],
-      "bounds": [50, 50],
-      "backgroundColor": "#00FF0080"
-    },
-    {
-      "name": "LayoutHTMLCanvas CANVAS id='canvas-padding'",
-      "position": [13, 138],
-      "bounds": [60, 60],
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutHTMLCanvas CANVAS id='canvas-border'",
-      "position": [13, 203],
-      "bounds": [60, 60],
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutHTMLCanvas CANVAS id='canvas-image'",
-      "position": [13, 268],
-      "bounds": [50, 50],
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutHTMLCanvas CANVAS id='canvas-opaque'",
-      "position": [13, 333],
-      "bounds": [50, 50],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutHTMLCanvas CANVAS id='canvas-opaque-border'",
-      "position": [13, 398],
-      "bounds": [60, 60],
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutHTMLCanvas CANVAS id='canvas-opaque-box-shadow'",
-      "position": [13, 463],
-      "bounds": [60, 60],
-      "backgroundColor": "#008000"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/draws-content/webgl-background-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/draws-content/webgl-background-layer-expected.txt
deleted file mode 100644
index 6f43f1df..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/draws-content/webgl-background-layer-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
- {
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutHTMLCanvas CANVAS id='canvas-simple'",
-      "position": [13, 8],
-      "bounds": [50, 50],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutHTMLCanvas CANVAS id='canvas-padding'",
-      "position": [13, 73],
-      "bounds": [60, 60],
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutHTMLCanvas CANVAS id='canvas-border'",
-      "position": [13, 138],
-      "bounds": [60, 60],
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutHTMLCanvas CANVAS id='canvas-image'",
-      "position": [13, 203],
-      "bounds": [50, 50],
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutHTMLCanvas CANVAS id='canvas-transparent-background'",
-      "position": [13, 268],
-      "bounds": [50, 50],
-      "backgroundColor": "#00FF0080"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/filters/sw-layer-overlaps-hw-shadow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/filters/sw-layer-overlaps-hw-shadow-expected.txt
deleted file mode 100644
index 32ef5c8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/filters/sw-layer-overlaps-hw-shadow-expected.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#000000",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='software')",
-      "bounds": [100, 100]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [105, 105, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow-expected.txt
deleted file mode 100644
index 171caed..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='composited-parent'",
-      "bounds": [200, 200],
-      "backgroundColor": "#000000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='software-parent'",
-      "bounds": [200, 200],
-      "backgroundColor": "#008000"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [230, 230, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/filters/sw-shadow-overlaps-hw-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/filters/sw-shadow-overlaps-hw-layer-expected.txt
deleted file mode 100644
index 5556a2a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/filters/sw-shadow-overlaps-hw-layer-expected.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#000000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='software'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [105, 105, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/filters/sw-shadow-overlaps-hw-shadow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/filters/sw-shadow-overlaps-hw-shadow-expected.txt
deleted file mode 100644
index 5e78cb7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/filters/sw-shadow-overlaps-hw-shadow-expected.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#000000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='software'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [130, 130, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/fixed-body-background-positioned-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/fixed-body-background-positioned-expected.txt
deleted file mode 100644
index a9d5368..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/fixed-body-background-positioned-expected.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "Root Transform Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "Inner Viewport Container Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Overscroll Elasticity Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "Page Scale Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "Inner Viewport Scroll Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 3700],
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [785, 0],
-      "bounds": [15, 600],
-      "contentsOpaque": true,
-      "drawsContent": false
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -200, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/fixed-position-changed-to-absolute-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/fixed-position-changed-to-absolute-expected.txt
deleted file mode 100644
index 5acf64a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/fixed-position-changed-to-absolute-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#402B3C"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#402B3C"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [150, 150],
-      "contentsOpaque": true,
-      "backgroundColor": "#D9CCA7",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='layer-A')",
-      "position": [20, 20],
-      "bounds": [226, 180]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/force-composite-empty-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/force-composite-empty-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/force-composite-empty-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/no-overflow-iframe-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/no-overflow-iframe-layer-expected.txt
deleted file mode 100644
index 9f85343..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/no-overflow-iframe-layer-expected.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/overflow-hidden-iframe-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/overflow-hidden-iframe-layer-expected.txt
deleted file mode 100644
index 9f85343..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/overflow-hidden-iframe-layer-expected.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/overflow-iframe-enter-compositing-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/overflow-iframe-enter-compositing-expected.txt
deleted file mode 100644
index 638a5a93..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/overflow-iframe-enter-compositing-expected.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME id='parent-iframe'",
-      "position": [8, 8],
-      "bounds": [154, 154]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [10, 10],
-      "bounds": [150, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [10, 10],
-      "bounds": [135, 135],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [10, 10],
-      "bounds": [508, 516]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [10, 10],
-      "bounds": [150, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [10, 145],
-      "bounds": [135, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [145, 10],
-      "bounds": [15, 135],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [145, 145],
-      "bounds": [15, 15]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/overflow-iframe-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/overflow-iframe-layer-expected.txt
deleted file mode 100644
index 96818344..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/force-compositing-mode/overflow-iframe-layer-expected.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME id='iframe'",
-      "position": [8, 8],
-      "bounds": [154, 154]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [10, 10],
-      "bounds": [150, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [10, 10],
-      "bounds": [135, 135],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [10, 10],
-      "bounds": [508, 516]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [10, 10],
-      "bounds": [150, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [10, 145],
-      "bounds": [135, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [145, 10],
-      "bounds": [15, 135],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [145, 145],
-      "bounds": [15, 15]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/ancestor-overflow-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/ancestor-overflow-change-expected.txt
deleted file mode 100644
index 68939a9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/ancestor-overflow-change-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-clipped-composited-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-clipped-composited-child-expected.txt
deleted file mode 100644
index c084c0b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-clipped-composited-child-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='container'",
-      "bounds": [200, 100],
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [58, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-50, 0, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-ignores-hidden-composited-descendant-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-ignores-hidden-composited-descendant-expected.txt
deleted file mode 100644
index 241948f1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-ignores-hidden-composited-descendant-expected.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [590, 210],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [590, 210],
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='composited inner box'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 3
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [10, 10, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [10, 260, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [490, 110, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-ignores-hidden-dynamic-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-ignores-hidden-dynamic-expected.txt
deleted file mode 100644
index 063e79d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-ignores-hidden-dynamic-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [540, 240],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [50, 50],
-      "contentsOpaque": true,
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [10, 10, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [10, 260, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-ignores-hidden-dynamic-negzindex-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-ignores-hidden-dynamic-negzindex-expected.txt
deleted file mode 100644
index 8dfbbf3d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-ignores-hidden-dynamic-negzindex-expected.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [500, 250]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [150, 150],
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow PRE id='layers')",
-      "bounds": [792, 100]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='indicator box'",
-      "position": [0, 250],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 250, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-ignores-hidden-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-ignores-hidden-expected.txt
deleted file mode 100644
index 4a94af6d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/bounds-ignores-hidden-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [44990, 15063],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [50, 50],
-      "contentsOpaque": true,
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [10, 10, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/clip-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/clip-expected.txt
deleted file mode 100644
index 100aca1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/clip-expected.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-Test CSS clip with composited layers. Left and right sides should look the same.
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box'",
-      "bounds": [110, 110],
-      "backgroundColor": "#808080",
-      "transform": 2
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [215, 15],
-      "bounds": [110, 110],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='composited inner'",
-      "bounds": [120, 120],
-      "backgroundColor": "#00000033",
-      "transform": 4
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [15, 15, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [210, 10, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/clip-inside-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/clip-inside-expected.txt
deleted file mode 100644
index 3566aba2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/clip-inside-expected.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-Test CSS clip with composited layers. Left and right sides should look the same.
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box'",
-      "bounds": [90, 80],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 2
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [225, 35],
-      "bounds": [90, 80],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='composited inner'",
-      "bounds": [120, 120],
-      "backgroundColor": "#00000033",
-      "transform": 4
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [25, 35, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [210, 10, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/clip-with-shadow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/clip-with-shadow-expected.txt
deleted file mode 100644
index 3a44c3e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/clip-with-shadow-expected.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box'",
-      "bounds": [110, 110],
-      "backgroundColor": "#808080",
-      "transform": 2
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [215, 15],
-      "bounds": [110, 110],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='composited inner'",
-      "bounds": [120, 120],
-      "backgroundColor": "#00000033",
-      "transform": 4
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [15, 15, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [210, 10, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/composited-in-columns-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/composited-in-columns-expected.txt
deleted file mode 100644
index 28797b1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/composited-in-columns-expected.txt
+++ /dev/null
@@ -1,88 +0,0 @@
- {
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited block'",
-      "bounds": [210, 60],
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited box'",
-      "bounds": [50, 50],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited block'",
-      "bounds": [210, 60],
-      "backgroundColor": "#0000FF",
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited box'",
-      "bounds": [50, 50],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 4
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [14, 164, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [5, 5, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [272, 89, 0, 1]
-      ]
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [5, 5, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/fixed-in-composited-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/fixed-in-composited-expected.txt
deleted file mode 100644
index 748e5808..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/fixed-in-composited-expected.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollY 50.00 scrollHeight 1000
-  LayoutView at (0,0) size 800x600
-layer at (0,-50) size 785x1000 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {HTML} at (0,0) size 785x1000
-    LayoutBlockFlow {BODY} at (0,0) size 785x1000
-      LayoutBlockFlow {P} at (0,210) size 785x20
-        LayoutText {#text} at (0,0) size 187x19
-          text run at (0,0) width 187: "You should see no red above."
-layer at (20,20) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (20,70) size 100x100 [bgcolor=#FF0000]
-layer at (220,70) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (220,120) size 100x100 [bgcolor=#FF0000]
-layer at (420,70) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (420,120) size 100x100 [bgcolor=#FF0000]
-layer at (0,-50) size 60x60 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {DIV} at (0,0) size 60x60 [bgcolor=#0000FF33]
-layer at (95,95) size 50x50
-  LayoutBlockFlow (positioned) zI: 1 {DIV} at (95,145) size 50x50
-layer at (20,20) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (20,20) size 100x100 [bgcolor=#008000]
-layer at (200,50) size 50x50
-  LayoutBlockFlow (positioned) zI: 1 {DIV} at (200,100) size 50x50
-layer at (220,70) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (20,20) size 100x100 [bgcolor=#008000]
-layer at (400,50) size 50x50
-  LayoutBlockFlow (positioned) zI: 1 {DIV} at (400,100) size 50x50
-layer at (400,50) size 100x100
-  LayoutBlockFlow {DIV} at (0,0) size 100x100
-layer at (420,70) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (20,20) size 100x100 [bgcolor=#008000]
-scrolled to 0,50
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/fixed-position-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/fixed-position-expected.txt
deleted file mode 100644
index 621072e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/fixed-position-expected.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-layer at (0,0) size 800x600 scrollX 50.00 scrollY 50.00 scrollWidth 1008 scrollHeight 1016
-  LayoutView at (0,0) size 800x600
-layer at (-50,-50) size 800x1016 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x1016
-    LayoutBlockFlow {BODY} at (8,8) size 1000x1000
-layer at (0,116) size 437x20
-  LayoutBlockFlow (positioned) {P} at (50,166) size 437.41x20
-    LayoutText {#text} at (0,0) size 438x19
-      text run at (0,0) width 438: "You should see a green square in the top left corner of an orange box."
-layer at (0,0) size 100x100 transparent
-  LayoutBlockFlow (positioned) {DIV} at (0,0) size 100x100 [bgcolor=#FFA500]
-layer at (0,0) size 50x50
-  LayoutBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#008000]
-scrolled to 50,50
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/flipped-writing-mode-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/flipped-writing-mode-expected.txt
deleted file mode 100644
index 797ce6110..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/flipped-writing-mode-expected.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited flipped'",
-      "bounds": [250, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited box'",
-      "bounds": [195, 100],
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [18, 10, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [35, 10, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/foreground-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/foreground-layer-expected.txt
deleted file mode 100644
index 728b584..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/foreground-layer-expected.txt
+++ /dev/null
@@ -1,125 +0,0 @@
-  
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='main box'",
-      "bounds": [318, 318],
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='negative child'",
-      "bounds": [50, 50],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='main box' (foreground) Layer",
-      "bounds": [318, 318],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='main box'",
-      "bounds": [318, 318],
-      "backgroundColor": "#FF0000",
-      "transform": 4
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [59, 59],
-      "bounds": [200, 200],
-      "drawsContent": false,
-      "transform": 4
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='negative child'",
-      "bounds": [50, 50],
-      "drawsContent": false,
-      "transform": 6
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='main box' (foreground) Layer",
-      "position": [59, 59],
-      "bounds": [200, 200],
-      "transform": 4
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [19, 89, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [59, 59, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ]
-    },
-    {
-      "id": 4,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [363, 19, 0, 1]
-      ]
-    },
-    {
-      "id": 5,
-      "parent": 4,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [59, 59, 0, 1]
-      ]
-    },
-    {
-      "id": 6,
-      "parent": 5,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/horizontal-scroll-composited-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/horizontal-scroll-composited-expected.txt
deleted file mode 100644
index b1cdfaf2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/horizontal-scroll-composited-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x585 scrollX 229.00 scrollWidth 1014 scrollHeight 822
-  LayoutView at (0,0) size 800x600
-layer at (-229,0) size 785x822 backgroundClip at (0,0) size 785x585 clip at (0,0) size 785x585
-  LayoutBlockFlow {HTML} at (0,0) size 785x822
-    LayoutBlockFlow {BODY} at (8,8) size 600x806
-layer at (-221,8) size 1006x806 backgroundClip at (0,0) size 785x585 clip at (0,0) size 785x585
-  LayoutBlockFlow {DIV} at (0,0) size 1006x806 [border: (3px solid #FF0000)]
-scrolled to 229,0
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/layer-due-to-layer-children-deep-switch-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/layer-due-to-layer-children-deep-switch-expected.txt
deleted file mode 100644
index 455b97b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/layer-due-to-layer-children-deep-switch-expected.txt
+++ /dev/null
@@ -1,139 +0,0 @@
-
-First dump layer tree:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
-Second dump layer tree:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='parent'",
-      "position": [8, 8],
-      "bounds": [342, 292]
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='child'",
-      "position": [39, 49],
-      "bounds": [250, 220],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='grandchild'",
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFF00",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='greatgrandchild'",
-      "bounds": [250, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 4
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [49, 59, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [0.866025403784439, 0.5, 0, 0],
-        [-0.5, 0.866025403784439, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [100, 100]
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 0, 0, 1]
-      ]
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [0.5, 0, -0.866025403784439, 0.0021650635094611],
-        [0, 1, 0, 0],
-        [0.866025403784439, 0, 0.5, -0.00125],
-        [-30, 30, 100, 0.75]
-      ],
-      "origin": [125, 50]
-    }
-  ]
-}
-
-Third dump layer tree:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/layer-due-to-layer-children-switch-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/layer-due-to-layer-children-switch-expected.txt
deleted file mode 100644
index 76a28e69..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/layer-due-to-layer-children-switch-expected.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-
-First dump layer tree:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
-Second dump layer tree:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='parent' class='parent'",
-      "position": [8, 8],
-      "bounds": [242, 192]
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='child' class='child'",
-      "bounds": [250, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [129, 49, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [0.707106781186548, 0, -0.707106781186548, 0.00117851130197758],
-        [0, 1, 0, 0],
-        [0.707106781186548, 0, 0.707106781186548, -0.00117851130197758],
-        [-50, 10, 100, 0.833333333333333]
-      ],
-      "origin": [125, 50]
-    }
-  ]
-}
-
-Third dump layer tree:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-opacity-transition-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-opacity-transition-expected.txt
deleted file mode 100644
index 1230b9d4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-opacity-transition-expected.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Test
-Fader
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='compositing'",
-      "bounds": [1, 1],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV class='test')",
-      "position": [-9992, -1],
-      "bounds": [10100, 100]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-overflow-root-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-overflow-root-expected.txt
deleted file mode 100644
index 97ede1b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-overflow-root-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='compositing'",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='indicator')",
-      "bounds": [216, 142]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [21, 21, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-positioned-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-positioned-expected.txt
deleted file mode 100644
index 2dc7d4a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-positioned-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-Text here
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='compositing'",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='indicator')",
-      "position": [-9971, 8],
-      "bounds": [10121, 142]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [29, 29, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-positioned-transition-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-positioned-transition-expected.txt
deleted file mode 100644
index 7525adbb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-positioned-transition-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-Text here
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='compositing'",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='indicator')",
-      "position": [-771, 8],
-      "bounds": [1200, 142]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [29, 29, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-transformed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-transformed-expected.txt
deleted file mode 100644
index 39de212..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/limit-layer-bounds-transformed-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-Text here
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='compositing'",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='indicator')",
-      "position": [-871, 8],
-      "bounds": [1221, 142]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [129, 29, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/preserve-3d-switching-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/preserve-3d-switching-expected.txt
deleted file mode 100644
index cb4bc0cb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/preserve-3d-switching-expected.txt
+++ /dev/null
@@ -1,121 +0,0 @@
-The green box appear angled out from the yellow box and embedded in it.
-
-transform: translateZ(-100px) rotateY(45deg);
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='container'",
-      "position": [108, 72],
-      "bounds": [304, 304]
-    },
-    {
-      "name": "Child Transform Layer",
-      "bounds": [304, 304],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='parent'",
-      "bounds": [280, 280],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFF00",
-      "transform": 4
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "bounds": [200, 200],
-      "opacity": 0.699999988079071,
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 6
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [108, 72, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, -0.002],
-        [0, 0, 0, 1]
-      ],
-      "origin": [152, 152]
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [12, 12, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [0.766044443118978, -0.556670399226419, -0.32139380484327, 0],
-        [0, 0.5, -0.866025403784439, 0],
-        [0.642787609686539, 0.663413948168938, 0.383022221559489, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [140, 140],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 5,
-      "parent": 4,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [40, 40, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 6,
-      "parent": 5,
-      "transform": [
-        [0.766044443118978, 0, 0.642787609686539, 0],
-        [0, 1, 0, 0],
-        [-0.642787609686539, 0, 0.766044443118978, 0],
-        [0, 0, 50, 1]
-      ],
-      "origin": [100, 100],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/vertical-scroll-composited-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/vertical-scroll-composited-expected.txt
deleted file mode 100644
index d3845d2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/vertical-scroll-composited-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-layer at (0,0) size 800x600 scrollY 200.00 scrollWidth 962 scrollHeight 1122
-  LayoutView at (0,0) size 800x600
-layer at (0,-200) size 800x616 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x616
-    LayoutBlockFlow {BODY} at (8,8) size 784x600
-layer at (8,-192) size 806x1006 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {DIV} at (0,0) size 806x1006 [border: (3px solid #FF0000)]
-scrolled to 0,200
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/video-fixed-scrolling-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/video-fixed-scrolling-expected.txt
deleted file mode 100644
index b26ecd3c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/geometry/video-fixed-scrolling-expected.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollY 50.00 scrollHeight 1016
-  LayoutView at (0,0) size 800x600
-layer at (0,-50) size 785x1016 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {HTML} at (0,0) size 785x1016
-    LayoutBlockFlow {BODY} at (8,8) size 769x1000
-      LayoutBlockFlow (anonymous) at (0,0) size 769x385
-        LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {P} at (0,401) size 769x20
-        LayoutText {#text} at (0,0) size 445x19
-          text run at (0,0) width 445: "The blue bar should be in front of the video, and at the top of the page."
-layer at (8,38) size 400x300
-  LayoutVideo {VIDEO} at (0,80) size 400x300
-layer at (8,38) size 400x300
-  LayoutFlexibleBox (relative positioned) {DIV} at (0,0) size 400x300
-    LayoutBlockFlow {DIV} at (0,268) size 400x32
-layer at (8,38) size 400x258
-  LayoutFlexibleBox (relative positioned) {DIV} at (0,0) size 400x258
-layer at (0,0) size 500x60
-  LayoutBlockFlow (positioned) {DIV} at (0,0) size 500x60 [bgcolor=#0000FFCC]
-scrolled to 0,50
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/become-composited-nested-iframes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/become-composited-nested-iframes-expected.txt
deleted file mode 100644
index ab3a4fb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/become-composited-nested-iframes-expected.txt
+++ /dev/null
@@ -1,129 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 1500],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME",
-      "position": [20, 120],
-      "bounds": [284, 204]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [22, 122],
-      "bounds": [280, 200]
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [22, 122],
-      "bounds": [280, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutIFrame IFRAME",
-      "position": [30, 130],
-      "bounds": [252, 172]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [31, 131],
-      "bounds": [250, 170],
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [31, 131],
-      "bounds": [250, 170],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutIFrame IFRAME",
-      "position": [20, 344],
-      "bounds": [284, 204]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [22, 346],
-      "bounds": [280, 200]
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [22, 346],
-      "bounds": [280, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutIFrame IFRAME",
-      "position": [30, 354],
-      "bounds": [252, 172]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [31, 355],
-      "bounds": [250, 170],
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [31, 355],
-      "bounds": [250, 170],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='box' class='composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [49, 141, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [49, 365, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/become-overlapped-iframe-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/become-overlapped-iframe-expected.txt
deleted file mode 100644
index a0ca1cd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/become-overlapped-iframe-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame (floating) IFRAME id='iframe'",
-      "position": [58, 58],
-      "bounds": [350, 200]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [73, 73],
-      "bounds": [320, 170],
-      "drawsContent": false,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [73, 73],
-      "bounds": [305, 170],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [73, 73],
-      "bounds": [305, 230],
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [73, 73],
-      "bounds": [320, 170],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [378, 73],
-      "bounds": [15, 170],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='overlay'",
-      "position": [5, 5],
-      "bounds": [150, 150],
-      "backgroundColor": "#00000099"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [91, 83, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/composited-iframe-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/composited-iframe-scroll-expected.txt
deleted file mode 100644
index ea601c6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/composited-iframe-scroll-expected.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x0
-  LayoutBlockFlow {HTML} at (0,0) size 800x0
-    LayoutBlockFlow {BODY} at (0,0) size 800x0
-layer at (120,120) size 200x200
-  LayoutBlockFlow (positioned) {DIV} at (120,120) size 200x200 [bgcolor=#FF0000]
-layer at (0,100) size 240x245
-  LayoutBlockFlow (positioned) {DIV} at (0,100) size 240x245
-    LayoutText {#text} at (0,0) size 0x0
-layer at (10,110) size 220x220
-  LayoutIFrame {IFRAME} at (10,10) size 220x220
-    layer at (0,0) size 200x200 scrollY 200.00 scrollHeight 400
-      LayoutView at (0,0) size 200x200
-    layer at (0,-200) size 200x400 backgroundClip at (0,0) size 200x200 clip at (0,0) size 200x200
-      LayoutBlockFlow {HTML} at (0,0) size 200x400
-        LayoutBlockFlow {BODY} at (0,0) size 200x400
-          LayoutBlockFlow {DIV} at (0,0) size 200x200 [bgcolor=#FF0000]
-          LayoutBlockFlow {DIV} at (0,200) size 200x200 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/composited-parent-iframe-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/composited-parent-iframe-expected.txt
deleted file mode 100644
index 34974123..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/composited-parent-iframe-expected.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME",
-      "bounds": [368, 218],
-      "transform": 1
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [34, 34],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [34, 34],
-      "bounds": [285, 150],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [34, 34],
-      "bounds": [285, 230],
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [34, 34],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [319, 34],
-      "bounds": [15, 150],
-      "drawsContent": false,
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-11, -11, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [52, 44, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/connect-compositing-iframe-delayed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/connect-compositing-iframe-delayed-expected.txt
deleted file mode 100644
index 56fc6648..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/connect-compositing-iframe-delayed-expected.txt
+++ /dev/null
@@ -1,95 +0,0 @@
-
-When the parent document becomes composited, the layer trees should get connected together.
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME id='iframe'",
-      "position": [9, 109],
-      "bounds": [368, 218]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [43, 143],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [43, 143],
-      "bounds": [285, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [43, 143],
-      "bounds": [285, 230],
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [43, 143],
-      "bounds": [300, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [328, 143],
-      "bounds": [15, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='box' class='composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [61, 153, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/connect-compositing-iframe-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/connect-compositing-iframe-expected.txt
deleted file mode 100644
index 99eeed0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/connect-compositing-iframe-expected.txt
+++ /dev/null
@@ -1,98 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME id='parent-iframe'",
-      "bounds": [368, 218],
-      "transform": 1
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [34, 34],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [34, 34],
-      "bounds": [285, 150],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [34, 34],
-      "bounds": [285, 230],
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='test' class='composited box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [34, 34],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [319, 34],
-      "bounds": [15, 150],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='overlay'",
-      "position": [5, 5],
-      "bounds": [50, 50],
-      "backgroundColor": "#00000033"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [9, 9, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [52, 44, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/connect-compositing-iframe2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/connect-compositing-iframe2-expected.txt
deleted file mode 100644
index f576f72..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/connect-compositing-iframe2-expected.txt
+++ /dev/null
@@ -1,98 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME id='iframe' class='composited'",
-      "bounds": [368, 218],
-      "transform": 1
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [34, 34],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [34, 34],
-      "bounds": [285, 150],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [34, 34],
-      "bounds": [285, 230],
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [34, 34],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [319, 34],
-      "bounds": [15, 150],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='overlay'",
-      "position": [5, 5],
-      "bounds": [50, 50],
-      "backgroundColor": "#00000033"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [9, 9, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [52, 44, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/connect-compositing-iframe3-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/connect-compositing-iframe3-expected.txt
deleted file mode 100644
index 273d795..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/connect-compositing-iframe3-expected.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME id='iframe' class='composited'",
-      "bounds": [368, 218],
-      "transform": 1
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [34, 34],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [34, 34],
-      "bounds": [285, 150],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [34, 34],
-      "bounds": [285, 230],
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [34, 34],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [319, 34],
-      "bounds": [15, 150],
-      "drawsContent": false,
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [9, 9, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [52, 44, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/enter-compositing-iframe-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/enter-compositing-iframe-expected.txt
deleted file mode 100644
index b8c4d9ea..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/enter-compositing-iframe-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME id='parent-iframe'",
-      "position": [9, 9],
-      "bounds": [368, 218]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [43, 43],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [43, 43],
-      "bounds": [285, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [43, 43],
-      "bounds": [285, 230],
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='test' class='composited box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [43, 43],
-      "bounds": [300, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [328, 43],
-      "bounds": [15, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='overlay'",
-      "position": [5, 5],
-      "bounds": [50, 50],
-      "backgroundColor": "#00000033"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [61, 53, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-copy-on-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-copy-on-scroll-expected.txt
deleted file mode 100644
index 4e1e6825..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-copy-on-scroll-expected.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x52
-  LayoutBlockFlow {HTML} at (0,0) size 800x52
-    LayoutBlockFlow {BODY} at (8,16) size 784x20
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 375x19
-          text run at (0,0) width 375: "In pixel results, the blue box should be scrolled out of view."
-layer at (8,52) size 0x0
-  LayoutBlockFlow (positioned) {DIV} at (8,52) size 0x0
-layer at (8,52) size 324x229
-  LayoutBlockFlow (positioned) zI: 1 {DIV} at (8,52) size 324x229
-    LayoutText zI: 1 {#text} at (0,0) size 0x0
-layer at (18,62) size 304x204
-  LayoutIFrame {IFRAME} at (10,10) size 304x204 [border: (2px inset #EEEEEE)]
-    layer at (0,0) size 300x200 clip at (0,0) size 285x200 scrollY 120.00 scrollHeight 1018
-      LayoutView at (0,0) size 300x200
-    layer at (0,-120) size 285x1018 backgroundClip at (0,0) size 285x200 clip at (0,0) size 285x200
-      LayoutBlockFlow {HTML} at (0,0) size 285x1018
-        LayoutBlockFlow {BODY} at (8,10) size 269x1000 [bgcolor=#C0C0C0]
-          LayoutBlockFlow {DIV} at (10,0) size 110x110 [bgcolor=#0000FF]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-in-composited-layer-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-in-composited-layer-expected.png
deleted file mode 100644
index 5c2cc3b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-in-composited-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-in-composited-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-in-composited-layer-expected.txt
deleted file mode 100644
index 00b8aa5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-in-composited-layer-expected.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
-layer at (8,8) size 400x400
-  LayoutBlockFlow {DIV} at (0,0) size 400x400 [bgcolor=#FFFFE0]
-    LayoutText {#text} at (0,0) size 0x0
-layer at (15,15) size 386x386
-  LayoutIFrame {IFRAME} at (7,7) size 386x386 [border: (3px solid #000000)]
-    layer at (0,0) size 380x380 clip at (0,0) size 365x365 scrollX 535.00 scrollY 535.00 scrollWidth 900 scrollHeight 900
-      LayoutView at (0,0) size 380x380
-    layer at (-535,-535) size 900x900 backgroundClip at (0,0) size 365x365 clip at (0,0) size 365x365
-      LayoutBlockFlow (relative positioned) {HTML} at (0,0) size 900x900
-        LayoutBlockFlow {BODY} at (8,8) size 884x349
-    layer at (-535,-535) size 100x100 backgroundClip at (0,0) size 365x365 clip at (0,0) size 365x365
-      LayoutBlockFlow (positioned) {DIV} at (0,0) size 100x100 [bgcolor=#FF0000]
-    layer at (265,265) size 100x100
-      LayoutBlockFlow (positioned) {DIV} at (800,800) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-resize-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-resize-expected.txt
deleted file mode 100644
index 3218c6a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-resize-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME id='parent-iframe' class='bigger'",
-      "position": [9, 9],
-      "bounds": [468, 188]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [43, 43],
-      "bounds": [400, 120],
-      "drawsContent": false,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [43, 43],
-      "bounds": [385, 120],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [43, 43],
-      "bounds": [385, 230],
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [43, 43],
-      "bounds": [400, 120],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [428, 43],
-      "bounds": [15, 120],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='overlay'",
-      "position": [5, 5],
-      "bounds": [50, 50],
-      "backgroundColor": "#00000033"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [61, 53, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-size-from-zero-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-size-from-zero-expected.txt
deleted file mode 100644
index 3fc1d9d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/iframe-size-from-zero-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME id='iframe' class='expanded'",
-      "position": [28, 28],
-      "bounds": [330, 180]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [43, 43],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [43, 43],
-      "bounds": [285, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [43, 43],
-      "bounds": [285, 230],
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [43, 43],
-      "bounds": [300, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [328, 43],
-      "bounds": [15, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='overlay'",
-      "position": [5, 5],
-      "bounds": [50, 50],
-      "backgroundColor": "#00000033"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [61, 53, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/invisible-nested-iframe-hide-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/invisible-nested-iframe-hide-expected.txt
deleted file mode 100644
index ab8f45f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/invisible-nested-iframe-hide-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [18, 10, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/invisible-nested-iframe-show-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/invisible-nested-iframe-show-expected.txt
deleted file mode 100644
index 1532c69..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/invisible-nested-iframe-show-expected.txt
+++ /dev/null
@@ -1,118 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME",
-      "position": [-11, -11],
-      "bounds": [368, 218]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [23, 23],
-      "bounds": [300, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [23, 23],
-      "bounds": [285, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [23, 23],
-      "bounds": [285, 193]
-    },
-    {
-      "name": "LayoutIFrame IFRAME",
-      "position": [31, 31],
-      "bounds": [252, 172]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [32, 32],
-      "bounds": [250, 170],
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [32, 32],
-      "bounds": [250, 170],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [23, 23],
-      "bounds": [300, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [308, 23],
-      "bounds": [15, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 3
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 42, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [18, 203, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/nested-iframe-scrolling-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/nested-iframe-scrolling-expected.txt
deleted file mode 100644
index d4ee64c5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/nested-iframe-scrolling-expected.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (0,0) size 800x600
-      LayoutText {#text} at (0,0) size 0x0
-layer at (0,0) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (0,0) size 100x100 [bgcolor=#FF0000]
-layer at (0,0) size 320x200
-  LayoutIFrame {IFRAME} at (0,0) size 320x200
-    layer at (0,0) size 320x200
-      LayoutView at (0,0) size 320x200
-    layer at (0,0) size 320x200
-      LayoutBlockFlow {HTML} at (0,0) size 320x200
-        LayoutBlockFlow {BODY} at (0,0) size 320x200
-          LayoutText {#text} at (0,0) size 0x0
-    layer at (0,0) size 300x150
-      LayoutIFrame {IFRAME} at (0,0) size 300x150
-        layer at (0,0) size 300x150 scrollY 100.00 scrollHeight 1100
-          LayoutView at (0,0) size 300x150
-        layer at (0,-100) size 300x1100 backgroundClip at (0,0) size 300x150 clip at (0,0) size 300x150
-          LayoutBlockFlow {HTML} at (0,0) size 300x1100
-            LayoutBlockFlow {BODY} at (0,100) size 300x1000
-              LayoutBlockFlow {DIV} at (0,0) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/overlapped-iframe-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/overlapped-iframe-expected.txt
deleted file mode 100644
index 337c8ded..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/overlapped-iframe-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME id='parent-iframe'",
-      "position": [9, 9],
-      "bounds": [368, 218]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [43, 43],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [43, 43],
-      "bounds": [285, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [43, 43],
-      "bounds": [285, 230],
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [43, 43],
-      "bounds": [300, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [328, 43],
-      "bounds": [15, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='overlay'",
-      "position": [5, 5],
-      "bounds": [50, 50],
-      "backgroundColor": "#00000033"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [61, 53, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/overlapped-iframe-iframe-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/overlapped-iframe-iframe-expected.txt
deleted file mode 100644
index c3c1d6f8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/overlapped-iframe-iframe-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame (positioned) IFRAME",
-      "bounds": [304, 304]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [2, 2],
-      "bounds": [300, 300],
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [2, 2],
-      "bounds": [300, 300],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutIFrame (positioned) IFRAME id='overlap'",
-      "position": [250, 0],
-      "bounds": [304, 304]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [20, 12, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/overlapped-nested-iframes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/overlapped-nested-iframes-expected.txt
deleted file mode 100644
index c915ecb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/overlapped-nested-iframes-expected.txt
+++ /dev/null
@@ -1,155 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 1650],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutIFrame IFRAME",
-      "position": [20, 150],
-      "bounds": [284, 204],
-      "transform": 1
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [22, 152],
-      "bounds": [280, 200],
-      "transform": 1
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [22, 152],
-      "bounds": [280, 200],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutIFrame IFRAME",
-      "position": [30, 160],
-      "bounds": [252, 172],
-      "transform": 1
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [31, 161],
-      "bounds": [250, 170],
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [31, 161],
-      "bounds": [250, 170],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "LayoutIFrame IFRAME",
-      "position": [20, 374],
-      "bounds": [284, 204],
-      "transform": 1
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [22, 376],
-      "bounds": [280, 200],
-      "transform": 1
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [22, 376],
-      "bounds": [280, 200],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutIFrame IFRAME",
-      "position": [30, 384],
-      "bounds": [252, 172],
-      "transform": 1
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [31, 385],
-      "bounds": [250, 170],
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [31, 385],
-      "bounds": [250, 170],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='banner'",
-      "position": [0, 100],
-      "bounds": [785, 120],
-      "backgroundColor": "#00000080",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [49, 171, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [49, 395, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/resizer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/resizer-expected.txt
deleted file mode 100644
index 6a316bb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/resizer-expected.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME class='container'",
-      "bounds": [304, 154],
-      "transform": 1
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [2, 2],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [2, 2],
-      "bounds": [285, 150],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [2, 2],
-      "bounds": [285, 230],
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [2, 2],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [287, 2],
-      "bounds": [15, 150],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [304, 154],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [287, 137],
-      "bounds": [15, 15],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [20, 12, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/scrolling-iframe-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/scrolling-iframe-expected.txt
deleted file mode 100644
index 791f495..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/scrolling-iframe-expected.txt
+++ /dev/null
@@ -1,106 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME id='parent-iframe'",
-      "position": [9, 9],
-      "bounds": [368, 218]
-    },
-    {
-      "name": "LayoutView #document",
-      "position": [43, 43],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [43, 43],
-      "bounds": [285, 135],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [43, 43],
-      "bounds": [508, 608],
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [43, 43],
-      "bounds": [300, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [43, 178],
-      "bounds": [285, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [328, 43],
-      "bounds": [15, 135],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [328, 178],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='overlay'",
-      "position": [5, 5],
-      "bounds": [50, 50],
-      "backgroundColor": "#00000033"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-80, -80, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [151, 143, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/visibility-hidden-transformed-content-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/visibility-hidden-transformed-content-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/iframes/visibility-hidden-transformed-content-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/images/clip-on-directly-composited-image-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/images/clip-on-directly-composited-image-expected.txt
deleted file mode 100644
index 76ea8b3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/images/clip-on-directly-composited-image-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutImage (positioned) IMG class='composited'",
-      "bounds": [140, 140],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [210, 23, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/images/direct-image-clip-path-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/images/direct-image-clip-path-expected.png
deleted file mode 100644
index b5b5f2b2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/images/direct-image-clip-path-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/images/direct-image-dynamic-border-draws-content-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/images/direct-image-dynamic-border-draws-content-expected.txt
deleted file mode 100644
index 8d8afad..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/images/direct-image-dynamic-border-draws-content-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-
-layer tree before image style change
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutImage IMG class='composited'",
-      "bounds": [256, 256],
-      "drawsContent": false,
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ]
-}
-
-layer tree after image style change
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutImage IMG class='composited border'",
-      "bounds": [260, 260],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ]
-}
-
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/images/direct-image-dynamic-clip-path-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/images/direct-image-dynamic-clip-path-expected.png
deleted file mode 100644
index b5b5f2b2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/images/direct-image-dynamic-clip-path-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/animation-overlap-with-children-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/animation-overlap-with-children-expected.txt
deleted file mode 100644
index 7470618..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/animation-overlap-with-children-expected.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-Should be compositedShould not be composited
-Should be composited
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='to-animate' class='container animating'",
-      "position": [8, 8],
-      "bounds": [262, 212]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "position": [8, 8],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited banner'",
-      "bounds": [250, 50],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='test1 box')",
-      "position": [19, 29],
-      "bounds": [100, 100]
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='box'",
-      "position": [18, 230],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [14, 14, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/assumed-overlap-for-inline-transform-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/assumed-overlap-for-inline-transform-expected.txt
deleted file mode 100644
index 07097cf..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/assumed-overlap-for-inline-transform-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='box'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV class='box')",
-      "position": [8, 108],
-      "bounds": [100, 100]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-and-transform-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-and-transform-expected.txt
deleted file mode 100644
index 18f49dd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-and-transform-expected.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 5021],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='indicator'",
-      "bounds": [256, 256],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='overlap'",
-      "position": [0, 1000],
-      "bounds": [500, 500],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 1100, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt
deleted file mode 100644
index f97d6cc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-Layer tree when the fixed elements are out-of-view (should have just a root layer):
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 4016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='fixed1'",
-      "position": [100, -100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='fixed2'",
-      "position": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    }
-  ]
-}
-Layer tree when the fixed elements are in-view (both fixed elements should have layers):
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 4016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='fixed1'",
-      "position": [100, 50],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='fixed2'",
-      "position": [100, 100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    }
-  ]
-}
-Layer tree when the fixed elements are out-of-view again (should have just a root layer):
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 4016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='fixed1'",
-      "position": [100, -100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='fixed2'",
-      "position": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-in-fixed-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-in-fixed-overflow-expected.txt
deleted file mode 100644
index 3cfeca2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-in-fixed-overflow-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='overflow fixed'",
-      "position": [8, 13],
-      "bounds": [800, 600]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 13],
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 13],
-      "bounds": [785, 1000]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='yellow fixed'",
-      "position": [200, 13],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFF00"
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 13],
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [793, 13],
-      "bounds": [15, 600],
-      "drawsContent": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-no-content-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-no-content-expected.txt
deleted file mode 100644
index 32a91e08..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-no-content-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 1021],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [10, 10],
-      "bounds": [50, 50],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='absolute'",
-      "position": [40, 40],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-nonscrollable-body-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-nonscrollable-body-expected.txt
deleted file mode 100644
index b6df438..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-nonscrollable-body-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 4021],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt
deleted file mode 100644
index c8add14..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-Even though the fixed-position element's container is nonscrollable, it should still be composited because one of its ancestors is scrolling.
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='scrollable bigBox'",
-      "position": [8, 72],
-      "bounds": [302, 302]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [9, 73],
-      "bounds": [285, 285],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [9, 73],
-      "bounds": [285, 800]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 72],
-      "bounds": [302, 302],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [9, 358],
-      "bounds": [285, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [294, 73],
-      "bounds": [15, 285],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [294, 358],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed lime box'",
-      "position": [10, 100],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FF00"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-nonscrollable-body-overlap-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-nonscrollable-body-overlap-expected.txt
deleted file mode 100644
index d880c7f2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-nonscrollable-body-overlap-expected.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-Even though we can opt-out of fixed-position compositing for unscrollable fixed-position containers, we still need to composite fixed-position layers that need compositing for other reasons such as overlap.
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 4024],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='absolute composited red box'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed lime box'",
-      "position": [10, 100],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FF00"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [10, 100, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt
deleted file mode 100644
index 85d5be0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page-expected.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-In all iframes, the green fixed-position element should not be composited.
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 4016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box'",
-      "bounds": [300, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutIFrame (positioned) IFRAME id='iframe2' class='composited'",
-      "bounds": [154, 154],
-      "transform": 2
-    },
-    {
-      "name": "LayoutIFrame (positioned) IFRAME id='iframe3'",
-      "position": [10, 380],
-      "bounds": [154, 154]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 360, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [10, 200, 0, 1]
-      ]
-    }
-  ]
-}
-Composited box underneath iframe. 
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-expected.txt
deleted file mode 100644
index 50c64c41..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-expected.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 1021],
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow HTML",
-      "bounds": [785, 1021]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [8, 1013],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [8, -100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [1000, 0],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow HTML (foreground) Layer",
-      "bounds": [785, 1021]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt
deleted file mode 100644
index 647b13d4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt
+++ /dev/null
@@ -1,118 +0,0 @@
-PASS layerTree is internals.layerTreeAsText(document)
-PASS successfullyParsed is true
-
-TEST COMPLETE
-The layer trees before and after should be the same, except for the position of the 50x50 sized composited fixed position layer.
-BEFORE:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positionedAndTransformed fixed'",
-      "bounds": [50, 50],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [20, -80, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 100, 0, 1]
-      ]
-    }
-  ]
-}
-AFTER:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positionedAndTransformed fixed'",
-      "bounds": [50, 50],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 3
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -10, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [20, -70, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 100, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt
deleted file mode 100644
index fe2a07fc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt
+++ /dev/null
@@ -1,169 +0,0 @@
-Not scaled:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [1600, 1200],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [1600, 1200],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [4008, 4016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [8, -100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [8, 1008],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [1000, 0],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [600, 0],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    }
-  ]
-}
-Scale=0.5:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [1600, 1200],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [1600, 1200],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [4008, 4016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [8, -100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [8, 1008],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [1000, 0],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [600, 0],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    }
-  ]
-}
-Scale=1.5:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [1600, 1200],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [1600, 1200],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [4008, 4016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [8, -100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [8, 1008],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [1000, 0],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [600, 0],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt
deleted file mode 100644
index 20cc1ac..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt
+++ /dev/null
@@ -1,226 +0,0 @@
-Not scaled:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [1600, 1200],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [1600, 1200],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [4008, 4016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [108, 0],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [108, 1108],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [1100, 100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [700, 100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [100, 100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-100, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-Scale=0.5:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [1600, 1200],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [1600, 1200],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [4008, 4016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [108, 0],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [108, 1108],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [1100, 100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [700, 100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [100, 100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-100, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-Scale=1.5:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [1600, 1200],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [1600, 1200],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [4008, 4016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [108, 0],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [108, 1108],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [1100, 100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [700, 100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [100, 100],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-100, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter-expected.txt
deleted file mode 100644
index 9e5b62b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 1021],
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow HTML",
-      "bounds": [785, 1021]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [8, 1013],
-      "bounds": [10, 10]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [8, -100],
-      "bounds": [10, 10]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "position": [1000, 0],
-      "bounds": [10, 10]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "bounds": [10, 10]
-    },
-    {
-      "name": "LayoutBlockFlow HTML (foreground) Layer",
-      "bounds": [785, 1021]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-under-transform-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-under-transform-expected.txt
deleted file mode 100644
index 9c799d4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-under-transform-expected.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 5021],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='transform'",
-      "bounds": [256, 256],
-      "contentsOpaque": true,
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='overlap'",
-      "position": [0, 1000],
-      "bounds": [500, 500],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [108, 113, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 1000, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/impl-thread-scrolling-non-composited-fixed-no-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/impl-thread-scrolling-non-composited-fixed-no-scroll-expected.txt
deleted file mode 100644
index b34e776..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/impl-thread-scrolling-non-composited-fixed-no-scroll-expected.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-TEST
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/main-thread-scrolling-for-non-composited-fixed-position-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/main-thread-scrolling-for-non-composited-fixed-position-expected.txt
deleted file mode 100644
index 4b17ce5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/main-thread-scrolling-for-non-composited-fixed-position-expected.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-TEST
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 5021],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-Has non-layer viewport-constrained objects
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/main-thread-scrolling-non-composited-fixed-overflow-hidden-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/main-thread-scrolling-non-composited-fixed-overflow-hidden-expected.txt
deleted file mode 100644
index 3c2a447..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/main-thread-scrolling-non-composited-fixed-overflow-hidden-expected.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-TEST
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 5021],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-Has non-layer viewport-constrained objects
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/no-compositing-for-fixed-position-under-transform-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/no-compositing-for-fixed-position-under-transform-expected.txt
deleted file mode 100644
index 5b1f84b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/no-compositing-for-fixed-position-under-transform-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-TEST
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='transform'",
-      "bounds": [100, 30],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt
deleted file mode 100644
index 76290b9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/no-compositing-for-preserve-3d-expected.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-This layer should not be composited.
-This layer should not be composited.
-This layer should be composited.
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 618],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='preserve3d'",
-      "bounds": [342, 182],
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='box'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 4
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [18, 394, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "renderingContext": 1
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [31, 51, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [0.984807753012208, 0, -0.17364817766693, 0],
-        [0, 1, 0, 0],
-        [0.17364817766693, 0, 0.984807753012208, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overflow-scroll-overlap-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overflow-scroll-overlap-expected.txt
deleted file mode 100644
index 0bc9060..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overflow-scroll-overlap-expected.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited'",
-      "bounds": [30, 30],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='scroller' class='overflow')",
-      "position": [20, 20],
-      "bounds": [306, 206]
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [23, 23],
-      "bounds": [285, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='box'",
-      "position": [43, 29],
-      "bounds": [200, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV class='box')",
-      "position": [43, 184],
-      "bounds": [210, 100]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-animation-clipping-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-animation-clipping-expected.txt
deleted file mode 100644
index 1d920582..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-animation-clipping-expected.txt
+++ /dev/null
@@ -1,129 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 812],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='to-animate1' class='box animating1'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='container'",
-      "position": [58, 230],
-      "bounds": [122, 462],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [59, 231],
-      "bounds": [120, 460],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='box gray force-layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 4
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='to-animate2' class='box animating2'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 6
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='box yellow'",
-      "position": [69, 571],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFF00"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='box yellow'",
-      "position": [18, 702],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFF00"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ]
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ]
-    },
-    {
-      "id": 5,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ]
-    },
-    {
-      "id": 6,
-      "parent": 5,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-animation-container-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-animation-container-expected.txt
deleted file mode 100644
index 78e7a1a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-animation-container-expected.txt
+++ /dev/null
@@ -1,191 +0,0 @@
-Before:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 802],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='to-animate1' class='box animating1'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='container'",
-      "position": [47, 230],
-      "bounds": [144, 452],
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "position": [47, 230],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='box gray force-layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 4
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV class='box yellow')",
-      "position": [18, 692],
-      "bounds": [100, 100]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
-After:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 802],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='to-animate1' class='box animating1'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='container'",
-      "position": [58, 230],
-      "bounds": [122, 452],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "position": [58, 230],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='box gray force-layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 4
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='first-green-box' class='box green rotate-45deg')",
-      "position": [18, 328],
-      "bounds": [174, 464]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-animation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-animation-expected.txt
deleted file mode 100644
index 0f1c74b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-animation-expected.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='container'",
-      "position": [8, 8],
-      "bounds": [122, 242]
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [9, 9],
-      "bounds": [120, 240],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='to-animate' class='animating box'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='box'",
-      "position": [19, 129],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [...],
-        [...],
-        [...],
-        [...]
-      ],
-      "origin": [50, 50]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-child-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-child-layer-expected.txt
deleted file mode 100644
index 3a335141..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-child-layer-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container'",
-      "bounds": [256, 256],
-      "contentsOpaque": true
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='green')",
-      "bounds": [300, 300]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-clipping-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-clipping-expected.txt
deleted file mode 100644
index f2c359c09..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-clipping-expected.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [50, 50],
-      "bounds": [100, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='child'",
-      "bounds": [500, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='child'",
-      "bounds": [500, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='overlap')",
-      "position": [450, 200],
-      "bounds": [100, 100]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 50, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 200, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-3d-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-3d-expected.txt
deleted file mode 100644
index 66cad29..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-3d-expected.txt
+++ /dev/null
@@ -1,114 +0,0 @@
-Before:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='green-box' class='box green center composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [108, 108, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, -1, 1]
-      ]
-    }
-  ]
-}
-
-After:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='green-box' class='box green center composited rotated-3d'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box top left')",
-      "position": [8, 8],
-      "bounds": [300, 300]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [108, 108, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [0.707106781186548, 0.707106781186548, 0, 0],
-        [-0.707106781186548, 0.707106781186548, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, -1, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-and-clipped-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-and-clipped-expected.txt
deleted file mode 100644
index 7f07d31..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-and-clipped-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container clips'",
-      "bounds": [100, 100],
-      "transform": 1
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='under composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='over')",
-      "bounds": [100, 100],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [110, 0, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-layer-expected.txt
deleted file mode 100644
index 22453511..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-layer-expected.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='container'",
-      "bounds": [256, 256],
-      "contentsOpaque": true,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='composited'",
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='green'",
-      "bounds": [300, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [23, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-10, 0, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [385, 0, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-layer-with-transform-body-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-layer-with-transform-body-expected.txt
deleted file mode 100644
index 431ff2a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-layer-with-transform-body-expected.txt
+++ /dev/null
@@ -1,87 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow BODY",
-      "bounds": [784, 584],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='container'",
-      "bounds": [256, 256],
-      "contentsOpaque": true,
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='composited'",
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "transform": 4
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='green'",
-      "bounds": [300, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [15, 0, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-10, 0, 0, 1]
-      ]
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [385, 0, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-preserved-3d-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-preserved-3d-expected.txt
deleted file mode 100644
index afdcb847..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transformed-preserved-3d-expected.txt
+++ /dev/null
@@ -1,392 +0,0 @@
-123456Before:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='green-box' class='center box-container'",
-      "position": [108, 108],
-      "contentsOpaque": true,
-      "drawsContent": false
-    },
-    {
-      "name": "Child Transform Layer",
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='camera' class='rotate-3d-start'",
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='side side-1'",
-      "bounds": [100, 100],
-      "backgroundColor": "#00FF00CC",
-      "transform": 4
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='side side-2'",
-      "bounds": [100, 100],
-      "backgroundColor": "#00FF00CC",
-      "transform": 5
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='side side-3'",
-      "bounds": [100, 100],
-      "backgroundColor": "#00FF00CC",
-      "transform": 6
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='side side-4'",
-      "bounds": [100, 100],
-      "backgroundColor": "#00FF00CC",
-      "transform": 7
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='side side-5'",
-      "bounds": [100, 100],
-      "backgroundColor": "#00FF00CC",
-      "transform": 8
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='side side-6'",
-      "bounds": [100, 100],
-      "backgroundColor": "#00FF00CC",
-      "transform": 9
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [108, 108, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, -0.005],
-        [0, 0, 0, 1]
-      ],
-      "origin": [50, 50]
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [0.353553390593274, 0.25, -0.5, 0],
-        [0, 0.353553390593274, 0.707106781186548, 0],
-        [0.353553390593274, -0.25, 0.5, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 50, 1]
-      ],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 5,
-      "parent": 3,
-      "transform": [
-        [0, 0, -1, 0],
-        [0, 1, 0, 0],
-        [1, 0, 0, 0],
-        [50, 0, 0, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 6,
-      "parent": 3,
-      "transform": [
-        [-1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, -1, 0],
-        [0, 0, -50, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 7,
-      "parent": 3,
-      "transform": [
-        [0, 0, 1, 0],
-        [0, 1, 0, 0],
-        [-1, 0, 0, 0],
-        [-50, 0, 0, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 8,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1, 0, 0],
-        [0, -50, 0, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 9,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 0, -1, 0],
-        [0, 1, 0, 0],
-        [0, 50, 0, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    }
-  ]
-}
-
-After:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='green-box' class='center box-container'",
-      "position": [108, 108],
-      "contentsOpaque": true,
-      "drawsContent": false
-    },
-    {
-      "name": "Child Transform Layer",
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='camera' class='rotate-3d-start rotate-3d-end'",
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='side side-1'",
-      "bounds": [100, 100],
-      "backgroundColor": "#00FF00CC",
-      "transform": 4
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='side side-2'",
-      "bounds": [100, 100],
-      "backgroundColor": "#00FF00CC",
-      "transform": 5
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='side side-3'",
-      "bounds": [100, 100],
-      "backgroundColor": "#00FF00CC",
-      "transform": 6
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='side side-4'",
-      "bounds": [100, 100],
-      "backgroundColor": "#00FF00CC",
-      "transform": 7
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='side side-5'",
-      "bounds": [100, 100],
-      "backgroundColor": "#00FF00CC",
-      "transform": 8
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='side side-6'",
-      "bounds": [100, 100],
-      "backgroundColor": "#00FF00CC",
-      "transform": 9
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='box top left'",
-      "position": [8, 8],
-      "bounds": [100, 150],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box top right')",
-      "position": [8, 8],
-      "bounds": [300, 300]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [108, 108, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, -0.005],
-        [0, 0, 0, 1]
-      ],
-      "origin": [50, 50]
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [0.707106781186548, 0.5, -0.5, 0],
-        [0, 0.707106781186548, 0.707106781186548, 0],
-        [0.707106781186548, -0.5, 0.5, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 50, 1]
-      ],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 5,
-      "parent": 3,
-      "transform": [
-        [0, 0, -1, 0],
-        [0, 1, 0, 0],
-        [1, 0, 0, 0],
-        [50, 0, 0, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 6,
-      "parent": 3,
-      "transform": [
-        [-1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, -1, 0],
-        [0, 0, -50, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 7,
-      "parent": 3,
-      "transform": [
-        [0, 0, 1, 0],
-        [0, 1, 0, 0],
-        [-1, 0, 0, 0],
-        [-50, 0, 0, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 8,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1, 0, 0],
-        [0, -50, 0, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 9,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 0, -1, 0],
-        [0, 1, 0, 0],
-        [0, 50, 0, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transforms-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transforms-expected.txt
deleted file mode 100644
index 6d2c9d99..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/overlap-transforms-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='container'",
-      "position": [8, 8],
-      "bounds": [122, 242]
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [9, 9],
-      "bounds": [120, 240],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='transformed box'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [19, 19, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/remove-clipping-layer-with-no-children-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/remove-clipping-layer-with-no-children-expected.txt
deleted file mode 100644
index 1ee4c0b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/remove-clipping-layer-with-no-children-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='parent' class='fade'",
-      "bounds": [400, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFC0CB",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/rotate3d-overlap-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/rotate3d-overlap-expected.txt
deleted file mode 100644
index a15ea10..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/rotate3d-overlap-expected.txt
+++ /dev/null
@@ -1,115 +0,0 @@
- 
- 
- {
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='box translateZ'",
-      "bounds": [110, 110],
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='composited box rotate15'",
-      "bounds": [110, 110],
-      "backgroundColor": "#0000FF",
-      "transform": 3
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV class='box')",
-      "position": [167, 143],
-      "bounds": [110, 110]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='composited box rotate45'",
-      "bounds": [110, 110],
-      "backgroundColor": "#0000FF",
-      "transform": 5
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV class='box')",
-      "position": [311, 143],
-      "bounds": [110, 110]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [23, 23, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [167, 23, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [0.965925826289068, 0.258819045102521, 0, 0],
-        [-0.258819045102521, 0.965925826289068, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [55, 55],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 4,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [311, 23, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 5,
-      "parent": 4,
-      "transform": [
-        [0.707106781186548, 0.707106781186548, 0, 0],
-        [-0.707106781186548, 0.707106781186548, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [55, 55],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/scroll-partial-update-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/scroll-partial-update-expected.txt
deleted file mode 100644
index 6781d55..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/scroll-partial-update-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-scroll me
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='composited'",
-      "bounds": [20, 20],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='overlay')",
-      "position": [10, 8],
-      "bounds": [400, 204]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/spanOverlapsCanvas-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/spanOverlapsCanvas-expected.txt
deleted file mode 100644
index b5d0107..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/spanOverlapsCanvas-expected.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutHTMLCanvas CANVAS id='world'",
-      "position": [8, 8],
-      "bounds": [100, 50]
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='output')",
-      "position": [8, 8],
-      "bounds": [100, 50]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/squashing-into-ancestor-clipping-layer-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/squashing-into-ancestor-clipping-layer-change-expected.txt
deleted file mode 100644
index 623ad00..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/squashing-into-ancestor-clipping-layer-change-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [8, 8],
-      "bounds": [100, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FA8072",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='squashed')",
-      "position": [8, 58],
-      "bounds": [100, 100]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 58, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/stacking-context-overlap-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/stacking-context-overlap-expected.txt
deleted file mode 100644
index d583f67..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/stacking-context-overlap-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='trigger'",
-      "bounds": [20, 20],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV class='container')",
-      "position": [8, 18],
-      "bounds": [142, 142]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/stacking-context-overlap-nested-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/stacking-context-overlap-nested-expected.txt
deleted file mode 100644
index 2b69e7c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/stacking-context-overlap-nested-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box'",
-      "bounds": [120, 120],
-      "backgroundColor": "#008000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box'",
-      "bounds": [220, 120],
-      "backgroundColor": "#FF000099",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='indicator'",
-      "position": [75, 75],
-      "bounds": [56, 56],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [10, 10, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/translatez-added-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/translatez-added-expected.txt
deleted file mode 100644
index 40a8158..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/translatez-added-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='test' class='box composited'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [18, 10, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/translatez-overlap-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/translatez-overlap-expected.txt
deleted file mode 100644
index e96f63e5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/translatez-overlap-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='composited box'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [18, 10, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/translatez-removed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/translatez-removed-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/translatez-removed-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-tree-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-tree-expected.txt
deleted file mode 100644
index 18acd2b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-tree-expected.txt
+++ /dev/null
@@ -1,146 +0,0 @@
-Layer tree:
-{
-  "name": "Root Transform Layer",
-  "drawsContent": false,
-  "children": [
-    {
-      "name": "Inner Viewport Container Layer",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "children": [
-        {
-          "name": "Overscroll Elasticity Layer",
-          "drawsContent": false,
-          "children": [
-            {
-              "name": "Page Scale Layer",
-              "drawsContent": false,
-              "children": [
-                {
-                  "name": "Inner Viewport Scroll Layer",
-                  "bounds": [800, 600],
-                  "drawsContent": false,
-                  "children": [
-                    {
-                      "name": "LayoutView #document",
-                      "bounds": [800, 600],
-                      "drawsContent": false,
-                      "backgroundColor": "#FFFFFF",
-                      "shouldFlattenTransform": false,
-                      "children": [
-                        {
-                          "name": "Scrolling Layer",
-                          "bounds": [780, 580],
-                          "drawsContent": false,
-                          "flattenInheritedTransform": false,
-                          "shouldFlattenTransform": false,
-                          "children": [
-                            {
-                              "name": "Scrolling Contents Layer",
-                              "bounds": [1200, 900],
-                              "contentsOpaque": true,
-                              "backgroundColor": "#FFFFFF",
-                              "flattenInheritedTransform": false
-                            }
-                          ]
-                        }
-                      ]
-                    }
-                  ]
-                }
-              ]
-            }
-          ]
-        },
-        {
-          "name": "Overflow Controls Host Layer",
-          "bounds": [800, 600],
-          "drawsContent": false,
-          "children": [
-            {
-              "name": "Horizontal Scrollbar Layer",
-              "position": [0, 580],
-              "bounds": [780, 20]
-            },
-            {
-              "name": "Vertical Scrollbar Layer",
-              "position": [780, 0],
-              "bounds": [20, 580]
-            },
-            {
-              "name": "Scroll Corner Layer",
-              "position": [780, 580],
-              "bounds": [20, 20]
-            }
-          ]
-        }
-      ]
-    }
-  ]
-}
-
-Layer list
-{
-  "layers": [
-    {
-      "name": "Root Transform Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "Inner Viewport Container Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Overscroll Elasticity Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "Page Scale Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "Inner Viewport Scroll Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [780, 580],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1200, 900],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [0, 580],
-      "bounds": [780, 20]
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [780, 0],
-      "bounds": [20, 580]
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [780, 580],
-      "bounds": [20, 20]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/mask-with-added-filters-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/mask-with-added-filters-expected.png
deleted file mode 100644
index 8bbc8e7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/mask-with-added-filters-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/mask-with-added-filters-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/mask-with-added-filters-expected.txt
deleted file mode 100644
index 238451ca..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/mask-with-added-filters-expected.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 646
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 785x646 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {HTML} at (0,0) size 785x646
-    LayoutBlockFlow {BODY} at (8,16) size 769x622
-      LayoutBlockFlow {P} at (0,0) size 769x40
-        LayoutText {#text} at (0,0) size 748x39
-          text run at (0,0) width 748: "Testing masks with filters on compositing layers. Left and right columns should look almost the same, composited filter"
-          text run at (0,20) width 139: "look slightly different."
-      LayoutBlockFlow (anonymous) at (0,56) size 769x566
-        LayoutText {#text} at (262,546) size 4x19
-          text run at (262,546) width 4: " "
-        LayoutText {#text} at (0,0) size 0x0
-layer at (8,72) size 262x562 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow (relative positioned) {DIV} at (0,0) size 262x562 [border: (1px solid #000000)]
-    LayoutText {#text} at (0,0) size 0x0
-layer at (9,73) size 260x560 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600 transparent
-  LayoutImage {IMG} at (1,1) size 260x560
-layer at (274,72) size 262x562 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow (relative positioned) {DIV} at (266,0) size 262x562 [border: (1px solid #000000)]
-    LayoutText {#text} at (0,0) size 0x0
-layer at (275,73) size 260x560 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600 transparent
-  LayoutImage {IMG} at (1,1) size 260x560
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/mask-with-removed-filters-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/mask-with-removed-filters-expected.png
deleted file mode 100644
index 10537ebd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/mask-with-removed-filters-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/mask-with-removed-filters-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/mask-with-removed-filters-expected.txt
deleted file mode 100644
index 36132a99..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/mask-with-removed-filters-expected.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 626
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 785x626 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {HTML} at (0,0) size 785x626
-    LayoutBlockFlow {BODY} at (8,16) size 769x602
-      LayoutBlockFlow {P} at (0,0) size 769x20
-        LayoutText {#text} at (0,0) size 594x19
-          text run at (0,0) width 594: "Testing masks with filters on compositing layers. Left and right columns should look the same."
-      LayoutBlockFlow (anonymous) at (0,36) size 769x566
-        LayoutBlockFlow {DIV} at (0,0) size 262x562 [border: (1px solid #000000)]
-          LayoutText {#text} at (0,0) size 0x0
-        LayoutText {#text} at (262,546) size 4x19
-          text run at (262,546) width 4: " "
-        LayoutBlockFlow {DIV} at (266,0) size 262x562 [border: (1px solid #000000)]
-          LayoutText {#text} at (0,0) size 0x0
-        LayoutText {#text} at (0,0) size 0x0
-layer at (9,53) size 260x560 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600 transparent
-  LayoutImage {IMG} at (1,1) size 260x560
-layer at (275,53) size 260x560 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600 transparent
-  LayoutImage {IMG} at (1,1) size 260x560
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/masked-ancestor-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/masked-ancestor-expected.txt
deleted file mode 100644
index 1cf783e1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/masks/masked-ancestor-expected.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 619
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 785x619 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {HTML} at (0,0) size 785x619
-    LayoutBlockFlow {BODY} at (8,8) size 769x603
-      LayoutBlockFlow {P} at (0,0) size 769x20
-        LayoutText {#text} at (0,0) size 523x19
-          text run at (0,0) width 523: "Testing masks on compositing layers. Left and right columns should look the same."
-      LayoutBlockFlow (anonymous) at (0,36) size 769x567
-        LayoutText {#text} at (262,547) size 4x19
-          text run at (262,547) width 4: " "
-        LayoutText {#text} at (0,0) size 0x0
-layer at (8,44) size 262x562 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600 transparent
-  LayoutBlockFlow {DIV} at (0,0) size 262x562 [border: (1px solid #000000)]
-layer at (39,75) size 200x200
-  LayoutBlockFlow (relative positioned) {DIV} at (31,31) size 200x200 [bgcolor=#6464FFCC] [border: (10px solid #000000)]
-layer at (274,44) size 262x562 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600 transparent
-  LayoutBlockFlow {DIV} at (266,0) size 262x562 [border: (1px solid #000000)]
-layer at (305,75) size 200x200
-  LayoutBlockFlow (relative positioned) {DIV} at (31,31) size 200x200 [bgcolor=#6464FFCC] [border: (10px solid #000000)]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt
deleted file mode 100644
index 871971a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective-expected.txt
+++ /dev/null
@@ -1,150 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container'",
-      "position": [8, 8],
-      "bounds": [200, 200]
-    },
-    {
-      "name": "Child Transform Layer",
-      "bounds": [200, 200],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [185, 185],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [185, 290],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='child first'",
-      "bounds": [60, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 4
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='child second'",
-      "bounds": [60, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 6
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 193],
-      "bounds": [185, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [193, 8],
-      "bounds": [15, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [193, 193],
-      "bounds": [15, 15]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, -0.01],
-        [0, 0, 0, 1]
-      ],
-      "origin": [100, 100],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 65, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 10, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 5,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [65, 65, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 6,
-      "parent": 5,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 20, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/accelerated-scrolling-with-clip-path-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/accelerated-scrolling-with-clip-path-expected.txt
deleted file mode 100644
index 67b96be..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/accelerated-scrolling-with-clip-path-expected.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x416
-  LayoutBlockFlow {HTML} at (0,0) size 800x416
-    LayoutBlockFlow {BODY} at (8,8) size 784x400
-layer at (8,8) size 400x400 clip at (8,8) size 385x385 scrollWidth 500 scrollHeight 700
-  LayoutBlockFlow {DIV} at (0,0) size 400x400 [bgcolor=#0000FF]
-    LayoutBlockFlow {DIV} at (0,0) size 100x100 [bgcolor=#008000]
-    LayoutBlockFlow {DIV} at (0,100) size 500x500 [bgcolor=#FFFF00]
-    LayoutBlockFlow {DIV} at (0,600) size 100x100 [bgcolor=#008000]
-layer at (8,358) size 100x100 backgroundClip at (8,8) size 385x385 clip at (8,8) size 385x385
-  LayoutBlockFlow (relative positioned) {DIV} at (0,0) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/accelerated-scrolling-with-clip-path-text-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/accelerated-scrolling-with-clip-path-text-expected.txt
deleted file mode 100644
index ebe9a28..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/accelerated-scrolling-with-clip-path-text-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x436
-  LayoutBlockFlow {HTML} at (0,0) size 800x436
-    LayoutBlockFlow {BODY} at (8,8) size 784x420
-      LayoutBlockFlow (anonymous) at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 563x19
-          text run at (0,0) width 563: "This tests that reference clip-path with text is correctly applied with composited scrolling. "
-        LayoutSVGRoot {svg} at (563,15) size 0x0
-          LayoutSVGHiddenContainer {defs} at (0,0) size 0x0
-            LayoutSVGResourceClipper {clipPath} [id="clipping"] [clipPathUnits=userSpaceOnUse]
-              LayoutSVGText {text} at (100,65) size 143x68 contains 1 chunk(s)
-                LayoutSVGInlineText {#text} at (100,65) size 143x68
-                  chunk 1 text run 1 at (100.00,120.00) startOffset 0 endOffset 4 width 143.00: "CLIP"
-        LayoutText {#text} at (0,0) size 0x0
-layer at (8,28) size 400x400 clip at (8,28) size 385x385 scrollWidth 500 scrollHeight 700
-  LayoutBlockFlow {DIV} at (0,20) size 400x400 [bgcolor=#0000FF]
-    LayoutBlockFlow {DIV} at (0,0) size 100x100 [bgcolor=#008000]
-    LayoutBlockFlow {DIV} at (0,100) size 500x500 [bgcolor=#FFFF00]
-    LayoutBlockFlow {DIV} at (0,600) size 100x100 [bgcolor=#008000]
-layer at (8,378) size 100x100 backgroundClip at (8,28) size 385x385 clip at (8,28) size 385x385
-  LayoutBlockFlow (relative positioned) {DIV} at (0,0) size 100x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/border-radius-composited-subframe-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/border-radius-composited-subframe-expected.png
deleted file mode 100644
index 1b7b5f0a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/border-radius-composited-subframe-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png
deleted file mode 100644
index 895f5ee..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/clear-scroll-parent-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/clear-scroll-parent-expected.txt
deleted file mode 100644
index 9b7a2ba..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/clear-scroll-parent-expected.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='container'",
-      "position": [8, 8],
-      "bounds": [308, 208],
-      "backgroundColor": "#00FF0080"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [12, 12],
-      "bounds": [285, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [12, 12],
-      "bounds": [285, 530],
-      "backgroundColor": "#00FF0080"
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [308, 208],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [297, 12],
-      "bounds": [15, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [297, 197],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='fixed'",
-      "position": [50, 200],
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [12, 12],
-      "bounds": [80, 80],
-      "drawsContent": false,
-      "hasScrollParent": true
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='box red'",
-      "position": [22, 22],
-      "bounds": [100, 100],
-      "backgroundColor": "#FF000080"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false,
-      "hasScrollParent": true
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='box'",
-      "position": [22, 102],
-      "bounds": [100, 100],
-      "backgroundColor": "#0000FF80"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV class='box')",
-      "position": [22, 212],
-      "bounds": [100, 320]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/clip-descendents-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/clip-descendents-expected.txt
deleted file mode 100644
index 048aec8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/clip-descendents-expected.txt
+++ /dev/null
@@ -1,166 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [48, 38],
-      "bounds": [60, 70],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box'",
-      "bounds": [100, 150],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 2
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [240, 38],
-      "bounds": [60, 70],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box'",
-      "bounds": [100, 150],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 4
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container'",
-      "position": [48, 230],
-      "bounds": [60, 70]
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [48, 230],
-      "bounds": [60, 70],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box'",
-      "bounds": [100, 150],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 6
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container'",
-      "position": [240, 230],
-      "bounds": [60, 70]
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [240, 230],
-      "bounds": [60, 70],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='box'",
-      "bounds": [100, 150],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 8
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 50, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [242, 50, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 5,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 242, 0, 1]
-      ]
-    },
-    {
-      "id": 6,
-      "parent": 5,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ]
-    },
-    {
-      "id": 7,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [242, 242, 0, 1]
-      ]
-    },
-    {
-      "id": 8,
-      "parent": 7,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 1, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/composited-scrolling-paint-phases-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/composited-scrolling-paint-phases-expected.txt
deleted file mode 100644
index c79b156..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/composited-scrolling-paint-phases-expected.txt
+++ /dev/null
@@ -1,161 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF",
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintCompositedScroll",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF",
-      "paintingPhases": [
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintOverflowContents",
-        "GraphicsLayerPaintCompositedScroll"
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow HTML",
-      "bounds": [800, 242],
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='composited'",
-      "bounds": [80, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintDecoration"
-      ],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow HTML (foreground) Layer",
-      "bounds": [800, 242],
-      "paintingPhases": [
-        "GraphicsLayerPaintForeground"
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='container'",
-      "position": [28, 20],
-      "bounds": [202, 202],
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintCompositedScroll",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [29, 21],
-      "bounds": [185, 185],
-      "drawsContent": false,
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [29, 21],
-      "bounds": [185, 715],
-      "paintingPhases": [
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintOverflowContents",
-        "GraphicsLayerPaintCompositedScroll"
-      ]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [28, 20],
-      "bounds": [202, 202],
-      "drawsContent": false,
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [29, 206],
-      "bounds": [185, 15],
-      "drawsContent": false,
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [214, 21],
-      "bounds": [15, 185],
-      "drawsContent": false,
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [214, 206],
-      "bounds": [15, 15],
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintDecoration"
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [29, 31, 0, 1]
-      ]
-    }
-  ]
-}
-
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/content-gains-scrollbars-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/content-gains-scrollbars-expected.txt
deleted file mode 100644
index 285f901d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/content-gains-scrollbars-expected.txt
+++ /dev/null
@@ -1,210 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container'",
-      "bounds": [100, 100],
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [85, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [85, 200],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='vertical' class='content tall'",
-      "bounds": [10, 200],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [85, 0],
-      "bounds": [15, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container'",
-      "bounds": [100, 100],
-      "transform": 2
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [100, 85],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [200, 85],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='horizontal' class='content wide'",
-      "bounds": [200, 10],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [0, 85],
-      "bounds": [100, 15],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container'",
-      "bounds": [100, 100],
-      "transform": 3
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [200, 200],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='both' class='content wide tall'",
-      "bounds": [200, 200],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [0, 85],
-      "bounds": [85, 15],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [85, 0],
-      "bounds": [15, 85],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [85, 85],
-      "bounds": [15, 15],
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='corner' class='container resizeWidget'",
-      "bounds": [100, 100],
-      "transform": 4
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 4
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='content'",
-      "bounds": [10, 10],
-      "drawsContent": false,
-      "transform": 4
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 4
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [85, 85],
-      "bounds": [15, 15],
-      "transform": 4
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ]
-    },
-    {
-      "id": 4,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/content-loses-scrollbars-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/content-loses-scrollbars-expected.txt
deleted file mode 100644
index 28e47b8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/content-loses-scrollbars-expected.txt
+++ /dev/null
@@ -1,132 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container'",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='vertical' class='content'",
-      "bounds": [10, 10],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container'",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='horizontal' class='content'",
-      "bounds": [10, 10],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container'",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='both' class='content'",
-      "bounds": [10, 10],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='corner' class='container'",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 4
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 4
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='content'",
-      "bounds": [10, 10],
-      "drawsContent": false,
-      "transform": 4
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ]
-    },
-    {
-      "id": 4,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/fixed-position-ancestor-clip-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/fixed-position-ancestor-clip-expected.txt
deleted file mode 100644
index 32b4c458..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/fixed-position-ancestor-clip-expected.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-layer at (0,0) size 800x600 scrollX 50.00 scrollY 50.00 scrollWidth 1008 scrollHeight 1016
-  LayoutView at (0,0) size 800x600
-layer at (-50,-50) size 800x1016 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x1016
-    LayoutBlockFlow {BODY} at (8,8) size 1000x1000
-layer at (0,116) size 316x20
-  LayoutBlockFlow (positioned) {P} at (50,166) size 316.41x20
-    LayoutText {#text} at (0,0) size 317x19
-      text run at (0,0) width 317: "You should see a single green square, with no red."
-layer at (8,8) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (8,8) size 100x100 [bgcolor=#FF0000]
-layer at (8,8) size 100x100
-  LayoutBlockFlow {DIV} at (0,0) size 100x100 [bgcolor=#008000]
-scrolled to 50,50
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/mask-with-filter-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/mask-with-filter-expected.png
deleted file mode 100644
index be375445..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/mask-with-filter-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/mask-with-filter-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/mask-with-filter-expected.txt
deleted file mode 100644
index b7278d0c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/mask-with-filter-expected.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x229
-  LayoutBlockFlow {HTML} at (0,0) size 800x229
-    LayoutBlockFlow {BODY} at (8,8) size 784x213
-      LayoutText {#text} at (0,0) size 0x0
-layer at (108,8) size 208x208
-  LayoutBlockFlow (relative positioned) {DIV} at (0,0) size 208x208
-layer at (108,8) size 208x208 clip at (112,12) size 200x200 scrollWidth 500 scrollHeight 500
-  LayoutBlockFlow {DIV} at (0,0) size 208x208 [bgcolor=#808080] [border: (4px solid #FF0000)]
-layer at (112,12) size 500x500 backgroundClip at (27,13) size 436x236 clip at (27,13) size 436x236
-  LayoutBlockFlow {DIV} at (4,4) size 500x500 [bgcolor=#000000]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/mask-with-small-content-rect-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/mask-with-small-content-rect-expected.png
deleted file mode 100644
index 17190df..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/mask-with-small-content-rect-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/nested-border-radius-clipping-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/nested-border-radius-clipping-expected.png
deleted file mode 100644
index 44c979b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/nested-border-radius-clipping-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/no-excessive-clip-parent-if-parent-escaped-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/no-excessive-clip-parent-if-parent-escaped-expected.txt
deleted file mode 100644
index cc0d374d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/no-excessive-clip-parent-if-parent-escaped-expected.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "position": [8, 8],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [8, 8],
-      "bounds": [100, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "position": [8, 8],
-      "bounds": [50, 50],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "hasClipParent": true
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-auto-with-touch-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-auto-with-touch-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-auto-with-touch-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-auto-with-touch-no-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-auto-with-touch-no-overflow-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-auto-with-touch-no-overflow-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-hidden-with-touch-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-hidden-with-touch-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-hidden-with-touch-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-overlay-with-touch-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-overlay-with-touch-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-overlay-with-touch-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-overlay-with-touch-no-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-overlay-with-touch-no-overflow-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-overlay-with-touch-no-overflow-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-scroll-with-touch-no-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-scroll-with-touch-no-overflow-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-scroll-with-touch-no-overflow-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-scrollbar-layers-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-scrollbar-layers-expected.txt
deleted file mode 100644
index f679344..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-scrollbar-layers-expected.txt
+++ /dev/null
@@ -1,210 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container'",
-      "bounds": [100, 100],
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [85, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [85, 200],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='content tall'",
-      "bounds": [10, 200],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [85, 0],
-      "bounds": [15, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container'",
-      "bounds": [100, 100],
-      "transform": 2
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [100, 85],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [200, 85],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='content wide'",
-      "bounds": [200, 10],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [0, 85],
-      "bounds": [100, 15],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container'",
-      "bounds": [100, 100],
-      "transform": 3
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [200, 200],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='content wide tall'",
-      "bounds": [200, 200],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [0, 85],
-      "bounds": [85, 15],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [85, 0],
-      "bounds": [15, 85],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [85, 85],
-      "bounds": [15, 15],
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container resizeWidget'",
-      "bounds": [100, 100],
-      "transform": 4
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 4
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='content'",
-      "bounds": [10, 10],
-      "drawsContent": false,
-      "transform": 4
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 4
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [85, 85],
-      "bounds": [15, 15],
-      "transform": 4
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ]
-    },
-    {
-      "id": 4,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 13, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-visible-with-touch-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-visible-with-touch-expected.txt
deleted file mode 100644
index fa2c0132..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/overflow-visible-with-touch-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1008, 1008],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/reparented-scrollbars-non-sc-anc-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/reparented-scrollbars-non-sc-anc-expected.txt
deleted file mode 100644
index c8f192a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/reparented-scrollbars-non-sc-anc-expected.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1208, 821],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [8, 8],
-      "bounds": [1200, 800],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='positioned'",
-      "position": [8, 8],
-      "bounds": [1200, 800]
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [8, 8],
-      "bounds": [1200, 800],
-      "drawsContent": false
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [8, 8],
-      "bounds": [1200, 1000],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [8, 8],
-      "bounds": [1200, 1000]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [1200, 1000],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [1200, 10000]
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='foreground'",
-      "position": [8, 10008],
-      "contentsOpaque": true,
-      "drawsContent": false
-    },
-    {
-      "name": "Overflow Controls Ancestor Clipping Layer",
-      "position": [8, 8],
-      "bounds": [1200, 1000],
-      "drawsContent": false
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [1200, 1000],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [1201, 8],
-      "bounds": [7, 1000],
-      "drawsContent": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/resize-painting-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/resize-painting-expected.txt
deleted file mode 100644
index 6541c6b8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/resize-painting-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='resizable composited box'",
-      "bounds": [100, 100],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [85, 85],
-      "bounds": [15, 15],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [18, 10, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scaled-mask-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scaled-mask-expected.png
deleted file mode 100644
index 131ea32..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scaled-mask-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scroll-parent-absolute-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scroll-parent-absolute-expected.txt
deleted file mode 100644
index 64d809105..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scroll-parent-absolute-expected.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 5516],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='top'",
-      "position": [8, 8],
-      "bounds": [500, 500],
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [485, 485],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [485, 5000],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [500, 500],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 493],
-      "bounds": [485, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [493, 8],
-      "bounds": [15, 485],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [493, 493],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='middle')",
-      "position": [8, 8],
-      "bounds": [400, 400]
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='child'",
-      "position": [8, 8],
-      "bounds": [300, 300],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#FFFF00"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='tall'",
-      "position": [8, 8],
-      "bounds": [20, 5000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FA8072",
-      "hasScrollParent": true
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scroll-parent-absolute-with-backdrop-filter-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scroll-parent-absolute-with-backdrop-filter-expected.txt
deleted file mode 100644
index 8471887..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scroll-parent-absolute-with-backdrop-filter-expected.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 5516],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='top'",
-      "position": [8, 8],
-      "bounds": [500, 500]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [485, 485],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [485, 5000]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='middle'",
-      "position": [8, 8],
-      "bounds": [400, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "hasClipParent": true
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='child'",
-      "position": [8, 8],
-      "bounds": [300, 300],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#FFFF00",
-      "hasClipParent": true
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='tall'",
-      "position": [8, 8],
-      "bounds": [20, 5000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FA8072"
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [500, 500],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 493],
-      "bounds": [485, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [493, 8],
-      "bounds": [15, 485],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [493, 493],
-      "bounds": [15, 15]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor-expected.txt
deleted file mode 100644
index 15c58a53..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor-expected.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='intervening'",
-      "position": [98, 90],
-      "bounds": [300, 300],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#FFEFD5"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [98, 90],
-      "bounds": [102, 102]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [99, 91],
-      "bounds": [100, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [99, 91],
-      "bounds": [100, 180],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='fixed'",
-      "position": [60, 60],
-      "bounds": [80, 80],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='scrolled'",
-      "position": [103, 95],
-      "bounds": [60, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV class='scrolled')",
-      "position": [103, 139],
-      "bounds": [60, 128]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [98, 90],
-      "bounds": [102, 102],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [192, 91],
-      "bounds": [7, 100],
-      "drawsContent": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scrollbar-layer-placement-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scrollbar-layer-placement-expected.txt
deleted file mode 100644
index 7be354a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scrollbar-layer-placement-expected.txt
+++ /dev/null
@@ -1,218 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='outer A'",
-      "position": [6, 6],
-      "bounds": [340, 282]
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='scroller'",
-      "position": [38, 38],
-      "bounds": [278, 218],
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [67, 67],
-      "bounds": [220, 160],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [67, 67],
-      "bounds": [220, 236],
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [62, 62],
-      "bounds": [230, 170],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [280, 67],
-      "bounds": [7, 160],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='outer B'",
-      "position": [355, 6],
-      "bounds": [340, 282]
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='scroller'",
-      "position": [387, 38],
-      "bounds": [278, 218],
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [416, 67],
-      "bounds": [220, 160],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [416, 67],
-      "bounds": [220, 236],
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='content'",
-      "position": [428, 79],
-      "bounds": [196, 212],
-      "contentsOpaque": true,
-      "backgroundColor": "#DDDDDD"
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [411, 62],
-      "bounds": [230, 170],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [629, 67],
-      "bounds": [7, 160],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='outer C'",
-      "position": [6, 297],
-      "bounds": [340, 282]
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [46, 337],
-      "bounds": [260, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='scroller'",
-      "position": [37, 328],
-      "bounds": [278, 218],
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [66, 357],
-      "bounds": [220, 160],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [66, 357],
-      "bounds": [220, 236],
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='content'",
-      "position": [78, 369],
-      "bounds": [196, 212],
-      "contentsOpaque": true,
-      "backgroundColor": "#DDDDDD"
-    },
-    {
-      "name": "Overflow Controls Ancestor Clipping Layer",
-      "position": [46, 337],
-      "bounds": [260, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [61, 352],
-      "bounds": [230, 170],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [279, 357],
-      "bounds": [7, 160],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='outer D'",
-      "position": [355, 297],
-      "bounds": [340, 282]
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='clipper'",
-      "position": [379, 321],
-      "bounds": [292, 200]
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [389, 331],
-      "bounds": [272, 180],
-      "drawsContent": false
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [395, 337],
-      "bounds": [260, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='scroller'",
-      "position": [386, 328],
-      "bounds": [278, 218],
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [415, 357],
-      "bounds": [220, 160],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [415, 357],
-      "bounds": [220, 236],
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='content'",
-      "position": [427, 369],
-      "bounds": [196, 212],
-      "contentsOpaque": true,
-      "backgroundColor": "#DDDDDD"
-    },
-    {
-      "name": "Overflow Controls Ancestor Clipping Layer",
-      "position": [395, 337],
-      "bounds": [260, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [410, 352],
-      "bounds": [230, 170],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [628, 357],
-      "bounds": [7, 160],
-      "drawsContent": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt
deleted file mode 100644
index 8af08e0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='scroller'",
-      "bounds": [320, 340]
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [305, 325],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [305, 1224],
-      "drawsContent": false
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [320, 340],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [0, 325],
-      "bounds": [305, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [305, 0],
-      "bounds": [15, 325],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [305, 325],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='column'",
-      "position": [10, 10],
-      "bounds": [284, 1204],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/textarea-scroll-touch-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/textarea-scroll-touch-expected.txt
deleted file mode 100644
index 0138d103..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/textarea-scroll-touch-expected.txt
+++ /dev/null
@@ -1,119 +0,0 @@
-  
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutTextControl TEXTAREA",
-      "position": [18, 18],
-      "bounds": [206, 126],
-      "backgroundColor": "#CCCCCC"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [19, 19],
-      "bounds": [189, 124],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [19, 19],
-      "bounds": [189, 328],
-      "contentsOpaque": true,
-      "backgroundColor": "#CCCCCC",
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [18, 18],
-      "bounds": [206, 126],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [208, 19],
-      "bounds": [15, 109],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [208, 128],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "LayoutTextControl TEXTAREA",
-      "position": [248, 18],
-      "bounds": [206, 126],
-      "backgroundColor": "#CCCCCC"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [249, 19],
-      "bounds": [189, 124],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [249, 19],
-      "bounds": [189, 328],
-      "contentsOpaque": true,
-      "backgroundColor": "#CCCCCC",
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [248, 18],
-      "bounds": [206, 126],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [438, 19],
-      "bounds": [15, 109],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [438, 128],
-      "bounds": [15, 15]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -50, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -50, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/tiled-mask-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/tiled-mask-expected.txt
deleted file mode 100644
index 1a6c5c0a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/tiled-mask-expected.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x585 scrollX 31.00 scrollY 239.00 scrollWidth 816 scrollHeight 824
-  LayoutView at (0,0) size 800x600
-layer at (-31,-239) size 785x824 backgroundClip at (0,0) size 785x585 clip at (0,0) size 785x585
-  LayoutBlockFlow {HTML} at (0,0) size 785x824
-    LayoutBlockFlow {BODY} at (8,8) size 769x808
-layer at (-23,-231) size 808x808 backgroundClip at (0,0) size 785x577 clip at (0,0) size 781x573 scrollWidth 2000 scrollHeight 2000
-  LayoutBlockFlow {DIV} at (0,0) size 808x808 [bgcolor=#808080] [border: (4px solid #FF0000)]
-layer at (-19,-227) size 2000x2000 backgroundClip at (0,0) size 785x585 clip at (0,0) size 785x585
-  LayoutBlockFlow (positioned) {DIV} at (4,4) size 2000x2000 [bgcolor=#FFEFD5]
-    LayoutText {#text} at (0,0) size 125x19
-      text run at (0,0) width 125: "There's stuff in here"
-layer at (-19,-227) size 50x50 backgroundClip at (0,0) size 785x585 clip at (0,0) size 785x585
-  LayoutBlockFlow (positioned) {DIV} at (4,4) size 50x50 [bgcolor=#800000]
-layer at (-19,473) size 100x100 backgroundClip at (0,0) size 785x585 clip at (0,0) size 785x585
-  LayoutBlockFlow (positioned) {DIV} at (4,704) size 100x100 [bgcolor=#FFA500]
-layer at (-79,-157) size 100x100 backgroundClip at (0,0) size 785x585 clip at (0,0) size 785x585
-  LayoutBlockFlow (positioned) {DIV} at (-56,74) size 100x100 [bgcolor=#008000]
-layer at (101,473) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (124,704) size 100x100 [bgcolor=#0000FF]
-layer at (731,-227) size 100x100 backgroundClip at (0,0) size 785x585 clip at (0,0) size 785x585
-  LayoutBlockFlow (positioned) {DIV} at (754,4) size 100x100 [bgcolor=#FFFF00]
-layer at (61,73) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (84,304) size 100x100
-layer at (1,173) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (24,404) size 100x100 [bgcolor=#FF0000]
-layer at (731,523) size 50x50
-  LayoutBlockFlow (positioned) {DIV} at (754,754) size 50x50 [bgcolor=#800080]
-scrolled to 31,239
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
deleted file mode 100644
index 99b8a9b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
+++ /dev/null
@@ -1,1120 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='container-absolute-grandchildren-not-contained' class='overflow'",
-      "position": [10, 10],
-      "bounds": [104, 104]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [12, 12],
-      "bounds": [85, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [12, 12],
-      "bounds": [85, 144],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [10, 10],
-      "bounds": [104, 104],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [12, 97],
-      "bounds": [85, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [97, 12],
-      "bounds": [15, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [97, 97],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='positioned-absolute-grandchildren-not-contained' class='positionAbsolute positioned')",
-      "position": [35, 75],
-      "bounds": [80, 40]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren-not-contained' class='scrolled'",
-      "position": [16, -15],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren-not-contained' class='scrolled')",
-      "position": [16, 41],
-      "bounds": [75, 24]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container-absolute-grandchildren' class='positionAbsolute overflow'",
-      "position": [130, 10],
-      "bounds": [104, 104]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [132, 12],
-      "bounds": [85, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [132, 12],
-      "bounds": [105, 144],
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [130, 10],
-      "bounds": [104, 104],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [132, 97],
-      "bounds": [85, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [217, 12],
-      "bounds": [15, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [217, 97],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute-grandchildren' class='positionAbsolute positioned'",
-      "position": [157, 18],
-      "bounds": [80, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#800080"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren' class='scrolled')",
-      "position": [136, -15],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='container-absolute-not-contained' class='overflow'",
-      "position": [250, 10],
-      "bounds": [104, 104]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [252, 12],
-      "bounds": [85, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [252, 12],
-      "bounds": [85, 144],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [250, 10],
-      "bounds": [104, 104],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [252, 97],
-      "bounds": [85, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [337, 12],
-      "bounds": [15, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [337, 97],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='positioned-absolute-not-contained' class='positionAbsolute positioned')",
-      "position": [275, 75],
-      "bounds": [80, 40]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-not-contained' class='scrolled'",
-      "position": [256, -15],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-not-contained' class='scrolled')",
-      "position": [256, 41],
-      "bounds": [75, 24]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='container-absolute-sibling-grandchildren-not-contained' class='overflow'",
-      "position": [370, 10],
-      "bounds": [104, 104]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [372, 12],
-      "bounds": [85, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [372, 12],
-      "bounds": [85, 144],
-      "transform": 4
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [370, 10],
-      "bounds": [104, 104],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [372, 97],
-      "bounds": [85, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [457, 12],
-      "bounds": [15, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [457, 97],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='positioned-absolute-sibling-grandchildren-not-contained' class='positionAbsolute positioned')",
-      "position": [395, 75],
-      "bounds": [80, 40]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren-not-contained' class='scrolled'",
-      "position": [376, -15],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren-not-contained' class='scrolled')",
-      "position": [376, 41],
-      "bounds": [75, 24]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container-absolute-sibling-grandchildren' class='positionAbsolute overflow'",
-      "position": [10, 130],
-      "bounds": [104, 104]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [12, 132],
-      "bounds": [85, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [12, 132],
-      "bounds": [105, 144],
-      "transform": 5
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [10, 130],
-      "bounds": [104, 104],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [12, 217],
-      "bounds": [85, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [97, 132],
-      "bounds": [15, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [97, 217],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute-sibling-grandchildren' class='positionAbsolute positioned'",
-      "position": [37, 138],
-      "bounds": [80, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#800080"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren' class='scrolled')",
-      "position": [16, 105],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='container-absolute-sibling-not-contained' class='overflow'",
-      "position": [130, 130],
-      "bounds": [104, 104]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [132, 132],
-      "bounds": [85, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [132, 132],
-      "bounds": [85, 144],
-      "drawsContent": false,
-      "transform": 6
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [130, 130],
-      "bounds": [104, 104],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [132, 217],
-      "bounds": [85, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [217, 132],
-      "bounds": [15, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [217, 217],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='positioned-absolute-sibling-not-contained' class='positionAbsolute positioned')",
-      "position": [155, 195],
-      "bounds": [80, 40]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled'",
-      "position": [136, 105],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled')",
-      "position": [136, 161],
-      "bounds": [75, 24]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container-absolute-sibling' class='positionAbsolute overflow'",
-      "position": [250, 130],
-      "bounds": [104, 104]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [252, 132],
-      "bounds": [85, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [252, 132],
-      "bounds": [105, 144],
-      "drawsContent": false,
-      "transform": 7
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [250, 130],
-      "bounds": [104, 104],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [252, 217],
-      "bounds": [85, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [337, 132],
-      "bounds": [15, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [337, 217],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute-sibling' class='positionAbsolute positioned'",
-      "position": [277, 138],
-      "bounds": [80, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#800080"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling' class='scrolled')",
-      "position": [256, 105],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container-absolute' class='positionAbsolute overflow'",
-      "position": [370, 130],
-      "bounds": [104, 104]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [372, 132],
-      "bounds": [85, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [372, 132],
-      "bounds": [105, 144],
-      "drawsContent": false,
-      "transform": 8
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [370, 130],
-      "bounds": [104, 104],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [372, 217],
-      "bounds": [85, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [457, 132],
-      "bounds": [15, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [457, 217],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute' class='positionAbsolute positioned'",
-      "position": [397, 138],
-      "bounds": [80, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#800080"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute' class='scrolled')",
-      "position": [376, 105],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container-fixed-sibling-grandchildren' class='positionAbsolute overflow'",
-      "position": [10, 250],
-      "bounds": [104, 104]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [12, 252],
-      "bounds": [85, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [12, 252],
-      "bounds": [85, 144],
-      "transform": 9
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [10, 250],
-      "bounds": [104, 104],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [12, 337],
-      "bounds": [85, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [97, 252],
-      "bounds": [15, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [97, 337],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='positioned-fixed-sibling-grandchildren' class='positionFixed positioned'",
-      "position": [35, 315],
-      "bounds": [80, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#800080"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling-grandchildren' class='scrolled'",
-      "position": [16, 225],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling-grandchildren' class='scrolled')",
-      "position": [16, 281],
-      "bounds": [75, 24]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container-fixed-sibling' class='positionAbsolute overflow'",
-      "position": [130, 250],
-      "bounds": [104, 104]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [132, 252],
-      "bounds": [85, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [132, 252],
-      "bounds": [85, 144],
-      "drawsContent": false,
-      "transform": 10
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [130, 250],
-      "bounds": [104, 104],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [132, 337],
-      "bounds": [85, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [217, 252],
-      "bounds": [15, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [217, 337],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='positioned-fixed-sibling' class='positionFixed positioned'",
-      "position": [155, 315],
-      "bounds": [80, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#800080"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled'",
-      "position": [136, 225],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled')",
-      "position": [136, 281],
-      "bounds": [75, 24]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container-fixed-grandchildren' class='positionAbsolute overflow'",
-      "position": [250, 250],
-      "bounds": [104, 104]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [252, 252],
-      "bounds": [85, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [252, 252],
-      "bounds": [85, 144],
-      "transform": 11
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [250, 250],
-      "bounds": [104, 104],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [252, 337],
-      "bounds": [85, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [337, 252],
-      "bounds": [15, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [337, 337],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='positioned-fixed-grandchildren' class='positionFixed positioned'",
-      "position": [275, 315],
-      "bounds": [80, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#800080"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-grandchildren' class='scrolled'",
-      "position": [256, 225],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-grandchildren' class='scrolled')",
-      "position": [256, 281],
-      "bounds": [75, 24]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container-fixed' class='positionAbsolute overflow'",
-      "position": [370, 250],
-      "bounds": [104, 104]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [372, 252],
-      "bounds": [85, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [372, 252],
-      "bounds": [85, 144],
-      "drawsContent": false,
-      "transform": 12
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [370, 250],
-      "bounds": [104, 104],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [372, 337],
-      "bounds": [85, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [457, 252],
-      "bounds": [15, 85],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [457, 337],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='positioned-fixed' class='positionFixed positioned'",
-      "position": [395, 315],
-      "bounds": [80, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#800080"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled'",
-      "position": [376, 225],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled')",
-      "position": [376, 281],
-      "bounds": [75, 24]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='sibling-absolute-sibling-grandchildren-not-contained' class='positionFixed sibling'",
-      "position": [375, 20],
-      "bounds": [50, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='sibling-absolute-sibling-grandchildren' class='positionFixed sibling'",
-      "position": [15, 140],
-      "bounds": [50, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='sibling-absolute-sibling-not-contained' class='positionFixed sibling'",
-      "position": [135, 140],
-      "bounds": [50, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='sibling-absolute-sibling' class='positionFixed sibling'",
-      "position": [255, 140],
-      "bounds": [50, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='sibling-fixed-sibling-grandchildren' class='positionFixed sibling'",
-      "position": [15, 260],
-      "bounds": [50, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='sibling-fixed-sibling' class='positionFixed sibling'",
-      "position": [135, 260],
-      "bounds": [50, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren-not-contained' class='scrolled onTop'",
-      "position": [16, -43],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren-not-contained' class='scrolled onTop')",
-      "position": [16, 13],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren' class='scrolled onTop'",
-      "position": [136, -43],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren' class='scrolled onTop')",
-      "position": [136, 13],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-not-contained' class='scrolled onTop'",
-      "position": [256, -43],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-not-contained' class='scrolled onTop')",
-      "position": [256, 13],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren-not-contained' class='scrolled onTop'",
-      "position": [376, -43],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren-not-contained' class='scrolled onTop')",
-      "position": [376, 13],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren' class='scrolled onTop'",
-      "position": [16, 77],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren' class='scrolled onTop')",
-      "position": [16, 133],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled onTop'",
-      "position": [136, 77],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled onTop')",
-      "position": [136, 133],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling' class='scrolled onTop'",
-      "position": [256, 77],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling' class='scrolled onTop')",
-      "position": [256, 133],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute' class='scrolled onTop'",
-      "position": [376, 77],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute' class='scrolled onTop')",
-      "position": [376, 133],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling-grandchildren' class='scrolled onTop'",
-      "position": [16, 197],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling-grandchildren' class='scrolled onTop')",
-      "position": [16, 253],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled onTop'",
-      "position": [136, 197],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled onTop')",
-      "position": [136, 253],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-grandchildren' class='scrolled onTop'",
-      "position": [256, 197],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-grandchildren' class='scrolled onTop')",
-      "position": [256, 253],
-      "bounds": [75, 80]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled onTop'",
-      "position": [376, 197],
-      "bounds": [75, 24],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled onTop')",
-      "position": [376, 253],
-      "bounds": [75, 80]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 4,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 5,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 6,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 7,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 8,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 9,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 10,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 11,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 12,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/reflections/nested-reflection-on-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/reflections/nested-reflection-on-overflow-expected.txt
deleted file mode 100644
index 92c1af3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/reflections/nested-reflection-on-overflow-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x308
-  LayoutBlockFlow {HTML} at (0,0) size 800x308
-    LayoutBlockFlow {BODY} at (8,16) size 784x272
-      LayoutBlockFlow {P} at (0,0) size 784x20
-        LayoutText {#text} at (0,0) size 448x19
-          text run at (0,0) width 448: "You should see the original and three copies of the green box with text."
-layer at (28,56) size 122x232
-  LayoutBlockFlow {DIV} at (20,40) size 122x232 [border: (1px solid #000000)]
-layer at (39,67) size 100x100
-  LayoutBlockFlow {DIV} at (11,11) size 100x100 [bgcolor=#008000]
-layer at (39,67) size 100x100 clip at (39,67) size 85x85 scrollHeight 500
-  LayoutBlockFlow (relative positioned) {DIV} at (0,0) size 100x100
-layer at (39,67) size 85x500 backgroundClip at (39,67) size 85x85 clip at (39,67) size 85x85
-  LayoutBlockFlow {DIV} at (0,0) size 85x500
-    LayoutText {#text} at (0,0) size 84x459
-      text run at (0,0) width 84: "Lorem ipsum"
-      text run at (0,20) width 51: "dolor sit"
-      text run at (0,40) width 34: "amet,"
-      text run at (0,60) width 71: "consectetur"
-      text run at (0,80) width 68: "adipisicing"
-      text run at (0,100) width 68: "elit, sed do"
-      text run at (0,120) width 53: "eiusmod"
-      text run at (0,140) width 44: "tempor"
-      text run at (0,160) width 79: "incididunt ut"
-      text run at (0,180) width 54: "labore et"
-      text run at (0,200) width 40: "dolore"
-      text run at (0,220) width 42: "magna"
-      text run at (0,240) width 62: "aliqua. Ut"
-      text run at (0,260) width 50: "enim ad"
-      text run at (0,280) width 40: "minim"
-      text run at (0,300) width 80: "veniam, quis"
-      text run at (0,320) width 47: "nostrud"
-      text run at (0,340) width 73: "exercitation"
-      text run at (0,360) width 50: "ullamco"
-      text run at (0,380) width 84: "laboris nisi ut"
-      text run at (0,400) width 80: "aliquip ex ea"
-      text run at (0,420) width 63: "commodo"
-      text run at (0,440) width 67: "consequat."
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed-expected.png
deleted file mode 100644
index e2bde95..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed2-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed2-expected.png
deleted file mode 100644
index 1b3c400..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/reflections/nested-reflection-transformed2-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/reflections/reflection-in-composited-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/reflections/reflection-in-composited-expected.png
deleted file mode 100644
index d8e4bc4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/reflections/reflection-in-composited-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rendering-contexts-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rendering-contexts-expected.txt
deleted file mode 100644
index bc0d6025..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rendering-contexts-expected.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='grandparent' class='composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='parent' class='composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='child' class='composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 4
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "renderingContext": 1
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "renderingContext": 2
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-absolute-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-absolute-expected.txt
deleted file mode 100644
index b8b31b50..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-absolute-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positioned layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-absolute-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-absolute-overflow-expected.txt
deleted file mode 100644
index b3ce1bd1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-absolute-overflow-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positioned layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-215, 0, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [265, 50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt
deleted file mode 100644
index 4fdd5c2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='layer' class='positioned'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-1, 0, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [51, 50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-fixed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-fixed-expected.txt
deleted file mode 100644
index b8b31b50..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-fixed-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positioned layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-fixed-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-fixed-overflow-expected.txt
deleted file mode 100644
index a8cf302..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-fixed-overflow-expected.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positioned indicator'",
-      "position": [265, 50],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positioned layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-215, 0, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [265, 50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt
deleted file mode 100644
index 3261e35..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positioned indicator'",
-      "position": [51, 50],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positioned layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-1, 0, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [51, 50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-absolute-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-absolute-expected.txt
deleted file mode 100644
index 11a5e14..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-absolute-expected.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame (positioned) IFRAME",
-      "bounds": [400, 400]
-    },
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 400],
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [400, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positioned layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt
deleted file mode 100644
index 4fb10f76..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame (positioned) IFRAME",
-      "bounds": [400, 400]
-    },
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 400],
-      "drawsContent": false,
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [385, 385],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1000, 1000],
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positioned layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [400, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [0, 385],
-      "bounds": [385, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [385, 0],
-      "bounds": [15, 385],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [385, 385],
-      "bounds": [15, 15]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-615, 0, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [665, 50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt
deleted file mode 100644
index 5f9aae9e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame (positioned) IFRAME",
-      "bounds": [400, 400]
-    },
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 400],
-      "drawsContent": false,
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [385, 385],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1000, 1000],
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='layer' class='positioned'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [400, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [0, 385],
-      "bounds": [385, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [385, 0],
-      "bounds": [15, 385],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [385, 385],
-      "bounds": [15, 15]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-615, 0, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [51, 50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-fixed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-fixed-expected.txt
deleted file mode 100644
index 11a5e14..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-fixed-expected.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame (positioned) IFRAME",
-      "bounds": [400, 400]
-    },
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 400],
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [400, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positioned layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt
deleted file mode 100644
index 17e7b97..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt
+++ /dev/null
@@ -1,102 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame (positioned) IFRAME",
-      "bounds": [400, 400]
-    },
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 400],
-      "drawsContent": false,
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [385, 385],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1000, 1000],
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positioned indicator'",
-      "position": [665, 50],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positioned layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [400, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [0, 385],
-      "bounds": [385, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [385, 0],
-      "bounds": [15, 385],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [385, 385],
-      "bounds": [15, 15]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-615, 0, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [665, 50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt
deleted file mode 100644
index 17e7b97..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt
+++ /dev/null
@@ -1,102 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame (positioned) IFRAME",
-      "bounds": [400, 400]
-    },
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 400],
-      "drawsContent": false,
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [385, 385],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1000, 1000],
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positioned indicator'",
-      "position": [665, 50],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='positioned layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "bounds": [400, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [0, 385],
-      "bounds": [385, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [385, 0],
-      "bounds": [15, 385],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [385, 385],
-      "bounds": [15, 15]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-615, 0, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [665, 50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-relative-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-relative-expected.txt
deleted file mode 100644
index 7d4fc5b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-iframe-relative-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame (positioned) IFRAME",
-      "bounds": [400, 400]
-    },
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 400]
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [400, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [242, 58, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-relative-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-relative-expected.txt
deleted file mode 100644
index 2a63f27..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/rtl/rtl-relative-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='layer'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [642, 58, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/scrollbars/nested-overlay-scrollbars-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/scrollbars/nested-overlay-scrollbars-expected.txt
deleted file mode 100644
index abd8db5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/scrollbars/nested-overlay-scrollbars-expected.txt
+++ /dev/null
@@ -1,129 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='outer'",
-      "position": [8, 8],
-      "bounds": [404, 404]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [10, 10],
-      "bounds": [400, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [10, 10],
-      "bounds": [400, 704],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='inner'",
-      "position": [10, 510],
-      "bounds": [204, 204],
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [12, 512],
-      "bounds": [200, 200],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [12, 512],
-      "bounds": [5000, 9000],
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "position": [10, 10],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='grey'",
-      "position": [12, 512],
-      "bounds": [100, 800],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='spacer')",
-      "position": [12, 2512],
-      "bounds": [5000, 1000],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [12, 512],
-      "bounds": [204, 204],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [14, 707],
-      "bounds": [193, 7],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [207, 514],
-      "bounds": [7, 193],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [207, 707],
-      "bounds": [7, 7],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [404, 404],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [403, 10],
-      "bounds": [7, 400],
-      "drawsContent": false
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -304, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/shadows/shadow-drawing-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/shadows/shadow-drawing-expected.png
deleted file mode 100644
index 66f11e597..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/shadows/shadow-drawing-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/add-remove-squashed-layers-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/add-remove-squashed-layers-expected.txt
deleted file mode 100644
index 6e693f4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/add-remove-squashed-layers-expected.txt
+++ /dev/null
@@ -1,451 +0,0 @@
-Test that layers can be nicely added or removed from a squashed layer, without unnecessary repaints on any layer. Click anywhere to test interactively; keep clicking to proceed through the test.
-
-CASE 1, original layer tree with overlap1 and overlap2:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [400, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='A' class='overlap1')",
-      "position": [140, 140],
-      "bounds": [180, 180]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [60, 60, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-CASE 2, overlap3 gets added:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [400, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='A' class='overlap1')",
-      "position": [140, 140],
-      "bounds": [260, 260],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-          "rect": [160, 160, 100, 100],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [60, 60, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-      "reason": "appeared"
-    }
-  ]
-}
-CASE 3, overlap2 gets removed. Since this does not resize the layer, there should only be a repaint of overlap2:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [400, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='A' class='overlap1')",
-      "position": [140, 140],
-      "bounds": [260, 260],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-          "rect": [80, 80, 100, 100],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [60, 60, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-      "reason": "disappeared"
-    }
-  ]
-}
-CASE 4, overlap1 gets removed:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [400, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='C' class='overlap3')",
-      "position": [300, 300],
-      "bounds": [100, 100],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-          "rect": [160, 160, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-          "rect": [0, 0, 100, 100],
-          "reason": "compositing update"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [60, 60, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-      "reason": "compositing update"
-    }
-  ]
-}
-CASE 5, overlap2 gets added back:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [400, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='B' class='overlap2')",
-      "position": [220, 220],
-      "bounds": [180, 180],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-          "rect": [80, 80, 100, 100],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-          "rect": [0, 0, 100, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [60, 60, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-      "reason": "compositing update"
-    }
-  ]
-}
-CASE 6, overlap1 gets added back, and overlap3 gets removed:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [400, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='A' class='overlap1')",
-      "position": [140, 140],
-      "bounds": [180, 180],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-          "rect": [80, 80, 100, 100],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-          "rect": [80, 80, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-          "rect": [0, 0, 100, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [60, 60, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-      "reason": "compositing update"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/clipping-ancestor-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/clipping-ancestor-expected.txt
deleted file mode 100644
index 7298b1c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/clipping-ancestor-expected.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [8, 8],
-      "bounds": [200, 10],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='inner'",
-      "bounds": [200, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#F5F5F5",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='hoverable'",
-      "position": [8, 0],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#90EE90"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/composited-bounds-for-negative-z-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/composited-bounds-for-negative-z-expected.txt
deleted file mode 100644
index 5c4db1f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/composited-bounds-for-negative-z-expected.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow HTML",
-      "bounds": [800, 408]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow HTML (foreground) Layer",
-      "bounds": [800, 408]
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "position": [108, 100],
-      "bounds": [300, 300]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [108, 100],
-      "bounds": [285, 300],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [108, 100],
-      "bounds": [285, 1000],
-      "drawsContent": false
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [108, 100],
-      "bounds": [300, 300],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [393, 100],
-      "bounds": [15, 300],
-      "drawsContent": false
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV",
-      "position": [108, 100],
-      "bounds": [285, 1000],
-      "drawsContent": false
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV)",
-      "position": [108, 100],
-      "bounds": [285, 1000]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 100, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/do-not-squash-non-self-painting-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/do-not-squash-non-self-painting-layer-expected.txt
deleted file mode 100644
index ec2f93bb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/do-not-squash-non-self-painting-layer-expected.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-Item 1
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='composited-container'",
-      "position": [8, 8],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/dont-squash-into-iframes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/dont-squash-into-iframes-expected.txt
deleted file mode 100644
index 7f036b1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/dont-squash-into-iframes-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame (positioned) IFRAME",
-      "bounds": [104, 104],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "position": [50, 50],
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/dont-squash-into-videos-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/dont-squash-into-videos-expected.txt
deleted file mode 100644
index d4d39c82..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/dont-squash-into-videos-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutVideo (positioned) VIDEO",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6"
-    },
-    {
-      "name": "LayoutFlexibleBox (relative positioned) DIV class='phase-pre-ready state-no-source sizing-small'",
-      "bounds": [100, 100]
-    },
-    {
-      "name": "LayoutFlexibleBox (relative positioned) DIV",
-      "bounds": [100, 58],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "position": [50, 50],
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/iframes-are-never-squashed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/iframes-are-never-squashed-expected.txt
deleted file mode 100644
index 5e29cb64..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/iframes-are-never-squashed-expected.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 1
-    },
-    {
-      "name": "LayoutIFrame (positioned) IFRAME",
-      "bounds": [104, 104],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/invalidations-with-large-negative-margin-inline-content-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/invalidations-with-large-negative-margin-inline-content-expected.txt
deleted file mode 100644
index 6db5058..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/invalidations-with-large-negative-margin-inline-content-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='chip'",
-          "rect": [408, 108, 20, 20],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='chip'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/invisible-layers-should-not-affect-geometry-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/invisible-layers-should-not-affect-geometry-expected.txt
deleted file mode 100644
index 62861a8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/invisible-layers-should-not-affect-geometry-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box')",
-      "position": [10, 10],
-      "bounds": [100, 100]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [10, 10, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/move-squashing-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/move-squashing-layer-expected.txt
deleted file mode 100644
index 9112410..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/move-squashing-layer-expected.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-This tests that squashed layers' offset from renderer is updated properly. If not properly updated, the two divs will appear to be aligned vertically in the pixel results, while really the blue div ('squashed') should be offset 100px left of the green ('host').
-
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='background'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFF00",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='host'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='squashed')",
-      "position": [8, 8],
-      "bounds": [100, 100]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 50, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/no-squashing-for-filters-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/no-squashing-for-filters-expected.txt
deleted file mode 100644
index ef33da5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/no-squashing-for-filters-expected.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='trysquashed'",
-      "bounds": [50, 50],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='trysquashed')",
-      "position": [50, 50],
-      "bounds": [50, 50]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/no-squashing-into-another-clip-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/no-squashing-into-another-clip-layer-expected.txt
deleted file mode 100644
index 4a56b34..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/no-squashing-into-another-clip-layer-expected.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "bounds": [784, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "transform": 1
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [784, 10],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='inner'",
-      "bounds": [784, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#F5F5F5",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='hoverable'",
-      "position": [8, 0],
-      "bounds": [216, 100],
-      "backgroundColor": "#90EE90"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/no-squashing-into-fixed-position-that-clips-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/no-squashing-into-fixed-position-that-clips-expected.txt
deleted file mode 100644
index f13b579..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/no-squashing-into-fixed-position-that-clips-expected.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='fixedpos'",
-      "position": [0, 50],
-      "bounds": [800, 550],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6"
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [0, 50],
-      "bounds": [800, 550],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='compositedlayer'",
-      "bounds": [24, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='notsquashedelement'",
-      "bounds": [800, 60],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [400, 40, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/opacity-squashed-owner-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/opacity-squashed-owner-expected.txt
deleted file mode 100644
index 202afbe..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/opacity-squashed-owner-expected.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='target' class='composited box opaque'",
-      "bounds": [100, 100],
-      "opacity": 0.5,
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='squashed')",
-      "position": [16, 4],
-      "bounds": [40, 90]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/repaint-child-of-squashed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/repaint-child-of-squashed-expected.txt
deleted file mode 100644
index fdd7d98..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/repaint-child-of-squashed-expected.txt
+++ /dev/null
@@ -1,114 +0,0 @@
-CASE 1, original layer tree
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box top')",
-      "position": [130, 130],
-      "bounds": [100, 100]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 50, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-CASE 2, change color of "inner" to red
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box top')",
-      "position": [130, 130],
-      "bounds": [100, 100],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='inner'",
-          "rect": [10, 10, 50, 50],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 50, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='inner'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/selection-repaint-with-gaps-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/selection-repaint-with-gaps-expected.txt
deleted file mode 100644
index 81d9ec97..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/selection-repaint-with-gaps-expected.txt
+++ /dev/null
@@ -1,156 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='overlap'",
-      "bounds": [300, 500],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='item')",
-      "position": [15, 35],
-      "bounds": [100, 210],
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 80, 40, 39],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'lorem'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'ipsum'",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='overlap'",
-      "bounds": [300, 500],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='item')",
-      "position": [15, 35],
-      "bounds": [100, 210],
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 80, 42, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 160, 40, 39],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'lorem'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'ipsum'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'lorem'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'ipsum'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-above-fixed-1-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-above-fixed-1-expected.txt
deleted file mode 100644
index 4c55c8c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-above-fixed-1-expected.txt
+++ /dev/null
@@ -1,462 +0,0 @@
-The gray div is a composited fixed-position element, and the cyan/lime elements should be squashed together on top. When scrolling, paragraphs may pop in-and-out of the squashing layer when they change overlapping status with respect to the composited layer underneath.
-
-This scenario tests (1) that content repaints correctly as layers pop in and out of squashing, and (2) that the positioning of the squashing layer remains correct (i.e. scrolls properly) when the squashing layer is on top of a fixed-position composited layer.
-
-CASE 1, original layer tree:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 1400],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited background'",
-      "bounds": [300, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='paragraph-b' class='overlapping lime'",
-      "position": [0, 100],
-      "bounds": [200, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FF00"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='paragraph-c' class='overlapping cyan')",
-      "position": [0, 200],
-      "bounds": [200, 300]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 150, 0, 1]
-      ]
-    }
-  ]
-}
-CASE 2, scrolling y to 80, new layers will be squashed, so things repaint:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 1400],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-f' class='overlapping lime'",
-          "rect": [0, 500, 200, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-e' class='overlapping cyan'",
-          "rect": [0, 200, 200, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-b' class='overlapping lime'",
-          "rect": [0, 100, 200, 100],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-d' class='overlapping lime'",
-          "rect": [0, 100, 200, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-c' class='overlapping cyan'",
-          "rect": [0, 0, 200, 100],
-          "reason": "subtree"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited background'",
-      "bounds": [300, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='paragraph-c' class='overlapping cyan'",
-      "position": [0, 200],
-      "bounds": [200, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-c' class='overlapping cyan'",
-          "rect": [0, 0, 200, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-c' class='overlapping cyan'",
-          "rect": [0, 0, 200, 100],
-          "reason": "compositing update"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='paragraph-d' class='overlapping lime')",
-      "position": [0, 300],
-      "bounds": [200, 300],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-f' class='overlapping lime'",
-          "rect": [0, 200, 200, 100],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-e' class='overlapping cyan'",
-          "rect": [0, 100, 200, 100],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-d' class='overlapping lime'",
-          "rect": [0, 0, 200, 100],
-          "reason": "compositing update"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -80, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 230, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-c' class='overlapping cyan'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-d' class='overlapping lime'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-e' class='overlapping cyan'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-f' class='overlapping lime'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-b' class='overlapping lime'",
-      "reason": "compositing update"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-c' class='overlapping cyan'",
-      "reason": "compositing update"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-d' class='overlapping lime'",
-      "reason": "compositing update"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-e' class='overlapping cyan'",
-      "reason": "compositing update"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-f' class='overlapping lime'",
-      "reason": "compositing update"
-    }
-  ]
-}
-CASE 3, scrolling y to 120, no repaints expected:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 1400],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited background'",
-      "bounds": [300, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='paragraph-c' class='overlapping cyan'",
-      "position": [0, 200],
-      "bounds": [200, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FFFF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='paragraph-d' class='overlapping lime')",
-      "position": [0, 300],
-      "bounds": [200, 300],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -120, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 270, 0, 1]
-      ]
-    }
-  ]
-}
-CASE 4, scrolling y to 170 new layers will be squashed, so things repaint:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 1400],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-g' class='overlapping cyan'",
-          "rect": [0, 600, 200, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-c' class='overlapping cyan'",
-          "rect": [0, 200, 200, 100],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-f' class='overlapping lime'",
-          "rect": [0, 200, 200, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-e' class='overlapping cyan'",
-          "rect": [0, 100, 200, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-d' class='overlapping lime'",
-          "rect": [0, 0, 200, 100],
-          "reason": "subtree"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited background'",
-      "bounds": [300, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='paragraph-d' class='overlapping lime'",
-      "position": [0, 300],
-      "bounds": [200, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FF00",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-d' class='overlapping lime'",
-          "rect": [0, 0, 200, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-d' class='overlapping lime'",
-          "rect": [0, 0, 200, 100],
-          "reason": "compositing update"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV id='paragraph-e' class='overlapping cyan')",
-      "position": [0, 400],
-      "bounds": [200, 300],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-g' class='overlapping cyan'",
-          "rect": [0, 200, 200, 100],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-f' class='overlapping lime'",
-          "rect": [0, 100, 200, 100],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-e' class='overlapping cyan'",
-          "rect": [0, 0, 200, 100],
-          "reason": "compositing update"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -170, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 320, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-d' class='overlapping lime'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-e' class='overlapping cyan'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-f' class='overlapping lime'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-g' class='overlapping cyan'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-c' class='overlapping cyan'",
-      "reason": "compositing update"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-d' class='overlapping lime'",
-      "reason": "compositing update"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-e' class='overlapping cyan'",
-      "reason": "compositing update"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-f' class='overlapping lime'",
-      "reason": "compositing update"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-g' class='overlapping cyan'",
-      "reason": "compositing update"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-above-fixed-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-above-fixed-2-expected.txt
deleted file mode 100644
index 10482c6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-above-fixed-2-expected.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-This scenario verifies that the cyan "container" element scrolls properly with squashing enabled. The "container" element should not squash into a composited layer mapping owned by the fixed position layer or its descendant, since this would make it behave like a fixed position element during composited scrolling.
-
-CASE 1, original layer tree:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 4050],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='fixed'",
-      "bounds": [400, 200],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='compositedInsideFixed'",
-      "bounds": [50, 50],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#FF0000"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container'",
-      "position": [100, 50],
-      "bounds": [200, 4000],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FFFF"
-    }
-  ]
-}
-CASE 2, scrolling y to 80, the "container" element should remain positioned with respect to the scrolled document, the fixed-pos layer compensates for the new scroll position:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 4050],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='fixed'",
-      "position": [0, 80],
-      "bounds": [400, 200],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='compositedInsideFixed'",
-      "position": [0, 80],
-      "bounds": [50, 50],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container'",
-      "position": [100, 50],
-      "bounds": [200, 4000],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FFFF",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -80, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-above-fixed-3-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-above-fixed-3-expected.txt
deleted file mode 100644
index d55a9b64..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-above-fixed-3-expected.txt
+++ /dev/null
@@ -1,239 +0,0 @@
-This scenario verifies that the green "container" element and lime "innerScrolling" element scroll properly even though there is a blue fixed-position element layered in between them.
-
-The catch is that the squashing requirements should be computed in correct paint order, so that the green container does not accidentally position itself with respect to the wrong layer and not scroll.
-
-CASE 1, original layer tree:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 4100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='backgroundFixed'",
-      "bounds": [400, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container'",
-      "position": [100, 100],
-      "bounds": [100, 4000],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='innerFixed'",
-      "bounds": [200, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='innerScrolling'",
-      "position": [200, 100],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FF00"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 150, 0, 1]
-      ]
-    }
-  ]
-}
-CASE 2, scrolling y by 10 pixels, both the "container" and "inner" should scroll properly.
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 4100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='backgroundFixed'",
-      "bounds": [400, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container'",
-      "position": [100, 100],
-      "bounds": [100, 4000],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='innerFixed'",
-      "bounds": [200, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='innerScrolling'",
-      "position": [200, 100],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FF00",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -10, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 10, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 160, 0, 1]
-      ]
-    }
-  ]
-}
-CASE 3, scrolling y further so that "inner" no longer overlaps the fixed-pos layer, then the stacking context of "container" includes the "innerScrolling" layer, and doubles in width:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 4100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='backgroundFixed'",
-      "bounds": [400, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container'",
-      "position": [100, 100],
-      "bounds": [200, 4000],
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='innerScrolling'",
-          "rect": [100, 0, 100, 100],
-          "reason": "compositing update"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='innerFixed'",
-      "bounds": [200, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 3
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -110, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 110, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 260, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='innerScrolling'",
-      "reason": "compositing update"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-compositing-hover-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-compositing-hover-expected.txt
deleted file mode 100644
index 5bfabd0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-compositing-hover-expected.txt
+++ /dev/null
@@ -1,386 +0,0 @@
-Test overlap is rendered correctly when hovering over elements
-
-Case 1, original layer tree:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited'",
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [180, 180],
-      "bounds": [260, 260]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-Case 2: hovering over the "middle" element (causes that div to become its own composited layer)
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited'",
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='box middle'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 3
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle2')",
-      "position": [260, 260],
-      "bounds": [180, 180]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [180, 180, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-Case 3: hovering over the "middle2" element (causes that div to become its own composited layer)
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited'",
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [180, 180],
-      "bounds": [100, 100]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='box middle2'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 3
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box top')",
-      "position": [340, 340],
-      "bounds": [100, 100]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [260, 260, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-Case 4: hovering over the "top" element (causes that div to become its own composited layer)
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited'",
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [180, 180],
-      "bounds": [180, 180]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='box top'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 3
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [340, 340, 0, 1]
-      ]
-    }
-  ]
-}
-Case 5: back to situation in case 1
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited'",
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [180, 180],
-      "bounds": [260, 260]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-onto-distant-relative-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-onto-distant-relative-expected.txt
deleted file mode 100644
index c3843a8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-onto-distant-relative-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='squashing'",
-      "bounds": [1, 1],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='squashed')",
-      "position": [600, 0],
-      "bounds": [200, 200]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-33554430, 0, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-onto-nephew-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-onto-nephew-expected.txt
deleted file mode 100644
index 8c8f45a14f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-onto-nephew-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [40, 40],
-      "bounds": [180, 190]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [125, 125, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-onto-transform-backing-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-onto-transform-backing-expected.txt
deleted file mode 100644
index f113c8e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-onto-transform-backing-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='compositedAndRotated box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [20, 20],
-      "bounds": [260, 260]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [0.707106781186548, 0.707106781186548, 0, 0],
-        [-0.707106781186548, 0.707106781186548, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [50, 50],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-paint-invalidation-fixed-position-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-paint-invalidation-fixed-position-expected.txt
deleted file mode 100644
index 71b09df0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-paint-invalidation-fixed-position-expected.txt
+++ /dev/null
@@ -1,133 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "bounds": [100, 5000],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "position": [8, 25],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='foo'",
-      "position": [8, 50],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='foo'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='foo'",
-      "reason": "style change"
-    }
-  ]
-}
- {
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "bounds": [100, 5000],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "position": [8, 25],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='foo'",
-      "position": [8, 50],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='foo'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='foo'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-same-transform-ancestor-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-same-transform-ancestor-expected.txt
deleted file mode 100644
index ce7cadf..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-same-transform-ancestor-expected.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='transform-parent'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='squashing'",
-      "bounds": [1, 1],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='squashed')",
-      "position": [-100, 0],
-      "bounds": [200, 200],
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [0.866025403784439, -0.5, 0, 0],
-        [0.5, 0.866025403784439, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "origin": [50, 50]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-simple-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-simple-expected.txt
deleted file mode 100644
index 5a66b73..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-simple-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [20, 20],
-      "bounds": [260, 260]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-three-layers-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-three-layers-expected.txt
deleted file mode 100644
index a9d46e53..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-three-layers-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [40, 40],
-      "bounds": [180, 190]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-transform-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-transform-expected.txt
deleted file mode 100644
index d06087c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-transform-expected.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [-1, -1],
-      "bounds": [281, 281]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-transform-repainting-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-transform-repainting-child-expected.txt
deleted file mode 100644
index fd7b7d77..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-transform-repainting-child-expected.txt
+++ /dev/null
@@ -1,186 +0,0 @@
-CASE 1, original layer tree
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [-1, -1],
-      "bounds": [281, 281]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-CASE 2, hovering over the outer div
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [-1, -1],
-      "bounds": [281, 281],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='box middle'",
-          "rect": [0, 0, 142, 142],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='box middle'",
-      "reason": "style change"
-    }
-  ]
-}
-CASE 3, hovering over the inner div
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [-1, -1],
-      "bounds": [281, 281],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='box middle'",
-          "rect": [0, 0, 142, 142],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='smallbox'",
-          "rect": [32, 32, 71, 71],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='box middle'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='smallbox'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-transform-repainting-transformed-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-transform-repainting-transformed-child-expected.txt
deleted file mode 100644
index 33b566c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squash-transform-repainting-transformed-child-expected.txt
+++ /dev/null
@@ -1,186 +0,0 @@
-CASE 1, original layer tree
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [4, 4],
-      "bounds": [276, 276]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-CASE 2, hovering over the outer div
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [4, 4],
-      "bounds": [276, 276],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='box middle'",
-          "rect": [0, 0, 132, 132],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='box middle'",
-      "reason": "style change"
-    }
-  ]
-}
-CASE 3, hovering over the inner div
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [4, 4],
-      "bounds": [276, 276],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='box middle'",
-          "rect": [0, 0, 132, 132],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='smallbox'",
-          "rect": [19, 21, 85, 86],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='box middle'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='smallbox'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashed-layer-loses-graphicslayer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashed-layer-loses-graphicslayer-expected.txt
deleted file mode 100644
index 3c57b51..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashed-layer-loses-graphicslayer-expected.txt
+++ /dev/null
@@ -1,115 +0,0 @@
-A squashing Layer that becomes non-composited should correctly send a repaint invalidation to the new container GraphicsLayer that it paints into. When run interactively, hovering over the force-composited gray div should not cause other layers to disappear.
-
-CASE 1, original layer tree:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='forceComposited' class='composited underneath'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='A' class='overlap1')",
-      "position": [140, 140],
-      "bounds": [260, 260]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [60, 60, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-CASE 2, The original composited layer is no longer composited, which then also removes all squashing layers. The important point is that there should be an appropriate repaint to the root GraphicsLayer:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-          "rect": [300, 300, 100, 100],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-          "rect": [220, 220, 100, 100],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
-          "rect": [140, 140, 100, 100],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='forceComposited' class='underneath'",
-          "rect": [60, 60, 100, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='forceComposited' class='underneath'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
-      "reason": "compositing update"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-      "reason": "compositing update"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-      "reason": "compositing update"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashed-repaints-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashed-repaints-expected.txt
deleted file mode 100644
index 90dd524..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashed-repaints-expected.txt
+++ /dev/null
@@ -1,332 +0,0 @@
-Basic repaint test for squashed layers. The entire squashing layer should not need repainting when only a portion of it is invalidated. Test interactively by using --show-paint-rects and hovering over elements to change their color.
-
-CASE 1, original layer tree:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='A' class='overlap1')",
-      "position": [140, 140],
-      "bounds": [260, 260]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [60, 60, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-CASE 2, overlap1 changes color:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='A' class='overlap1')",
-      "position": [140, 140],
-      "bounds": [260, 260],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [60, 60, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
-      "reason": "style change"
-    }
-  ]
-}
-CASE 3, overlap1 and overlap2 change color:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='A' class='overlap1')",
-      "position": [140, 140],
-      "bounds": [260, 260],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-          "rect": [80, 80, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [60, 60, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-      "reason": "style change"
-    }
-  ]
-}
-CASE 4, overlap2 and overlap3 change color:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='A' class='overlap1')",
-      "position": [140, 140],
-      "bounds": [260, 260],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-          "rect": [160, 160, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-          "rect": [80, 80, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [60, 60, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-      "reason": "style change"
-    }
-  ]
-}
-CASE 5, overlap3 and overlap1 change color:
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='A' class='overlap1')",
-      "position": [140, 140],
-      "bounds": [260, 260],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-          "rect": [160, 160, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [60, 60, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashing-inside-perspective-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashing-inside-perspective-expected.txt
deleted file mode 100644
index 94cc92d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashing-inside-perspective-expected.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "position": [8, 8],
-      "contentsOpaque": true,
-      "drawsContent": false
-    },
-    {
-      "name": "Child Transform Layer",
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#00008B",
-      "transform": 3
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV)",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, -0.001],
-        [0, 0, 0, 1]
-      ],
-      "origin": [0, 0]
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 74, 200, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashing-print-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashing-print-expected.txt
deleted file mode 100644
index 4eb4d56..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashing-print-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 1066x799
-layer at (0,0) size 1066x118 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1066x118
-    LayoutBlockFlow {BODY} at (8,8) size 1050x102
-layer at (8,8) size 102x102
-  LayoutBlockFlow {DIV} at (0,0) size 102x102 [border: (1px solid #000000)]
-layer at (50,50) size 102x102
-  LayoutBlockFlow (positioned) {DIV} at (50,50) size 102x102 [border: (1px solid #000000)]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashing-sparsity-heuristic-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashing-sparsity-heuristic-expected.txt
deleted file mode 100644
index b801c162..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/squashing/squashing-sparsity-heuristic-expected.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited'",
-      "bounds": [400, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#808080",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='A' class='overlap1')",
-      "position": [140, 140],
-      "bounds": [10, 10]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
-      "position": [220, 220],
-      "bounds": [10, 10],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FF00"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='C' class='overlap3')",
-      "position": [220, 300],
-      "bounds": [25, 10]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [60, 60, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/tiled-layers-hidpi-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/tiled-layers-hidpi-expected.txt
deleted file mode 100644
index e941394..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/tiled-layers-hidpi-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [1600, 1200],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [1600, 1170],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [3616, 1170],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='composited'",
-      "bounds": [3600, 20],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [16, 16, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/update-paint-phases-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/update-paint-phases-expected.txt
deleted file mode 100644
index 1f39fab..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/update-paint-phases-expected.txt
+++ /dev/null
@@ -1,119 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF",
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintCompositedScroll",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintingPhases": [
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintOverflowContents",
-        "GraphicsLayerPaintCompositedScroll"
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='scroller'",
-      "position": [8, 8],
-      "bounds": [102, 102],
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintCompositedScroll",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [9, 9],
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [9, 9],
-      "bounds": [85, 120],
-      "paintingPhases": [
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintOverflowContents",
-        "GraphicsLayerPaintCompositedScroll"
-      ]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [102, 102],
-      "drawsContent": false,
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [9, 94],
-      "bounds": [85, 15],
-      "drawsContent": false,
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [94, 9],
-      "bounds": [15, 85],
-      "drawsContent": false,
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintDecoration"
-      ]
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [94, 94],
-      "bounds": [15, 15],
-      "paintingPhases": [
-        "GraphicsLayerPaintBackground",
-        "GraphicsLayerPaintForeground",
-        "GraphicsLayerPaintMask",
-        "GraphicsLayerPaintDecoration"
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/video/video-poster-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/video/video-poster-expected.txt
deleted file mode 100644
index e913b8c2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/video/video-poster-expected.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-A <video> should not have a layer until playback begins.
-This test can not be run manually, it requires testRunner.layerTreeAsText.
-
-Case: No src, no poster
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
-
-Case: Displaying poster
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 781],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
-
-Case: Displaying movie
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 1165],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutVideo VIDEO",
-      "position": [8, 8],
-      "bounds": [352, 288],
-      "drawsContent": false
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small phase-ready state-stopped'",
-      "position": [8, 8],
-      "bounds": [352, 288]
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutFlexibleBox (relative positioned) DIV)",
-      "position": [8, 8],
-      "bounds": [352, 246]
-    }
-  ]
-}
-
-
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/visibility/layer-visible-content-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/visibility/layer-visible-content-expected.txt
deleted file mode 100644
index 0b05974b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/visibility/layer-visible-content-expected.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container'",
-      "bounds": [200, 200]
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [200, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited box'",
-      "bounds": [10, 10],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow PRE id='layer-tree'",
-      "bounds": [800, 16],
-      "opacity": 0
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/will-change/composited-layers-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/will-change/composited-layers-expected.txt
deleted file mode 100644
index a44d2f16..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/will-change/composited-layers-expected.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='willChangeOpacity' class='shouldComposite'",
-      "position": [12, 42],
-      "bounds": [30, 30],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='willChangeTransform' class='shouldComposite'",
-      "position": [12, 76],
-      "bounds": [30, 30],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='willChangeLeft' class='positioned shouldComposite'",
-      "position": [12, 144],
-      "bounds": [30, 30],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='willChangeRight' class='positioned shouldComposite'",
-      "position": [12, 212],
-      "bounds": [30, 30],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='willChangeTop' class='positioned shouldComposite'",
-      "position": [12, 280],
-      "bounds": [30, 30],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='willChangeBottom' class='positioned shouldComposite'",
-      "position": [12, 348],
-      "bounds": [30, 30],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='willChangeCombinationThatComposites' class='shouldComposite'",
-      "position": [12, 416],
-      "bounds": [30, 30],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/will-change/will-change-contents-suppresses-compositing-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/will-change/will-change-contents-suppresses-compositing-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/will-change/will-change-contents-suppresses-compositing-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/README.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/README.txt
deleted file mode 100644
index 315232a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-# This suite runs tests with --disable-blink-features=SlimmingPaintV175
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-antialiasing-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-antialiasing-expected.png
deleted file mode 100644
index 023729c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-antialiasing-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-inner-bleed-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-inner-bleed-expected.png
deleted file mode 100644
index cbb7d12..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-inner-bleed-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-all-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-all-expected.png
deleted file mode 100644
index bdae296b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-all-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-border-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-border-expected.png
deleted file mode 100644
index 0f136825..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-border-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-mask-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-mask-expected.png
deleted file mode 100644
index b593f70e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-mask-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-shadow-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-shadow-expected.png
deleted file mode 100644
index d06d683..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/inline-mask-overlay-image-outset-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/inline-mask-overlay-image-outset-expected.png
deleted file mode 100644
index 587c285..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/inline-mask-overlay-image-outset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/overflow-hidden-border-radius-force-backing-store-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/overflow-hidden-border-radius-force-backing-store-expected.txt
deleted file mode 100644
index c5c1822..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/borders/overflow-hidden-border-radius-force-backing-store-expected.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='outer'",
-      "position": [50, 50],
-      "bounds": [300, 300]
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [50, 50],
-      "bounds": [300, 300],
-      "drawsContent": false,
-      "maskLayer": [
-        {
-          "name": "Child Clipping Mask Layer",
-          "bounds": [300, 300]
-        }
-      ]
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [50, 50],
-      "bounds": [285, 300],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='content'",
-      "bounds": [285, 1000],
-      "contentsOpaque": true,
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 50, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/multicol/README.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/multicol/README.txt
deleted file mode 100644
index 315232a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/multicol/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-# This suite runs tests with --disable-blink-features=SlimmingPaintV175
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/multicol/composited-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/multicol/composited-layer-expected.txt
deleted file mode 100644
index f3b907f5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/multicol/composited-layer-expected.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-"layers": [
-{
-"name": "LayoutView #document",
-"bounds": [800, 600],
-"drawsContent": false,
-"backgroundColor": "#FFFFFF"
-},
-{
-"name": "Scrolling Layer",
-"bounds": [800, 600],
-"drawsContent": false
-},
-{
-"name": "Scrolling Contents Layer",
-"bounds": [800, 600],
-"contentsOpaque": true,
-"backgroundColor": "#FFFFFF"
-},
-{
-"name": "LayoutBlockFlow DIV id='multicol'",
-"bounds": [200, 100],
-"transform": 1
-}
-],
-"transforms": [
-{
-"id": 1,
-"transform": [
-[1, 0, 0, 0],
-[0, 1, 0, 0],
-[0, 0, 1, 0],
-[8, 8, 0, 1]
-]
-}
-]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/pagination/README.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/pagination/README.txt
deleted file mode 100644
index 315232a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fast/pagination/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-# This suite runs tests with --disable-blink-features=SlimmingPaintV175
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fragmentation/README.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/fragmentation/README.txt
deleted file mode 100644
index 315232a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/fragmentation/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-# This suite runs tests with --disable-blink-features=SlimmingPaintV175
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/README.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/README.txt
deleted file mode 100644
index 315232a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-# This suite runs tests with --disable-blink-features=SlimmingPaintV175
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/background/rounded-clip-fractional-offset-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/background/rounded-clip-fractional-offset-expected.png
deleted file mode 100644
index de2965a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/background/rounded-clip-fractional-offset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/clipath/clip-path-with-background-and-box-behind-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/clipath/clip-path-with-background-and-box-behind-expected.txt
deleted file mode 100644
index 0dce973..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/clipath/clip-path-with-background-and-box-behind-expected.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x171
-  LayoutBlockFlow {HTML} at (0,0) size 800x171
-    LayoutBlockFlow {BODY} at (8,8) size 784x155
-      LayoutSVGRoot {svg} at (0,0) size 300x150
-        LayoutSVGResourceClipper {clipPath} [id="equitri"] [clipPathUnits=objectBoundingBox]
-          LayoutSVGPath {polygon} at (0,0) size 1x0.86 [fill={[type=SOLID] [color=#000000]}] [points="0.5 0 0 0.86 1 0.86 0.5 0"]
-      LayoutText {#text} at (0,0) size 0x0
-layer at (8,8) size 100x100
-  LayoutBlockFlow (positioned) {DIV} at (8,8) size 100x100 [bgcolor=#008000]
-layer at (8,8) size 100x100
-  LayoutBlockFlow (relative positioned) {DIV} at (0,0) size 100x100 [bgcolor=#FF0000]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/filters/clip-filter-overflow-clip-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/filters/clip-filter-overflow-clip-expected.png
deleted file mode 100644
index 8f15a06..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/filters/clip-filter-overflow-clip-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/4776765-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/4776765-expected.txt
deleted file mode 100644
index ce1c286..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/4776765-expected.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [7, 43, 786, 62],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='div'",
-          "rect": [8, 84, 784, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='div'",
-          "rect": [8, 64, 1, 19],
-          "reason": "caret"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='div'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-gif-background-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-gif-background-expected.txt
deleted file mode 100644
index ecbc1a3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-gif-background-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='targetImage'",
-          "rect": [8, 8, 50, 50],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='targetImage'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutImage IMG id='testTarget'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-gif-background-offscreen-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-gif-background-offscreen-expected.txt
deleted file mode 100644
index 8dcf038..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-gif-background-offscreen-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-gif-background-offscreen-firstline-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-gif-background-offscreen-firstline-expected.txt
deleted file mode 100644
index 8dcf038..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-gif-background-offscreen-firstline-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-png-background-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-png-background-expected.txt
deleted file mode 100644
index ecbc1a3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-png-background-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='targetImage'",
-          "rect": [8, 8, 50, 50],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='targetImage'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutImage IMG id='testTarget'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-webp-background-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-webp-background-expected.txt
deleted file mode 100644
index ecbc1a3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/animated-webp-background-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='targetImage'",
-          "rect": [8, 8, 50, 50],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='targetImage'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutImage IMG id='testTarget'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-currentColor-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-currentColor-repaint-expected.txt
deleted file mode 100644
index 2dc20a22..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-currentColor-repaint-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='div2'",
-          "rect": [8, 108, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='div1'",
-          "rect": [8, 8, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='div1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='div2'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-generated-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-generated-expected.txt
deleted file mode 100644
index 1003e2d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-generated-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 100, 300],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-image-paint-invalidation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-image-paint-invalidation-expected.txt
deleted file mode 100644
index e15872b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-image-paint-invalidation-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [808, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 808, 2016],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 8, 800, 2000],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-image-paint-invalidation-large-abspos-div-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-image-paint-invalidation-large-abspos-div-expected.txt
deleted file mode 100644
index 4cb443e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-image-paint-invalidation-large-abspos-div-expected.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollY 3000.00 scrollHeight 4008
-  LayoutView at (0,0) size 800x600
-layer at (0,-3000) size 785x558 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {HTML} at (0,0) size 785x558
-    LayoutBlockFlow {BODY} at (8,8) size 769x542
-      LayoutImage {IMG} at (0,0) size 489x537
-      LayoutText {#text} at (0,0) size 0x0
-layer at (8,-2992) size 100x4000 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow (positioned) {DIV} at (8,8) size 100x4000
-scrolled to 0,3000
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-misaligned-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-misaligned-expected.txt
deleted file mode 100644
index ca0087ab..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-misaligned-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [238, 241, 40, 40],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-resize-height-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-resize-height-expected.txt
deleted file mode 100644
index 9268841..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-resize-height-expected.txt
+++ /dev/null
@@ -1,398 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test image'",
-      "position": [8, 8],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test image'",
-          "rect": [0, 40, 60, 4],
-          "reason": "incremental"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test image size-cover'",
-      "position": [58, 8],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test image size-cover'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test image size-contain'",
-      "position": [108, 8],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test image size-contain'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test image fixed-height'",
-      "position": [158, 8],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test image fixed-height'",
-          "rect": [0, 40, 60, 4],
-          "reason": "incremental"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test image percent-height'",
-      "position": [208, 8],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test image percent-height'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test image top'",
-      "position": [258, 8],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test image top'",
-          "rect": [0, 40, 60, 4],
-          "reason": "incremental"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test image bottom'",
-      "position": [308, 8],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test image bottom'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test image center'",
-      "position": [358, 8],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test image center'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test image no-repeat'",
-      "position": [408, 8],
-      "bounds": [60, 44],
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test image no-repeat'",
-          "rect": [0, 40, 60, 4],
-          "reason": "incremental"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test image repeat-space'",
-      "position": [458, 8],
-      "bounds": [60, 44],
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test image repeat-space'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test image repeat-round'",
-      "position": [508, 8],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test image repeat-round'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test generated'",
-      "position": [8, 108],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test generated'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test generated size-cover'",
-      "position": [58, 108],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test generated size-cover'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test generated size-contain'",
-      "position": [108, 108],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test generated size-contain'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test generated percent-height'",
-      "position": [208, 108],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test generated percent-height'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test generated top'",
-      "position": [258, 108],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test generated top'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test generated bottom'",
-      "position": [308, 108],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test generated bottom'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test generated center'",
-      "position": [358, 108],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test generated center'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test generated no-repeat'",
-      "position": [408, 108],
-      "bounds": [60, 44],
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test generated no-repeat'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test generated repeat-space'",
-      "position": [458, 108],
-      "bounds": [60, 44],
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test generated repeat-space'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='test generated repeat-round'",
-      "position": [508, 108],
-      "bounds": [60, 44],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='test generated repeat-round'",
-          "rect": [0, 0, 60, 44],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test image'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test image size-cover'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test image size-contain'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test image fixed-height'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test image percent-height'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test image top'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test image bottom'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test image center'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test image no-repeat'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test image repeat-space'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test image repeat-round'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test generated'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test generated size-cover'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test generated size-contain'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test generated percent-height'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test generated top'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test generated bottom'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test generated center'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test generated no-repeat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test generated repeat-space'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='test generated repeat-round'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-shorthand-with-gradient-and-height-changes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-shorthand-with-gradient-and-height-changes-expected.txt
deleted file mode 100644
index 9827fe2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-shorthand-with-gradient-and-height-changes-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='outer'",
-          "rect": [8, 8, 784, 500],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='outer'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-size-auto-with-gradient-and-height-changes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-size-auto-with-gradient-and-height-changes-expected.txt
deleted file mode 100644
index 9827fe2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/background-size-auto-with-gradient-and-height-changes-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='outer'",
-          "rect": [8, 8, 784, 500],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='outer'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/backgroundSizeRepaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/backgroundSizeRepaint-expected.txt
deleted file mode 100644
index b2552e0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/backgroundSizeRepaint-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [19, 339, 200, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [19, 177, 200, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='b'",
-          "rect": [29, 379, 180, 20],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='a'",
-          "rect": [29, 217, 180, 20],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='a'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='b'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/body-background-image-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/body-background-image-expected.txt
deleted file mode 100644
index 0e1566c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/body-background-image-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 240, 784, 288],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/change-text-content-and-background-color-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/change-text-content-and-background-color-expected.txt
deleted file mode 100644
index 1f65b57..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/change-text-content-and-background-color-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl (positioned) INPUT id='input'",
-          "rect": [8, 8, 244, 68],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [30, 30, 200, 24],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [30, 30, 46, 23],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl (positioned) INPUT id='input'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'NEW'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed-expected.txt
deleted file mode 100644
index d89706b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 5000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 785, 5000],
-          "reason": "background on scrolling contents layer"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/multiple-backgrounds-style-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/multiple-backgrounds-style-change-expected.txt
deleted file mode 100644
index ae2a730f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/multiple-backgrounds-style-change-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='test' class='composited box changed'",
-      "bounds": [202, 202],
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/view-background-from-body-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/view-background-from-body-2-expected.txt
deleted file mode 100644
index c9e2b30..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/view-background-from-body-2-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [50, 50, 700, 500],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/viewport-gradient-background-html-move-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/viewport-gradient-background-html-move-overflow-expected.txt
deleted file mode 100644
index 2f19584..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/viewport-gradient-background-html-move-overflow-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 800, 600],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow HTML",
-          "rect": [0, 0, 800, 170],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='div'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/viewport-gradient-background-html-resize-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/viewport-gradient-background-html-resize-expected.txt
deleted file mode 100644
index 4d6cdbf..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/viewport-gradient-background-html-resize-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 800, 600],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 800, 200],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/viewport-gradient-background-html-resize-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/viewport-gradient-background-html-resize-overflow-expected.txt
deleted file mode 100644
index 5346f38..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/background/viewport-gradient-background-html-resize-overflow-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 800, 600],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow HTML",
-          "rect": [0, 0, 800, 200],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/block-layout-inline-children-replaced-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/block-layout-inline-children-replaced-expected.txt
deleted file mode 100644
index 9341e6235..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/block-layout-inline-children-replaced-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target' class='target'",
-          "rect": [0, 116, 402, 152],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage IMG",
-          "rect": [151, 117, 100, 100],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target' class='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutImage IMG",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/block-no-inflow-children-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/block-no-inflow-children-expected.txt
deleted file mode 100644
index cb3e34ae..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/block-no-inflow-children-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 0, 63, 19],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [0, 0, 62, 20],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'La la la la'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/block-shift-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/block-shift-repaint-expected.txt
deleted file mode 100644
index ae564bc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/block-shift-repaint-expected.txt
+++ /dev/null
@@ -1,142 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='half'",
-          "rect": [8, 353, 60, 38],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='half'",
-          "rect": [8, 338, 60, 38],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='red half'",
-          "rect": [8, 248, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='green half'",
-          "rect": [8, 218, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='red half'",
-          "rect": [8, 218, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='green half'",
-          "rect": [8, 188, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='green half'",
-          "rect": [8, 158, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='green half'",
-          "rect": [8, 128, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='red half'",
-          "rect": [8, 128, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='red half'",
-          "rect": [8, 98, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='top' class='blue half'",
-          "rect": [8, 98, 60, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='green half'",
-          "rect": [8, 68, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='green half'",
-          "rect": [8, 38, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='red half'",
-          "rect": [8, 38, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='red half'",
-          "rect": [8, 8, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='div1' class='blue half'",
-          "rect": [8, 8, 60, 30],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='div1' class='blue half'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='red half'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='green half'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='top' class='blue half'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='red half'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='green half'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='green half'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='red half'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='half'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-current-color-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-current-color-expected.txt
deleted file mode 100644
index 08822c5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-current-color-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='currentColor'",
-          "rect": [58, 220, 120, 120],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='currentColor'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-image-outset-add-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-image-outset-add-repaint-expected.txt
deleted file mode 100644
index 3d9ec1f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-image-outset-add-repaint-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [8, 8, 75, 75],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-image-outset-change-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-image-outset-change-repaint-expected.txt
deleted file mode 100644
index 3d9ec1f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-image-outset-change-repaint-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [8, 8, 75, 75],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-radius-repaint-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-radius-repaint-2-expected.txt
deleted file mode 100644
index ebfae52..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-radius-repaint-2-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#3F3F3F"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [874, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#3F3F3F",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 600, 874, 180],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 866, 764],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 224, 784, 548],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [137, 88, 607, 604],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-radius-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-radius-repaint-expected.txt
deleted file mode 100644
index fc176ef..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-radius-repaint-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [19, 245, 200, 88],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [19, 83, 200, 88],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='b'",
-          "rect": [33, 299, 172, 20],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='a'",
-          "rect": [33, 137, 172, 20],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='a'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='b'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-radius-without-border-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-radius-without-border-expected.txt
deleted file mode 100644
index a2051526..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-radius-without-border-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target1'",
-          "rect": [0, 0, 200, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target2'",
-          "rect": [0, 200, 100, 200],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target1'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target2'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-repaint-glitch-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-repaint-glitch-expected.txt
deleted file mode 100644
index 3f3e8f8e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/border-repaint-glitch-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [19, 413, 200, 24],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [19, 251, 200, 24],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='b'",
-          "rect": [33, 403, 172, 20],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='a'",
-          "rect": [33, 241, 172, 20],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='a'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='b'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-inline-resize-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-inline-resize-expected.txt
deleted file mode 100644
index ad440c0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-inline-resize-expected.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow H2",
-          "rect": [40, 107, 113, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow H2",
-          "rect": [8, 107, 113, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [40, 107, 113, 27],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 107, 113, 27],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 88, 32, 67],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage IMG id='foo'",
-          "rect": [8, 88, 32, 32],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutImage IMG id='foo'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow H2",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Chromium'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-shadow-add-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-shadow-add-repaint-expected.txt
deleted file mode 100644
index e176420..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-shadow-add-repaint-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [7, 7, 112, 112],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-shadow-change-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-shadow-change-repaint-expected.txt
deleted file mode 100644
index 3cd0bbd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-shadow-change-repaint-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [7, 7, 122, 122],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-shadow-dynamic-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-shadow-dynamic-expected.txt
deleted file mode 100644
index 361f529..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-shadow-dynamic-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [18, 72, 55, 75],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [18, 192, 55, 55],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-shadow-inset-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-shadow-inset-repaint-expected.txt
deleted file mode 100644
index dd01c13..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-shadow-inset-repaint-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='container'",
-          "rect": [8, 8, 230, 130],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [23, 23, 100, 100],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='container'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-sizing-border-keeping-size-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-sizing-border-keeping-size-expected.txt
deleted file mode 100644
index b8863e0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-sizing-border-keeping-size-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target2' class='border-box'",
-          "rect": [0, 200, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target1' class='content-box'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target1' class='content-box'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target2' class='border-box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-sizing-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-sizing-expected.txt
deleted file mode 100644
index 4f76490..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-sizing-expected.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target2' class='border-box'",
-          "rect": [0, 280, 440, 60],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target1' class='content-box'",
-          "rect": [0, 80, 440, 60],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target2' class='border-box'",
-          "rect": [380, 200, 60, 140],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target1' class='content-box'",
-          "rect": [380, 0, 60, 140],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target1' class='content-box'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target2' class='border-box'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-sizing-padding-keeping-size-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-sizing-padding-keeping-size-expected.txt
deleted file mode 100644
index b8863e0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/box-sizing-padding-keeping-size-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target2' class='border-box'",
-          "rect": [0, 200, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target1' class='content-box'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target1' class='content-box'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target2' class='border-box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/hover-pseudo-borders-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/hover-pseudo-borders-expected.txt
deleted file mode 100644
index 53f6616..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/hover-pseudo-borders-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) \u003Cpseudo:after\u003E",
-          "rect": [138, 8, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='hitregion'",
-          "rect": [8, 8, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='hitregion'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) \u003Cpseudo:after\u003E",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTextFragment (anonymous)",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/hover-pseudo-borders-whitespace-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/hover-pseudo-borders-whitespace-expected.txt
deleted file mode 100644
index 594e922..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/hover-pseudo-borders-whitespace-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='div_outline'",
-          "rect": [8, 138, 120, 120],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='div_border'",
-          "rect": [8, 8, 120, 120],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='div_border'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='div_outline'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/invalidate-box-shadow-currentColor-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/invalidate-box-shadow-currentColor-expected.txt
deleted file mode 100644
index 635347a8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/invalidate-box-shadow-currentColor-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutInline SPAN id='target'",
-          "rect": [8, 8, 29, 24],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 8, 29, 19],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutInline SPAN id='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Text'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/margin-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/margin-expected.txt
deleted file mode 100644
index a47fc1d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/margin-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [20, 20, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [0, 0, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/negative-shadow-box-expand-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/negative-shadow-box-expand-expected.txt
deleted file mode 100644
index 82a55a2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/negative-shadow-box-expand-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='outer'",
-          "rect": [100, 60, 640, 240],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='inner2'",
-          "rect": [100, 200, 600, 100],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='inner2'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/negative-shadow-box-shrink-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/negative-shadow-box-shrink-expected.txt
deleted file mode 100644
index 2eddfc7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/negative-shadow-box-shrink-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='outer'",
-          "rect": [100, 60, 640, 240],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='inner2'",
-          "rect": [100, 200, 600, 100],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='inner2'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='outer'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/padding-border-keeping-border-box-and-content-box-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/padding-border-keeping-border-box-and-content-box-expected.txt
deleted file mode 100644
index aff8c063..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/padding-border-keeping-border-box-and-content-box-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [0, 0, 180, 180],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/padding-keeping-content-size-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/padding-keeping-content-size-expected.txt
deleted file mode 100644
index 445200a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/padding-keeping-content-size-expected.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target2' class='outer'",
-          "rect": [0, 200, 140, 140],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target1' class='outer'",
-          "rect": [0, 0, 140, 140],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='inner'",
-          "rect": [20, 220, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='inner'",
-          "rect": [0, 200, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target1' class='outer'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target2' class='outer'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='inner'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/padding-keeping-visual-size-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/padding-keeping-visual-size-expected.txt
deleted file mode 100644
index 62212c8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/padding-keeping-visual-size-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target2' class='outer'",
-          "rect": [0, 200, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='inner'",
-          "rect": [0, 200, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target1' class='outer'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target1' class='outer'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target2' class='outer'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='inner'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/resize-with-border-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/resize-with-border-expected.txt
deleted file mode 100644
index 952566d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/resize-with-border-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='div'",
-          "rect": [310, 100, 210, 220],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='div'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/shadow-box-resize-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/shadow-box-resize-expected.txt
deleted file mode 100644
index d1130fc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/shadow-box-resize-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target1'",
-          "rect": [100, 100, 190, 120],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target3'",
-          "rect": [100, 300, 140, 170],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target4'",
-          "rect": [300, 300, 140, 120],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target2'",
-          "rect": [300, 100, 140, 120],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target1'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target2'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target3'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target4'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/shadow-box-resize-writing-mode-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/shadow-box-resize-writing-mode-expected.txt
deleted file mode 100644
index d1130fc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/box/shadow-box-resize-writing-mode-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target1'",
-          "rect": [100, 100, 190, 120],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target3'",
-          "rect": [100, 300, 140, 170],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target4'",
-          "rect": [300, 300, 140, 120],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target2'",
-          "rect": [300, 100, 140, 120],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target1'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target2'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target3'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target4'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-3509-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-3509-expected.txt
deleted file mode 100644
index 4fce9c5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-3509-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='im'",
-          "rect": [11, 131, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [11, 131, 4, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='im'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-5699-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-5699-expected.txt
deleted file mode 100644
index 099d04f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-5699-expected.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 136, 784, 68],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 184, 35, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 156, 35, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN id='d'",
-          "rect": [8, 150, 4, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 150, 4, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 136, 4, 19],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='d'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Hello'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-6278-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-6278-expected.txt
deleted file mode 100644
index 725138a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-6278-expected.txt
+++ /dev/null
@@ -1,135 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 138, 292, 160],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 138, 292, 159],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 303, 292, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 138, 242, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 343, 242, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD id='col1'",
-          "rect": [10, 353, 242, 40],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [9, 138, 236, 199],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD id='target'",
-          "rect": [254, 138, 52, 255],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD id='col1'",
-          "rect": [252, 138, 50, 215],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell TD id='col1'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Curabitur pretium, quam quis semper'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'malesuada, est libero feugiat libero,'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'vel fringilla orci nibh sed neque.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Quisque eu nulla non nisi molestie'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'accumsan. Etiam tellus urna, laoreet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'ac, laoreet non, suscipit sed, sapien.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Phasellus vehicula, sem at posuere'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'vehicula, augue nibh molestie nisl,'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'nec ullamcorper lacus ante vulputate'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'pede.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD id='target'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-6388-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-6388-expected.txt
deleted file mode 100644
index e85c3df..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-6388-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [8, 136, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 136, 100, 100],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-6473-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-6473-expected.txt
deleted file mode 100644
index e66d8e2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-6473-expected.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='allcontent'",
-          "rect": [8, 136, 784, 52],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) P",
-          "rect": [8, 152, 784, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) P",
-          "rect": [8, 136, 784, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 152, 71, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 136, 71, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='allcontent'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'SUCCESS'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-7235-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-7235-expected.txt
deleted file mode 100644
index 5c48639..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/bugzilla-7235-expected.txt
+++ /dev/null
@@ -1,74 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 156, 784, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='t'",
-          "rect": [8, 176, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutInline (relative positioned) SPAN id='p'",
-          "rect": [8, 156, 4, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 156, 4, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline (relative positioned) SPAN id='p'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='t'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/button-inner-no-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/button-inner-no-repaint-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/button-inner-no-repaint-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/button-spurious-layout-hint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/button-spurious-layout-hint-expected.txt
deleted file mode 100644
index 46aae6d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/button-spurious-layout-hint-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutButton BUTTON id='target'",
-          "rect": [8, 8, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutButton BUTTON id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/canvas-putImageData-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/canvas-putImageData-expected.txt
deleted file mode 100644
index c67acac..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/canvas-putImageData-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='canvas'",
-          "rect": [8, 8, 90, 90],
-          "reason": "invalidate paint rectangle"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='canvas'",
-      "reason": "invalidate paint rectangle"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/canvas-resize-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/canvas-resize-expected.txt
deleted file mode 100644
index 4433062..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/canvas-resize-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutHTMLCanvas (positioned) CANVAS id='canvas'",
-          "rect": [50, 50, 600, 500],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutHTMLCanvas (positioned) CANVAS id='canvas'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/canvas-resize-no-full-invalidation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/canvas-resize-no-full-invalidation-expected.txt
deleted file mode 100644
index a3132b9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/canvas-resize-no-full-invalidation-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutHTMLCanvas (positioned) CANVAS id='canvas'",
-          "rect": [550, 50, 100, 500],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutHTMLCanvas (positioned) CANVAS id='canvas'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/caret-outside-block-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/caret-outside-block-expected.txt
deleted file mode 100644
index 8e705ff..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/caret-outside-block-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [791, 8, 1, 19],
-          "reason": "caret"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Caret",
-      "reason": "caret"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/caret-subpixel-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/caret-subpixel-expected.txt
deleted file mode 100644
index f39644d1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/caret-subpixel-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl INPUT id='target'",
-          "rect": [8, 8, 224, 22],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 11, 201, 16],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl INPUT id='target'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/caret-ancestor-clip-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/caret-ancestor-clip-change-expected.txt
deleted file mode 100644
index 1c414043..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/caret-ancestor-clip-change-expected.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 200, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 200, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='clip'",
-          "rect": [8, 58, 200, 250],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 8, 1, 107],
-          "reason": "caret"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='clip'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-path-constant-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-path-constant-repaint-expected.txt
deleted file mode 100644
index 09ec73a0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-path-constant-repaint-expected.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='clip'",
-      "bounds": [800, 300],
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#FF0000E6",
-      "maskLayer": [
-        {
-          "name": "Mask Layer",
-          "bounds": [800, 300]
-        }
-      ],
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, 100, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-path-in-mask-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-path-in-mask-layer-expected.txt
deleted file mode 100644
index 01b260fa..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-path-in-mask-layer-expected.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [0, 0, 200, 200],
-          "reason": "full"
-        }
-      ],
-      "maskLayer": [
-        {
-          "name": "Mask Layer",
-          "bounds": [200, 200],
-          "paintInvalidations": [
-            {
-              "object": "LayoutBlockFlow DIV",
-              "rect": [0, 0, 200, 200],
-              "reason": "full"
-            }
-          ]
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-path-resize-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-path-resize-expected.txt
deleted file mode 100644
index 97ae064..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-path-resize-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 8, 200, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-unclip-and-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-unclip-and-change-expected.txt
deleted file mode 100644
index 831337256..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-unclip-and-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='content'",
-          "rect": [8, 120, 100, 300],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='content'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-with-layout-delta-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-with-layout-delta-expected.txt
deleted file mode 100644
index fccbf13..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clip-with-layout-delta-expected.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV",
-          "rect": [108, 8, 100, 100],
-          "reason": "background"
-        },
-        {
-          "object": "LayoutBlockFlow SPAN id='t2' class='blue'",
-          "rect": [108, 8, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 100, 100],
-          "reason": "background"
-        },
-        {
-          "object": "LayoutBlockFlow SPAN id='t1'",
-          "rect": [8, 8, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [108, 8, 4, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 8, 4, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "background"
-    },
-    {
-      "object": "LayoutBlockFlow SPAN id='t1'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV",
-      "reason": "background"
-    },
-    {
-      "object": "LayoutBlockFlow SPAN id='t2' class='blue'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clipped-relative-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clipped-relative-expected.txt
deleted file mode 100644
index 93151b6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/clipped-relative-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='inner'",
-          "rect": [8, 74, 204, 232],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage IMG",
-          "rect": [8, 74, 204, 232],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='inner'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutImage IMG",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/control-clip-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/control-clip-expected.txt
deleted file mode 100644
index 963911c6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/control-clip-expected.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [9, 87, 198, 16],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [16, 117, 184, 16],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [76, 117, 64, 16],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutText (anonymous)",
-          "rect": [9, 87, 63, 16],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText (anonymous)",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'SUCCESS'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'SUCCESS'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/css-clip-change-stacking-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/css-clip-change-stacking-child-expected.txt
deleted file mode 100644
index 4296016f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/css-clip-change-stacking-child-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [8, 8, 300, 300],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 300, 300],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/intermediate-layout-position-clip-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/intermediate-layout-position-clip-expected.txt
deleted file mode 100644
index f319ebc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/intermediate-layout-position-clip-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 8, 40, 20],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/mask-clip-change-stacking-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/mask-clip-change-stacking-child-expected.txt
deleted file mode 100644
index 561d3915..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/mask-clip-change-stacking-child-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [8, 8, 300, 300],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/outline-clip-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/outline-clip-change-expected.txt
deleted file mode 100644
index 526e8be5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/outline-clip-change-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) A id='link' class='updated'",
-          "rect": [48, 108, 90, 25],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [48, 108, 86, 19],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) A id='link' class='updated'",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Lorem Ipsum'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/replaced-clipped-positioned-not-wrong-incremental-repainting-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/replaced-clipped-positioned-not-wrong-incremental-repainting-expected.txt
deleted file mode 100644
index 0a464bbc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/replaced-clipped-positioned-not-wrong-incremental-repainting-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) (floating) DIV class='imgContainer'",
-          "rect": [8, 8, 194, 237],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage IMG",
-          "rect": [8, 8, 194, 232],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) (floating) DIV class='imgContainer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutImage IMG",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/resize-with-border-clipped-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/resize-with-border-clipped-expected.txt
deleted file mode 100644
index 4110d17..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/resize-with-border-clipped-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [100, 100, 200, 200],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/subtree-root-clip-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/subtree-root-clip-2-expected.txt
deleted file mode 100644
index 7521e8b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/subtree-root-clip-2-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [8, 8, 100, 100],
-          "reason": "background"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 8, 100, 100],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "background"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/subtree-root-clip-3-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/subtree-root-clip-3-expected.txt
deleted file mode 100644
index 7d2a921..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/subtree-root-clip-3-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [15, 60, 100, 100],
-          "reason": "background"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [15, 60, 100, 100],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "background"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/subtree-root-clip-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/subtree-root-clip-expected.txt
deleted file mode 100644
index 20b89a9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/clip/subtree-root-clip-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [8, 8, 100, 100],
-          "reason": "background"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='inner'",
-          "rect": [8, 8, 100, 100],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "background"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='inner'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/background-attachment-local-composited-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/background-attachment-local-composited-expected.txt
deleted file mode 100644
index 09202c6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/background-attachment-local-composited-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='container'",
-      "position": [8, 8],
-      "bounds": [400, 400],
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [400, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [400, 2000],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='container'",
-          "rect": [0, 500, 400, 1500],
-          "reason": "background on scrolling contents layer"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [400, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 408],
-      "bounds": [400, 0]
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [408, 8],
-      "bounds": [0, 400]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1600, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/background-attachment-local-equivalent-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/background-attachment-local-equivalent-expected.txt
deleted file mode 100644
index 09202c6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/background-attachment-local-equivalent-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='container'",
-      "position": [8, 8],
-      "bounds": [400, 400],
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [400, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [400, 2000],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='container'",
-          "rect": [0, 500, 400, 1500],
-          "reason": "background on scrolling contents layer"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [400, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 408],
-      "bounds": [400, 0]
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [408, 8],
-      "bounds": [0, 400]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1600, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/child-of-sub-pixel-offset-composited-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/child-of-sub-pixel-offset-composited-layer-expected.txt
deleted file mode 100644
index 1a749c6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/child-of-sub-pixel-offset-composited-layer-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='container'",
-      "bounds": [14, 14],
-      "backgroundColor": "#FF0000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target' class='green'",
-          "rect": [-1, 0, 15, 14],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [101, 100, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target' class='green'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/chunk-reorder-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/chunk-reorder-expected.txt
deleted file mode 100644
index 391f99a9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/chunk-reorder-expected.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "bounds": [784, 550],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='chunk3'",
-          "rect": [400, 400, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='chunk2'",
-          "rect": [0, 0, 1, 1],
-          "reason": "subtree"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='chunk2'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='chunk3'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/clipping-should-not-repaint-composited-descendants-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/clipping-should-not-repaint-composited-descendants-expected.txt
deleted file mode 100644
index 128d8ce..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/clipping-should-not-repaint-composited-descendants-expected.txt
+++ /dev/null
@@ -1,110 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 616],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='clipping-container'",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='clipped-composited-child'",
-      "bounds": [252, 252],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFF00",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='clipping-container with-initial-clipping'",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [100, 100],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='clipped-composited-child'",
-      "bounds": [252, 252],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFF00",
-      "transform": 4
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [108, 108, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-100, -100, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [108, 408, 0, 1]
-      ]
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-100, -100, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='clipping-container'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='clipping-container with-initial-clipping'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/column-span-under-composited-column-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/column-span-under-composited-column-child-expected.txt
deleted file mode 100644
index a00c43a2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/column-span-under-composited-column-child-expected.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (column spanner) DIV id='target'",
-          "rect": [8, 8, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "position": [8, 8],
-      "contentsOpaque": true,
-      "drawsContent": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (column spanner) DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/composited-float-under-composited-inline-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/composited-float-under-composited-inline-expected.txt
deleted file mode 100644
index 80c739a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/composited-float-under-composited-inline-expected.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutInline (relative positioned) SPAN",
-      "position": [108, 108]
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) (floating) DIV id='float'",
-      "position": [58, 58],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='float'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='float'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/composited-float-under-composited-inline-individual-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/composited-float-under-composited-inline-individual-expected.txt
deleted file mode 100644
index 80c739a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/composited-float-under-composited-inline-individual-expected.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutInline (relative positioned) SPAN",
-      "position": [108, 108]
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) (floating) DIV id='float'",
-      "position": [58, 58],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='float'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='float'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/composited-layers-move-in-subpixels-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/composited-layers-move-in-subpixels-expected.txt
deleted file mode 100644
index 728a871d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/composited-layers-move-in-subpixels-expected.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='first'",
-      "position": [8, 110],
-      "bounds": [784, 52],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFF00"
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "position": [8, 162],
-      "bounds": [784, 52],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3"
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "position": [8, 214],
-      "bounds": [784, 52],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/compositing-reason-removed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/compositing-reason-removed-expected.txt
deleted file mode 100644
index fe15418..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/compositing-reason-removed-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='square'",
-          "rect": [8, 8, 30, 30],
-          "reason": "compositing update"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='square'",
-      "reason": "compositing update"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/containing-block-added-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/containing-block-added-expected.txt
deleted file mode 100644
index d905b14..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/containing-block-added-expected.txt
+++ /dev/null
@@ -1,74 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-          "rect": [50, 50, 75, 75],
-          "reason": "subtree"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container'",
-      "position": [200, 100],
-      "bounds": [125, 125],
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='container'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='container'",
-          "rect": [0, 0, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-          "rect": [50, 50, 75, 75],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='container'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='container'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/containing-block-added-individual-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/containing-block-added-individual-expected.txt
deleted file mode 100644
index d905b14..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/containing-block-added-individual-expected.txt
+++ /dev/null
@@ -1,74 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-          "rect": [50, 50, 75, 75],
-          "reason": "subtree"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container'",
-      "position": [200, 100],
-      "bounds": [125, 125],
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='container'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='container'",
-          "rect": [0, 0, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-          "rect": [50, 50, 75, 75],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='container'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='container'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/containing-block-removed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/containing-block-removed-expected.txt
deleted file mode 100644
index ce3a01db..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/containing-block-removed-expected.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-          "rect": [50, 50, 75, 75],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container'",
-      "position": [200, 100],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='container'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='container'",
-          "rect": [0, 0, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-          "rect": [50, 50, 75, 75],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='container'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='container'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/containing-block-removed-individual-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/containing-block-removed-individual-expected.txt
deleted file mode 100644
index e6a420a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/containing-block-removed-individual-expected.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-CONSOLE MESSAGE: line 30: debug
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-          "rect": [50, 50, 75, 75],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container'",
-      "position": [200, 100],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='container'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='container'",
-          "rect": [0, 0, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-          "rect": [50, 50, 75, 75],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='container'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='container'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/dont-invalidate-root-layer-when-composited-layer-becomes-visible-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/dont-invalidate-root-layer-when-composited-layer-becomes-visible-expected.txt
deleted file mode 100644
index 60effcc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/dont-invalidate-root-layer-when-composited-layer-becomes-visible-expected.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='target'",
-      "position": [200, 200],
-      "bounds": [200, 200],
-      "drawsContent": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.png
deleted file mode 100644
index 120ca76e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt
deleted file mode 100644
index 282a25d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/fixed-pos-inside-composited-intermediate-layer-expected.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 30020],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='compositedBehind'",
-      "bounds": [500, 500],
-      "contentsOpaque": true,
-      "backgroundColor": "#00FFFF",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='containerOverlapsComposited')",
-      "position": [20, 20],
-      "bounds": [100, 30000],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-          "rect": [25, 125, 50, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-          "rect": [25, 25, 50, 50],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='fixed'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll-expected.txt
deleted file mode 100644
index b07c8ab..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll-expected.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-Hi!
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 4021],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='abs'",
-          "rect": [425, 980, 360, 90],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='abs'",
-          "rect": [425, 980, 360, 90],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='abs'",
-          "rect": [425, 480, 360, 90],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='abs'",
-          "rect": [425, 480, 360, 90],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [425, 980, 21, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [425, 980, 21, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [425, 480, 21, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [425, 480, 21, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='abs'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Hi!'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='abs'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Hi!'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/fixed-scroll-in-empty-root-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/fixed-scroll-in-empty-root-layer-expected.txt
deleted file mode 100644
index 2eee2def..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/fixed-scroll-in-empty-root-layer-expected.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 2016],
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow HTML",
-      "bounds": [785, 2016],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 250, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 50, 100, 100],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "position": [0, 250],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#FF0000",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow HTML (foreground) Layer",
-      "bounds": [785, 2016],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 250, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 50, 100, 100],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -200, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/float-under-composited-inline-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/float-under-composited-inline-expected.txt
deleted file mode 100644
index b74b0f5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/float-under-composited-inline-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (floating) DIV id='float'",
-          "rect": [8, 8, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutInline (relative positioned) SPAN",
-      "position": [108, 108]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='float'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/iframe-inside-squashed-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/iframe-inside-squashed-layer-expected.txt
deleted file mode 100644
index fa89960..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/iframe-inside-squashed-layer-expected.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 1016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='foo'",
-      "bounds": [200, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV)",
-      "position": [8, 0],
-      "bounds": [300, 654],
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 500, 300, 150],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 508, 284, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 508, 269, 142],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 508, 29, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [285, 500, 15, 150],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'test1'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt
deleted file mode 100644
index d54bc06..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidate-paint-in-iframe-in-composited-layer-expected.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 616],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "bounds": [304, 200],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 10, 50, 50],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 408, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidate-when-leaving-squashed-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidate-when-leaving-squashed-layer-expected.txt
deleted file mode 100644
index 0af3a96..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidate-when-leaving-squashed-layer-expected.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV)",
-      "position": [50, 50],
-      "bounds": [200, 200],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [0, 0, 200, 200],
-          "reason": "subtree"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='target'",
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [0, 0, 200, 200],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [0, 0, 200, 200],
-          "reason": "subtree"
-        }
-      ],
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 50, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidation-for-subpixel-offset-of-squashed-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidation-for-subpixel-offset-of-squashed-layer-expected.txt
deleted file mode 100644
index 179f4eb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidation-for-subpixel-offset-of-squashed-layer-expected.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3"
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV)",
-      "position": [50, 50],
-      "bounds": [251, 251],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [50, 50, 201, 201],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidations-on-composited-layers-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidations-on-composited-layers-expected.txt
deleted file mode 100644
index e3b839b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidations-on-composited-layers-expected.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='parent'",
-      "bounds": [400, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='parent'",
-          "rect": [0, 0, 400, 400],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='child'",
-      "bounds": [75, 75],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='child'",
-          "rect": [0, 0, 75, 75],
-          "reason": "style change"
-        }
-      ],
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [50, 50, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='parent'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='child'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidations-with-large-negative-margin-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidations-with-large-negative-margin-expected.txt
deleted file mode 100644
index d8a913f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/invalidations-with-large-negative-margin-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='chip'",
-          "rect": [408, 8, 50, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='chip'",
-          "rect": [8, 8, 50, 50],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='chip'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/new-stacking-context-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/new-stacking-context-expected.txt
deleted file mode 100644
index 98f6b336..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/new-stacking-context-expected.txt
+++ /dev/null
@@ -1,95 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "position": [8, 8],
-      "bounds": [100, 100]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [100, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [0, 0, 200, 200],
-          "reason": "subtree"
-        }
-      ]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [100, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 108],
-      "bounds": [100, 0]
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [108, 8],
-      "bounds": [0, 100]
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='target'",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "opacity": 0.5,
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [0, 0, 200, 200],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [0, 0, 200, 200],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/overlap-test-with-filter-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/overlap-test-with-filter-expected.txt
deleted file mode 100644
index 06f94a7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/overlap-test-with-filter-expected.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME",
-      "bounds": [300, 100]
-    },
-    {
-      "name": "LayoutView #document",
-      "bounds": [300, 100],
-      "backgroundColor": "#FFFF00"
-    },
-    {
-      "name": "Child Containment Layer",
-      "bounds": [300, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow BODY",
-      "bounds": [284, 84],
-      "backgroundColor": "#FFFF00",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "bounds": [300, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [151, 0, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/page-scale-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/page-scale-repaint-expected.txt
deleted file mode 100644
index d1892b6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/page-scale-repaint-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-layer at (0,0) size 1600x1200 scrollWidth 4008 scrollHeight 10016
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x10016 backgroundClip at (0,0) size 1600x1200 clip at (0,0) size 1600x1200
-  LayoutBlockFlow {HTML} at (0,0) size 800x10016
-    LayoutBlockFlow {BODY} at (8,8) size 4000x10000
-layer at (8,8) size 4000x0
-  LayoutBlockFlow {DIV} at (0,0) size 4000x0
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/pointer-events-composited-scrolling-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/pointer-events-composited-scrolling-expected.txt
deleted file mode 100644
index e7f41f1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/pointer-events-composited-scrolling-expected.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='target'",
-      "position": [8, 8],
-      "bounds": [100, 100],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [0, 0, 100, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [0, 0, 100, 100],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='content'",
-          "rect": [0, 30, 50, 50],
-          "reason": "compositing update"
-        }
-      ]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [100, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 108],
-      "bounds": [100, 0]
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [108, 8],
-      "bounds": [0, 100]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "compositing update"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='content'",
-      "reason": "compositing update"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt
deleted file mode 100644
index 5594c48..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/remove-squashed-layer-plus-move-expected.txt
+++ /dev/null
@@ -1,139 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1418, 1008],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='container'",
-          "rect": [8, 8, 769, 110],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 118, 769, 55],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 63, 769, 55],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "bounds": [1000, 1000],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV class='mv-tile')",
-      "position": [8, 8],
-      "bounds": [1000, 105],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='mv-tile'",
-          "rect": [0, 110, 1000, 50],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='mv-tile'",
-          "rect": [0, 55, 1000, 50],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='mv-tile'",
-          "rect": [0, 55, 100, 50],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='mv-tile'",
-          "rect": [0, 0, 100, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='foo' class='mv-tile'",
-          "rect": [0, 0, 100, 50],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='foo' class='mv-tile'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='mv-tile'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='mv-tile'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='container'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='mv-tile'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='mv-tile'",
-      "reason": "compositing update"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/repaint-overflow-scrolled-squashed-content-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/repaint-overflow-scrolled-squashed-content-expected.txt
deleted file mode 100644
index e97a599..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/repaint-overflow-scrolled-squashed-content-expected.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [8, 8],
-      "bounds": [185, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='foo2'",
-      "bounds": [150, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='foo')",
-      "position": [8, 8],
-      "bounds": [100, 1000],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='foo'",
-          "rect": [0, 0, 100, 1000],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='foo'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt
deleted file mode 100644
index c50ded65..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/repaint-squashed-layer-in-rect-expected.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [808, 816],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "bounds": [800, 800],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV)",
-      "position": [8, 0],
-      "bounds": [592, 600],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='imgElement'",
-          "rect": [392, 400, 200, 200],
-          "reason": "image"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='imgElement'",
-      "reason": "image"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/repaint-via-layout-offset-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/repaint-via-layout-offset-expected.txt
deleted file mode 100644
index 28fabb5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/repaint-via-layout-offset-expected.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='container')",
-      "position": [50, 50],
-      "bounds": [50, 50],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) SPAN class='child embiggen'",
-          "rect": [0, 0, 50, 50],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) SPAN class='child embiggen'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/resize-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/resize-repaint-expected.txt
deleted file mode 100644
index e82bd461..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/resize-repaint-expected.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='resizing'",
-      "bounds": [402, 207],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='resizing'",
-          "rect": [0, 104, 402, 103],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [2, 155, 398, 50],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [2, 104, 398, 50],
-          "reason": "appeared"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='resizing'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/resize-squashing-layer-that-needs-full-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/resize-squashing-layer-that-needs-full-repaint-expected.txt
deleted file mode 100644
index 2b680d06..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/resize-squashing-layer-that-needs-full-repaint-expected.txt
+++ /dev/null
@@ -1,80 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "bounds": [500, 500],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV)",
-      "position": [55, 55],
-      "bounds": [500, 500],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [55, 55, 500, 500],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 0, 500, 500],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='to-be-removed'",
-          "rect": [0, 0, 50, 50],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='to-be-removed'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "compositing update"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/scroll-fixed-layer-no-content-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/scroll-fixed-layer-no-content-expected.txt
deleted file mode 100644
index d0bbe2ed..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/scroll-fixed-layer-no-content-expected.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "position": [100, 200],
-      "bounds": [200, 200],
-      "drawsContent": false,
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/scroll-fixed-layer-out-of-view-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/scroll-fixed-layer-out-of-view-expected.txt
deleted file mode 100644
index 2a71ddbe..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/scroll-fixed-layer-out-of-view-expected.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "position": [100, -200],
-      "bounds": [88, 88],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "position": [100, 1100],
-      "bounds": [99, 99],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/scroll-fixed-squahed-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/scroll-fixed-squahed-layer-expected.txt
deleted file mode 100644
index ceff3e7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/scroll-fixed-squahed-layer-expected.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='main'",
-      "position": [100, 200],
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='squahed'",
-      "position": [100, 250],
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#90EE90",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/scrolling-without-painting-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/scrolling-without-painting-expected.txt
deleted file mode 100644
index 320ea18..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/scrolling-without-painting-expected.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [8, 8],
-      "bounds": [202, 202]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [9, 9],
-      "bounds": [185, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [9, 9],
-      "bounds": [185, 1025],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [202, 202],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [9, 194],
-      "bounds": [185, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [194, 9],
-      "bounds": [15, 185],
-      "drawsContent": false,
-      "paintInvalidations": [
-        {
-          "object": "Vertical Scrollbar Layer",
-          "rect": [0, 0, 15, 185],
-          "reason": "full"
-        }
-      ]
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [194, 194],
-      "bounds": [15, 15]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -25, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-invoke-deferred-compositing-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-invoke-deferred-compositing-expected.txt
deleted file mode 100644
index 994bb315..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-invoke-deferred-compositing-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container' class='composited box'",
-      "bounds": [300, 300],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutHTMLCanvas (positioned) CANVAS",
-      "bounds": [200, 200],
-      "paintInvalidations": [
-        {
-          "object": "LayoutHTMLCanvas (positioned) CANVAS",
-          "rect": [0, 0, 200, 200],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutHTMLCanvas (positioned) CANVAS",
-          "rect": [0, 0, 200, 200],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutHTMLCanvas (positioned) CANVAS",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutHTMLCanvas (positioned) CANVAS",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt
deleted file mode 100644
index 15fe9a9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt
+++ /dev/null
@@ -1,105 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='container'",
-      "position": [8, 8],
-      "bounds": [400, 300]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [385, 285],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [1000, 1000],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='content'",
-          "rect": [0, 0, 1000, 1000],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [400, 300],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 293],
-      "bounds": [385, 15],
-      "drawsContent": false,
-      "paintInvalidations": [
-        {
-          "object": "Horizontal Scrollbar Layer",
-          "rect": [0, 0, 385, 15],
-          "reason": "full"
-        }
-      ]
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [393, 8],
-      "bounds": [15, 285],
-      "drawsContent": false,
-      "paintInvalidations": [
-        {
-          "object": "Vertical Scrollbar Layer",
-          "rect": [0, 0, 15, 285],
-          "reason": "full"
-        }
-      ]
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [393, 293],
-      "bounds": [15, 15]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-500, -400, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='content'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-clip-composited-viewport-scrolling-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-clip-composited-viewport-scrolling-layer-expected.txt
deleted file mode 100644
index 818e36c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-clip-composited-viewport-scrolling-layer-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 1516],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='content'",
-          "rect": [8, 8, 2000, 1500],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-900, -700, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='content'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-descendants-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-descendants-expected.txt
deleted file mode 100644
index 0cf9c7b7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-descendants-expected.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='composited-box'",
-      "position": [38, 38],
-      "bounds": [20, 70],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='composited-box'",
-          "rect": [-30, -30, 50, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='child'",
-          "rect": [-30, -30, 50, 50],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='composited-box'",
-          "rect": [0, 0, 10, 60],
-          "reason": "full"
-        }
-      ]
-    },
-    {
-      "name": "Child Containment Layer",
-      "position": [38, 38],
-      "bounds": [90, 90],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited child'",
-      "position": [8, 58],
-      "bounds": [50, 50],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#008000"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='composited-box'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='child'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-descendants-on-overflow-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-descendants-on-overflow-change-expected.txt
deleted file mode 100644
index 2d4551cc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-descendants-on-overflow-change-expected.txt
+++ /dev/null
@@ -1,87 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='overflow2'",
-          "rect": [0, 200, 200, 200],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='overflow1'",
-          "rect": [0, 0, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited-child'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [0, 200],
-      "bounds": [200, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='composited-child'",
-      "position": [0, 200],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='composited-child overflow-child'",
-      "position": [150, 150],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [0, 200],
-      "bounds": [200, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='composited-child overflow-child'",
-      "position": [150, 350],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#008000"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='overflow1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='overflow2'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-filter-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-filter-expected.txt
deleted file mode 100644
index 32560528..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-filter-expected.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='composited-box'",
-      "position": [8, 8],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#008000"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-opacity-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-opacity-expected.txt
deleted file mode 100644
index 246ae5e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-opacity-expected.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='composited-box'",
-      "position": [8, 8],
-      "bounds": [100, 100],
-      "opacity": 0.5,
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#008000"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-transform-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-transform-expected.txt
deleted file mode 100644
index ad3b0ec..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-transform-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='composited-box'",
-      "bounds": [102, 102],
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-z-index-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-z-index-expected.txt
deleted file mode 100644
index 32560528..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-composited-z-index-expected.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='composited-box'",
-      "position": [8, 8],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#008000"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-move-backface-hidden-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-move-backface-hidden-expected.txt
deleted file mode 100644
index 7449197..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-move-backface-hidden-expected.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='target'",
-      "position": [100, 200],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#008000"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt
deleted file mode 100644
index f9f52e5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='target'",
-      "position": [-2, -2],
-      "bounds": [220, 220],
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [0, 0, 220, 220],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [185, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [185, 2000],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 193],
-      "bounds": [185, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [193, 8],
-      "bounds": [15, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [193, 193],
-      "bounds": [15, 15]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/squash-partial-repaint-inside-squashed-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/squash-partial-repaint-inside-squashed-layer-expected.txt
deleted file mode 100644
index 84a2bcf..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/squash-partial-repaint-inside-squashed-layer-expected.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='composited box behind'",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV class='box middle')",
-      "position": [180, 180],
-      "bounds": [262, 200],
-      "paintInvalidations": [
-        {
-          "object": "LayoutImage (positioned) IMG id='repaintdiv' class='repaintdiv'",
-          "rect": [80, 80, 182, 29],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [100, 100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutImage (positioned) IMG id='repaintdiv' class='repaintdiv'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/squashing-inside-preserve-3d-element-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/squashing-inside-preserve-3d-element-expected.txt
deleted file mode 100644
index 395b1d4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/squashing-inside-preserve-3d-element-expected.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 2
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='target')",
-      "bounds": [100, 100],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ],
-      "transform": 4
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [28, 28, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "flattenInheritedTransform": false,
-      "renderingContext": 1
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/stacked-float-under-composited-inline-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/stacked-float-under-composited-inline-expected.txt
deleted file mode 100644
index 4e2646b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/stacked-float-under-composited-inline-expected.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutInline (relative positioned) SPAN",
-      "position": [58, 58],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='float'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='float'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/subpixel-offset-scaled-transform-composited-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/subpixel-offset-scaled-transform-composited-expected.txt
deleted file mode 100644
index 5b47295..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/subpixel-offset-scaled-transform-composited-expected.txt
+++ /dev/null
@@ -1,209 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='container1' class='container scale'",
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='child1' class='child composited'",
-      "bounds": [1, 1],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='child2' class='child scale composited'",
-      "bounds": [1, 1],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 4
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='container3' class='container scale composited'",
-      "bounds": [1, 1],
-      "contentsOpaque": true,
-      "transform": 6
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='container4' class='container composited'",
-      "position": [9, 158],
-      "bounds": [40, 40],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='child4' class='child scale'",
-          "rect": [-1, 0, 41, 40],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='child4' class='child scale'",
-          "rect": [0, 0, 40, 40],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='container4' class='container composited'",
-          "rect": [0, 0, 40, 40],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='container4' class='container composited'",
-          "rect": [0, 0, 40, 40],
-          "reason": "full"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='container5' class='container scale composited'",
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "transform": 8
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='child5' class='child composited'",
-      "bounds": [1, 1],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 8
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='container6' class='container composited'",
-      "position": [8, 258],
-      "contentsOpaque": true,
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='child6' class='child scale composited'",
-      "bounds": [1, 1],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 10
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [40, 0, 0, 0],
-        [0, 40, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [0, 0]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [9, 58, 0, 1]
-      ]
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [40, 0, 0, 0],
-        [0, 40, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [0, 0]
-    },
-    {
-      "id": 5,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 108, 0, 1]
-      ]
-    },
-    {
-      "id": 6,
-      "parent": 5,
-      "transform": [
-        [40, 0, 0, 0],
-        [0, 40, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [0, 0]
-    },
-    {
-      "id": 7,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 208, 0, 1]
-      ]
-    },
-    {
-      "id": 8,
-      "parent": 7,
-      "transform": [
-        [40, 0, 0, 0],
-        [0, 40, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [0, 0]
-    },
-    {
-      "id": 9,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [9, 258, 0, 1]
-      ]
-    },
-    {
-      "id": 10,
-      "parent": 9,
-      "transform": [
-        [40, 0, 0, 0],
-        [0, 40, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [0, 0]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='child4' class='child scale'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/text-color-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/text-color-change-expected.txt
deleted file mode 100644
index 4a89c344..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/text-color-change-expected.txt
+++ /dev/null
@@ -1,363 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 61, 48, 185],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '  Text'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/text-match-highlight-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/text-match-highlight-expected.txt
deleted file mode 100644
index 0ffed28..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/text-match-highlight-expected.txt
+++ /dev/null
@@ -1,130 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 135, 223, 19],
-          "reason": "DocumentMarker change"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [20, 224, 206, 72],
-          "reason": "DocumentMarker change"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 191, 138, 12],
-          "reason": "DocumentMarker change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [278, 40, 44, 19],
-          "reason": "DocumentMarker change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [264, 60, 44, 19],
-          "reason": "DocumentMarker change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [220, 60, 44, 19],
-          "reason": "DocumentMarker change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [89, 60, 44, 19],
-          "reason": "DocumentMarker change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [51, 80, 44, 19],
-          "reason": "DocumentMarker change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'findme'",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'findme'",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'findme'",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'findme'",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'findme'",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'Can you findme in this boring text?'",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'Findme in a typewriter!'",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "DocumentMarker change"
-    },
-    {
-      "object": "InlineTextBox 'Findme on a path! Did you findme?'",
-      "reason": "DocumentMarker change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/tricky-element-removal-crash-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/tricky-element-removal-crash-expected.txt
deleted file mode 100644
index 4da96e3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/tricky-element-removal-crash-expected.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#FA8072",
-      "transform": 1
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV)",
-      "position": [8, 8],
-      "bounds": [100, 100]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-container-and-content-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-container-and-content-expected.txt
deleted file mode 100644
index 535b0f1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-container-and-content-expected.txt
+++ /dev/null
@@ -1,180 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 258, 77, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 238, 77, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 218, 77, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 198, 77, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 178, 77, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 158, 77, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 138, 77, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 118, 77, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 278, 77, 15],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 108, 77, 9],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'CONTENT'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'CONTENT'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'CONTENT'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'CONTENT'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'CONTENT'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'CONTENT'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'CONTENT'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'CONTENT'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'CONTENT'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'CONTENT'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'CONTENT'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'CONTENT'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'CONTENT'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-container-expected.txt
deleted file mode 100644
index 7c67ea8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-container-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='container'",
-          "rect": [8, 108, 210, 210],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='container'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-content-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-content-expected.txt
deleted file mode 100644
index 0ff1368e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/compositing/updating-scrolling-content-expected.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [8, 8],
-      "bounds": [200, 200]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [185, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [185, 1200],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='indicator'",
-          "rect": [0, 0, 185, 200],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 193],
-      "bounds": [185, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [193, 8],
-      "bounds": [15, 185],
-      "drawsContent": false,
-      "paintInvalidations": [
-        {
-          "object": "Vertical Scrollbar Layer",
-          "rect": [0, 0, 15, 185],
-          "reason": "full"
-        }
-      ]
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [193, 193],
-      "bounds": [15, 15]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='indicator'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/crbug-371640-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/crbug-371640-2-expected.txt
deleted file mode 100644
index 3ad2a85..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/crbug-371640-2-expected.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='keep' class='item'",
-          "rect": [348, 88, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='to_remove' class='item'",
-          "rect": [348, 88, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='keep' class='item'",
-          "rect": [88, 88, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='to_remove' class='item'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='to_remove_inner' class='inner'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='node' class='outer'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='keep_outer' class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='keep_inner' class='inner'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='abs_pos'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='keep' class='item'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/crbug-371640-3-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/crbug-371640-3-expected.txt
deleted file mode 100644
index 84b5149..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/crbug-371640-3-expected.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='keep_child'",
-          "rect": [508, 208, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='remove_child'",
-          "rect": [508, 88, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='keep_child'",
-          "rect": [408, 208, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='remove_child'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='remove' class='outer'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='keep_outer' class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='keep_inner'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='abs_pos'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='keep_child'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/crbug-371640-4-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/crbug-371640-4-expected.txt
deleted file mode 100644
index 9b26492..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/crbug-371640-4-expected.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='keep' class='item'",
-          "rect": [408, 88, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='to_remove' class='item'",
-          "rect": [408, 88, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='keep' class='item'",
-          "rect": [208, 88, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [408, 88, 4, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [408, 88, 4, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [208, 88, 4, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='to_remove' class='item'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='to_remove_inner' class='inner'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='node' class='outer'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='abs_pos'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='keep_inner' class='inner'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='keep' class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/crbug-371640-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/crbug-371640-expected.txt
deleted file mode 100644
index 656c533..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/crbug-371640-expected.txt
+++ /dev/null
@@ -1,100 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='keep' class='item'",
-          "rect": [348, 88, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='to_remove' class='item'",
-          "rect": [348, 88, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='keep' class='item'",
-          "rect": [88, 88, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [348, 88, 4, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [348, 88, 4, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [88, 88, 4, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='to_remove' class='item'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='to_remove_inner' class='inner'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='node' class='outer'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='keep_outer' class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='keep_inner' class='inner'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='abs_pos'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='keep' class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/create-layer-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/create-layer-repaint-expected.txt
deleted file mode 100644
index 9ec03670..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/create-layer-repaint-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='test' class='stretchy'",
-          "rect": [28, 56, 500, 50],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='test' class='stretchy'",
-          "rect": [28, 56, 250, 50],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='test' class='stretchy'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='test' class='stretchy'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-element-change-columns-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-element-change-columns-repaint-expected.txt
deleted file mode 100644
index f7cbae3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-element-change-columns-repaint-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutGrid DIV class='grid min-content'",
-          "rect": [8, 48, 250, 50],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='sizedToGridArea'",
-          "rect": [58, 48, 50, 50],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutGrid DIV class='grid min-content'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='sizedToGridArea'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-element-change-rows-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-element-change-rows-repaint-expected.txt
deleted file mode 100644
index 25872a9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-element-change-rows-repaint-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutGrid DIV class='grid fit-content'",
-          "rect": [8, 48, 100, 150],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='sizedToGridArea'",
-          "rect": [8, 98, 100, 50],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutGrid DIV class='grid fit-content'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='sizedToGridArea'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-item-change-column-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-item-change-column-repaint-expected.txt
deleted file mode 100644
index 954fe61e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-item-change-column-repaint-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='sizedToGridArea'",
-          "rect": [8, 38, 100, 50],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='sizedToGridArea'",
-          "rect": [208, 38, 50, 50],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='sizedToGridArea'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-item-change-row-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-item-change-row-repaint-expected.txt
deleted file mode 100644
index 86a39c0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-item-change-row-repaint-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='sizedToGridArea'",
-          "rect": [8, 88, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='sizedToGridArea'",
-          "rect": [8, 38, 100, 50],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='sizedToGridArea'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-item-z-index-change-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-item-z-index-change-repaint-expected.txt
deleted file mode 100644
index ea554a14..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/css-grid-layout/grid-item-z-index-change-repaint-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='item2' class='sizedToGridArea green'",
-          "rect": [8, 236, 200, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='item2' class='sizedToGridArea green'",
-          "rect": [8, 236, 200, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='item1' class='sizedToGridArea green negativeZIndex'",
-          "rect": [8, 126, 200, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='item2' class='sizedToGridArea green'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='item1' class='sizedToGridArea green negativeZIndex'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='item2' class='sizedToGridArea green'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/cull-rect-change-crash-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/cull-rect-change-crash-expected.txt
deleted file mode 100644
index 12908223..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/cull-rect-change-crash-expected.txt
+++ /dev/null
@@ -1,74 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [0, 8, 1, 1],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGContainer g id='g'",
-          "rect": [0, 8, 1, 1],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGForeignObject foreignObject",
-          "rect": [0, 8, 1, 1],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 8, 1, 1],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='g'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGForeignObject foreignObject",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/delete-into-nested-block-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/delete-into-nested-block-expected.txt
deleted file mode 100644
index 0794aa6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/delete-into-nested-block-expected.txt
+++ /dev/null
@@ -1,126 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='two'",
-          "rect": [8, 147, 784, 41],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 167, 784, 21],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 147, 784, 21],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='one'",
-          "rect": [8, 127, 784, 21],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 167, 31, 20],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 127, 31, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 127, 27, 20],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 147, 24, 20],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='two'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='one'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'three'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/details-open-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/details-open-repaint-expected.txt
deleted file mode 100644
index 741cd07..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/details-open-repaint-expected.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='details-content'",
-          "rect": [8, 72, 784, 22],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTextControl INPUT",
-          "rect": [8, 72, 154, 22],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 75, 150, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutDetailsMarker DIV id='details-marker'",
-          "rect": [8, 56, 11, 11],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutDetailsMarker DIV id='details-marker'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='details-content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTextControl INPUT",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/empty-object-move-and-resize-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/empty-object-move-and-resize-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/empty-object-move-and-resize-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-1-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-1-expected.txt
deleted file mode 100644
index e1b6cac1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-1-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [128, 120, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-2-expected.txt
deleted file mode 100644
index b5764e5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-2-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [128, 120, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-3-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-3-expected.txt
deleted file mode 100644
index d86bd69..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-3-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [-72, -80, 400, 400],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-4-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-4-expected.txt
deleted file mode 100644
index b5764e5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-4-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [128, 120, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-5-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-5-expected.txt
deleted file mode 100644
index e1b6cac1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-5-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [128, 120, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-6-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-6-expected.txt
deleted file mode 100644
index 9a61d73b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-composite-6-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [28, 20, 300, 300],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-displacement-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-displacement-expected.txt
deleted file mode 100644
index dc13f6e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-displacement-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [28, 20, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-gaussianblur-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-gaussianblur-expected.txt
deleted file mode 100644
index fd760efe..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-gaussianblur-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [-2, -10, 320, 320],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-gaussianblur-xonly-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-gaussianblur-xonly-expected.txt
deleted file mode 100644
index 0e4656d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-gaussianblur-xonly-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [-2, 50, 320, 200],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-gaussianblur-yonly-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-gaussianblur-yonly-expected.txt
deleted file mode 100644
index 8afb3ef..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-gaussianblur-yonly-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [58, -10, 200, 320],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-lighting-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-lighting-expected.txt
deleted file mode 100644
index 9ec742710..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-lighting-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [78, 70, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-merge-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-merge-expected.txt
deleted file mode 100644
index 9a61d73b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-merge-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [28, 20, 300, 300],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-morphology-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-morphology-expected.txt
deleted file mode 100644
index 753f2d82a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-morphology-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [33, 25, 250, 250],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-morphology-xonly-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-morphology-xonly-expected.txt
deleted file mode 100644
index 2064de9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-morphology-xonly-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [33, 50, 250, 200],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-morphology-yonly-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-morphology-yonly-expected.txt
deleted file mode 100644
index 93f7ac85..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-morphology-yonly-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [58, 25, 200, 250],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-offset-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-offset-expected.txt
deleted file mode 100644
index 2f96ae10..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-offset-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='box'",
-          "rect": [198, 198, 110, 110],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-primitive-attr-mutation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-primitive-attr-mutation-expected.txt
deleted file mode 100644
index d91c068a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-primitive-attr-mutation-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='target'",
-          "rect": [8, 8, 100, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='target'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-primitive-attr-removal-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-primitive-attr-removal-expected.txt
deleted file mode 100644
index d91c068a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-primitive-attr-removal-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='target'",
-          "rect": [8, 8, 100, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='target'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-primitive-removed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-primitive-removed-expected.txt
deleted file mode 100644
index d91c068a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/effect-reference-repaint-primitive-removed-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='target'",
-          "rect": [8, 8, 100, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='target'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-invalidation-after-display-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-invalidation-after-display-expected.txt
deleted file mode 100644
index 8062ba8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-invalidation-after-display-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='box' class='green box'",
-          "rect": [300, 8, 330, 330],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='box' class='green box'",
-          "rect": [300, 8, 200, 200],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='box' class='green box'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='box' class='green box'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-invalidation-positioned-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-invalidation-positioned-child-expected.txt
deleted file mode 100644
index 7df33e9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-invalidation-positioned-child-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='box'",
-          "rect": [8, 8, 430, 230],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='positioned'",
-          "rect": [408, 408, 380, 180],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='box'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='positioned'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-invalidation-with-composited-container-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-invalidation-with-composited-container-change-expected.txt
deleted file mode 100644
index dc00a34f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-invalidation-with-composited-container-change-expected.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='box' class='green box blurry'",
-          "rect": [8, 8, 330, 330],
-          "reason": "subtree"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='box' class='green box blurry'",
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='box' class='green box blurry'",
-          "rect": [0, 0, 200, 200],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='box' class='green box blurry'",
-          "rect": [0, 0, 200, 200],
-          "reason": "subtree"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='box' class='green box blurry'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='box' class='green box blurry'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child-expected.png
deleted file mode 100644
index 10b7f8ab..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child-expected.txt
deleted file mode 100644
index 8f81120..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 10016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [100, 110, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [100, 100, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [8, 18, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [8, 8, 100, 100],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -10, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt
deleted file mode 100644
index 731a8df..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='blur'",
-      "position": [8, 8],
-      "bounds": [200, 200]
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='accelerated'",
-      "bounds": [212, 257],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='resize' class='drop-shadow'",
-          "rect": [-2, -2, 260, 260],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-4, -4, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='resize' class='drop-shadow'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-repaint-accelerated-on-accelerated-filter-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-repaint-accelerated-on-accelerated-filter-expected.txt
deleted file mode 100644
index 1ca2b7d9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-repaint-accelerated-on-accelerated-filter-expected.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='blur accelerated'",
-      "bounds": [200, 200],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='resize' class='drop-shadow accelerated'",
-      "bounds": [100, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='resize' class='drop-shadow accelerated'",
-          "rect": [0, 0, 200, 200],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='resize' class='drop-shadow accelerated'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-repaint-on-accelerated-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-repaint-on-accelerated-layer-expected.txt
deleted file mode 100644
index c504fa2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/filters/filter-repaint-on-accelerated-layer-expected.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV class='blur'",
-      "position": [8, 8],
-      "bounds": [200, 200]
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='resize' class='accelerated'",
-      "bounds": [100, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='resize' class='accelerated'",
-          "rect": [100, 0, 100, 200],
-          "reason": "incremental"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='resize' class='accelerated'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-content-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-content-change-expected.txt
deleted file mode 100644
index 3539a7ab..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-content-change-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 202, 200, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 52, 200, 150],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-content-change-keeping-geometry-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-content-change-keeping-geometry-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-content-change-keeping-geometry-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-content-change-no-flex-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-content-change-no-flex-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-content-change-no-flex-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-content-distribution-change-grid-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-content-distribution-change-grid-expected.txt
deleted file mode 100644
index 62425ed..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-content-distribution-change-grid-expected.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 252, 200, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 152, 200, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 52, 200, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-items-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-items-change-expected.txt
deleted file mode 100644
index 3a5198af..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-items-change-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 153, 100, 199],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [100, 203, 100, 149],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-expected.txt
deleted file mode 100644
index 3a5198af..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 153, 100, 199],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [100, 203, 100, 149],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-grid-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-grid-expected.txt
deleted file mode 100644
index 2ed96cb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-grid-expected.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item1'",
-          "rect": [0, 52, 100, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item3'",
-          "rect": [100, 202, 100, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item2'",
-          "rect": [100, 127, 100, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item3'",
-          "rect": [100, 127, 100, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item2'",
-          "rect": [100, 52, 100, 150],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item1'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item2'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item3'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-keeping-geometry-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-keeping-geometry-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-keeping-geometry-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-keeping-geometry-grid-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-keeping-geometry-grid-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-keeping-geometry-grid-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-no-flex-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-no-flex-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/align-self-change-no-flex-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-content-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-content-change-expected.txt
deleted file mode 100644
index e1a0c4c7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-content-change-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [148, 52, 52, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [124, 52, 52, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [24, 52, 52, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 52, 52, 300],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-content-distribution-change-grid-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-content-distribution-change-grid-expected.txt
deleted file mode 100644
index 7d200005..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-content-distribution-change-grid-expected.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [200, 52, 100, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [100, 52, 100, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 52, 100, 200],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-items-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-items-change-expected.txt
deleted file mode 100644
index 3c694bb1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-items-change-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [150, 52, 50, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 52, 50, 300],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-items-legacy-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-items-legacy-change-expected.txt
deleted file mode 100644
index 4a087aa1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-items-legacy-change-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item2'",
-          "rect": [124, 52, 52, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item2'",
-          "rect": [100, 52, 52, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item1'",
-          "rect": [24, 52, 52, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item1'",
-          "rect": [0, 52, 52, 150],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item1'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item2'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-self-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-self-change-expected.txt
deleted file mode 100644
index 6e24575..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-self-change-expected.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item1'",
-          "rect": [0, 52, 100, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item3'",
-          "rect": [150, 52, 50, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item2'",
-          "rect": [125, 52, 50, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item3'",
-          "rect": [125, 52, 50, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item2'",
-          "rect": [100, 52, 50, 300],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item1'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item2'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item3'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-self-change-keeping-geometry-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-self-change-keeping-geometry-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/justify-self-change-keeping-geometry-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/remove-inline-block-descendant-of-flex-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/remove-inline-block-descendant-of-flex-expected.txt
deleted file mode 100644
index 9139cae..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/remove-inline-block-descendant-of-flex-expected.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [0, 100, 100, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='inline-block-2' class='item'",
-          "rect": [0, 200, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='inline-block-1' class='item'",
-          "rect": [0, 100, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='inline-block-2' class='item'",
-          "rect": [0, 100, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='inline-block-1' class='item'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='inline-block-2' class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-column-reverse-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-column-reverse-expected.txt
deleted file mode 100644
index 73eaeb9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-column-reverse-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='blue' class='flex-item'",
-          "rect": [8, 68, 200, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='blue' class='flex-item'",
-          "rect": [9, 69, 198, 30],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='blue' class='flex-item'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-during-resize-no-flex-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-during-resize-no-flex-expected.txt
deleted file mode 100644
index c0c0dbe..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-during-resize-no-flex-expected.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='flex-item-1' class='flex-item width'",
-          "rect": [30, 20, 40, 50],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='flex-item'",
-          "rect": [160, 20, 10, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='flex-item'",
-          "rect": [120, 20, 10, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='flex-item'",
-          "rect": [110, 20, 10, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='flex-item'",
-          "rect": [70, 20, 10, 50],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='flex-item-1' class='flex-item width'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='flex-item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='flex-item'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-expected.txt
deleted file mode 100644
index d83a061..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-expected.txt
+++ /dev/null
@@ -1,171 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='content'",
-          "rect": [138, 128, 654, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [138, 128, 654, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='content'",
-          "rect": [148, 128, 644, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [148, 128, 644, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [137, 128, 637, 99],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [147, 128, 636, 99],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [147, 128, 636, 99],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='content'",
-          "rect": [400, 128, 392, 180],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [400, 128, 392, 180],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='left'",
-          "rect": [8, 228, 392, 80],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [400, 128, 391, 179],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='left'",
-          "rect": [148, 128, 252, 180],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='left'",
-          "rect": [138, 128, 10, 100],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='left'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='content'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet dolor id urna eleifend aliquet.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Nulla vel dolor ipsum. Aliquam ut turpis nisl, in vulputate sapien. Cum sociis natoque penatibus et'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'magnis dis parturient montes, nascetur ridiculus mus. Sed congue magna vitae dolor feugiat vehicula.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Sed volutpat, tellus vel varius vestibulum, purus quam mollis sapien, in condimentum leo neque sed'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'nulla. Nunc quis porta elit. Pellentesque erat lectus, ultricies a lobortis id, faucibus id quam.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='left'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='content'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet dolor id urna eleifend aliquet.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Nulla vel dolor ipsum. Aliquam ut turpis nisl, in vulputate sapien. Cum sociis natoque penatibus et'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'magnis dis parturient montes, nascetur ridiculus mus. Sed congue magna vitae dolor feugiat vehicula.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Sed volutpat, tellus vel varius vestibulum, purus quam mollis sapien, in condimentum leo neque sed'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'nulla. Nunc quis porta elit. Pellentesque erat lectus, ultricies a lobortis id, faucibus id quam.'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-on-layout-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-on-layout-expected.txt
deleted file mode 100644
index 3b015ac..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-on-layout-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (floating) DIV class='state'",
-          "rect": [712, 8, 80, 20],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='badge'",
-          "rect": [712, 8, 80, 20],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='badge'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV class='state'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-on-margin-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-on-margin-change-expected.txt
deleted file mode 100644
index 30c8df4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-on-margin-change-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='child-to-grow' class='child'",
-          "rect": [48, 28, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='child-to-grow' class='child'",
-          "rect": [8, 28, 20, 20],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='child-to-grow' class='child'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-opacity-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-opacity-change-expected.txt
deleted file mode 100644
index e50080d9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-opacity-change-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target' class='item'",
-          "rect": [18, 18, 764, 20],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target' class='item'",
-          "rect": [18, 18, 764, 20],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target' class='item'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target' class='item'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-rtl-column-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-rtl-column-expected.txt
deleted file mode 100644
index 59741aad..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/repaint-rtl-column-expected.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='content'",
-          "rect": [8, 116, 200, 252],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='content'",
-          "rect": [8, 119, 200, 249],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='left'",
-          "rect": [8, 119, 200, 94],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='left'",
-          "rect": [8, 116, 200, 4],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [13, 124, 190, 351],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [13, 124, 190, 351],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [13, 121, 190, 351],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [13, 218, 190, 350],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='left'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='content'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='left'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='content'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/scrollbars-changed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/scrollbars-changed-expected.txt
deleted file mode 100644
index e82ae50c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/flexbox/scrollbars-changed-expected.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='dynamic' class='content'",
-          "rect": [0, 0, 185, 30],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='scroller'",
-          "rect": [185, 0, 15, 100],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 5, 15, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 5, 15, 15],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='dynamic' class='content'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'z'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/float-in-new-block-with-layout-delta-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/float-in-new-block-with-layout-delta-expected.txt
deleted file mode 100644
index cc3d293..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/float-in-new-block-with-layout-delta-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [8, 108, 100, 100],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/float-move-during-layout-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/float-move-during-layout-expected.txt
deleted file mode 100644
index cd8e400..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/float-move-during-layout-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [8, 210, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [8, 110, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/float-new-in-block-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/float-new-in-block-expected.txt
deleted file mode 100644
index c5af67c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/float-new-in-block-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (floating) DIV id='target'",
-          "rect": [8, 8, 100, 100],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='target'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/button-checkbox-click-method-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/button-checkbox-click-method-repaint-expected.txt
deleted file mode 100644
index e511192..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/button-checkbox-click-method-repaint-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow INPUT id='checkbox'",
-          "rect": [12, 61, 30, 30],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow INPUT id='checkbox'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.txt
deleted file mode 100644
index c3114ef9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/button-reset-focus-by-mouse-then-keydown-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutButton BUTTON",
-          "rect": [7, 7, 52, 24],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [16, 11, 34, 16],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [16, 11, 34, 16],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutButton BUTTON",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Reset'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown-expected.txt
deleted file mode 100644
index f1c0c5f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow INPUT",
-          "rect": [11, 10, 15, 15],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow INPUT",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.txt
deleted file mode 100644
index 16cee32..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/radio-focus-by-mouse-then-keydown-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow INPUT",
-          "rect": [12, 10, 15, 15],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow INPUT",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/range-focus-by-mouse-then-keydown-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/range-focus-by-mouse-then-keydown-expected.txt
deleted file mode 100644
index f03a559..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/range-focus-by-mouse-then-keydown-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSlider INPUT",
-          "rect": [9, 9, 131, 23],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='track'",
-          "rect": [10, 10, 129, 21],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutFlexibleBox DIV",
-          "rect": [10, 10, 129, 21],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='thumb'",
-          "rect": [69, 10, 11, 21],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSlider INPUT",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutFlexibleBox DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='track'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='thumb'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/select-option-background-color-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/select-option-background-color-expected.txt
deleted file mode 100644
index 2a2de6d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/select-option-background-color-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow OPTION id='option'",
-          "rect": [1, 37, 13, 17],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow OPTION id='option'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.txt
deleted file mode 100644
index 6ea85c8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/submit-focus-by-mouse-then-keydown-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutButton INPUT",
-          "rect": [7, 7, 59, 24],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [16, 11, 41, 16],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [16, 11, 41, 16],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutButton INPUT",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Submit'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/textarea-appearance-none-resize-handle-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/textarea-appearance-none-resize-handle-expected.txt
deleted file mode 100644
index e87d485..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/textarea-appearance-none-resize-handle-expected.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl (positioned) TEXTAREA id='textarea'",
-          "rect": [0, 155, 106, 101],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTextControl (positioned) TEXTAREA id='textarea'",
-          "rect": [90, 240, 15, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutTextControl (positioned) TEXTAREA id='textarea'",
-          "rect": [90, 140, 15, 15],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl (positioned) TEXTAREA id='textarea'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/textarea-caret-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/textarea-caret-expected.txt
deleted file mode 100644
index d03c960..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/textarea-caret-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl TEXTAREA id='editor'",
-          "rect": [7, 7, 183, 40],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [9, 11, 179, 16],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [11, 11, 175, 16],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutTextControl TEXTAREA id='editor'",
-          "rect": [9, 30, 164, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutTextControl TEXTAREA id='editor'",
-          "rect": [173, 30, 15, 15],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl TEXTAREA id='editor'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutTextControl TEXTAREA id='editor'",
-      "reason": "geometry"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox '------------------------------------------------------------'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/textarea-resize-property-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/textarea-resize-property-change-expected.txt
deleted file mode 100644
index 50eae939..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/textarea-resize-property-change-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl (positioned) TEXTAREA id='textarea'",
-          "rect": [0, 50, 106, 106],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTextControl (positioned) TEXTAREA id='textarea'",
-          "rect": [90, 140, 15, 15],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl (positioned) TEXTAREA id='textarea'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/textarea-set-disabled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/textarea-set-disabled-expected.txt
deleted file mode 100644
index b05552f3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/forms/textarea-set-disabled-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl TEXTAREA",
-          "rect": [8, 8, 106, 106],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [11, 11, 100, 10],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl TEXTAREA",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/gradients-em-stops-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/gradients-em-stops-repaint-expected.txt
deleted file mode 100644
index c1d78df9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/gradients-em-stops-repaint-expected.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='em-units'",
-          "rect": [8, 8, 784, 147],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='box4' class='box'",
-          "rect": [344, 18, 302, 122],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='box3' class='box'",
-          "rect": [18, 18, 302, 122],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='indicator'",
-          "rect": [345, 19, 240, 20],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [330, 135, 4, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='em-units'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='box3' class='box'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='box4' class='box'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='indicator'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/iframe-display-block-to-display-none-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/iframe-display-block-to-display-none-expected.txt
deleted file mode 100644
index fad6de4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/iframe-display-block-to-display-none-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutIFrame IFRAME id='iframe'",
-          "rect": [8, 72, 732, 94],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow HTML",
-          "rect": [10, 74, 728, 90],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [18, 82, 712, 74],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutIFrame IFRAME id='iframe'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/iframe-display-none-to-display-block-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/iframe-display-none-to-display-block-expected.txt
deleted file mode 100644
index 0111e21..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/iframe-display-none-to-display-block-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutIFrame IFRAME id='iframe'",
-          "rect": [8, 72, 732, 94],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow HTML",
-          "rect": [10, 74, 728, 90],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [10, 74, 728, 90],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [18, 82, 712, 74],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutIFrame IFRAME id='iframe'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/iframe-rounding-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/iframe-rounding-expected.txt
deleted file mode 100644
index d79bbe1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/iframe-rounding-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='target'",
-          "rect": [19, 18, 101, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-gif-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-gif-expected.txt
deleted file mode 100644
index e38b0aeb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-gif-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutImage IMG id='targetImage'",
-          "rect": [8, 8, 50, 50],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutImage IMG id='targetImage'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-gif-offscreen-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-gif-offscreen-expected.txt
deleted file mode 100644
index 8dcf038..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-gif-offscreen-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-gif-transformed-offscreen-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-gif-transformed-offscreen-expected.txt
deleted file mode 100644
index 284c617..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-gif-transformed-offscreen-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='targetDiv'",
-      "bounds": [2000, 2000],
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-png-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-png-expected.txt
deleted file mode 100644
index e38b0aeb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-png-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutImage IMG id='targetImage'",
-          "rect": [8, 8, 50, 50],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutImage IMG id='targetImage'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-png-offscreen-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-png-offscreen-expected.txt
deleted file mode 100644
index 8dcf038..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-png-offscreen-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-webp-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-webp-expected.txt
deleted file mode 100644
index e38b0aeb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-webp-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutImage IMG id='targetImage'",
-          "rect": [8, 8, 50, 50],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutImage IMG id='targetImage'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-webp-offscreen-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-webp-offscreen-expected.txt
deleted file mode 100644
index 8dcf038..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/animated-webp-offscreen-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt
deleted file mode 100644
index ab7b72c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/canvas-composite-repaint-by-all-imagesource-expected.txt
+++ /dev/null
@@ -1,442 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 933],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='copyvideo'",
-          "rect": [571, 515, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-atopvideo'",
-          "rect": [571, 415, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-invideo'",
-          "rect": [571, 315, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-outvideo'",
-          "rect": [571, 165, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-invideo'",
-          "rect": [571, 115, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='copycanvas'",
-          "rect": [429, 515, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-atopcanvas'",
-          "rect": [429, 415, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-incanvas'",
-          "rect": [429, 315, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-outcanvas'",
-          "rect": [429, 165, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-incanvas'",
-          "rect": [429, 115, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='copyimage'",
-          "rect": [287, 515, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-atopimage'",
-          "rect": [287, 415, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-inimage'",
-          "rect": [287, 315, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-outimage'",
-          "rect": [287, 165, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-inimage'",
-          "rect": [287, 115, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='copysolid color'",
-          "rect": [145, 515, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-atopsolid color'",
-          "rect": [145, 415, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-insolid color'",
-          "rect": [145, 315, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-outsolid color'",
-          "rect": [145, 165, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-insolid color'",
-          "rect": [145, 115, 80, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='xorvideo'",
-          "rect": [601, 565, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='lightervideo'",
-          "rect": [601, 465, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-outvideo'",
-          "rect": [601, 365, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-overvideo'",
-          "rect": [601, 265, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-atopvideo'",
-          "rect": [601, 215, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-overvideo'",
-          "rect": [601, 65, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='xorcanvas'",
-          "rect": [459, 565, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='lightercanvas'",
-          "rect": [459, 465, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-outcanvas'",
-          "rect": [459, 365, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-overcanvas'",
-          "rect": [459, 265, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-atopcanvas'",
-          "rect": [459, 215, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-overcanvas'",
-          "rect": [459, 65, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='xorimage'",
-          "rect": [317, 565, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='lighterimage'",
-          "rect": [317, 465, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-outimage'",
-          "rect": [317, 365, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-overimage'",
-          "rect": [317, 265, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-atopimage'",
-          "rect": [317, 215, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-overimage'",
-          "rect": [317, 65, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='xorsolid color'",
-          "rect": [175, 565, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='lightersolid color'",
-          "rect": [175, 465, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-outsolid color'",
-          "rect": [175, 365, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='destination-oversolid color'",
-          "rect": [175, 265, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-atopsolid color'",
-          "rect": [175, 215, 50, 40],
-          "reason": "invalidate paint rectangle"
-        },
-        {
-          "object": "LayoutHTMLCanvas CANVAS id='source-oversolid color'",
-          "rect": [175, 65, 50, 40],
-          "reason": "invalidate paint rectangle"
-        }
-      ]
-    },
-    {
-      "name": "LayoutVideo VIDEO id='video'",
-      "position": [15, 859],
-      "bounds": [150, 60],
-      "drawsContent": false
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small phase-ready state-stopped'",
-      "position": [15, 859],
-      "bounds": [150, 60]
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutFlexibleBox (relative positioned) DIV)",
-      "position": [15, 859],
-      "bounds": [150, 18]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-oversolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-overimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-overcanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-overvideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-insolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-inimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-incanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-invideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-outsolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-outimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-outcanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-outvideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-atopsolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-atopimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-atopcanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='source-atopvideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-oversolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-overimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-overcanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-overvideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-insolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-inimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-incanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-invideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-outsolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-outimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-outcanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-outvideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-atopsolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-atopimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-atopcanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='destination-atopvideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='lightersolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='lighterimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='lightercanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='lightervideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='copysolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='copyimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='copycanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='copyvideo'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='xorsolid color'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='xorimage'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='xorcanvas'",
-      "reason": "invalidate paint rectangle"
-    },
-    {
-      "object": "LayoutHTMLCanvas CANVAS id='xorvideo'",
-      "reason": "invalidate paint rectangle"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/do-not-paint-below-image-baseline-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/do-not-paint-below-image-baseline-expected.txt
deleted file mode 100644
index 978d42d2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/do-not-paint-below-image-baseline-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutImage IMG",
-          "rect": [50, 50, 259, 194],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutImage IMG",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/image-resize-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/image-resize-expected.txt
deleted file mode 100644
index fd61bfe..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/image-resize-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutImage (positioned) IMG",
-          "rect": [0, 50, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage (positioned) IMG",
-          "rect": [0, 50, 100, 200],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutImage (positioned) IMG",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/percent-size-image-resize-container-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/percent-size-image-resize-container-expected.txt
deleted file mode 100644
index fd61bfe..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/image/percent-size-image-resize-container-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutImage (positioned) IMG",
-          "rect": [0, 50, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage (positioned) IMG",
-          "rect": [0, 50, 100, 200],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutImage (positioned) IMG",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/in-scaled-iframe-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/in-scaled-iframe-expected.txt
deleted file mode 100644
index c6d56ff..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/in-scaled-iframe-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 825],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='div'",
-          "rect": [209, 209, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='div'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/inline-block-resize-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/inline-block-resize-expected.txt
deleted file mode 100644
index 3a565a5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/inline-block-resize-expected.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 8, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/inline-color-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/inline-color-change-expected.txt
deleted file mode 100644
index 1fcc5d2c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/inline-color-change-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutInline SPAN id='target'",
-          "rect": [8, 72, 38, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 72, 38, 19],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutInline SPAN id='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/inline-reflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/inline-reflow-expected.txt
deleted file mode 100644
index bb4b310..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/inline-reflow-expected.txt
+++ /dev/null
@@ -1,124 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='div1' class='container'",
-          "rect": [0, 0, 300, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 0, 300, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='div2' class='container'",
-          "rect": [0, 300, 300, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='div1' class='container'",
-          "rect": [0, 0, 200, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 0, 200, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 300, 180, 20],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='div1' class='container'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'A A A A A AA AA'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AA AA AAA AAA'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AAA AAAA AAAA'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AAAAA AAAAA'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AAAAAA AAAAAAA'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AAAAAA AAAAA'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AAAAA AAAA AAAA'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AAA AAA AAA AA'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AA AA AA A A A'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'A A'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='div2' class='container'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'A A A A A'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/insert-frame-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/insert-frame-expected.txt
deleted file mode 100644
index ccebd47c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/insert-frame-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 800, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutIFrame IFRAME",
-          "rect": [0, 0, 104, 104],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [2, 2, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutIFrame IFRAME",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidate-caret-before-text-node-update-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidate-caret-before-text-node-update-expected.txt
deleted file mode 100644
index ee888b4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidate-caret-before-text-node-update-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='root' class='editing'",
-          "rect": [7, 7, 786, 20],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 8, 10, 18],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='root' class='editing'",
-      "reason": "full"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidate-descendants-when-receiving-paint-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidate-descendants-when-receiving-paint-layer-expected.txt
deleted file mode 100644
index 2b7ff5d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidate-descendants-when-receiving-paint-layer-expected.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='child'",
-          "rect": [9, 9, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='child'",
-          "rect": [9, 9, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [9, 9, 50, 50],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [9, 9, 50, 50],
-          "reason": "subtree"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "position": [8, 8],
-      "contentsOpaque": true,
-      "drawsContent": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='child'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='child'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidate-invisible-element-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidate-invisible-element-expected.txt
deleted file mode 100644
index 5638c46..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidate-invisible-element-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [200, 300, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt
deleted file mode 100644
index 03ac846..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidation-after-opacity-change-subtree-expected.txt
+++ /dev/null
@@ -1,185 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 2350],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='absolute'",
-          "rect": [8, 2000, 777, 350],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='absolute'",
-          "rect": [8, 2000, 777, 350],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 2200, 777, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 2200, 777, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 2050, 777, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 2050, 777, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 2046, 774, 107],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 2046, 774, 107],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 2196, 655, 107],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 2196, 655, 107],
-          "reason": "subtree"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1750, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='container'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='absolute'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'This test checks that switching opacity'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'invalidates the full subtree.'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'This text should be visible in the'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'output.'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='container'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='absolute'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'This test checks that switching opacity'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'invalidates the full subtree.'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'This text should be visible in the'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'output.'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
deleted file mode 100644
index 2d0182f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [185, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [300, 300],
-      "backgroundColor": "#D3D3D3",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [100, 100, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6"
-    },
-    {
-      "name": "LayoutBlockFlow DIV (foreground) Layer",
-      "position": [8, 8],
-      "bounds": [300, 300],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [100, 100, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 193],
-      "bounds": [185, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [193, 8],
-      "bounds": [15, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [193, 193],
-      "bounds": [15, 15]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidation-with-zero-size-object-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidation-with-zero-size-object-expected.txt
deleted file mode 100644
index e5059ba1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invalidation-with-zero-size-object-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='element'",
-          "rect": [8, 8, 200, 200],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='element'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invisible-objects-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invisible-objects-expected.txt
deleted file mode 100644
index 0c7a406..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/invisible-objects-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'is invisible'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/layer-full-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/layer-full-repaint-expected.txt
deleted file mode 100644
index 5a7304c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/layer-full-repaint-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='test' class='selected'",
-          "rect": [8, 8, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='test' class='selected'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/layer-hide-when-needs-layout-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/layer-hide-when-needs-layout-expected.txt
deleted file mode 100644
index f5273eed..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/layer-hide-when-needs-layout-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [8, 8, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/layer-visibility-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/layer-visibility-expected.txt
deleted file mode 100644
index 0b7c1de..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/layer-visibility-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [100, 0, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-1-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-1-expected.txt
deleted file mode 100644
index 271a412a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-1-expected.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 80, 406, 119],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV id='pinkFloat'",
-          "rect": [378, 138, 70, 30],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='pinkFloat'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The chief difficulty Alice found at first was in managing'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'flamingo: she succeeded in getting its body tucked'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'away,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'comfortably enough, under her arm, with its legs'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hanging down,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'but generally, just as she had got its'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'neck nicely straightened\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'out, and was going to give the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog a blow with its head, it\n'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-10-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-10-expected.txt
deleted file mode 100644
index 72b4afde..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-10-expected.txt
+++ /dev/null
@@ -1,235 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 520, 408, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 240, 407, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 360, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 460, 355, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 440, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 420, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 400, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 363, 48, 65],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 374, 48, 64],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself, and was'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this, there was generally'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she wanted to send the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers were always'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the ground, Alice'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soon came to the conclusion that it was a very\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'game indeed.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The players all played at once without waiting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for turns,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for the hedgehogs; and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Queen'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' was in a furious passion, and went\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'stamping'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'about, and shouting \u2018Off with his head!\u2019 or \u2018Off with'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her head!\u2019 about once in a minute.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Alice began to feel very uneasy: to be sure, she had not as\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'yet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'had any dispute with the Queen, but she knew that it might'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'happen any minute, \u2018and then,\u2019 thought she, \u2018what would'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'become of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'me? They\u2019re dreadfully fond of beheading people'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'here; the great\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'wonder is, that there\u2018s any one left alive!\u2019'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-2-expected.txt
deleted file mode 100644
index 0cde376..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-2-expected.txt
+++ /dev/null
@@ -1,405 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 74, 418, 526],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 520, 408, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 241, 407, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 240, 407, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 181, 407, 79],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 180, 407, 79],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 361, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 360, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 80, 355, 120],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 461, 355, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 460, 355, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 421, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 420, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 401, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 400, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [302, 441, 66, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [302, 440, 66, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-          "rect": [372, 404, 48, 81],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-          "rect": [372, 403, 48, 81],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 364, 48, 65],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 363, 48, 65],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [235, 180, 45, 20],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [485, 0, 15, 600],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The chief difficulty Alice found at first was in managing'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'flamingo: she succeeded in getting its body tucked'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'away,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'comfortably enough, under her arm, with its legs'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hanging down,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'but generally, just as she had got its'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'neck nicely straightened\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'out, and was going to give the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog a blow with its head, it\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline I id='would'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'would'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' twist itself round and'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'look up in her face, with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'such a puzzled expression that she'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'could not help bursting out\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'laughing: and when she had got its'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'head down, and was going to\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself, and was'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this, there was generally'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she wanted to send the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers were always'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the ground, Alice'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soon came to the conclusion that it was a very\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'game indeed.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The players all played at once without waiting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for turns,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for the hedgehogs; and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the Queen'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'was in a furious passion, and went\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'stamping about, and'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'shouting \u2018Off with his head!\u2019 or \u2018Off with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her head!\u2019'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'about once in a minute.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Alice began to feel very uneasy: to be sure, she had not as\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'yet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'had any dispute with the Queen, but she knew that it might'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'happen any minute, \u2018and then,\u2019 thought she, \u2018what would'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'become of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'me? They\u2019re dreadfully fond of beheading people'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'here; the great\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'wonder is, that there\u2018s any one left alive!\u2019'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-3-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-3-expected.txt
deleted file mode 100644
index 97847050..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-3-expected.txt
+++ /dev/null
@@ -1,249 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 520, 408, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 240, 407, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 400, 406, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 360, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 460, 355, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 440, 339, 79],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 400, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [302, 440, 66, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [242, 440, 65, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-          "rect": [356, 423, 64, 81],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-          "rect": [372, 403, 48, 81],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself, and was'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this, there was generally'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she wanted to send the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers were always'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the ground, Alice'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soon came to the conclusion that it was a very\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'game indeed.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The players all played at once without waiting\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for turns,'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting for the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehogs; and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the Queen'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' was in'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a furious passion, and went\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'stamping about, and'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'shouting \u2018Off with his head!\u2019 or \u2018Off with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her head!\u2019'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'about once in a minute.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Alice began to feel very uneasy: to be sure, she had not as\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'yet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'had any dispute with the Queen, but she knew that it might'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'happen any minute, \u2018and then,\u2019 thought she, \u2018what would'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'become of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'me? They\u2019re dreadfully fond of beheading people'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'here; the great\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'wonder is, that there\u2018s any one left alive!\u2019'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-4-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-4-expected.txt
deleted file mode 100644
index 55806ec..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-4-expected.txt
+++ /dev/null
@@ -1,230 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 520, 408, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 240, 407, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 460, 406, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 360, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 420, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 400, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [302, 440, 66, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-          "rect": [372, 403, 48, 81],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself, and was'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this, there was generally'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she wanted to send the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers were always'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the ground, Alice'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soon came to the conclusion that it was a very\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'game indeed.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The players all played at once without waiting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='greenFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for turns,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for the hedgehogs; and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the Queen'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'was in a furious passion, and went\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'stamping about, and'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'shouting \u2018Off with his head!\u2019 or \u2018Off with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her head!\u2019 about once'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in a minute.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Alice began to feel very uneasy: to be sure, she had not as\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'yet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'had any dispute with the Queen, but she knew that it might'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'happen any minute, \u2018and then,\u2019 thought she, \u2018what would'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'become of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'me? They\u2019re dreadfully fond of beheading people'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'here; the great\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'wonder is, that there\u2018s any one left alive!\u2019'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-5-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-5-expected.txt
deleted file mode 100644
index 6ac3daa8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-5-expected.txt
+++ /dev/null
@@ -1,248 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 520, 408, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 240, 407, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [49, 360, 372, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 400, 356, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 440, 355, 79],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 400, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [49, 400, 302, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [302, 440, 66, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [245, 440, 65, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 363, 48, 65],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself, and was'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this, there was generally'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she wanted to send the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers were always'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the ground, Alice'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soon came to the conclusion that it was a very\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'game indeed.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The players all played at once without waiting\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'turns,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting for the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehogs; and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the Queen'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' was in a'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'furious passion, and went\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'stamping about, and shouting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u2018Off with his head!\u2019 or \u2018Off with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her head!\u2019 about once'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in a minute.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Alice began to feel very uneasy: to be sure, she had not as\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'yet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'had any dispute with the Queen, but she knew that it might'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'happen any minute, \u2018and then,\u2019 thought she, \u2018what would'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'become of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'me? They\u2019re dreadfully fond of beheading people'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'here; the great\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'wonder is, that there\u2018s any one left alive!\u2019'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-6-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-6-expected.txt
deleted file mode 100644
index b6f61c3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-6-expected.txt
+++ /dev/null
@@ -1,126 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 240, 407, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 360, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 363, 48, 65],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [27, 363, 22, 20],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself, and was'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this, there was generally'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she wanted to send the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers were always'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the ground, Alice'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soon came to the conclusion that it was a very\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'foo'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'game indeed.\n'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-7-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-7-expected.txt
deleted file mode 100644
index 83ea0bd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-7-expected.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 420, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [298, 440, 70, 19],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for turns,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for the hedgehogs; and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='theQueen'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'the Queen'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-8-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-8-expected.txt
deleted file mode 100644
index b8a41ef..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-8-expected.txt
+++ /dev/null
@@ -1,321 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 74, 418, 526],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 240, 407, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 180, 407, 79],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 360, 406, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 440, 358, 79],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 360, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 80, 355, 119],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 420, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 400, 354, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 400, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 400, 297, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [184, 440, 68, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [302, 440, 66, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 363, 48, 65],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [238, 180, 40, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The chief difficulty Alice found at first was in managing'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'flamingo: she succeeded in getting its body tucked'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'away,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'comfortably enough, under her arm, with its legs'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hanging down,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'but generally, just as she had got its'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'neck nicely straightened\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'out, and was going to give the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog a blow with its head, it\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'would'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' twist itself round and'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'look up in her face, with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'such a puzzled expression that she'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'could not help bursting out\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'laughing: and when she had got its'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'head down, and was going to\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself, and was'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this, there was generally'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she wanted to send the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers were always'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the ground, Alice'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soon came to the conclusion that it was a very\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult game'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'indeed.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The players all played at once without waiting\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for turns,'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting for the hedgehogs;'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the Queen'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' was in a furious'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'passion, and went\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'stamping about, and shouting \u2018Off'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'with his head!\u2019 or \u2018Off with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her head!\u2019 about once in a'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'minute.\n'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-9-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-9-expected.txt
deleted file mode 100644
index d224c5b8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/line-flow-with-floats-9-expected.txt
+++ /dev/null
@@ -1,273 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 520, 408, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 240, 407, 139],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 180, 407, 79],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 360, 356, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 460, 355, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 440, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [14, 420, 355, 39],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [65, 400, 304, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 383, 48, 65],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-          "rect": [14, 363, 48, 65],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) SPAN id='yellowFloat'",
-          "rect": [372, 243, 48, 49],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' twist itself round and'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'look up in her face, with\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'such a puzzled expression that she'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'could not help bursting out\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'laughing: and when she had got its'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'head down, and was going to\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='yellowFloat'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'begin again, it was very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'provoking to find that the hedgehog had\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'unrolled itself,'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'and was in the act of crawling away: besides all\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'this,'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'there was generally a ridge or furrow in the way wherever\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'she'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'wanted to send the hedgehog to, and, as the doubled-up\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'soldiers'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'were always getting up and walking off to other parts of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'ground, Alice soon came to the conclusion that it was a very'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) SPAN id='blueFloat'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'difficult game indeed.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'The players all played at once without waiting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for turns,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'quarrelling all the while, and fighting'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'for the hedgehogs; and in\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a very short time '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'the'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Queen'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' was in a furious passion, and went\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'stamping'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'about, and shouting \u2018Off with his head!\u2019 or \u2018Off with'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'her head!\u2019 about once in a minute.\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Alice began to feel very uneasy: to be sure, she had not as\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'yet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'had any dispute with the Queen, but she knew that it might'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'happen any minute, \u2018and then,\u2019 thought she, \u2018what would'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'become of\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'me? They\u2019re dreadfully fond of beheading people'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'here; the great\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'wonder is, that there\u2018s any one left alive!\u2019'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/lines-with-layout-delta-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/lines-with-layout-delta-expected.txt
deleted file mode 100644
index 1ab0df66..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/lines-with-layout-delta-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (floating) DIV id='target'",
-          "rect": [8, 58, 200, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 58, 38, 19],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/list-marker-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/list-marker-2-expected.txt
deleted file mode 100644
index 541df64..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/list-marker-2-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutListItem LI",
-          "rect": [48, 100, 744, 105],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage IMG id='target'",
-          "rect": [48, 100, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutListMarker (anonymous)",
-          "rect": [30, 185, 7, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutListMarker (anonymous)",
-          "rect": [30, 135, 7, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutListItem LI",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutListMarker (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutImage IMG id='target'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/make-children-non-inline-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/make-children-non-inline-expected.txt
deleted file mode 100644
index 5318d36..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/make-children-non-inline-expected.txt
+++ /dev/null
@@ -1,364 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 64, 784, 280],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 64, 784, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 264, 784, 80],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 264, 111, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 164, 111, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 144, 80, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 144, 80, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 104, 79, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 104, 79, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 284, 67, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 184, 67, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 324, 62, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 224, 62, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 124, 45, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 124, 45, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 84, 43, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 84, 43, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 64, 39, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 64, 39, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 304, 29, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 204, 29, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 164, 10, 100],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Word,'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'words,'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'more words.'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'I could'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'write a book'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'about all the stuff'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'that comes'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'after'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'the break.'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/mix-blend-mode-separate-stacking-context-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/mix-blend-mode-separate-stacking-context-expected.txt
deleted file mode 100644
index 33dd3d17..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/mix-blend-mode-separate-stacking-context-expected.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [348, 48, 60, 60],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [348, 48, 60, 60],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV id='fourth'",
-          "rect": [328, 28, 60, 60],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='fourth'",
-          "rect": [328, 28, 60, 60],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV id='third'",
-          "rect": [248, 48, 60, 60],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV id='second'",
-          "rect": [148, 48, 60, 60],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV id='second'",
-          "rect": [148, 48, 60, 60],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV id='first'",
-          "rect": [48, 48, 60, 60],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV id='first'",
-          "rect": [48, 48, 60, 60],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='fourth'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='second'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='first'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='first'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='second'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='third'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) (floating) DIV id='fourth'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multi-layout-one-frame-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multi-layout-one-frame-expected.txt
deleted file mode 100644
index 6f3fffe..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multi-layout-one-frame-expected.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [168, 11, 150, 16],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 11, 150, 16],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [168, 11, 53, 16],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 11, 53, 16],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASSED'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASSED'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/column-rules-fixed-height-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/column-rules-fixed-height-expected.txt
deleted file mode 100644
index 390293a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/column-rules-fixed-height-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutMultiColumnSet (anonymous)",
-          "rect": [8, 52, 525, 315],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 52, 310, 315],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutMultiColumnSet (anonymous)",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-as-paint-container-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-as-paint-container-expected.txt
deleted file mode 100644
index 712bff65..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-as-paint-container-expected.txt
+++ /dev/null
@@ -1,195 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='target'",
-      "position": [8, 8],
-      "bounds": [630, 180],
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutMultiColumnSet (anonymous)",
-          "rect": [0, 0, 630, 180],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [325, -180, 300, 340],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 0, 300, 340],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'dolor sit amet,'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'consectetur'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'adipiscing'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'elit. Fusce'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'varius, metus'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'eu fringilla'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'pulvinar, ipsum'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'sapien'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'ultricies arcu,'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'non condimentum'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'quam est eu'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'purus. Ut nisl'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'libero,'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'suscipit ut leo'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'eget, dapibus'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'ultrices dolor.'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'dolor sit amet,'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'consectetur'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'adipiscing'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'elit. Fusce'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'varius, metus'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'eu fringilla'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'pulvinar, ipsum'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'sapien'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'ultricies arcu,'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'non condimentum'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'quam est eu'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'purus. Ut nisl'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'libero,'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'suscipit ut leo'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'eget, dapibus'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'ultrices dolor.'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutMultiColumnSet (anonymous)",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-relpos-with-abspos-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-relpos-with-abspos-expected.txt
deleted file mode 100644
index 2fe4ee1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-relpos-with-abspos-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [618, 28, 20, 20],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-repaint-expected.txt
deleted file mode 100644
index 389b334c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-repaint-expected.txt
+++ /dev/null
@@ -1,155 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutInline SPAN id='a'",
-          "rect": [234, 10, 300, 57],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN id='a'",
-          "rect": [9, 110, 300, 57],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [234, 15, 300, 50],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [9, 115, 300, 50],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [9, 15, 275, 150],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutMultiColumnFlowThread (anonymous)",
-          "rect": [234, -91, 175, 159],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutMultiColumnFlowThread (anonymous)",
-          "rect": [9, 9, 175, 159],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [234, -90, 13, 57],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [9, 10, 13, 57],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='a'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='a'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'XXXXXX'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'XXXXXX'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-resize-with-rule-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-resize-with-rule-expected.txt
deleted file mode 100644
index d0b60c6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-resize-with-rule-expected.txt
+++ /dev/null
@@ -1,91 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutMultiColumnSet (anonymous)",
-          "rect": [8, 8, 600, 200],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutMultiColumnSet (anonymous)",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-abspos-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-abspos-expected.txt
deleted file mode 100644
index 8311225..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-abspos-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [0, 580, 80, 20],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 580, 80, 20],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt
deleted file mode 100644
index 5f8ea19..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-abspos-in-relpos-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [508, 28, 80, 20],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [508, 28, 80, 20],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-block-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-block-expected.txt
deleted file mode 100644
index 5dc1dfc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-block-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [488, 8, 150, 20],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [488, 8, 80, 20],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-inline-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-inline-expected.txt
deleted file mode 100644
index cb12b34d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-inline-expected.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [488, 8, 80, 20],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [328, 28, 80, 20],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [168, 48, 80, 20],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 68, 80, 20],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutInline SPAN id='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutInline SPAN id='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutInline SPAN id='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutInline SPAN id='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-overflowing-block-rl-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-overflowing-block-rl-expected.txt
deleted file mode 100644
index 67929b4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-overflowing-block-rl-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='elm'",
-          "rect": [-492, 174, 1500, 168],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='elm'",
-          "rect": [8, 341, 1500, 167],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='elm'",
-          "rect": [-992, 8, 1500, 167],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='elm'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='elm'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='elm'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-relpos-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-relpos-expected.txt
deleted file mode 100644
index 64e98b5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-relpos-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='target'",
-          "rect": [508, 28, 150, 20],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-text-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-text-expected.txt
deleted file mode 100644
index 53a86e6f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/multicol/multicol-with-text-expected.txt
+++ /dev/null
@@ -1,235 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutMultiColumnSet (anonymous)",
-          "rect": [8, 8, 630, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutMultiColumnFlowThread (anonymous)",
-          "rect": [488, -52, 150, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutMultiColumnFlowThread (anonymous)",
-          "rect": [328, -32, 150, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutMultiColumnFlowThread (anonymous)",
-          "rect": [168, -12, 150, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutMultiColumnFlowThread (anonymous)",
-          "rect": [8, 68, 150, 20],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [488, 8, 80, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [328, 28, 80, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [168, 48, 80, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 68, 80, 20],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "incremental"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutMultiColumnFlowThread (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutMultiColumnSet (anonymous)",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/non-text-link-invalidation-optimization-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/non-text-link-invalidation-optimization-expected.txt
deleted file mode 100644
index 52c86f1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/non-text-link-invalidation-optimization-expected.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [164, 8, 145, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [75, 8, 61, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 8, 57, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [353, 8, 52, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [136, 8, 28, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [319, 8, 24, 19],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'This test '",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox ' passes if '",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'only'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox ' text is invalidated and '",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox ' no '",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox ' images.'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/offset-change-wrong-invalidation-with-float-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/offset-change-wrong-invalidation-with-float-expected.txt
deleted file mode 100644
index 52b422b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/offset-change-wrong-invalidation-with-float-expected.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) UL id='submenu'",
-          "rect": [48, 94, 40, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) UL id='submenu'",
-          "rect": [48, -156, 40, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutListMarker (anonymous)",
-          "rect": [70, 94, 7, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutListMarker (anonymous)",
-          "rect": [70, -156, 7, 19],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutListItem (floating) LI id='watches'",
-      "position": [30, 44],
-      "bounds": [25, 19]
-    },
-    {
-      "name": "LayoutInline (relative positioned) SPAN id='placeholder'",
-      "position": [48, 44],
-      "drawsContent": false,
-      "backfaceVisibility": "hidden"
-    },
-    {
-      "name": "LayoutListItem (relative positioned) (floating) LI id='menu'",
-      "position": [30, 44],
-      "bounds": [18, 19],
-      "paintInvalidations": [
-        {
-          "object": "LayoutListMarker (anonymous)",
-          "rect": [0, 0, 7, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutListMarker (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) UL id='submenu'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutListItem LI",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutListMarker (anonymous)",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/opacity-from-zero-to-non-zero-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/opacity-from-zero-to-non-zero-expected.txt
deleted file mode 100644
index 14e45807..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/opacity-from-zero-to-non-zero-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 8, 100, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/border-outline-0-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/border-outline-0-expected.txt
deleted file mode 100644
index f6607d6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/border-outline-0-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='border-image'",
-          "rect": [10, 10, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='border-image'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/border-radius-with-outline-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/border-radius-with-outline-expected.txt
deleted file mode 100644
index 446d7d1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/border-radius-with-outline-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [45, 45, 310, 310],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-continuations-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-continuations-expected.txt
deleted file mode 100644
index 83c02c9f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-continuations-expected.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutInline SPAN id='outer'",
-          "rect": [7, 87, 88, 22],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='outer'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='outer'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-enable-continuations-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-enable-continuations-expected.txt
deleted file mode 100644
index f0f095d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-enable-continuations-expected.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutInline SPAN id='outer'",
-          "rect": [7, 87, 88, 22],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='outer'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='outer'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-child-move-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-child-move-expected.txt
deleted file mode 100644
index 40dfe0f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-child-move-expected.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [99, 49, 302, 302],
-          "reason": "outline"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='child'",
-          "rect": [300, 50, 20, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='child'",
-          "rect": [150, 50, 20, 300],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "outline"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='child'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt
deleted file mode 100644
index 755b772..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [207, 231, 102, 102],
-          "reason": "outline"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [7, 231, 102, 102],
-          "reason": "outline"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='block'",
-          "rect": [208, 232, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='block'",
-          "rect": [8, 232, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "outline"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='block'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt
deleted file mode 100644
index 12fd5100..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 8, 784, 105],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [7, 7, 102, 182],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [7, 7, 102, 182],
-          "reason": "outline"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='block'",
-          "rect": [8, 88, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='block'",
-          "rect": [8, 8, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "outline"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='block'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/inline-focus-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/inline-focus-expected.txt
deleted file mode 100644
index 00c868e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/inline-focus-expected.txt
+++ /dev/null
@@ -1,87 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [0, 36, 800, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [0, 0, 800, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 36, 419, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline A id='link'",
-          "rect": [585, -1, 216, 234],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 0, 39, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline A id='link'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Home'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'crbug.com/424078: ensure inline elements get their outline painted'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/inline-outline-repaint-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/inline-outline-repaint-2-expected.txt
deleted file mode 100644
index 2cf56da..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/inline-outline-repaint-2-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [210, -5, 50, 20],
-          "reason": "outline"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [215, 0, 40, 10],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "outline"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "outline"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Test'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/inline-outline-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/inline-outline-repaint-expected.txt
deleted file mode 100644
index af88d1c0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/inline-outline-repaint-expected.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 176, 100, 40],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN id='test'",
-          "rect": [5, 173, 95, 45],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 176, 89, 39],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutInline SPAN id='test'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'dolor\u00A0'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-add-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-add-repaint-expected.txt
deleted file mode 100644
index b9e43ccd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-add-repaint-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [-10, -10, 120, 120],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-become-affected-by-descendant-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-become-affected-by-descendant-expected.txt
deleted file mode 100644
index e2ecae9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-become-affected-by-descendant-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='outline'",
-          "rect": [7, 7, 152, 102],
-          "reason": "outline"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='child'",
-          "rect": [58, 8, 100, 50],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='outline'",
-      "reason": "outline"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='child'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-become-not-affected-by-descendant-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-become-not-affected-by-descendant-expected.txt
deleted file mode 100644
index f8c0900f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-become-not-affected-by-descendant-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='outline'",
-          "rect": [7, 7, 152, 102],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='child'",
-          "rect": [58, 8, 100, 50],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='outline'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='child'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-continuations-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-continuations-expected.txt
deleted file mode 100644
index 5c78c75..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-continuations-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='outer'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='outer'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-invalidation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-invalidation-expected.txt
deleted file mode 100644
index 49b3c1ed..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-invalidation-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow A id='link'",
-          "rect": [43, 83, 754, 30],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutListMarker (anonymous)",
-          "rect": [30, 88, 7, 19],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow A id='link'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutListMarker (anonymous)",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-offset-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-offset-expected.txt
deleted file mode 100644
index 6556279..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-offset-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [35, 35, 130, 130],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-repaint-expected.txt
deleted file mode 100644
index b9e43ccd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-repaint-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [-10, -10, 120, 120],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-vertical-rl-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-vertical-rl-expected.txt
deleted file mode 100644
index 9561887..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-vertical-rl-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1016, 585],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [-12, -12, 1040, 140],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-216, 0, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-child-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-child-repaint-expected.txt
deleted file mode 100644
index 7c23559..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-child-repaint-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='outlined'",
-          "rect": [0, 240, 220, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outlined'",
-          "rect": [0, 140, 220, 50],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='outlined'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-containing-image-in-non-standard-mode-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-containing-image-in-non-standard-mode-expected.txt
deleted file mode 100644
index f90186b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-containing-image-in-non-standard-mode-expected.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutInline SPAN id='target'",
-          "rect": [6, 6, 204, 58],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutImage IMG",
-          "rect": [8, 8, 200, 50],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutImage IMG",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-continuations-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-continuations-expected.txt
deleted file mode 100644
index cfdfae2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-continuations-expected.txt
+++ /dev/null
@@ -1,112 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [18, 150, 200, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [18, 110, 200, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN id='outer'",
-          "rect": [16, 108, 90, 63],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutInline SPAN id='outer'",
-          "rect": [16, 148, 90, 23],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [18, 150, 86, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [18, 110, 86, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='outer'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'CONTENTS'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='outer'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'CONTENTS'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='outer'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-current-color-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-current-color-expected.txt
deleted file mode 100644
index 01dc459..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-current-color-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='currentColor'",
-          "rect": [48, 190, 120, 120],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='currentColor'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-inset-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-inset-expected.txt
deleted file mode 100644
index 923c68a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-inset-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [19, 191, 200, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [19, 29, 200, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='b'",
-          "rect": [29, 231, 180, 20],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='a'",
-          "rect": [29, 69, 180, 20],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='a'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='b'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-not-affected-by-descendant-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-not-affected-by-descendant-expected.txt
deleted file mode 100644
index 846cfef..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-not-affected-by-descendant-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='child'",
-          "rect": [8, 8, 50, 50],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='child'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-repaint-glitch-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-repaint-glitch-expected.txt
deleted file mode 100644
index 2492cc8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-repaint-glitch-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [15, 391, 208, 68],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [15, 229, 208, 68],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='b'",
-          "rect": [29, 435, 180, 20],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='a'",
-          "rect": [29, 273, 180, 20],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='a'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='b'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-shrinking-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-shrinking-expected.txt
deleted file mode 100644
index 63453371..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-shrinking-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='t'",
-          "rect": [4, 114, 108, 108],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='t'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/align-items-overflow-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/align-items-overflow-change-expected.txt
deleted file mode 100644
index 44ece64b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/align-items-overflow-change-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item1'",
-          "rect": [0, 52, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item1'",
-          "rect": [0, 2, 200, 200],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item1'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/align-self-overflow-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/align-self-overflow-change-expected.txt
deleted file mode 100644
index 44ece64b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/align-self-overflow-change-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item1'",
-          "rect": [0, 52, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item1'",
-          "rect": [0, 2, 200, 200],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item1'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/clipped-overflow-visible-subtree-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/clipped-overflow-visible-subtree-expected.txt
deleted file mode 100644
index d7e54be9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/clipped-overflow-visible-subtree-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [308, 8, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='node'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
deleted file mode 100644
index c8e24d2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [8, 8],
-      "bounds": [220, 220],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='scroller'",
-          "rect": [0, 0, 220, 220],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [18, 18],
-      "bounds": [185, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [18, 18],
-      "bounds": [185, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='scroller'",
-          "rect": [0, 0, 185, 300],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [220, 220],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [18, 203],
-      "bounds": [185, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [203, 18],
-      "bounds": [15, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [203, 203],
-      "bounds": [15, 15]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='scroller'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt
deleted file mode 100644
index 7697295..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='scroller'",
-          "rect": [0, 0, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [185, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [185, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='scroller'",
-          "rect": [0, 0, 185, 300],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 193],
-      "bounds": [185, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [193, 8],
-      "bounds": [15, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [193, 193],
-      "bounds": [15, 15]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='scroller'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/composited-overflow-with-negative-offset-outline-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/composited-overflow-with-negative-offset-outline-expected.txt
deleted file mode 100644
index b291980..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/composited-overflow-with-negative-offset-outline-expected.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='scroller'",
-          "rect": [0, 0, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [185, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [185, 300]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 193],
-      "bounds": [185, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [193, 8],
-      "bounds": [15, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [193, 193],
-      "bounds": [15, 15]
-    },
-    {
-      "name": "Decoration Layer",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='scroller'",
-          "rect": [0, 0, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='scroller'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/composited-vertical-rl-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/composited-vertical-rl-overflow-expected.txt
deleted file mode 100644
index 9a5d1b22..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/composited-vertical-rl-overflow-expected.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='div'",
-      "position": [50, 100],
-      "bounds": [150, 100],
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='div'",
-          "rect": [0, 0, 150, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='div'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/content-into-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/content-into-overflow-expected.txt
deleted file mode 100644
index 2c21e67..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/content-into-overflow-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [8, 211, 106, 53],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 308, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target3'",
-          "rect": [8, 388, 100, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [61, 8, 53, 106],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target3'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/erase-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/erase-overflow-expected.txt
deleted file mode 100644
index d62bda3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/erase-overflow-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='square'",
-          "rect": [8, 108, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target' class='square'",
-          "rect": [8, 8, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target' class='square'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='square'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='square'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/fixed-position-transparency-with-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/fixed-position-transparency-with-overflow-expected.txt
deleted file mode 100644
index b907cff..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/fixed-position-transparency-with-overflow-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-          "rect": [108, 308, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-          "rect": [108, 308, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='container' class='relative blue'",
-          "rect": [8, 208, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='container' class='relative blue'",
-          "rect": [8, 208, 100, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='container' class='relative blue'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='container' class='relative blue'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/float-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/float-overflow-expected.txt
deleted file mode 100644
index aaf968bc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/float-overflow-expected.txt
+++ /dev/null
@@ -1,1284 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [11, 366, 778, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [11, 360, 778, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 537, 62, 37],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 531, 62, 37],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 498, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 492, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 459, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 453, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 420, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 414, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutDeprecatedFlexibleBox DIV class='outer box'",
-          "rect": [61, 249, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutDeprecatedFlexibleBox DIV class='outer box'",
-          "rect": [61, 243, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutDeprecatedFlexibleBox DIV class='outer box'",
-          "rect": [61, 210, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutDeprecatedFlexibleBox DIV class='outer box'",
-          "rect": [61, 204, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 171, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 165, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 132, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 126, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 93, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 87, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 54, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 48, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 15, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [61, 9, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE class='outer'",
-          "rect": [61, 366, 58, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE class='outer'",
-          "rect": [61, 360, 58, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE class='outer'",
-          "rect": [61, 327, 58, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE class='outer'",
-          "rect": [61, 321, 58, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE class='outer'",
-          "rect": [61, 288, 58, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE class='outer'",
-          "rect": [61, 282, 58, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 504, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 498, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 465, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 459, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 426, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 420, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 216, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 210, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 177, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 171, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 138, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 132, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 99, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 93, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 60, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 54, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 21, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 15, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [69, 374, 42, 12],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [69, 368, 42, 12],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [69, 335, 42, 12],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [69, 329, 42, 12],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [69, 296, 42, 12],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [69, 290, 42, 12],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [70, 375, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [70, 369, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [70, 336, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [70, 330, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [70, 297, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [70, 291, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [67, 138, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [67, 132, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [65, 60, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [65, 54, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [65, 21, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [65, 15, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 543, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 537, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 504, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 498, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 465, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 459, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 426, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 420, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 255, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 249, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 216, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 210, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 177, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 171, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 99, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [59, 93, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 543, 32, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 537, 32, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 255, 32, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [67, 249, 32, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [66, 297, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [66, 291, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [63, 21, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [63, 15, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 543, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 537, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 504, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 498, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 465, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 459, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 426, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 420, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 255, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 249, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 216, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 210, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 177, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 171, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 138, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [59, 132, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [58, 375, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [58, 369, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [58, 336, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [58, 330, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [57, 99, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [57, 93, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [57, 60, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [57, 54, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [66, 299, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [66, 293, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [63, 23, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [63, 17, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 545, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 539, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 506, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 500, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 467, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 461, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 428, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 422, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 257, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 251, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 218, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 212, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 179, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 173, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 140, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [59, 134, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [58, 377, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [58, 371, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [58, 338, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [58, 332, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [57, 101, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [57, 95, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [57, 62, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [57, 56, 16, 17],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutDeprecatedFlexibleBox DIV class='outer box'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutDeprecatedFlexibleBox DIV class='outer box'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTable TABLE class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTable TABLE class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTable TABLE class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/float-overflow-right-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/float-overflow-right-expected.txt
deleted file mode 100644
index e6fa1db..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/float-overflow-right-expected.txt
+++ /dev/null
@@ -1,1284 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [11, 366, 778, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [11, 360, 778, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 537, 62, 37],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 531, 62, 37],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 498, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 492, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 459, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 453, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 420, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 414, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutDeprecatedFlexibleBox DIV class='outer box'",
-          "rect": [677, 249, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutDeprecatedFlexibleBox DIV class='outer box'",
-          "rect": [677, 243, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutDeprecatedFlexibleBox DIV class='outer box'",
-          "rect": [677, 210, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutDeprecatedFlexibleBox DIV class='outer box'",
-          "rect": [677, 204, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 171, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 165, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 132, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 126, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 93, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 87, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 54, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 48, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 15, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='outer'",
-          "rect": [677, 9, 62, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE class='outer'",
-          "rect": [681, 366, 58, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE class='outer'",
-          "rect": [681, 360, 58, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE class='outer'",
-          "rect": [681, 327, 58, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE class='outer'",
-          "rect": [681, 321, 58, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE class='outer'",
-          "rect": [681, 288, 58, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE class='outer'",
-          "rect": [681, 282, 58, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 504, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 498, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 465, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 459, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 426, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 420, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 216, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 210, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 177, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 171, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 138, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 132, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 99, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 93, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 60, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 54, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 21, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [683, 15, 50, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [689, 374, 42, 12],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [689, 368, 42, 12],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [689, 335, 42, 12],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [689, 329, 42, 12],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [689, 296, 42, 12],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [689, 290, 42, 12],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 543, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 537, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 504, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 498, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 465, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 459, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 426, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 420, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 255, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 249, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 216, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 210, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 177, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 171, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 99, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [701, 93, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [695, 60, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [695, 54, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [695, 21, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [695, 15, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [693, 138, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [693, 132, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [690, 375, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [690, 369, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [690, 336, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [690, 330, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [690, 297, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV",
-          "rect": [690, 291, 40, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [701, 543, 32, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [701, 537, 32, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [701, 255, 32, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [701, 249, 32, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [727, 99, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [727, 93, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [727, 60, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [727, 54, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [726, 375, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [726, 369, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [726, 336, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [726, 330, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 543, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 537, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 504, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 498, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 465, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 459, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 426, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 420, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 255, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 249, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 216, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 210, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 177, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 171, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 138, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [725, 132, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [721, 21, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [721, 15, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [718, 297, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN",
-          "rect": [718, 291, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [727, 101, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [727, 95, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [727, 62, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [727, 56, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [726, 377, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [726, 371, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [726, 338, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [726, 332, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 545, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 539, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 506, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 500, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 467, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 461, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 428, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 422, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 257, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 251, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 218, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 212, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 179, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 173, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 140, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [725, 134, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [721, 23, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [721, 17, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [718, 299, 16, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [718, 293, 16, 17],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutDeprecatedFlexibleBox DIV class='outer box'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutDeprecatedFlexibleBox DIV class='outer box'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTable TABLE class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTable TABLE class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTable TABLE class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='outer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/inline-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/inline-overflow-expected.txt
deleted file mode 100644
index 25d9b612..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/inline-overflow-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [33, 33, 250, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'A\u00A0\u00A0B'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/inline-vertical-lr-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/inline-vertical-lr-overflow-expected.txt
deleted file mode 100644
index afc9ee67..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/inline-vertical-lr-overflow-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [33, 33, 100, 250],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'A\u00A0\u00A0B'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/inline-vertical-rl-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/inline-vertical-rl-overflow-expected.txt
deleted file mode 100644
index a4bc5ac..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/inline-vertical-rl-overflow-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [667, 33, 100, 250],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'A\u00A0\u00A0B'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/justify-items-overflow-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/justify-items-overflow-change-expected.txt
deleted file mode 100644
index 11e55645d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/justify-items-overflow-change-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item1'",
-          "rect": [0, 52, 160, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item1'",
-          "rect": [-60, 52, 160, 300],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item1'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/justify-self-overflow-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/justify-self-overflow-change-expected.txt
deleted file mode 100644
index a8230c6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/justify-self-overflow-change-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item1'",
-          "rect": [0, 52, 150, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item1'",
-          "rect": [-50, 52, 150, 300],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item1'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/line-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/line-overflow-expected.txt
deleted file mode 100644
index 122a08d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/line-overflow-expected.txt
+++ /dev/null
@@ -1,116 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [7, 122, 197, 99],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 82, 192, 59],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN id='t'",
-          "rect": [113, 92, 36, 49],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [113, 122, 36, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN id='t'",
-          "rect": [37, 142, 36, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [37, 142, 36, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Cras faucibus. Nunc'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'adipiscing, enim in scelerisque'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'convallis,\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'augue '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline SPAN id='t'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'purus'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' eleifend'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'lacus, at sagittis eros leo'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'pulvinar velit. Integer'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'sollicitudin nisi ut urna blandit'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'convallis.'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/negative-text-indent-with-overflow-hidden-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/negative-text-indent-with-overflow-hidden-expected.txt
deleted file mode 100644
index 4c64cec5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/negative-text-indent-with-overflow-hidden-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target' class='changed'",
-          "rect": [550, 8, 200, 50],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target' class='changed'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/opacity-change-on-overflow-float-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/opacity-change-on-overflow-float-expected.txt
deleted file mode 100644
index ed1ff8d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/opacity-change-on-overflow-float-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (floating) DIV class='green'",
-          "rect": [8, 84, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV class='green'",
-          "rect": [8, 84, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV class='red'",
-          "rect": [8, 84, 100, 100],
-          "reason": "background"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (floating) DIV class='green'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV class='red'",
-      "reason": "background"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV class='green'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-changed-on-child-of-composited-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-changed-on-child-of-composited-layer-expected.txt
deleted file mode 100644
index 04696b2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-changed-on-child-of-composited-layer-expected.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='parent'",
-      "bounds": [745, 102],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='parent'",
-          "rect": [0, 0, 744, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [0, 0, 102, 102],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [27, 19, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-clip-subtree-layout-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-clip-subtree-layout-expected.txt
deleted file mode 100644
index 63a308b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-clip-subtree-layout-expected.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-delete-line-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-delete-line-expected.txt
deleted file mode 100644
index 931a7351..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-delete-line-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='dv'",
-          "rect": [8, 74, 80, 36],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 74, 72, 19],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 74, 46, 36],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='dv'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsu'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-hide-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-hide-expected.txt
deleted file mode 100644
index 2556536..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-hide-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='relative red'",
-          "rect": [108, 108, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='overflowParent' class='absolute green'",
-          "rect": [8, 8, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='overflowParent' class='absolute green'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='relative red'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-into-content-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-into-content-expected.txt
deleted file mode 100644
index 2cee0de..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-into-content-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [8, 211, 106, 53],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 308, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target3'",
-          "rect": [8, 388, 100, 20],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [61, 8, 53, 106],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target3'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-show-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-show-expected.txt
deleted file mode 100644
index 8d8ab658..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/overflow-show-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='relative green'",
-          "rect": [108, 108, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='overflowParent' class='absolute green'",
-          "rect": [8, 8, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='overflowParent' class='absolute green'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='relative green'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/paged-with-overflowing-block-rl-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/paged-with-overflowing-block-rl-expected.txt
deleted file mode 100644
index 8365f6e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/paged-with-overflowing-block-rl-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='elm'",
-          "rect": [8, 8, 500, 485],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='elm'",
-          "rect": [8, 8, 500, 485],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='elm'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='elm'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/rel-positioned-inline-with-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/rel-positioned-inline-with-overflow-expected.txt
deleted file mode 100644
index e194a31..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/rel-positioned-inline-with-overflow-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 94, 100, 50],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/repaint-resized-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/repaint-resized-overflow-expected.txt
deleted file mode 100644
index 1dc7c99..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/repaint-resized-overflow-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 212, 784, 52],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='s'",
-          "rect": [8, 208, 108, 56],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='s'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/resize-child-within-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/resize-child-within-overflow-expected.txt
deleted file mode 100644
index 0123e0e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/resize-child-within-overflow-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='container'",
-          "rect": [400, 0, 200, 1000],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='container'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/trailing-floats-root-line-box-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/trailing-floats-root-line-box-overflow-expected.txt
deleted file mode 100644
index efffbd7a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/trailing-floats-root-line-box-overflow-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [8, 58, 100, 100],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-child-expected.txt
deleted file mode 100644
index 6547f5ef..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-child-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='target'",
-          "rect": [214, 21, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-parent-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-parent-expected.txt
deleted file mode 100644
index 48aac9b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-parent-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='target'",
-          "rect": [29, 29, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-same-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-same-expected.txt
deleted file mode 100644
index 9a367b3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/vertical-overflow-same-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='target'",
-          "rect": [29, 21, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/vertical-rl-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/vertical-rl-overflow-expected.txt
deleted file mode 100644
index ce1bb71..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overflow/vertical-rl-overflow-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='div'",
-          "rect": [50, 100, 150, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='div'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overhanging-float-detach-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overhanging-float-detach-repaint-expected.txt
deleted file mode 100644
index c43eafd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/overhanging-float-detach-repaint-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (floating) DIV class='float'",
-          "rect": [8, 68, 100, 100],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (floating) DIV class='float'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='floatContainer'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/paint-caret-in-div-with-negative-indent-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/paint-caret-in-div-with-negative-indent-expected.txt
deleted file mode 100644
index fdd996c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/paint-caret-in-div-with-negative-indent-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='editable'",
-          "rect": [358, 200, 1, 20],
-          "reason": "caret"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Caret",
-      "reason": "caret"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/paint-invalidation-with-opacity-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/paint-invalidation-with-opacity-expected.txt
deleted file mode 100644
index 3b05af1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/paint-invalidation-with-opacity-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 8, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 8, 100, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries-expected.txt
deleted file mode 100644
index df8e6c0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries-expected.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='inner-target'",
-          "rect": [8, 187, 784, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='inner-target'",
-          "rect": [18, 18, 284, 20],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [18, 18, 22, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 187, 22, 19],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='inner-target'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'abc'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='inner-target'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-display-block-to-none-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-display-block-to-none-expected.txt
deleted file mode 100644
index 4b6f715..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-display-block-to-none-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='absolute'",
-          "rect": [100, 100, 100, 100],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='absolute'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-margin-change-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-margin-change-repaint-expected.txt
deleted file mode 100644
index 77792a8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-margin-change-repaint-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='test'",
-          "rect": [0, 60, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='test'",
-          "rect": [0, 40, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='test'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-position-change-containing-block-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-position-change-containing-block-expected.txt
deleted file mode 100644
index bcc034c1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-position-change-containing-block-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 8, 784, 2000],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-          "rect": [108, 5100, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-          "rect": [100, 100, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='container' class='fixed blue'",
-          "rect": [8, 5000, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='container' class='fixed blue'",
-          "rect": [8, 8, 100, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='container' class='fixed blue'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='container' class='fixed blue'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='container' class='fixed blue'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-position-changed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-position-changed-expected.txt
deleted file mode 100644
index ab3772b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-position-changed-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='absoluteDiv' class='absolute green'",
-          "rect": [100, 700, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='absoluteDiv' class='absolute green'",
-          "rect": [100, 500, 100, 100],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -500, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='absoluteDiv' class='absolute green'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-position-moved-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-position-moved-expected.txt
deleted file mode 100644
index 00766e3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/absolute-position-moved-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='absoluteDiv' class='absolute green'",
-          "rect": [108, 1100, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='absoluteDiv' class='absolute green'",
-          "rect": [100, 100, 100, 100],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='absoluteDiv' class='absolute green'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='absoluteDiv' class='absolute green'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt
deleted file mode 100644
index fcf6a261..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt
+++ /dev/null
@@ -1,147 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1250, 585],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='shiftMe'",
-          "rect": [0, 0, 1500, 237],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='shiftMe'",
-          "rect": [-250, 0, 1500, 237],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='imageWrapper'",
-          "rect": [704, 0, 700, 237],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='imageWrapper'",
-          "rect": [454, 0, 700, 237],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='imageWrapper'",
-          "rect": [0, 0, 700, 237],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='imageWrapper'",
-          "rect": [-250, 0, 700, 237],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [1250, 0, 250, 585],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutImage IMG",
-          "rect": [704, 0, 214, 232],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage IMG",
-          "rect": [454, 0, 214, 232],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage IMG",
-          "rect": [0, 0, 214, 232],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage IMG",
-          "rect": [-250, 0, 214, 232],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [700, 217, 4, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [450, 217, 4, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='shiftMe'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='imageWrapper'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutImage IMG",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='imageWrapper'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutImage IMG",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/align-content-position-change-grid-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/align-content-position-change-grid-expected.txt
deleted file mode 100644
index a9b66ad5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/align-content-position-change-grid-expected.txt
+++ /dev/null
@@ -1,80 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 302, 200, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 252, 200, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 202, 200, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 152, 200, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 102, 200, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 52, 200, 50],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/background-position-no-image-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/background-position-no-image-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/background-position-no-image-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/block-layout-inline-children-float-positioned-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/block-layout-inline-children-float-positioned-expected.txt
deleted file mode 100644
index 3aa88257..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/block-layout-inline-children-float-positioned-expected.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (floating) SPAN",
-          "rect": [309, 37, 292, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) SPAN",
-          "rect": [155, 37, 292, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [309, 37, 292, 19],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [155, 37, 292, 19],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (floating) SPAN",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'the quick brown fox jumped over the lazy dog'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) SPAN",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'the quick brown fox jumped over the lazy dog'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/containing-block-position-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/containing-block-position-change-expected.txt
deleted file mode 100644
index a423546..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/containing-block-position-change-expected.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [158, 74, 50, 50],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [100, 74, 50, 50],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='t'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='t'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-element-repaint-after-compositing-update-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-element-repaint-after-compositing-update-expected.txt
deleted file mode 100644
index a70eec84..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-element-repaint-after-compositing-update-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='moveMe'",
-          "rect": [150, 150, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='moveMe'",
-          "rect": [8, 88, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='fixedTransformed'",
-      "contentsOpaque": true,
-      "drawsContent": false,
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 88, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='moveMe'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-expected.txt
deleted file mode 100644
index 86e5762..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='t'",
-          "rect": [8, 84, 100, 100],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -20, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='t'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-margin-change-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-margin-change-repaint-expected.txt
deleted file mode 100644
index 77792a8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-margin-change-repaint-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='test'",
-          "rect": [0, 60, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='test'",
-          "rect": [0, 40, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='test'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-scale-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-scale-expected.txt
deleted file mode 100644
index fc18c918..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-scale-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='t' class='green translated'",
-          "rect": [100, 300, 100, 100],
-          "reason": "subtree"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -200, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='t' class='green translated'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-to-relative-position-with-absolute-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-to-relative-position-with-absolute-child-expected.txt
deleted file mode 100644
index 2912780..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-to-relative-position-with-absolute-child-expected.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 8, 784, 2000],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-          "rect": [108, 308, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-          "rect": [108, 300, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='container' class='fixed blue'",
-          "rect": [8, 208, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='container' class='fixed blue'",
-          "rect": [8, 200, 100, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='container' class='fixed blue'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='container' class='fixed blue'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='container' class='fixed blue'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-tranformed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-tranformed-expected.txt
deleted file mode 100644
index dc2c958..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/fixed-tranformed-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='test'",
-          "rect": [60, 110, 100, 100],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -50, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='test'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/inline-relative-positioned-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/inline-relative-positioned-expected.txt
deleted file mode 100644
index 436e88f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/inline-relative-positioned-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 88, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 88, 100, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'a'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/intermediate-layout-position-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/intermediate-layout-position-expected.txt
deleted file mode 100644
index 9670ace..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/intermediate-layout-position-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [8, 172, 46, 20],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 74, 46, 20],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTableCell TD id='cell'",
-          "rect": [10, 170, 42, 20],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutTableCell TD id='cell'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/invalidate-paint-for-fixed-pos-inside-iframe-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/invalidate-paint-for-fixed-pos-inside-iframe-expected.txt
deleted file mode 100644
index f44f2c4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/invalidate-paint-for-fixed-pos-inside-iframe-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [18, 418, 50, 50],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/justify-content-position-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/justify-content-position-change-expected.txt
deleted file mode 100644
index 8ca5ae9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/justify-content-position-change-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [100, 52, 52, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [52, 52, 52, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [48, 52, 52, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 52, 52, 300],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/justify-content-position-change-grid-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/justify-content-position-change-grid-expected.txt
deleted file mode 100644
index 0629584..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/justify-content-position-change-grid-expected.txt
+++ /dev/null
@@ -1,80 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [250, 52, 50, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [200, 52, 50, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [150, 52, 50, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [100, 52, 50, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [50, 52, 50, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='item'",
-          "rect": [0, 52, 50, 200],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='item'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/layout-state-only-positioned-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/layout-state-only-positioned-expected.txt
deleted file mode 100644
index 801409d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/layout-state-only-positioned-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [88, 53, 15, 100],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/layout-state-relative-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/layout-state-relative-expected.txt
deleted file mode 100644
index 8dec46b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/layout-state-relative-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='target'",
-          "rect": [8, 152, 784, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 152, 38, 19],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt
deleted file mode 100644
index 3df511a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/layoutstate-invalid-invalidation-inline-relative-positioned-expected.txt
+++ /dev/null
@@ -1,114 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 40, 784, 105],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline (relative positioned) SPAN id='target'",
-          "rect": [8, 220, 100, 104],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline (relative positioned) SPAN id='target'",
-          "rect": [8, 200, 100, 104],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline (relative positioned) SPAN",
-          "rect": [8, 120, 100, 104],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 220, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 220, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 200, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 200, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline (relative positioned) SPAN",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline (relative positioned) SPAN id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/position-change-keeping-geometry-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/position-change-keeping-geometry-expected.txt
deleted file mode 100644
index ceda188..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/position-change-keeping-geometry-expected.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target2'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target3'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/positioned-document-element-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/positioned-document-element-expected.txt
deleted file mode 100644
index be5c537..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/positioned-document-element-expected.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 800, 600],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) HTML class='changed'",
-          "rect": [0, 0, 800, 52],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 16, 784, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) HTML class='changed'",
-          "rect": [100, 100, 440, 52],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [108, 116, 424, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [108, 116, 424, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 16, 424, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) HTML class='changed'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Tests that the entire viewport is painted with a floated html element.'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/positioned-great-grandparent-change-location-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/positioned-great-grandparent-change-location-expected.txt
deleted file mode 100644
index c049834..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/positioned-great-grandparent-change-location-expected.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [100, 200, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [100, 100, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [100, 200, 41, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [100, 100, 41, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Target'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/positioned-list-offset-change-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/positioned-list-offset-change-repaint-expected.txt
deleted file mode 100644
index 0cae228..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/positioned-list-offset-change-repaint-expected.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutListItem (positioned) LI",
-          "rect": [8, 64, 214, 237],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage IMG",
-          "rect": [8, 64, 214, 232],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutListItem (positioned) LI",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutListMarker (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutImage IMG",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/relative-inline-positioned-movement-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/relative-inline-positioned-movement-repaint-expected.txt
deleted file mode 100644
index 1bc1a36f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/relative-inline-positioned-movement-repaint-expected.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 8, 784, 20],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutInline (relative positioned) DIV id='block'",
-      "position": [68, 7],
-      "bounds": [365, 21],
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutInline (relative positioned) DIV id='block'",
-          "rect": [0, 0, 365, 21],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [1, 1, 363, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline (relative positioned) DIV id='block'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'When this layer moves it shouldn't generate a repaint rect.'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/relative-margin-change-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/relative-margin-change-repaint-expected.txt
deleted file mode 100644
index 8ce510e7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/relative-margin-change-repaint-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='test'",
-          "rect": [0, 60, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='test'",
-          "rect": [0, 40, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='container'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='test'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/relative-positioned-movement-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/relative-positioned-movement-repaint-expected.txt
deleted file mode 100644
index 05b14c6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/relative-positioned-movement-repaint-expected.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='block'",
-      "position": [68, 10],
-      "bounds": [402, 62],
-      "backfaceVisibility": "hidden"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt
deleted file mode 100644
index 23fa650..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/shift-relative-positioned-container-with-image-addition-expected.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 836],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 742, 785, 94],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='relative paddingTop'",
-          "rect": [8, 186, 769, 642],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='relative paddingTop'",
-          "rect": [8, 92, 769, 642],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutIFrame IFRAME id='iframe'",
-          "rect": [8, 92, 732, 94],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow HTML",
-          "rect": [10, 94, 728, 90],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [10, 94, 728, 90],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [18, 102, 712, 74],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutImage IMG",
-          "rect": [58, 236, 489, 537],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage IMG",
-          "rect": [58, 142, 489, 537],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutIFrame IFRAME id='iframe'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='relative paddingTop'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutImage IMG",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt
deleted file mode 100644
index 092b2f6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/shift-relative-positioned-container-with-image-removal-expected.txt
+++ /dev/null
@@ -1,111 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 742],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 742, 785, 99],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='relative paddingTop'",
-          "rect": [8, 191, 769, 642],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='relative paddingTop'",
-          "rect": [8, 92, 769, 642],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 92, 769, 99],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutIFrame IFRAME id='iframe'",
-          "rect": [8, 92, 732, 94],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow HTML",
-          "rect": [10, 94, 728, 90],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [18, 102, 712, 74],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutImage IMG",
-          "rect": [58, 241, 489, 537],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage IMG",
-          "rect": [58, 142, 489, 537],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutIFrame IFRAME id='iframe'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "disappeared"
-    },
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='relative paddingTop'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutImage IMG",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/static-to-positioned-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/static-to-positioned-expected.txt
deleted file mode 100644
index 6d395c8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/static-to-positioned-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='t'",
-          "rect": [8, 332, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='t'",
-          "rect": [8, 282, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='a'",
-          "rect": [8, 132, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='a'",
-          "rect": [8, 82, 100, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='t'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='a'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='a'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='t'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/text-in-relative-positioned-inline-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/text-in-relative-positioned-inline-expected.txt
deleted file mode 100644
index dfe5fdf..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/text-in-relative-positioned-inline-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [108, 8, 684, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutInline (relative positioned) SPAN id='target'",
-          "rect": [8, 8, 200, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 8, 200, 100],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutInline (relative positioned) SPAN id='target'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/transform-absolute-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/transform-absolute-child-expected.txt
deleted file mode 100644
index f3500500..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/transform-absolute-child-expected.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='child'",
-          "rect": [135, 127, 400, 50],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='child'",
-          "rect": [124, 116, 340, 297],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='box' class='rotated'",
-          "rect": [16, 8, 288, 288],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='box' class='rotated'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='child'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt
deleted file mode 100644
index 768ccd9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/transform-absolute-in-positioned-container-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [802, 585],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='box' class='rotated'",
-          "rect": [76, 190, 286, 286],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='box' class='rotated'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/transform-relative-position-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/transform-relative-position-expected.txt
deleted file mode 100644
index 8b06bb8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/position/transform-relative-position-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='box' class='rotated'",
-          "rect": [66, 110, 286, 286],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='box' class='rotated'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/push-block-with-first-line-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/push-block-with-first-line-expected.txt
deleted file mode 100644
index 6065e57..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/push-block-with-first-line-expected.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='spacer'",
-          "rect": [8, 8, 784, 60],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='test'",
-          "rect": [8, 68, 784, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='test'",
-          "rect": [8, 8, 784, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 68, 140, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 8, 140, 20],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='spacer'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='test'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'JOCULAR'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/quotes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/quotes-expected.txt
deleted file mode 100644
index 579f4f9d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/quotes-expected.txt
+++ /dev/null
@@ -1,108 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 28, 784, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [17, 28, 47, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [16, 28, 47, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [64, 28, 9, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [8, 28, 9, 19],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [63, 28, 8, 19],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline Q id='q2' class='q-changed'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutInline \u003Cpseudo:before\u003E",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutQuote (anonymous)",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTextFragment (anonymous)",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '{'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'quote 2'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutInline \u003Cpseudo:after\u003E",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutQuote (anonymous)",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTextFragment (anonymous)",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox '}'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/raster-under-invalidation-checking-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/raster-under-invalidation-checking-expected.txt
deleted file mode 100644
index a4afeb7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/raster-under-invalidation-checking-expected.txt
+++ /dev/null
@@ -1,1342 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target1'",
-          "rect": [18, 10, 60, 40],
-          "reason": "style change"
-        }
-      ],
-      "underPaintInvalidations": [
-        {
-          "x": 18,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 19,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 20,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 21,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 22,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 23,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 24,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 25,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 26,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 27,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 28,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 29,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 30,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 31,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 32,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 33,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 34,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 35,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 36,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 37,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 38,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 39,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 40,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 41,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 42,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 43,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 44,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 45,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 46,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 47,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 48,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 49,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 50,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 51,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 52,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 53,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 54,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 55,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 56,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 57,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 58,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 59,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 60,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 61,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 62,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 63,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 64,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 65,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 66,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 67,
-          "y": 10,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='target2'",
-      "position": [18, 60],
-      "bounds": [60, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target2'",
-          "rect": [0, 0, 60, 40],
-          "reason": "style change"
-        }
-      ],
-      "underPaintInvalidations": [
-        {
-          "x": 0,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 1,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 2,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 3,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 4,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 5,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 6,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 7,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 8,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 9,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 10,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 11,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 12,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 13,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 14,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 15,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 16,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 17,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 18,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 19,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 20,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 21,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 22,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 23,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 24,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 25,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 26,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 27,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 28,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 29,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 30,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 31,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 32,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 33,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 34,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 35,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 36,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 37,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 38,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 39,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 40,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 41,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 42,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 43,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 44,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 45,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 46,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 47,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 48,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 49,
-          "y": 0,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "position": [8, 110],
-      "bounds": [150, 150],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFF00",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='target3'",
-          "rect": [40, 70, 60, 40],
-          "reason": "style change"
-        }
-      ],
-      "underPaintInvalidations": [
-        {
-          "x": 40,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 41,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 42,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 43,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 44,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 45,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 46,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 47,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 48,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 49,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 50,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 51,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 52,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 53,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 54,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 55,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 56,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 57,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 58,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 59,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 60,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 61,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 62,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 63,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 64,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 65,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 66,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 67,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 68,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 69,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 70,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 71,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 72,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 73,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 74,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 75,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 76,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 77,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 78,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 79,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 80,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 81,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 82,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 83,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 84,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 85,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 86,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 87,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 88,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 89,
-          "y": 70,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [8, 260],
-      "bounds": [150, 150]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 260],
-      "bounds": [135, 135],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 260],
-      "bounds": [4000, 20060],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='target4'",
-          "rect": [40, 10010, 60, 40],
-          "reason": "style change"
-        }
-      ],
-      "underPaintInvalidations": [
-        {
-          "x": 40,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 41,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 42,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 43,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 44,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 45,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 46,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 47,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 48,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 49,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 50,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 51,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 52,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 53,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 54,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 55,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 56,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 57,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 58,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 59,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 60,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 61,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 62,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 63,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 64,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 65,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 66,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 67,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 68,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 69,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 70,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 71,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 72,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 73,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 74,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 75,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 76,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 77,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 78,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 79,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 80,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 81,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 82,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 83,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 84,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 85,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 86,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 87,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 88,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        },
-        {
-          "x": 89,
-          "y": 10010,
-          "oldPixel": "#0000FF",
-          "newPixel": "#008000"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 260],
-      "bounds": [150, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 395],
-      "bounds": [135, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [143, 260],
-      "bounds": [15, 135],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [143, 395],
-      "bounds": [15, 15]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-50, -9950, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target2'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='target3'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='target4'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-invalidation-after-display-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-invalidation-after-display-expected.txt
deleted file mode 100644
index f0760e3a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-invalidation-after-display-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='box' class='green box'",
-          "rect": [300, 8, 450, 200],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='box' class='green box'",
-          "rect": [300, 8, 200, 200],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='box' class='green box'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='box' class='green box'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-invalidation-positioned-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-invalidation-positioned-child-expected.txt
deleted file mode 100644
index 99135f8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-invalidation-positioned-child-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='box'",
-          "rect": [0, 0, 100, 220],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='positioned'",
-          "rect": [400, 10, 50, 200],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='box'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='positioned'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-redraw-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-redraw-expected.txt
deleted file mode 100644
index 4f1cdfd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-redraw-expected.txt
+++ /dev/null
@@ -1,110 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [380, 267, 286, 59],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [70, 267, 286, 59],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [305, 34, 126, 182],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [305, 377, 126, 156],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'The color of this'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'text in the reflection'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'should be green'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'The color of this'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'text in the reflection'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'should be green'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'The color of this'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'text in the reflection'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'should be green'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'The color of this'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'text in the reflection'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'should be green'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-with-rotation-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-with-rotation-expected.png
deleted file mode 100644
index a62aacba..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-with-rotation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-with-rotation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-with-rotation-expected.txt
deleted file mode 100644
index 0558c15..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/reflection-with-rotation-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [22, 50, 226, 167],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [23, 51, 72, 110],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/scroll-absolute-layer-with-reflection-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/scroll-absolute-layer-with-reflection-expected.txt
deleted file mode 100644
index 98d6b4f5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/scroll-absolute-layer-with-reflection-expected.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-          "rect": [250, 230, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='absolute clipped'",
-          "rect": [250, 230, 100, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='relative reflected'",
-          "rect": [250, 230, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='green'",
-          "rect": [250, 230, 100, 100],
-          "reason": "appeared"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -180, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='absolute clipped'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='relative reflected'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='green'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/scroll-fixed-layer-with-reflection-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/scroll-fixed-layer-with-reflection-expected.txt
deleted file mode 100644
index 4e8026d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/scroll-fixed-layer-with-reflection-expected.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute green reflected'",
-          "rect": [250, 280, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-          "rect": [250, 280, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='fixed clipped'",
-          "rect": [250, 280, 100, 100],
-          "reason": "full"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -180, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='fixed clipped'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green reflected'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/scroll-fixed-reflected-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/scroll-fixed-reflected-layer-expected.txt
deleted file mode 100644
index 40b10ecd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/reflection/scroll-fixed-reflected-layer-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='hideMe' class='absolute red'",
-          "rect": [250, 280, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='hideMe' class='absolute red'",
-          "rect": [250, 280, 100, 100],
-          "reason": "subtree"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -180, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='hideMe' class='absolute red'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='hideMe' class='absolute red'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/remove-block-after-layout-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/remove-block-after-layout-expected.txt
deleted file mode 100644
index a4af2468..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/remove-block-after-layout-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [8, 108, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 108, 99, 39],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/remove-inline-after-layout-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/remove-inline-after-layout-expected.txt
deleted file mode 100644
index 3291778..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/remove-inline-after-layout-expected.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 108, 784, 105],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [112, 193, 179, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [290, 108, 101, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [112, 108, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 108, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [108, 193, 4, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutInline SPAN id='target'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/remove-inline-layer-after-layout-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/remove-inline-layer-after-layout-expected.txt
deleted file mode 100644
index 7f5f38e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/remove-inline-layer-after-layout-expected.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 108, 784, 105],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline SPAN id='target'",
-          "rect": [112, 108, 179, 104],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [112, 193, 179, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [290, 108, 101, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [112, 108, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 108, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [108, 193, 4, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutInline SPAN id='target'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-across-writing-mode-boundary-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-across-writing-mode-boundary-expected.txt
deleted file mode 100644
index f4d066e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-across-writing-mode-boundary-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [548, 191, 23, 36],
-          "reason": "selection"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '\u7B2C\u4E00\u6BB5\u843D paragraph 1'",
-      "reason": "selection"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-descandant-on-ancestor-layer-move-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-descandant-on-ancestor-layer-move-expected.txt
deleted file mode 100644
index 501a92e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-descandant-on-ancestor-layer-move-expected.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV",
-          "rect": [428, 38, 300, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='container'",
-          "rect": [408, 18, 300, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV",
-          "rect": [28, 38, 300, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='container'",
-          "rect": [8, 18, 300, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [428, 38, 270, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [28, 38, 270, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='container'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'There should only be one copy of this text.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-in-iframe-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-in-iframe-expected.txt
deleted file mode 100644
index 6c7c5564..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-in-iframe-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [18, 418, 50, 50],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-on-style-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-on-style-change-expected.txt
deleted file mode 100644
index 6429ae6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-on-style-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='box'",
-          "rect": [260, 260, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='box'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-overlay/layers-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-overlay/layers-expected.txt
deleted file mode 100644
index 60d2383..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-overlay/layers-expected.txt
+++ /dev/null
@@ -1,144 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container'",
-      "position": [40, 50],
-      "bounds": [100, 100],
-      "backgroundColor": "#0000FF80",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='child1'",
-          "rect": [20, 20, 10, 10],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrollable'",
-      "position": [104, 103],
-      "bounds": [302, 302],
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [105, 104],
-      "bounds": [300, 300],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [105, 104],
-      "bounds": [795, 1491],
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='transform'",
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFF00",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='child2'",
-          "rect": [20, 20, 10, 10],
-          "reason": "style change"
-        }
-      ],
-      "transform": 4
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [104, 103],
-      "bounds": [302, 302],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [105, 404],
-      "bounds": [300, 0],
-      "transform": 1
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [405, 104],
-      "bounds": [0, 300],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -20, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -30, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [193, 181, 0, 1]
-      ]
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [3.53553390593274, 3.53553390593274, 0, 0],
-        [-3.53553390593274, 3.53553390593274, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [0, 0]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='child1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='child2'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-subrect-grid-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-subrect-grid-expected.txt
deleted file mode 100644
index 8bddd4e6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/repaint-subrect-grid-expected.txt
+++ /dev/null
@@ -1,180 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [45, 18, 20, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [45, 18, 20, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [-10, 18, 20, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [-10, 18, 20, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [36, 36, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [36, 36, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [36, 0, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [36, 0, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [27, 18, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [27, 18, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [18, 36, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [18, 36, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [18, 0, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [18, 0, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [9, 18, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [9, 18, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [0, 36, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [0, 36, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [0, 0, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [0, 0, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [-100, -100, 19, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-          "rect": [-100, -100, 19, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='mask'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt
deleted file mode 100644
index c880d0c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/requestAnimation-translation-leave-traces-expected.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-This test checks that changing the transform on an element triggers a correct invalidation.
-The paint invalidations below should match the transformed element's coordinates.
-Tested locations: 1200,1500
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1600, 585],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [1300, 0, 300, 585],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [1000, 0, 300, 585],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='box'",
-          "rect": [1500, 0, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='box'",
-          "rect": [1200, 0, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='box'",
-          "rect": [1200, 0, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='box'",
-          "rect": [900, 0, 100, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='box'",
-      "reason": "subtree"
-    },
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='box'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/resize-iframe-text-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/resize-iframe-text-expected.txt
deleted file mode 100644
index 7de7df10..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/resize-iframe-text-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [500, 400],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [500, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [500, 400],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutIFrame (positioned) IFRAME",
-          "rect": [0, 200, 500, 200],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 200, 500, 200],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 200, 500, 200],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow H3",
-          "rect": [8, 300, 400, 23],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [485, 0, 15, 200],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutIFrame (positioned) IFRAME",
-      "reason": "incremental"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow H3",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/ruby-flipped-blocks-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/ruby-flipped-blocks-expected.txt
deleted file mode 100644
index 6aecb516..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/ruby-flipped-blocks-expected.txt
+++ /dev/null
@@ -1,100 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 30, 40],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutRubyBase (anonymous)",
-          "rect": [8, 28, 20, 20],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutRubyRun (anonymous)",
-          "rect": [8, 28, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 28, 20, 20],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 8, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [28, 33, 10, 10],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'a'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutRubyRun (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'c'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutRubyBase (anonymous)",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'b'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.txt
deleted file mode 100644
index 8b9a2a37..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [399, 11, 1, 16],
-          "reason": "caret"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [396, 11, 1, 16],
-          "reason": "caret"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Caret",
-      "reason": "caret"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/caret-with-composited-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/caret-with-composited-scroll-expected.txt
deleted file mode 100644
index c9d40639..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/caret-with-composited-scroll-expected.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [8, 48],
-      "bounds": [100, 100]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 48],
-      "bounds": [100, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 48],
-      "bounds": [205, 1022],
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl INPUT id='text'",
-          "rect": [-1, 999, 207, 24],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [3, 1003, 200, 16],
-          "reason": "subtree"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 48],
-      "bounds": [100, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 148],
-      "bounds": [100, 0]
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [108, 48],
-      "bounds": [0, 100]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -922, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl INPUT id='text'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/composited-add-resizer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/composited-add-resizer-expected.txt
deleted file mode 100644
index d54d9dd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/composited-add-resizer-expected.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='target'",
-      "position": [8, 8],
-      "bounds": [100, 100],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [100, 100],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 93],
-      "bounds": [85, 15]
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [93, 8],
-      "bounds": [15, 85]
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [93, 93],
-      "bounds": [15, 15],
-      "paintInvalidations": [
-        {
-          "object": "Scroll Corner Layer",
-          "rect": [0, 0, 15, 15],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/composited-iframe-scroll-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/composited-iframe-scroll-repaint-expected.txt
deleted file mode 100644
index ed9c628..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/composited-iframe-scroll-repaint-expected.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "position": [2, 2],
-      "bounds": [300, 150],
-      "drawsContent": false,
-      "backgroundColor": "#EEEEEE"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [2, 2],
-      "bounds": [300, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [2, 2],
-      "bounds": [300, 516],
-      "backgroundColor": "#EEEEEE",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow BODY",
-      "bounds": [284, 500],
-      "transform": 2
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [2, 2],
-      "bounds": [300, 150],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [2, 152],
-      "bounds": [300, 0]
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [302, 2],
-      "bounds": [0, 150]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -20, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [10, 10, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/destroy-composited-scrollbar-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/destroy-composited-scrollbar-expected.txt
deleted file mode 100644
index 2d0582b2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/destroy-composited-scrollbar-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "position": [0, 100],
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 0, 200, 200],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 0, 200, 200],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 0, 200, 200],
-          "reason": "compositing update"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='content'",
-          "rect": [0, 0, 100, 100],
-          "reason": "compositing update"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "compositing update"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='content'",
-      "reason": "compositing update"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/destroy-overlay-scrollbar-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/destroy-overlay-scrollbar-expected.txt
deleted file mode 100644
index 71bfda8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/destroy-overlay-scrollbar-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [193, 100, 7, 200],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/destroy-scrollbar-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/destroy-scrollbar-expected.txt
deleted file mode 100644
index 78f000de..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/destroy-scrollbar-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [185, 100, 15, 200],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/document-flipped-blocks-writing-mode-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/document-flipped-blocks-writing-mode-scroll-expected.txt
deleted file mode 100644
index 8c25b21a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/document-flipped-blocks-writing-mode-scroll-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#008000"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1516, 585],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-after-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-after-scroll-expected.txt
deleted file mode 100644
index b18be379..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-after-scroll-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='t' class='green absolute'",
-          "rect": [8, 700, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='t' class='green absolute'",
-          "rect": [8, 200, 100, 100],
-          "reason": "subtree"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -500, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='t' class='green absolute'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='t' class='green absolute'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='t' class='green absolute'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-and-absolute-position-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-and-absolute-position-scrolled-expected.txt
deleted file mode 100644
index 08fe741..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-and-absolute-position-scrolled-expected.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 2016, 800, 3792],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='absoluteDiv' class='absolute green'",
-          "rect": [108, 5708, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='absoluteDiv' class='absolute green'",
-          "rect": [100, 700, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='container' class='relative'",
-          "rect": [8, 5008, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='container' class='relative'",
-          "rect": [8, 8, 100, 100],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -500, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='absoluteDiv' class='absolute green'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='container' class='relative'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='absoluteDiv' class='absolute green'",
-      "reason": "subtree"
-    },
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='container' class='relative'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='absoluteDiv' class='absolute green'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-move-after-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-move-after-scroll-expected.txt
deleted file mode 100644
index 4ea15be..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-move-after-scroll-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 3016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='toMove'",
-          "rect": [150, 270, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='toMove'",
-          "rect": [10, 270, 100, 100],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -200, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='toMove'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-fixed-move-after-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-fixed-move-after-scroll-expected.txt
deleted file mode 100644
index 4ea15be..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-fixed-move-after-scroll-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 3016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='toMove'",
-          "rect": [150, 270, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='toMove'",
-          "rect": [10, 270, 100, 100],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -200, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='toMove'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt
deleted file mode 100644
index 05ebe36..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-transformed-move-after-scroll-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 3016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='toMove'",
-          "rect": [158, 278, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='toMove'",
-          "rect": [18, 278, 100, 100],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -200, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='toMove'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-transformed-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-transformed-scrolled-expected.txt
deleted file mode 100644
index 9998e63..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-child-of-transformed-scrolled-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='fixed'",
-          "rect": [200, 150, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='fixed'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-descendant-of-transformed-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-descendant-of-transformed-scrolled-expected.txt
deleted file mode 100644
index 9998e63..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-descendant-of-transformed-scrolled-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='fixed'",
-          "rect": [200, 150, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='fixed'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-img-src-change-after-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-img-src-change-after-scroll-expected.txt
deleted file mode 100644
index 6b03318..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-img-src-change-after-scroll-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutImage (positioned) IMG id='img'",
-          "rect": [0, 1050, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage (positioned) IMG id='img'",
-          "rect": [0, 50, 100, 100],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutImage (positioned) IMG id='img'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-move-after-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-move-after-scroll-expected.txt
deleted file mode 100644
index 4ea15be..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-move-after-scroll-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 3016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='toMove'",
-          "rect": [150, 270, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='toMove'",
-          "rect": [10, 270, 100, 100],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -200, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='toMove'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-scroll-simple-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-scroll-simple-expected.txt
deleted file mode 100644
index cffd5c8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-scroll-simple-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='green'",
-          "rect": [8, 200, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='green'",
-          "rect": [8, 100, 100, 100],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='green'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-under-composited-absolute-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-under-composited-absolute-scrolled-expected.txt
deleted file mode 100644
index ed7cb8e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-under-composited-absolute-scrolled-expected.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 2001],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='absolute'",
-      "position": [0, 400],
-      "bounds": [100, 1601],
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#FF0000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='fixed'",
-          "rect": [0, 100, 100, 100],
-          "reason": "incremental"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -400, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='fixed'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-under-composited-fixed-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-under-composited-fixed-scrolled-expected.txt
deleted file mode 100644
index c16ce993..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-under-composited-fixed-scrolled-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='fixed-container'",
-      "position": [0, 400],
-      "bounds": [785, 600],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='fixed'",
-          "rect": [100, 100, 200, 200],
-          "reason": "disappeared"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -400, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='fixed'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled-expected.txt
deleted file mode 100644
index 7f994139..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/fixed-with-border-under-composited-absolute-scrolled-expected.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 2001],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='absolute'",
-      "position": [0, 400],
-      "bounds": [120, 1601],
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#FF0000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='fixed'",
-          "rect": [0, 110, 120, 110],
-          "reason": "incremental"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -400, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='fixed'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/flipped-blocks-writing-mode-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/flipped-blocks-writing-mode-scroll-expected.txt
deleted file mode 100644
index fb40f75..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/flipped-blocks-writing-mode-scroll-expected.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [8, 8],
-      "bounds": [400, 400]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [400, 385],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [10000, 385],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [0, 0, 10000, 200],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [400, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 393],
-      "bounds": [400, 15],
-      "drawsContent": false,
-      "paintInvalidations": [
-        {
-          "object": "Horizontal Scrollbar Layer",
-          "rect": [0, 0, 400, 15],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/iframe-scroll-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/iframe-scroll-repaint-expected.txt
deleted file mode 100644
index 2f272cc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/iframe-scroll-repaint-expected.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/iframe-scrollbar-hover-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/iframe-scrollbar-hover-expected.txt
deleted file mode 100644
index b372eef9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/iframe-scrollbar-hover-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [187, 102, 15, 200],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt
deleted file mode 100644
index 8c3a108fc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/inline-style-change-in-scrolled-view-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2000, 2000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 320, 412, 19],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-200, -200, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Text Text Text Text Text Text Text Text Text Text Text Text Text'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/invalidate-after-composited-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/invalidate-after-composited-scroll-expected.txt
deleted file mode 100644
index 2aee8c52..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/invalidate-after-composited-scroll-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='scroller'",
-      "position": [300, 300],
-      "bounds": [200, 200]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [300, 300],
-      "bounds": [185, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [300, 300],
-      "bounds": [185, 4900],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [0, 2400, 100, 100],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [300, 300],
-      "bounds": [200, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [485, 300],
-      "bounds": [15, 200],
-      "drawsContent": false,
-      "paintInvalidations": [
-        {
-          "object": "Vertical Scrollbar Layer",
-          "rect": [0, 0, 15, 200],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -2350, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt
deleted file mode 100644
index 6afa42a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 4936],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 2408, 100, 100],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -2350, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/invalidate-caret-in-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/invalidate-caret-in-composited-scrolling-container-expected.txt
deleted file mode 100644
index 90189cb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/invalidate-caret-in-composited-scrolling-container-expected.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutTextControl INPUT id='root'",
-      "position": [7, 7],
-      "bounds": [66, 24],
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl INPUT id='root'",
-          "rect": [0, 0, 66, 24],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutTextControl INPUT id='root'",
-          "rect": [0, 0, 64, 22],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [3, 4, 60, 16],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [3, 4, 60, 16],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl INPUT id='root'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'test test test'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/invalidate-caret-in-non-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/invalidate-caret-in-non-composited-scrolling-container-expected.txt
deleted file mode 100644
index 90189cb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/invalidate-caret-in-non-composited-scrolling-container-expected.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutTextControl INPUT id='root'",
-      "position": [7, 7],
-      "bounds": [66, 24],
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl INPUT id='root'",
-          "rect": [0, 0, 66, 24],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutTextControl INPUT id='root'",
-          "rect": [0, 0, 64, 22],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [3, 4, 60, 16],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [3, 4, 60, 16],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl INPUT id='root'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'test test test'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset-expected.txt
deleted file mode 100644
index 031cb86..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [100, 120, 50, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [100, 120, 40, 19],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'after'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset2-expected.txt
deleted file mode 100644
index 0a80947..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset2-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [102, 122, 50, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [102, 122, 40, 19],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'after'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset3-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset3-expected.txt
deleted file mode 100644
index 3d86ddbd2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/layout-state-scrolloffset3-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [100, 120, 34, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [100, 120, 34, 19],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'after'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/line-in-scrolled-clipped-block-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/line-in-scrolled-clipped-block-expected.txt
deleted file mode 100644
index d86218d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/line-in-scrolled-clipped-block-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 8, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 8, 100, 19],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox '                         PASS     .'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt
deleted file mode 100644
index 04fbd03..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/nested-fixed-iframe-scrolled-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='div'",
-          "rect": [22, 522, 100, 100],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -400, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='div'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/outline-change-in-scrollers-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/outline-change-in-scrollers-expected.txt
deleted file mode 100644
index 0f80bcd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/outline-change-in-scrollers-expected.txt
+++ /dev/null
@@ -1,80 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='target'",
-          "rect": [286, 173, 75, 75],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='target'",
-          "rect": [286, 18, 75, 75],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='target'",
-          "rect": [172, 173, 75, 75],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='target'",
-          "rect": [172, 18, 75, 75],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='target'",
-          "rect": [53, 153, 75, 75],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='target'",
-          "rect": [18, 18, 75, 75],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/outline-change-scrollable-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/outline-change-scrollable-expected.txt
deleted file mode 100644
index bb32910..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/outline-change-scrollable-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1008, 585],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [-12, -12, 1040, 140],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-auto-in-overflow-auto-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-auto-in-overflow-auto-scrolled-expected.txt
deleted file mode 100644
index 14d4d99f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-auto-in-overflow-auto-scrolled-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='innerDiv'",
-          "rect": [8, 8, 769, 300],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 300, 300],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 300, 300],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='innerDiv'",
-          "rect": [762, 8, 15, 300],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='innerDiv'",
-      "reason": "full"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-hidden-in-overflow-hidden-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-hidden-in-overflow-hidden-scrolled-expected.txt
deleted file mode 100644
index ed5e8e19..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-hidden-in-overflow-hidden-scrolled-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='innerWrapper'",
-          "rect": [8, 18, 100, 190],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='red'",
-          "rect": [8, 18, 100, 190],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='ucp' class='green'",
-          "rect": [8, 18, 100, 190],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='innerWrapper'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='red'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='ucp' class='green'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-hidden-yet-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-hidden-yet-scrolled-expected.txt
deleted file mode 100644
index 5db1102..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-hidden-yet-scrolled-expected.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [8, 8],
-      "bounds": [302, 302],
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='scroller'",
-          "rect": [0, 0, 302, 302],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [1, 601, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [1, 201, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='scroller'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-hidden-yet-scrolled-with-custom-scrollbar-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-hidden-yet-scrolled-with-custom-scrollbar-expected.txt
deleted file mode 100644
index 16a6d4e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-hidden-yet-scrolled-with-custom-scrollbar-expected.txt
+++ /dev/null
@@ -1,105 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [8, 8],
-      "bounds": [302, 302],
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='scroller'",
-          "rect": [0, 0, 302, 302],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [1, 601, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [1, 201, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [1, 689, 88, 12],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [1, 289, 88, 12],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [89, 601, 12, 88],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [89, 201, 12, 88],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [89, 689, 12, 12],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [89, 289, 12, 12],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='scroller'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutScrollbarPart (anonymous)",
-      "reason": "scroll control"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutScrollbarPart (anonymous)",
-      "reason": "scroll control"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-move-after-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-move-after-scroll-expected.txt
deleted file mode 100644
index aae665e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-move-after-scroll-expected.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='scroller' class='scroller'",
-      "position": [10, 60],
-      "bounds": [700, 400]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [10, 60],
-      "bounds": [685, 385],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [10, 60],
-      "bounds": [685, 600],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='block'",
-          "rect": [300, 200, 120, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='block'",
-          "rect": [50, 200, 120, 50],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [10, 60],
-      "bounds": [700, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [10, 445],
-      "bounds": [685, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [695, 60],
-      "bounds": [15, 385],
-      "drawsContent": false,
-      "paintInvalidations": [
-        {
-          "object": "Vertical Scrollbar Layer",
-          "rect": [0, 0, 15, 385],
-          "reason": "full"
-        }
-      ]
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [695, 445],
-      "bounds": [15, 15]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='block'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-after-move-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-after-move-expected.txt
deleted file mode 100644
index 52991d3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-after-move-expected.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='scroller'",
-      "position": [10, 60],
-      "bounds": [300, 400]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [10, 60],
-      "bounds": [285, 385],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [10, 60],
-      "bounds": [285, 900],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='block'",
-          "rect": [50, 310, 200, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='block'",
-          "rect": [50, 200, 200, 50],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [10, 60],
-      "bounds": [300, 400],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [10, 445],
-      "bounds": [285, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [295, 60],
-      "bounds": [15, 385],
-      "drawsContent": false,
-      "paintInvalidations": [
-        {
-          "object": "Vertical Scrollbar Layer",
-          "rect": [0, 0, 15, 385],
-          "reason": "full"
-        }
-      ]
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [295, 445],
-      "bounds": [15, 15]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -150, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='block'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt
deleted file mode 100644
index d809663..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-body-appear-expected.txt
+++ /dev/null
@@ -1,125 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2096],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 16, 784, 2072],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 52, 784, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [8, 16, 784, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [124, 52, 383, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 16, 341, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 52, 116, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [507, 52, 4, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'You should see both vertical and horizontal scrollbars.'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'This is the test for '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Bug 36461 - No vertical scrollbar after the CSS class change'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '.'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-composited-non-stacking-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-composited-non-stacking-child-expected.txt
deleted file mode 100644
index 830dbaa..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-composited-non-stacking-child-expected.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='scroller'",
-          "rect": [18, 60, 310, 200],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='scroller'",
-          "rect": [308, 65, 15, 175],
-          "reason": "scroll control"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='icon'",
-      "bounds": [40, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFDDBB",
-      "transform": 1
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [23, 65],
-      "bounds": [285, 175],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='list'",
-      "position": [43, 35],
-      "bounds": [180, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (relative positioned) DIV class='commit')",
-      "position": [43, 35],
-      "bounds": [180, 250]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [200, 10, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='scroller'",
-      "reason": "full"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-delete-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-delete-expected.txt
deleted file mode 100644
index 0c13d1a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-delete-expected.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 136, 44, 17],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Passed'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Test'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-in-overflow-scroll-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-in-overflow-scroll-scrolled-expected.txt
deleted file mode 100644
index 14d4d99f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-in-overflow-scroll-scrolled-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='innerDiv'",
-          "rect": [8, 8, 769, 300],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 300, 300],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 300, 300],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='innerDiv'",
-          "rect": [762, 8, 15, 300],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='innerDiv'",
-      "reason": "full"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
deleted file mode 100644
index 34fbcc2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
+++ /dev/null
@@ -1,120 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='scroller'",
-          "rect": [0, 0, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [185, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [185, 552],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='scroller'",
-          "rect": [0, 0, 185, 552],
-          "reason": "background on scrolling contents layer"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 193],
-      "bounds": [185, 15],
-      "drawsContent": false,
-      "paintInvalidations": [
-        {
-          "object": "Horizontal Scrollbar Layer",
-          "rect": [0, 0, 185, 15],
-          "reason": "full"
-        }
-      ]
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [193, 8],
-      "bounds": [15, 185],
-      "drawsContent": false,
-      "paintInvalidations": [
-        {
-          "object": "Vertical Scrollbar Layer",
-          "rect": [0, 0, 15, 185],
-          "reason": "full"
-        },
-        {
-          "object": "Vertical Scrollbar Layer",
-          "rect": [0, 0, 15, 185],
-          "reason": "full"
-        }
-      ]
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [193, 193],
-      "bounds": [15, 15]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -367, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='scroller'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt
deleted file mode 100644
index 0c8b226..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='outer'",
-          "rect": [8, 293, 285, 15],
-          "reason": "scroll control"
-        }
-      ]
-    },
-    {
-      "name": "Ancestor Clipping Layer",
-      "position": [8, 8],
-      "bounds": [285, 285],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='container'",
-      "bounds": [600, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FF0000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='inner'",
-          "rect": [0, 0, 600, 600],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-307, 8, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='inner'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.txt
deleted file mode 100644
index c0514585..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#C0C0C0"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [3, 65, 250, 250],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [3, 65, 235, 235],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [3, 300, 235, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [3, 65, 55, 17],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [238, 65, 15, 235],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "full"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'scroll me'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/resize-scrollable-div-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/resize-scrollable-div-expected.txt
deleted file mode 100644
index 7889092..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/resize-scrollable-div-expected.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='div'",
-          "rect": [8, 208, 300, 200],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='div'",
-          "rect": [8, 393, 285, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='div'",
-          "rect": [108, 108, 200, 300],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='div'",
-          "rect": [8, 193, 85, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='div'",
-          "rect": [293, 108, 15, 285],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='div'",
-          "rect": [93, 108, 15, 85],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='div'",
-          "rect": [293, 393, 15, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='div'",
-          "rect": [93, 193, 15, 15],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='div'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='div'",
-      "reason": "geometry"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='div'",
-      "reason": "geometry"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/resize-scrollable-iframe-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/resize-scrollable-iframe-expected.txt
deleted file mode 100644
index 45e0d34..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/resize-scrollable-iframe-expected.txt
+++ /dev/null
@@ -1,108 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 108, 784, 305],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutIFrame IFRAME id='iframe'",
-          "rect": [8, 108, 300, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [8, 208, 300, 200],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [8, 393, 285, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [108, 108, 200, 300],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [8, 193, 85, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [293, 108, 15, 285],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [93, 108, 15, 85],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [293, 393, 15, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [93, 193, 15, 15],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutIFrame IFRAME id='iframe'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt
deleted file mode 100644
index fc1dc31..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects-expected.txt
+++ /dev/null
@@ -1,127 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 1895],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollpanel'",
-          "rect": [677, 252, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='container'",
-          "rect": [677, 252, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='ul'",
-          "rect": [677, 252, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [677, 252, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='container'",
-          "rect": [677, 52, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='ul'",
-          "rect": [677, 52, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [677, 52, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='scrollpanel'",
-          "rect": [677, 52, 100, 100],
-          "reason": "subtree"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -200, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='scrollpanel'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='container'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='ul'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='scrollpanel'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='container'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='ul'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='scrollpanel'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='container'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='ul'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-fixed-layer-with-no-visible-content-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-fixed-layer-with-no-visible-content-expected.txt
deleted file mode 100644
index 8d17d48..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-fixed-layer-with-no-visible-content-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-          "rect": [100, 1150, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='fixed clipped'",
-          "rect": [100, 1150, 100, 100],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='fixed clipped'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-fixed-layer-with-transformed-parent-layer-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-fixed-layer-with-transformed-parent-layer-expected.png
deleted file mode 100644
index 29745472..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-fixed-layer-with-transformed-parent-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-fixed-layer-with-transformed-parent-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-fixed-layer-with-transformed-parent-layer-expected.txt
deleted file mode 100644
index 9646946..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-fixed-layer-with-transformed-parent-layer-expected.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-          "rect": [93, 234, 142, 143],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-          "rect": [93, 234, 142, 143],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='fixed clipped'",
-          "rect": [93, 234, 142, 143],
-          "reason": "full"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -180, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='fixed clipped'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-in-clipped-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-in-clipped-layer-expected.txt
deleted file mode 100644
index 6e1a75c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-in-clipped-layer-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-          "rect": [100, 150, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='absolute clipped'",
-          "rect": [100, 150, 100, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='relative green'",
-          "rect": [100, 150, 100, 100],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='absolute clipped'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='relative green'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-in-fixed-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-in-fixed-layer-expected.txt
deleted file mode 100644
index c027bc5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-in-fixed-layer-expected.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-          "rect": [100, 1150, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-          "rect": [100, 1150, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='fixed clipped'",
-          "rect": [100, 1150, 100, 100],
-          "reason": "full"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='fixed clipped'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-in-transformed-layer-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-in-transformed-layer-expected.png
deleted file mode 100644
index 5782ec4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-in-transformed-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-in-transformed-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-in-transformed-layer-expected.txt
deleted file mode 100644
index 4a8c974..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-in-transformed-layer-expected.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-          "rect": [79, 129, 142, 142],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='absolute clipped rotated'",
-          "rect": [79, 129, 142, 142],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-          "rect": [114, 129, 107, 36],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-          "rect": [100, 150, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='absolute clipped rotated'",
-          "rect": [100, 150, 100, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='absolute clipped rotated'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='absolute clipped rotated'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt
deleted file mode 100644
index e897b61..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-stacking-context-backface-visiblity-leaves-traces-expected.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 5056],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) HEADER",
-      "position": [8, 28],
-      "bounds": [769, 1972],
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='recentlink'",
-          "rect": [10, 1822, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='recentlink'",
-          "rect": [10, 1422, 150, 150],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1400, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='recentlink'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.png
deleted file mode 100644
index 5782ec4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.txt
deleted file mode 100644
index b1242a5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-          "rect": [79, 129, 142, 142],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-          "rect": [79, 129, 142, 142],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='absolute clipped'",
-          "rect": [79, 129, 142, 142],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-          "rect": [114, 129, 107, 36],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='moveMe' class='absolute clipped'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute red'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-ancestor-clip-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-ancestor-clip-change-expected.txt
deleted file mode 100644
index 28a463a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-ancestor-clip-change-expected.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 100, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 100, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='clip'",
-          "rect": [8, 108, 100, 200],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 193, 85, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [93, 8, 15, 185],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [93, 8, 15, 100],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [93, 193, 15, 15],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='clip'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-damage-and-full-viewport-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-damage-and-full-viewport-repaint-expected.txt
deleted file mode 100644
index eee5a4b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-damage-and-full-viewport-repaint-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [1000, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [1000, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1000, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='container'",
-          "rect": [1, 236, 185, 15],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-invalidation-on-resize-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-invalidation-on-resize-expected.txt
deleted file mode 100644
index 359e8e0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-invalidation-on-resize-expected.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-          "rect": [8, 135, 285, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-          "rect": [108, 50, 200, 100],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-          "rect": [8, 135, 85, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-          "rect": [293, 50, 15, 85],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-          "rect": [93, 50, 15, 85],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-          "rect": [293, 135, 15, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-          "rect": [93, 135, 15, 15],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-      "reason": "geometry"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-invalidation-on-resize-with-border-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-invalidation-on-resize-with-border-expected.txt
deleted file mode 100644
index acd5511..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-invalidation-on-resize-with-border-expected.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-          "rect": [18, 145, 285, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-          "rect": [118, 50, 210, 120],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-          "rect": [18, 145, 85, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-          "rect": [303, 60, 15, 85],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-          "rect": [103, 60, 15, 85],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-          "rect": [303, 145, 15, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-          "rect": [103, 145, 15, 15],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='scrollable'",
-      "reason": "geometry"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-parts-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-parts-expected.txt
deleted file mode 100644
index b2487fe..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrollbar-parts-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 93, 85, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [93, 8, 15, 85],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrolled-iframe-scrollbar-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrolled-iframe-scrollbar-change-expected.txt
deleted file mode 100644
index b4f4e4e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/scroll/scrolled-iframe-scrollbar-change-expected.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "objectPaintInvalidations": [
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY class='noScroll'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='container'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='overlay'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/search-field-cancel-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/search-field-cancel-expected.txt
deleted file mode 100644
index 74d03656..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/search-field-cancel-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [11, 47, 137, 16],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [11, 47, 58, 16],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'some text'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-includes-newline-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-includes-newline-expected.txt
deleted file mode 100644
index fb579917..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-includes-newline-expected.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 8, 48, 33],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'xx'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'y'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-includes-newline-for-rtl-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-includes-newline-for-rtl-expected.txt
deleted file mode 100644
index 1776cb3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-includes-newline-for-rtl-expected.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [-8, 8, 48, 33],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'xx'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'y'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-lr-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-lr-expected.txt
deleted file mode 100644
index e2b8df89..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-lr-expected.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 8, 33, 48],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'xx'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'y'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-rl-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-rl-expected.txt
deleted file mode 100644
index 7e9c874e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-rl-expected.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [7, 8, 33, 48],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'xx'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'y'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-with-br-includes-newline-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-with-br-includes-newline-expected.txt
deleted file mode 100644
index 4f73d72..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/invalidation-rect-with-br-includes-newline-expected.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 24, 32, 17],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBR BR",
-          "rect": [24, 8, 16, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 8, 16, 16],
-          "reason": "selection"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'a'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'b'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-clear-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-clear-expected.txt
deleted file mode 100644
index 2a675094..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-clear-expected.txt
+++ /dev/null
@@ -1,95 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [418, 123, 359, 394],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u305B\u3063\u304B\u304F\u898B\u3064\u3051\u305F\u3059\u3070\u3089\u3057\u3044\u8A18\u4E8B\u304C\u3069\u3053'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u306B\u3042\u3063\u305F\u304B\u5FD8\u308C\u3066\u3057\u307E\u3063\u305F\u7D4C\u9A13\u306F\u3042\u308A\u307E'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3059\u304B\u306A\u3089\u30BF\u30A4\u30C8\u30EB\u3068\u30A2\u30C9\u30EC\u30B9\u3060\u3051\u3067\u306A'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u304F\u3001\u8A2A\u554F\u3057\u305F\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8\u306E\u30B3\u30F3\u30C6\u30F3\u30C4'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u304B\u3089\u3082\u691C\u7D22\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u305B\u3063\u304B'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u304F\u898B\u3064\u3051\u305F\u3059\u3070\u3089\u3057\u3044\u8A18\u4E8B\u304C\u3069\u3053\u306B\u3042\u3063'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u305F\u304B\u5FD8\u308C\u3066\u3057\u307E\u3063\u305F\u7D4C\u9A13\u306F\u3042\u308A\u307E\u3059\u304B \u306A'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3089\u30BF\u30A4\u30C8\u30EB\u3068\u30A2\u30C9\u30EC\u30B9\u3060\u3051\u3067\u306A\u304F\u3001\u8A2A\u554F'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3057\u305F\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u304B\u3089\u3082\u691C'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u7D22\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u8A2A\u554F\u3057\u305F\u30A6\u30A7\u30D6'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u30DA\u30FC\u30B8\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u304B\u3089\u3082\u691C\u7D22\u3059\u308B\u3053\u3068'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u304C\u3067\u304D\u307E\u3059\u3002\u305B\u3063\u304B\u304F\u898B\u3064\u3051\u305F\u3059\u3070\u3089\u3057'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3044\u8A18\u4E8B\u304C\u3069\u3053\u306B\u3042\u3063\u305F\u304B\u5FD8\u308C\u3066\u3057\u307E\u3063\u305F'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u7D4C\u9A13\u306F\u3042\u308A\u307E\u3059\u304B \u306A\u3089\u30BF\u30A4\u30C8\u30EB\u3068\u30A2\u30C9\u30EC'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u30B9\u3060\u3051\u3067\u306A\u304F\u3001\u8A2A\u554F'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-repaint-expected.txt
deleted file mode 100644
index 5dab5d3d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/japanese-rl-selection-repaint-expected.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [514, 23, 263, 544],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u305B\u3063\u304B\u304F\u898B\u3064\u3051\u305F\u3059\u3070\u3089\u3057\u3044\u8A18\u4E8B\u304C\u3069\u3053\u306B\u3042\u3063\u305F\u304B\u5FD8\u308C'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3066\u3057\u307E\u3063\u305F\u7D4C\u9A13\u306F\u3042\u308A\u307E\u3059\u304B\u306A\u3089\u30BF\u30A4\u30C8\u30EB\u3068\u30A2\u30C9\u30EC\u30B9\u3060'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3051\u3067\u306A\u304F\u3001\u8A2A\u554F\u3057\u305F\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u304B\u3089\u3082\u691C'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u7D22\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u305B\u3063\u304B\u304F\u898B\u3064\u3051\u305F\u3059\u3070\u3089\u3057\u3044\u8A18'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u4E8B\u304C\u3069\u3053\u306B\u3042\u3063\u305F\u304B\u5FD8\u308C\u3066\u3057\u307E\u3063\u305F\u7D4C\u9A13\u306F\u3042\u308A\u307E\u3059\u304B \u306A'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u3089\u30BF\u30A4\u30C8\u30EB\u3068\u30A2\u30C9\u30EC\u30B9\u3060\u3051\u3067\u306A\u304F\u3001\u8A2A\u554F\u3057\u305F\u30A6\u30A7\u30D6\u30DA\u30FC'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u30B8\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u304B\u3089\u3082\u691C\u7D22\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u8A2A\u554F\u3057'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u305F\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u304B\u3089\u3082\u691C\u7D22\u3059\u308B\u3053\u3068\u304C\u3067\u304D'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u307E\u3059\u3002\u305B\u3063\u304B\u304F\u898B\u3064\u3051\u305F\u3059\u3070\u3089\u3057\u3044\u8A18\u4E8B\u304C\u3069\u3053\u306B\u3042\u3063\u305F'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u304B\u5FD8\u308C\u3066\u3057\u307E\u3063\u305F\u7D4C\u9A13\u306F\u3042\u308A\u307E\u3059\u304B \u306A\u3089\u30BF\u30A4\u30C8\u30EB\u3068\u30A2\u30C9'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u30EC\u30B9\u3060\u3051\u3067\u306A\u304F\u3001\u8A2A\u554F'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/repaint-rect-for-vertical-writing-mode-with-positioned-root-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/repaint-rect-for-vertical-writing-mode-with-positioned-root-expected.txt
deleted file mode 100644
index 519dfb1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/repaint-rect-for-vertical-writing-mode-with-positioned-root-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [184, 201, 19, 168],
-          "reason": "selection"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'Some text in vertical mode'",
-      "reason": "selection"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selected-replaced-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selected-replaced-expected.txt
deleted file mode 100644
index 7ae4fcea..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selected-replaced-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 52, 784, 237],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage (relative positioned) IMG id='test' class='moved'",
-          "rect": [8, 132, 214, 232],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage (relative positioned) IMG id='test' class='moved'",
-          "rect": [8, 52, 214, 232],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutImage (relative positioned) IMG id='test' class='moved'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-after-delete-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-after-delete-expected.txt
deleted file mode 100644
index 4af735a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-after-delete-expected.txt
+++ /dev/null
@@ -1,362 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [39, 79, 154, 99],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [38, 78, 152, 102],
-          "reason": "geometry"
-        }
-      ],
-      "underPaintInvalidations": [
-        {
-          "x": 194,
-          "y": 79,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 80,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 81,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 82,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 83,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 84,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 85,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 86,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 87,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 88,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 89,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 90,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 91,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 92,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 93,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 94,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 95,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 96,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 97,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 98,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 99,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 100,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 101,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 102,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 103,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 104,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 105,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 106,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 107,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 108,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 109,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 110,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 111,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 112,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 113,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 114,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 115,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 116,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 117,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 118,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 119,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 120,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 121,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 122,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 123,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 124,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 125,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 126,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 127,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 128,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-after-remove-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-after-remove-expected.txt
deleted file mode 100644
index 235efe4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-after-remove-expected.txt
+++ /dev/null
@@ -1,393 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [39, 79, 154, 99],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [38, 78, 152, 102],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [70, 158, 42, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [74, 79, 38, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [39, 79, 35, 19],
-          "reason": "geometry"
-        }
-      ],
-      "underPaintInvalidations": [
-        {
-          "x": 194,
-          "y": 79,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 80,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 81,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 82,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 83,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 84,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 85,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 86,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 87,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 88,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 89,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 90,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 91,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 92,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 93,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 94,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 95,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 96,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 97,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 98,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 99,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 100,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 101,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 102,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 103,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 104,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 105,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 106,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 107,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 108,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 109,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 110,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 111,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 112,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 113,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 114,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 115,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 116,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 117,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 118,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 119,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 120,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 121,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 122,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 123,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 124,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 125,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 126,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 127,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        },
-        {
-          "x": 194,
-          "y": 128,
-          "oldPixel": "#3333FF",
-          "newPixel": "#FFFFFF"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutInline SPAN id='removeme'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'hello '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'world'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-change-in-iframe-with-relative-parent-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-change-in-iframe-with-relative-parent-expected.txt
deleted file mode 100644
index a617f664..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-change-in-iframe-with-relative-parent-expected.txt
+++ /dev/null
@@ -1,138 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [18, 238, 40, 10],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [18, 218, 30, 10],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [18, 198, 30, 10],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutBR BR",
-          "rect": [58, 238, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBR BR",
-          "rect": [48, 218, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBR BR",
-          "rect": [48, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBR BR",
-          "rect": [18, 228, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBR BR",
-          "rect": [18, 208, 10, 10],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'Foo'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'Bar'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'Bazz'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "selection"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-clear-after-move-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-clear-after-move-expected.txt
deleted file mode 100644
index 1544eaa9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-clear-after-move-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutImage IMG",
-          "rect": [100, 300, 50, 50],
-          "reason": "selection"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutImage IMG",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "selection"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-clear-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-clear-expected.txt
deleted file mode 100644
index 3bfef77..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-clear-expected.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='firstLine'",
-          "rect": [8, 8, 100, 200],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 208, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='root'",
-          "rect": [8, 208, 100, 100],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow (anonymous)",
-          "rect": [8, 108, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 48, 97, 119],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 48, 8, 19],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='root'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='firstLine'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutBR BR",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
deleted file mode 100644
index 840605a3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl INPUT id='target'",
-          "rect": [7, 7, 66, 24],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 11, 60, 16],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 11, 60, 16],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl INPUT id='target'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'test test test'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
deleted file mode 100644
index 840605a3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTextControl INPUT id='target'",
-          "rect": [7, 7, 66, 24],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 11, 60, 16],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 11, 60, 16],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTextControl INPUT id='target'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'test test test'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-rl-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-rl-expected.txt
deleted file mode 100644
index 12819b6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-rl-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [773, 38, 19, 83],
-          "reason": "selection"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'Testing both hit testing'",
-      "reason": "selection"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-within-composited-scroller-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
deleted file mode 100644
index efb004a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "backgroundColor": "#D3D3D3"
-    },
-    {
-      "name": "Scrolling Layer",
-      "position": [8, 8],
-      "bounds": [185, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "position": [8, 8],
-      "bounds": [200, 1620],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 610, 21, 19],
-          "reason": "selection"
-        }
-      ],
-      "transform": 1
-    },
-    {
-      "name": "Overflow Controls Host Layer",
-      "position": [8, 8],
-      "bounds": [200, 200],
-      "drawsContent": false
-    },
-    {
-      "name": "Horizontal Scrollbar Layer",
-      "position": [8, 193],
-      "bounds": [185, 15],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [193, 8],
-      "bounds": [15, 185],
-      "drawsContent": false
-    },
-    {
-      "name": "Scroll Corner Layer",
-      "position": [193, 193],
-      "bounds": [15, 15]
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -450, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'test'",
-      "reason": "selection"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/text-selection-rect-in-overflow-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/text-selection-rect-in-overflow-2-expected.txt
deleted file mode 100644
index fbecc69..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/text-selection-rect-in-overflow-2-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [18, 18, 233, 19],
-          "reason": "selection"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'Should have blue, not gray, highlight'",
-      "reason": "selection"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/text-selection-rect-in-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/text-selection-rect-in-overflow-expected.txt
deleted file mode 100644
index 1b5b7bcedd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/selection/text-selection-rect-in-overflow-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 8, 197, 19],
-          "reason": "selection"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'Should have green background'",
-      "reason": "selection"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/set-text-content-same-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/set-text-content-same-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/set-text-content-same-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/shadow-multiple-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/shadow-multiple-expected.png
deleted file mode 100644
index 507bc58a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/shadow-multiple-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/stacked-diacritics-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/stacked-diacritics-expected.txt
deleted file mode 100644
index d949643..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/stacked-diacritics-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='stacked'",
-          "rect": [19, 167, 200, 43],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [19, 168, 130, 41],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='stacked'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/stacking-context-lost-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/stacking-context-lost-expected.txt
deleted file mode 100644
index 3040f45..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/stacking-context-lost-expected.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='outer'",
-      "position": [278, 278],
-      "bounds": [100, 100],
-      "contentsOpaque": true,
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#008000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='inner'",
-          "rect": [0, 0, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='outer'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='outer'",
-          "rect": [0, 0, 100, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='outer'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='inner'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='inner'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='outer'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/subtree-root-skipped-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/subtree-root-skipped-expected.txt
deleted file mode 100644
index e996ff58..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/subtree-root-skipped-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [10, 11, 150, 16],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 11, 35, 16],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='div'",
-          "rect": [8, 288, 10, 20],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='div'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png
deleted file mode 100644
index 763a61a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/absolute-sized-content-with-resources-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/absolute-sized-content-with-resources-expected.txt
deleted file mode 100644
index 22120a80..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/absolute-sized-content-with-resources-expected.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow div id='contentBox'",
-          "rect": [8, 52, 402, 402],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [42, 119, 334, 268],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [42, 119, 334, 268],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [42, 119, 334, 268],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [17, 219, 84, 68],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [17, 219, 84, 68],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [17, 219, 84, 68],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow div id='contentBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/absolute-sized-document-no-scrollbars-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/absolute-sized-document-no-scrollbars-expected.txt
deleted file mode 100644
index ce323d3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/absolute-sized-document-no-scrollbars-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 800, 600],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 576, 432],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [0, 0, 576, 432],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 480, 360],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/add-background-property-on-root-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/add-background-property-on-root-expected.txt
deleted file mode 100644
index 4244a1b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/add-background-property-on-root-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 100, 100],
-          "reason": "background"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [8, 8, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "background"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "background"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/add-border-property-on-root-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/add-border-property-on-root-expected.txt
deleted file mode 100644
index 79f77865..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/add-border-property-on-root-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRoot (positioned) svg",
-          "rect": [8, 8, 120, 120],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRoot (positioned) svg",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/add-outline-property-on-root-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/add-outline-property-on-root-expected.txt
deleted file mode 100644
index 39b0cea..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/add-outline-property-on-root-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 8, 784, 105],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [-2, -2, 120, 120],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animate-fill-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animate-fill-expected.txt
deleted file mode 100644
index e3319b30..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animate-fill-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [0, 0, 110, 110],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animate-target-id-changed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animate-target-id-changed-expected.txt
deleted file mode 100644
index 2ad71d5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animate-target-id-changed-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect id='newId'",
-          "rect": [0, 0, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='newId'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png
deleted file mode 100644
index eaa3e2d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-path-inside-transformed-html-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-path-inside-transformed-html-expected.txt
deleted file mode 100644
index ad378e2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-path-inside-transformed-html-expected.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [203, 336, 126, 44],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text id='text'",
-          "rect": [203, 336, 126, 44],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [247, 90, 125, 44],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text id='text'",
-          "rect": [247, 90, 125, 44],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [109, 85, 103, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [356, 126, 102, 102],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGImage image id='image'",
-          "rect": [90, 208, 98, 97],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGImage image id='image'",
-          "rect": [353, 398, 97, 98],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGText text id='text'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'This is some text'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGImage image id='image'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-background-offscreen-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-background-offscreen-expected.txt
deleted file mode 100644
index 8dcf038..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-background-offscreen-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-expected.png
deleted file mode 100644
index c6df7564..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-no-fixed-intrinsic-size-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-no-fixed-intrinsic-size-expected.png
deleted file mode 100644
index 56eb77b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-no-fixed-intrinsic-size-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-offscreen-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-offscreen-expected.txt
deleted file mode 100644
index 8dcf038..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-offscreen-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-same-image-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-same-image-expected.png
deleted file mode 100644
index c6df7564..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-same-image-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt
deleted file mode 100644
index 284c617..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='targetDiv'",
-      "bounds": [2000, 2000],
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -1000, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/append-text-node-to-tspan-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/append-text-node-to-tspan-expected.txt
deleted file mode 100644
index 87aebd4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/append-text-node-to-tspan-expected.txt
+++ /dev/null
@@ -1,156 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan id='modify'",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [10, 62, 307, 377],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGText text",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan id='modify'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'PA'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'SS'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/change-background-color-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/change-background-color-expected.txt
deleted file mode 100644
index 02f6284..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/change-background-color-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [8, 8, 200, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/circle-move-invalidation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/circle-move-invalidation-expected.txt
deleted file mode 100644
index a165963..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/circle-move-invalidation-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGEllipse circle id='c1'",
-          "rect": [196, 196, 76, 76],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGEllipse circle id='c1'",
-          "rect": [46, 46, 76, 76],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGEllipse circle id='c1'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/clip-path-child-changes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/clip-path-child-changes-expected.txt
deleted file mode 100644
index 1bef771a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/clip-path-child-changes-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 200, 200],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/clip-path-href-changes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/clip-path-href-changes-expected.txt
deleted file mode 100644
index 37f25db4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/clip-path-href-changes-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/clip-path-id-changes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/clip-path-id-changes-expected.txt
deleted file mode 100644
index 1bef771a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/clip-path-id-changes-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 200, 200],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/clip-path-units-changes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/clip-path-units-changes-expected.txt
deleted file mode 100644
index 1bef771a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/clip-path-units-changes-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 200, 200],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/color-fill-currentColor-and-css-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/color-fill-currentColor-and-css-expected.txt
deleted file mode 100644
index 17a0da5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/color-fill-currentColor-and-css-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGEllipse circle",
-          "rect": [8, 8, 80, 80],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGEllipse circle",
-          "rect": [8, 8, 80, 80],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGEllipse circle",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGEllipse circle",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/container-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/container-repaint-expected.txt
deleted file mode 100644
index 5e4d4ea..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/container-repaint-expected.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 100, 100, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='mover'",
-          "rect": [0, 100, 100, 50],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 50, 100, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='mover'",
-          "rect": [0, 50, 100, 50],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGViewportContainer svg id='mover'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/deep-dynamic-updates-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/deep-dynamic-updates-expected.txt
deleted file mode 100644
index e03cd4a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/deep-dynamic-updates-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [24, 24, 402, 402],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt
deleted file mode 100644
index 3f738b5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-{
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutEmbeddedObject OBJECT",
-      "reason": "style change"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutEmbeddedObject OBJECT",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt
deleted file mode 100644
index 3f738b5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-{
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutEmbeddedObject OBJECT",
-      "reason": "style change"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutEmbeddedObject OBJECT",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/embedded-svg-size-changes-no-layout-triggers-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/embedded-svg-size-changes-no-layout-triggers-expected.txt
deleted file mode 100644
index 1a7bdf5e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/embedded-svg-size-changes-no-layout-triggers-expected.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 800, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutEmbeddedObject OBJECT",
-          "rect": [0, 0, 402, 202],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [1, 1, 400, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 400, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [211, 11, 180, 180],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [210, 10, 180, 180],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [11, 11, 180, 180],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 10, 180, 180],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutEmbeddedObject OBJECT",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/ems-display-none-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/ems-display-none-expected.txt
deleted file mode 100644
index bf79ca9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/ems-display-none-expected.txt
+++ /dev/null
@@ -1,113 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 54, 572, 86],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [50, 54, 572, 86],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [50, 54, 572, 86],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [50, 54, 572, 86],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [50, 54, 572, 86],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan id='tspan'",
-          "rect": [50, 54, 572, 86],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='text'",
-          "rect": [50, 54, 572, 86],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='text'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan id='tspan'",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Two lines of text should be visible.'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Two lines of text should be visible.'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/exs-display-none-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/exs-display-none-expected.txt
deleted file mode 100644
index 8038bac..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/exs-display-none-expected.txt
+++ /dev/null
@@ -1,113 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 50, 572, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [50, 50, 572, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [50, 50, 572, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [50, 50, 572, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [50, 50, 572, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan id='tspan'",
-          "rect": [50, 50, 572, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='text'",
-          "rect": [50, 50, 572, 82],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='text'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan id='tspan'",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Two lines of text should be visible.'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Two lines of text should be visible.'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-change-target-id-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-change-target-id-expected.txt
deleted file mode 100644
index 3633f68..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-change-target-id-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-multiple-targets-id-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-multiple-targets-id-change-expected.txt
deleted file mode 100644
index 7c1bdd7d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-multiple-targets-id-change-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [45, 0, 60, 110],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 55, 110],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-reference-invalidation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-reference-invalidation-expected.txt
deleted file mode 100644
index 3633f68..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-reference-invalidation-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-remove-target-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-remove-target-expected.txt
deleted file mode 100644
index 39df27e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-remove-target-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-add-to-document-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-add-to-document-expected.txt
deleted file mode 100644
index 3633f68..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-add-to-document-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-attribute-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-attribute-change-expected.txt
deleted file mode 100644
index 3633f68..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-attribute-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-attribute-change-with-use-indirection-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-attribute-change-with-use-indirection-2-expected.txt
deleted file mode 100644
index 3633f68..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-attribute-change-with-use-indirection-2-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-attribute-change-with-use-indirection-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-attribute-change-with-use-indirection-expected.txt
deleted file mode 100644
index 39df27e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-attribute-change-with-use-indirection-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-changes-id-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-changes-id-expected.txt
deleted file mode 100644
index 3633f68..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-changes-id-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-id-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-id-change-expected.txt
deleted file mode 100644
index 3633f68..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-id-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-inline-style-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-inline-style-change-expected.txt
deleted file mode 100644
index 5d012a3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-inline-style-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-property-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-property-change-expected.txt
deleted file mode 100644
index 3633f68..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-property-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-reappend-to-document-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-reappend-to-document-expected.txt
deleted file mode 100644
index f98c236b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-reappend-to-document-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGResourceFilterPrimitive feImage id='feimage-green'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-remove-from-document-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-remove-from-document-expected.txt
deleted file mode 100644
index f842c7e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-remove-from-document-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGResourceFilterPrimitive feImage id='feimage-red'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-style-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-style-change-expected.txt
deleted file mode 100644
index 5d012a3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/feImage-target-style-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 110, 110],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/fecomponenttransfer-in1-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/fecomponenttransfer-in1-change-expected.txt
deleted file mode 100644
index 16e4467..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/fecomponenttransfer-in1-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 100, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/fill-opacity-update-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/fill-opacity-update-expected.txt
deleted file mode 100644
index 6f606cf..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/fill-opacity-update-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGEllipse circle",
-          "rect": [0, 0, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGEllipse circle",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/filter-child-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/filter-child-repaint-expected.txt
deleted file mode 100644
index f532ea7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/filter-child-repaint-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 106, 106],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRect rect id='poke'",
-          "rect": [32, 32, 64, 64],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='poke'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/filter-refresh-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/filter-refresh-expected.txt
deleted file mode 100644
index 33cd7c2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/filter-refresh-expected.txt
+++ /dev/null
@@ -1,470 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [10, 170, 132, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [10, 130, 132, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRect rect id='separate2'",
-          "rect": [140, 140, 36, 36],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRect rect id='filtered'",
-          "rect": [140, 100, 36, 36],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [140, 60, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [90, 170, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [90, 130, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [90, 90, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [90, 90, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [90, 50, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [90, 50, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 170, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 130, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 90, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 90, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 50, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 50, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [10, 90, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [10, 50, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRect rect id='separate1'",
-          "rect": [140, 60, 30, 30],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 170, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 170, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 130, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 130, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 90, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 90, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 50, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [90, 50, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 170, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 170, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 130, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 130, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 90, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 90, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 50, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 50, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 170, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 170, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 130, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 130, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 90, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 90, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 50, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 50, 30, 30],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='separate1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='filtered'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGRect rect id='separate2'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/filter-width-update-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/filter-width-update-expected.png
deleted file mode 100644
index 52b8ab1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/filter-width-update-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/filter-width-update-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/filter-width-update-expected.txt
deleted file mode 100644
index 43f11c7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/filter-width-update-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 140, 140],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/focus-element-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/focus-element-expected.txt
deleted file mode 100644
index 31146e4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/focus-element-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [57, 57, 52, 52],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/foreign-object-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/foreign-object-repaint-expected.txt
deleted file mode 100644
index b390dd3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/foreign-object-repaint-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow div id='div2'",
-          "rect": [129, 200, 142, 142],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow div id='div1'",
-          "rect": [50, 50, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow div id='div1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow div id='div2'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/foreignObject-crash-on-hover-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/foreignObject-crash-on-hover-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/foreignObject-crash-on-hover-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/gradient-add-stops-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/gradient-add-stops-expected.txt
deleted file mode 100644
index 2f2a8d68..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/gradient-add-stops-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 100, 100],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/gradient-stop-style-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/gradient-stop-style-change-expected.txt
deleted file mode 100644
index 2f2a8d68..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/gradient-stop-style-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 100, 100],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/hairline-stroke-squarecap-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/hairline-stroke-squarecap-expected.txt
deleted file mode 100644
index 9cdaa098..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/hairline-stroke-squarecap-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGPath path id='path'",
-          "rect": [197, 197, 107, 107],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGPath path id='path'",
-          "rect": [97, 97, 106, 106],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath path id='path'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/image-href-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/image-href-change-expected.txt
deleted file mode 100644
index 2ce2479..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/image-href-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGImage image id='image'",
-          "rect": [0, 0, 200, 200],
-          "reason": "image"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGImage image id='image'",
-      "reason": "image"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/image-with-clip-path-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/image-with-clip-path-expected.txt
deleted file mode 100644
index 944e4e79..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/image-with-clip-path-expected.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='g'",
-          "rect": [20, 20, 60, 60],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGContainer g id='g'",
-          "rect": [20, 20, 60, 60],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGImage image",
-          "rect": [20, 20, 60, 60],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGImage image",
-          "rect": [20, 20, 60, 60],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGContainer g id='g'",
-          "rect": [175, 25, 50, 50],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGImage image",
-          "rect": [175, 25, 50, 50],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGContainer g id='g'",
-          "rect": [0, 0, 10, 10],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGImage image",
-          "rect": [0, 0, 10, 10],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='g'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGImage image",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGContainer g id='g'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGImage image",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/inner-svg-change-viewBox-contract-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/inner-svg-change-viewBox-contract-expected.txt
deleted file mode 100644
index cf995cd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/inner-svg-change-viewBox-contract-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='inner'",
-          "rect": [0, 0, 200, 200],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGViewportContainer svg id='inner'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/inner-svg-change-viewBox-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/inner-svg-change-viewBox-expected.txt
deleted file mode 100644
index aa9a737..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/inner-svg-change-viewBox-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 100, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='s'",
-          "rect": [0, 0, 100, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGViewportContainer svg id='s'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/inner-svg-change-viewPort-relative-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/inner-svg-change-viewPort-relative-expected.txt
deleted file mode 100644
index 33fde35..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/inner-svg-change-viewPort-relative-expected.txt
+++ /dev/null
@@ -1,122 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 200, 200],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='inner'",
-          "rect": [0, 0, 200, 200],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [93, 85, 107, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [93, 85, 107, 19],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 85, 101, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 85, 101, 19],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [180, 120, 20, 20],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGPath polygon id='triangle'",
-          "rect": [180, 120, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [180, 60, 20, 20],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [80, 120, 20, 20],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGPath polygon id='triangle'",
-          "rect": [80, 120, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [80, 60, 20, 20],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGViewportContainer svg id='inner'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'right-aligned text'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGPath polygon id='triangle'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/invalidate-on-child-layout-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/invalidate-on-child-layout-expected.txt
deleted file mode 100644
index ce077996..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/invalidate-on-child-layout-expected.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [40, 40, 120, 120],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 110, 110],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGEllipse circle id='circle'",
-          "rect": [50, 50, 100, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGEllipse circle id='circle'",
-          "rect": [0, 0, 100, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGEllipse circle id='circle'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.txt
deleted file mode 100644
index c291368..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='content'",
-          "rect": [16, 42, 784, 170],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer g id='content'",
-          "rect": [16, 42, 784, 170],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [16, 42, 784, 170],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [16, 42, 784, 170],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [16, 42, 784, 170],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [16, 42, 784, 170],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Clipped. INVISIBLE.'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='content'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Clipped. INVISIBLE.'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-creation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-creation-expected.txt
deleted file mode 100644
index 34c8134..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-creation-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='content'",
-          "rect": [16, 42, 784, 170],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [16, 42, 784, 170],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [16, 42, 784, 170],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='content'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Clipped. INVISIBLE.'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.txt
deleted file mode 100644
index 1873ea8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.txt
+++ /dev/null
@@ -1,113 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='content'",
-          "rect": [0, 15, 757, 364],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 247, 757, 132],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 247, 757, 132],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 130, 595, 132],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 130, 595, 132],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 15, 447, 129],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 15, 447, 129],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Gradient on fill'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Gradient on stroke'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Gradient on fill/stroke'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-creation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-creation-expected.txt
deleted file mode 100644
index 7d0a0f0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-creation-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [33, 23, 697, 194],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [33, 23, 697, 194],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGText text",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Gradient on fill'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-marker-and-object-creation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-marker-and-object-creation-expected.txt
deleted file mode 100644
index c64a706..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-marker-and-object-creation-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='content'",
-          "rect": [190, 198, 137, 137],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [190, 198, 137, 137],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [190, 198, 137, 137],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-marker-creation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-marker-creation-expected.txt
deleted file mode 100644
index c9c3c3a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-marker-creation-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [190, 198, 137, 137],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-mask-and-object-creation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-mask-and-object-creation-expected.txt
deleted file mode 100644
index cb1058f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-mask-and-object-creation-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='content'",
-          "rect": [0, 100, 800, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 100, 800, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 100, 800, 100],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-mask-creation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-mask-creation-expected.txt
deleted file mode 100644
index ee8d901..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-mask-creation-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 100, 800, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.txt
deleted file mode 100644
index a968f15..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.txt
+++ /dev/null
@@ -1,113 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='content'",
-          "rect": [0, 15, 681, 364],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 247, 681, 132],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 247, 681, 132],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 130, 519, 132],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 130, 519, 132],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 15, 371, 129],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 15, 371, 129],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Pattern on fill'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Pattern on stroke'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Pattern on fill/stroke'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-creation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-creation-expected.txt
deleted file mode 100644
index 8f15e3ea..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-creation-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [33, 23, 622, 194],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [33, 23, 622, 194],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGText text",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Pattern on fill'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-repaint-rect-on-path-with-stroke-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-repaint-rect-on-path-with-stroke-expected.txt
deleted file mode 100644
index 1edb7ec..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-repaint-rect-on-path-with-stroke-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGPath path id='path'",
-          "rect": [30, 30, 140, 90],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGPath path id='path'",
-          "rect": [180, 30, 120, 90],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath path id='path'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-bounce-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-bounce-expected.png
deleted file mode 100644
index 5c0f622..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-bounce-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-bounce-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-bounce-expected.txt
deleted file mode 100644
index d79e91a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-bounce-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGEllipse circle id='bounce'",
-          "rect": [102, 102, 66, 66],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGEllipse circle id='bounce'",
-          "rect": [2, 2, 66, 66],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGEllipse circle id='bounce'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-container-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-container-expected.txt
deleted file mode 100644
index b0f4649..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-container-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='group'",
-          "rect": [0, 0, 76, 76],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 76, 76],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='group'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-gradient-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-gradient-expected.txt
deleted file mode 100644
index 99e11b6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-gradient-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 100, 430, 80],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 10, 430, 80],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-image-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-image-expected.txt
deleted file mode 100644
index 38a7702..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-image-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGImage image id='image'",
-          "rect": [0, 0, 75, 75],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGImage image id='image'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-pattern-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-pattern-child-expected.txt
deleted file mode 100644
index 99e11b6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-pattern-child-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 100, 430, 80],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 10, 430, 80],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-pattern-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-pattern-expected.txt
deleted file mode 100644
index 99e11b6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-pattern-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 100, 430, 80],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 10, 430, 80],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-polygon-changes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-polygon-changes-expected.txt
deleted file mode 100644
index 27153cd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-polygon-changes-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGPath polygon id='polygon'",
-          "rect": [254, 209, 182, 127],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGPath polygon id='polygon'",
-          "rect": [254, 199, 182, 127],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath polygon id='polygon'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-polygon-removal-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-polygon-removal-expected.txt
deleted file mode 100644
index 345e5d7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-polygon-removal-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGPath polygon id='polygon'",
-          "rect": [254, 209, 182, 127],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath polygon id='polygon'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-stop-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-stop-expected.txt
deleted file mode 100644
index 99e11b6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-stop-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 100, 430, 80],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 10, 430, 80],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-stop-linked-gradient-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-stop-linked-gradient-expected.txt
deleted file mode 100644
index ea1a212..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-stop-linked-gradient-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 210, 430, 80],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 110, 430, 80],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 10, 430, 80],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-style-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-style-expected.txt
deleted file mode 100644
index 90005bfb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-style-expected.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [6, 6, 158, 238],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [6, 186, 158, 58],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [6, 126, 158, 58],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [6, 66, 158, 58],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [6, 6, 158, 58],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-transform-addition-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-transform-addition-expected.txt
deleted file mode 100644
index 0fcc26c6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-transform-addition-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGPath polygon id='polygon'",
-          "rect": [254, 209, 182, 127],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath polygon id='polygon'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-transform-changes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-transform-changes-expected.txt
deleted file mode 100644
index 0fcc26c6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/js-update-transform-changes-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGPath polygon id='polygon'",
-          "rect": [254, 209, 182, 127],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath polygon id='polygon'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/marker-child-changes-css-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/marker-child-changes-css-expected.txt
deleted file mode 100644
index 53976c84..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/marker-child-changes-css-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [114, 119, 82, 82],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/marker-child-changes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/marker-child-changes-expected.txt
deleted file mode 100644
index 53976c84..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/marker-child-changes-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [114, 119, 82, 82],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/marker-strokeWidth-changes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/marker-strokeWidth-changes-expected.txt
deleted file mode 100644
index 6583459..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/marker-strokeWidth-changes-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [114, 119, 82, 82],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath path id='path'",
-          "rect": [114, 119, 82, 82],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGPath path id='path'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/marker-viewBox-changes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/marker-viewBox-changes-expected.txt
deleted file mode 100644
index c9526d28..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/marker-viewBox-changes-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [90, 95, 106, 106],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath path id='go'",
-          "rect": [90, 95, 106, 106],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGPath path id='go'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/mask-child-changes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/mask-child-changes-expected.txt
deleted file mode 100644
index 38c555d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/mask-child-changes-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 100, 800, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/mask-clip-target-transform-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/mask-clip-target-transform-expected.txt
deleted file mode 100644
index 7a93179..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/mask-clip-target-transform-expected.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect id='masker'",
-          "rect": [0, 0, 300, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGRect rect id='masker'",
-          "rect": [100, 0, 200, 300],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [150, 50, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [50, 150, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect id='clipper'",
-          "rect": [50, 150, 100, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect id='masker'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect id='clipper'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/mask-invalidation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/mask-invalidation-expected.txt
deleted file mode 100644
index 054f27a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/mask-invalidation-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='root'",
-          "rect": [50, 50, 453, 299],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [50, 50, 453, 299],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [100, 100, 403, 249],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='root'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/modify-inserted-listitem-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/modify-inserted-listitem-expected.txt
deleted file mode 100644
index f4fe30de..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/modify-inserted-listitem-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect id='move'",
-          "rect": [28, 38, 10, 10],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGRect rect id='move'",
-          "rect": [18, 18, 10, 10],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='move'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/modify-text-node-in-tspan-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/modify-text-node-in-tspan-expected.txt
deleted file mode 100644
index c7f4b670..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/modify-text-node-in-tspan-expected.txt
+++ /dev/null
@@ -1,143 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan id='modify'",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [10, 62, 307, 377],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGText text",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan id='modify'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/modify-transferred-listitem-different-attr-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/modify-transferred-listitem-different-attr-expected.txt
deleted file mode 100644
index 8194a47..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/modify-transferred-listitem-different-attr-expected.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [23, 8, 85, 23],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text id='target'",
-          "rect": [23, 8, 85, 23],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [58, 45, 50, 26],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text id='source'",
-          "rect": [58, 45, 50, 26],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGText text id='target'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'A'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' B C'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGText text id='source'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'X Y Z'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/modify-transferred-listitem-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/modify-transferred-listitem-expected.txt
deleted file mode 100644
index c0c0178..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/modify-transferred-listitem-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGPath polygon id='target'",
-          "rect": [18, 18, 30, 20],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath polygon id='target'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGPath polygon id='source'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt
deleted file mode 100644
index bfa2658..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt
+++ /dev/null
@@ -1,179 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 800, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutEmbeddedObject OBJECT",
-          "rect": [0, 0, 402, 202],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [1, 1, 400, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutEmbeddedObject OBJECT",
-          "rect": [1, 1, 400, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [1, 1, 400, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [1, 1, 400, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 300, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 285, 135],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutEmbeddedObject OBJECT",
-          "rect": [0, 0, 285, 135],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 285, 135],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 135, 285, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [211, 11, 180, 180],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [11, 11, 180, 180],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 10, 180, 125],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [210, 10, 75, 125],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [285, 0, 15, 135],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [285, 135, 15, 15],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutEmbeddedObject OBJECT",
-      "reason": "style change"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutEmbeddedObject OBJECT",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt
deleted file mode 100644
index bfa2658..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt
+++ /dev/null
@@ -1,179 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 800, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutEmbeddedObject OBJECT",
-          "rect": [0, 0, 402, 202],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [1, 1, 400, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutEmbeddedObject OBJECT",
-          "rect": [1, 1, 400, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [1, 1, 400, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [1, 1, 400, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 300, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 285, 135],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutEmbeddedObject OBJECT",
-          "rect": [0, 0, 285, 135],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 285, 135],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 135, 285, 15],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [211, 11, 180, 180],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [11, 11, 180, 180],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 10, 180, 125],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [210, 10, 75, 125],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [285, 0, 15, 135],
-          "reason": "scroll control"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [285, 135, 15, 15],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutEmbeddedObject OBJECT",
-      "reason": "style change"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutEmbeddedObject OBJECT",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/object-sizing-no-width-height-change-content-box-size-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/object-sizing-no-width-height-change-content-box-size-expected.txt
deleted file mode 100644
index 6c37b39..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/object-sizing-no-width-height-change-content-box-size-expected.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow div id='contentBox'",
-          "rect": [8, 8, 402, 402],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutEmbeddedObject object",
-          "rect": [9, 9, 400, 400],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [9, 9, 400, 400],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [9, 9, 400, 400],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [209, 9, 200, 400],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutSVGEllipse circle",
-          "rect": [169, 169, 80, 80],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGEllipse circle",
-          "rect": [89, 189, 40, 40],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow div id='contentBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutEmbeddedObject object",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGEllipse circle",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/outline-offset-shape-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/outline-offset-shape-expected.txt
deleted file mode 100644
index 5eaef95..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/outline-offset-shape-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [133, 18, 130, 130],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [18, 18, 130, 130],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/outline-offset-text-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/outline-offset-text-expected.txt
deleted file mode 100644
index afbc6734d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/outline-offset-text-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [103, 26, 160, 113],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [103, 26, 160, 113],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [63, 26, 160, 113],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [63, 26, 160, 113],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGText text",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Foo'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/overflow-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/overflow-repaint-expected.txt
deleted file mode 100644
index f8aa4b98..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/overflow-repaint-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRoot svg id='svg'",
-          "rect": [8, 8, 100, 200],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [8, 108, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg id='svg'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.png
deleted file mode 100644
index a120c0f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.txt
deleted file mode 100644
index 92d29a0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.txt
+++ /dev/null
@@ -1,120 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGPath polygon",
-          "rect": [168, 150, 164, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='poly'",
-          "rect": [168, 150, 164, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGPath polygon",
-          "rect": [441, 150, 163, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGPath polygon id='t3'",
-          "rect": [305, 150, 163, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGPath polygon",
-          "rect": [32, 150, 163, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='poly'",
-          "rect": [32, 150, 163, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGContainer use id='t2'",
-          "rect": [181, 163, 138, 137],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [454, 163, 137, 137],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg",
-          "rect": [318, 163, 137, 137],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGContainer use id='t1'",
-          "rect": [45, 163, 137, 137],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer use id='t1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='poly'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGPath polygon",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGContainer use id='t2'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='poly'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGPath polygon",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGPath polygon id='t3'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='poly2'",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGPath polygon",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/path-pathlength-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/path-pathlength-change-expected.txt
deleted file mode 100644
index 7ab932c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/path-pathlength-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [68, 68, 180, 180],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/pending-resource-after-removal-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/pending-resource-after-removal-expected.txt
deleted file mode 100644
index 5f9cad84..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/pending-resource-after-removal-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect id='shape'",
-          "rect": [0, 0, 200, 200],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRect rect id='shape'",
-          "rect": [0, 0, 200, 200],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='shape'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGResourcePattern pattern id='pat'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='shape'",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/rect-modify-rx-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/rect-modify-rx-expected.txt
deleted file mode 100644
index b940e38..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/rect-modify-rx-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect id='r'",
-          "rect": [0, 0, 100, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='r'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-content-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-content-expected.txt
deleted file mode 100644
index 5b5d492..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-content-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow div id='contentBox'",
-          "rect": [8, 72, 402, 402],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect id='targetRect'",
-          "rect": [9, 73, 400, 400],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [9, 73, 400, 400],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow div id='contentBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect id='targetRect'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-content-with-resources-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-content-with-resources-expected.txt
deleted file mode 100644
index 5bb488d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-content-with-resources-expected.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow div id='contentBox'",
-          "rect": [8, 72, 402, 402],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGEllipse circle",
-          "rect": [48, 112, 322, 322],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [48, 112, 322, 322],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGEllipse circle",
-          "rect": [9, 155, 100, 236],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [9, 155, 100, 236],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow div id='contentBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGEllipse circle",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-deep-shadow-tree-content-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-deep-shadow-tree-content-expected.txt
deleted file mode 100644
index 89ebd00..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-deep-shadow-tree-content-expected.txt
+++ /dev/null
@@ -1,95 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow div id='contentBox'",
-          "rect": [8, 72, 402, 402],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer g id='targetUse'",
-          "rect": [209, 273, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [209, 273, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect id='targetRect'",
-          "rect": [209, 273, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [209, 273, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer g id='targetUse'",
-          "rect": [59, 273, 50, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [59, 273, 50, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect id='targetRect'",
-          "rect": [59, 273, 50, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [59, 273, 50, 200],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow div id='contentBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer g id='targetUse'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect id='targetRect'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-document-scrollbars-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-document-scrollbars-expected.txt
deleted file mode 100644
index 3b6205a8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-document-scrollbars-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 800, 600],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [7, 5, 786, 590],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [7, 5, 786, 590],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-image-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-image-expected.txt
deleted file mode 100644
index 4d4fad4c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-image-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow div id='contentBox'",
-          "rect": [8, 72, 402, 402],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGImage image",
-          "rect": [9, 73, 400, 400],
-          "reason": "image"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [9, 73, 400, 400],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow div id='contentBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGImage image",
-      "reason": "image"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-inner-svg-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-inner-svg-expected.txt
deleted file mode 100644
index c1b1470..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-inner-svg-expected.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow div id='contentBox'",
-          "rect": [8, 52, 402, 402],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [27, 69, 364, 364],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [27, 69, 364, 364],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg",
-          "rect": [27, 69, 364, 364],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [13, 207, 92, 91],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [13, 207, 92, 91],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg",
-          "rect": [13, 207, 92, 91],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow div id='contentBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-shadow-tree-content-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-shadow-tree-content-expected.txt
deleted file mode 100644
index 0404bf14..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-shadow-tree-content-expected.txt
+++ /dev/null
@@ -1,103 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow div id='contentBox'",
-          "rect": [8, 72, 402, 402],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [9, 73, 400, 400],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [209, 273, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect id='targetRect'",
-          "rect": [209, 273, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer g id='targetUse'",
-          "rect": [9, 73, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [9, 73, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect id='targetRect1'",
-          "rect": [9, 73, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [59, 273, 50, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect id='targetRect'",
-          "rect": [59, 273, 50, 200],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow div id='contentBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect id='targetRect'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer g id='targetUse'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect id='targetRect1'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-shadow-tree-content-with-symbol-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-shadow-tree-content-with-symbol-expected.txt
deleted file mode 100644
index 5abf143..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-shadow-tree-content-with-symbol-expected.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow div id='contentBox'",
-          "rect": [8, 72, 402, 402],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [9, 73, 400, 400],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [9, 73, 400, 400],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='targetSymbol'",
-          "rect": [9, 73, 400, 400],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [209, 273, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [9, 73, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [59, 273, 50, 50],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow div id='contentBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='targetSymbol'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-use-on-symbol-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-use-on-symbol-expected.txt
deleted file mode 100644
index 3984967..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-use-on-symbol-expected.txt
+++ /dev/null
@@ -1,95 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow div id='contentBox'",
-          "rect": [8, 52, 402, 402],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [45, 87, 328, 328],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [45, 87, 328, 328],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [45, 87, 328, 328],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='gamesBorder'",
-          "rect": [45, 87, 328, 328],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [18, 211, 82, 83],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [18, 211, 82, 83],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [18, 211, 82, 83],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='gamesBorder'",
-          "rect": [18, 211, 82, 83],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow div id='contentBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='gamesBorder'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-use-without-attributes-on-symbol-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-use-without-attributes-on-symbol-expected.txt
deleted file mode 100644
index c10ac77..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/relative-sized-use-without-attributes-on-symbol-expected.txt
+++ /dev/null
@@ -1,95 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow div id='contentBox'",
-          "rect": [8, 52, 402, 402],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [27, 69, 364, 364],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [27, 69, 364, 364],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [27, 69, 364, 364],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='gamesBorder'",
-          "rect": [27, 69, 364, 364],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [13, 207, 92, 91],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [13, 207, 92, 91],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [13, 207, 92, 91],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='gamesBorder'",
-          "rect": [13, 207, 92, 91],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow div id='contentBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='gamesBorder'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-background-property-on-root-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-background-property-on-root-expected.txt
deleted file mode 100644
index 4244a1b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-background-property-on-root-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 100, 100],
-          "reason": "background"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [8, 8, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "background"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "background"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-border-property-on-root-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-border-property-on-root-expected.txt
deleted file mode 100644
index 79f77865..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-border-property-on-root-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRoot (positioned) svg",
-          "rect": [8, 8, 120, 120],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRoot (positioned) svg",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-outline-property-on-root-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-outline-property-on-root-expected.txt
deleted file mode 100644
index 39b0cea..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-outline-property-on-root-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 8, 784, 105],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [-2, -2, 120, 120],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-text-node-from-tspan-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-text-node-from-tspan-expected.txt
deleted file mode 100644
index 473ff50..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-text-node-from-tspan-expected.txt
+++ /dev/null
@@ -1,140 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 377],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan id='modify'",
-          "rect": [10, 62, 307, 377],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [10, 62, 307, 377],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan id='modify'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-tspan-from-text-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-tspan-from-text-expected.txt
deleted file mode 100644
index 5bffaa7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/remove-tspan-from-text-expected.txt
+++ /dev/null
@@ -1,131 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 257],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 257],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 257],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 257],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [10, 62, 307, 257],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [10, 62, 307, 257],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [10, 62, 307, 257],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan id='remove'",
-          "rect": [10, 62, 307, 257],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGText text id='text'",
-          "rect": [10, 62, 307, 257],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan id='remove'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text id='text'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox ' '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-in-scrolled-view-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-in-scrolled-view-expected.txt
deleted file mode 100644
index 82c5425..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-in-scrolled-view-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2000, 2000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [400, 400, 100, 100],
-          "reason": "style change"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-400, -400, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-moving-svg-and-div-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-moving-svg-and-div-expected.txt
deleted file mode 100644
index 16b62c1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-moving-svg-and-div-expected.txt
+++ /dev/null
@@ -1,530 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [550, 350, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [535, 325, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [535, 325, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [520, 300, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [520, 300, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [505, 275, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [505, 275, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [490, 250, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [490, 250, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [475, 225, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [475, 225, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [460, 200, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [460, 200, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [445, 175, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [445, 175, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [430, 150, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [430, 150, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-          "rect": [400, 100, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [250, 350, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [235, 325, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [235, 325, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [220, 300, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [220, 300, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [205, 275, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [205, 275, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [190, 250, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [190, 250, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [175, 225, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [175, 225, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [160, 200, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [160, 200, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [145, 175, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [145, 175, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [130, 150, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [130, 150, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot (positioned) svg id='svg'",
-          "rect": [100, 100, 150, 150],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [575, 375, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [560, 350, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [560, 350, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [545, 325, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [545, 325, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [530, 300, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [530, 300, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [515, 275, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [515, 275, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [500, 250, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [500, 250, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [485, 225, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [485, 225, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [470, 200, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [470, 200, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [455, 175, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [455, 175, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow div class='innerBox'",
-          "rect": [425, 125, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [275, 375, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [260, 350, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [260, 350, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [245, 325, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [245, 325, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [230, 300, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [230, 300, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [215, 275, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [215, 275, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [200, 250, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [200, 250, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [185, 225, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [185, 225, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [170, 200, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [170, 200, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [155, 175, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [155, 175, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [125, 125, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRoot (positioned) svg id='svg'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow div class='innerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot (positioned) svg id='svg'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow div class='innerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot (positioned) svg id='svg'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow div class='innerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot (positioned) svg id='svg'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow div class='innerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot (positioned) svg id='svg'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow div class='innerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot (positioned) svg id='svg'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow div class='innerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot (positioned) svg id='svg'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow div class='innerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot (positioned) svg id='svg'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow div class='innerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot (positioned) svg id='svg'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) div id='html' class='outerBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow div class='innerBox'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-non-scaling-stroke-text-decoration-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-non-scaling-stroke-text-decoration-expected.txt
deleted file mode 100644
index 6ebaf72..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-non-scaling-stroke-text-decoration-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [9, 13, 48, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [9, 13, 48, 28],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGText text id='t'",
-          "rect": [9, 13, 48, 28],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGText text id='t'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Hello'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-non-scaling-stroke-text-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-non-scaling-stroke-text-expected.txt
deleted file mode 100644
index 6ebaf72..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-non-scaling-stroke-text-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [9, 13, 48, 28],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [9, 13, 48, 28],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGText text id='t'",
-          "rect": [9, 13, 48, 28],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGText text id='t'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Hello'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-on-constant-size-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-on-constant-size-change-expected.txt
deleted file mode 100644
index 1d55737..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-on-constant-size-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGImage image",
-          "rect": [0, 0, 200, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGImage image",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-on-image-bounds-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-on-image-bounds-change-expected.txt
deleted file mode 100644
index 84eff45..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-on-image-bounds-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGImage image id='target'",
-          "rect": [0, 0, 100, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGImage image id='target'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-paintorder-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-paintorder-expected.png
deleted file mode 100644
index a3a1602..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-paintorder-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-paintorder-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-paintorder-expected.txt
deleted file mode 100644
index 924969a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-paintorder-expected.txt
+++ /dev/null
@@ -1,98 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer use id='t2'",
-          "rect": [168, 150, 164, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGPath polygon",
-          "rect": [168, 150, 164, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='poly'",
-          "rect": [168, 150, 164, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGPath polygon",
-          "rect": [441, 150, 163, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGPath polygon id='t3'",
-          "rect": [305, 150, 163, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGContainer use id='t1'",
-          "rect": [32, 150, 163, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGPath polygon",
-          "rect": [32, 150, 163, 163],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='poly'",
-          "rect": [32, 150, 163, 163],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer use id='t1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='poly'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGPath polygon",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGContainer use id='t2'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='poly'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGPath polygon",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGPath polygon id='t3'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGPath polygon",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-stroke-width-changes-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-stroke-width-changes-expected.txt
deleted file mode 100644
index 350cc49..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/repaint-stroke-width-changes-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 10, 460, 340],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/resize-svg-invalidate-children-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/resize-svg-invalidate-children-2-expected.txt
deleted file mode 100644
index 6d9dce9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/resize-svg-invalidate-children-2-expected.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 8, 600, 400],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "LayoutSVGRoot svg",
-      "bounds": [600, 400],
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [50, 0, 500, 400],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [50, 0, 500, 400],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 120, 200, 160],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [0, 120, 200, 160],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/resize-svg-invalidate-children-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/resize-svg-invalidate-children-expected.txt
deleted file mode 100644
index e0045fe..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/resize-svg-invalidate-children-expected.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 8, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [58, 58, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [58, 58, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [33, 33, 50, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRoot svg",
-          "rect": [33, 33, 50, 50],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/resource-client-removal-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/resource-client-removal-expected.txt
deleted file mode 100644
index 9e3ff53..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/resource-client-removal-expected.txt
+++ /dev/null
@@ -1,386 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='inneruse'",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGPath path id='hp'",
-          "rect": [0, 0, 100, 100],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGContainer g id='inneruse'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='hp'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/resource-invalidate-on-target-update-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/resource-invalidate-on-target-update-expected.txt
deleted file mode 100644
index 66aabc6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/resource-invalidate-on-target-update-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='box'",
-          "rect": [0, 10, 230, 350],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect3'",
-          "rect": [0, 240, 230, 120],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect2'",
-          "rect": [10, 130, 200, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect1'",
-          "rect": [10, 10, 200, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='box'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect1'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect2'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect3'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/rounded-rect-height-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/rounded-rect-height-change-expected.txt
deleted file mode 100644
index d51dc712..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/rounded-rect-height-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [8, 8, 100, 200],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt
deleted file mode 100644
index f9d6cd2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.txt
+++ /dev/null
@@ -1,130 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1026, 1036],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [24, 1011, 737, 21],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [179, 1012, 202, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [435, 1012, 171, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutInline A",
-          "rect": [385, 1011, 46, 21],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [386, 1012, 44, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [429, 1012, 7, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [380, 1012, 7, 19],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -451, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'pservers-pattern-01-b \u2190'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutInline A",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'index'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\n'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u2192 script-handle-01-b'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/shape-transform-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/shape-transform-change-expected.txt
deleted file mode 100644
index 1dca8391..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/shape-transform-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [8, 8, 200, 200],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/shape-with-nested-outline-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/shape-with-nested-outline-expected.txt
deleted file mode 100644
index baf6e529..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/shape-with-nested-outline-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [8, 8, 500, 500],
-          "reason": "outline"
-        },
-        {
-          "object": "LayoutSVGRect rect id='r'",
-          "rect": [108, 108, 300, 300],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "outline"
-    },
-    {
-      "object": "LayoutSVGRect rect id='r'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/stroke-opacity-update-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/stroke-opacity-update-expected.txt
deleted file mode 100644
index 6043853e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/stroke-opacity-update-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGEllipse circle",
-          "rect": [0, 0, 203, 203],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGEllipse circle",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svg-absolute-children-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svg-absolute-children-expected.txt
deleted file mode 100644
index d7addf3..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svg-absolute-children-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [0, 0, 100, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svg-background-partial-redraw-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svg-background-partial-redraw-expected.txt
deleted file mode 100644
index 2bee426..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svg-background-partial-redraw-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='revealer'",
-          "rect": [9, 153, 200, 100],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='revealer'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svg-image-change-content-size-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svg-image-change-content-size-expected.txt
deleted file mode 100644
index de3ef2e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svg-image-change-content-size-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow div id='contentBox'",
-          "rect": [8, 52, 602, 422],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutImage img",
-          "rect": [9, 53, 420, 420],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow div id='contentBox'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutImage img",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svg-image-par-resize-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svg-image-par-resize-expected.txt
deleted file mode 100644
index d6116ce..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svg-image-par-resize-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGImage image",
-          "rect": [8, 8, 200, 200],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGImage image",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svgsvgelement-repaint-children-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svgsvgelement-repaint-children-expected.txt
deleted file mode 100644
index 7744f1d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/svgsvgelement-repaint-children-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGPath path id='path'",
-          "rect": [8, 8, 100, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath path id='path'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/tabgroup-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/tabgroup-expected.png
deleted file mode 100644
index 5d337a9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/tabgroup-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/tabgroup-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/tabgroup-expected.txt
deleted file mode 100644
index e092c39..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/tabgroup-expected.txt
+++ /dev/null
@@ -1,2067 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='tabgroupRound'",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [389, 37, 316, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='tabgroupRectRound'",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [262, 277, 304, 304],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='tabgroupRectTriangle'",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [506, 232, 238, 161],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='tabgroupTriangle'",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [6, 256, 238, 160],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='tabgroupTriangle__0_content'",
-          "rect": [15, 291, 211, 37],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [15, 291, 211, 37],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [15, 291, 211, 37],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [15, 291, 211, 37],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [15, 291, 211, 37],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [15, 291, 211, 37],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='contentTabGroupTriangle0'",
-          "rect": [15, 291, 211, 37],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='tabgroupRect'",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path",
-          "rect": [37, 6, 160, 238],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupTriangle__1'",
-          "rect": [60, 256, 69, 31],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectRound__0'",
-          "rect": [361, 277, 68, 68],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectTriangle__0'",
-          "rect": [506, 232, 68, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRound__0'",
-          "rect": [389, 37, 68, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectRound__1'",
-          "rect": [415, 331, 64, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectTriangle__1'",
-          "rect": [570, 232, 64, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRound__1'",
-          "rect": [453, 37, 64, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupTriangle__0'",
-          "rect": [6, 256, 59, 31],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupTriangle__2'",
-          "rect": [125, 256, 58, 31],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [66, 257, 57, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [66, 257, 57, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [66, 257, 57, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [66, 257, 57, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [66, 257, 57, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [511, 234, 57, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [511, 234, 57, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [511, 234, 57, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [394, 38, 57, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [394, 38, 57, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [394, 38, 57, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectRound__3'",
-          "rect": [505, 422, 56, 55],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectRound__2'",
-          "rect": [466, 382, 53, 53],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [575, 234, 53, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [575, 234, 53, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [575, 234, 53, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [458, 38, 53, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [458, 38, 53, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [458, 38, 53, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRound__3'",
-          "rect": [557, 37, 52, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [370, 285, 51, 51],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [370, 285, 51, 51],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [370, 285, 51, 51],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectTriangle__3'",
-          "rect": [675, 232, 51, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [423, 339, 49, 48],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [423, 339, 49, 48],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [423, 339, 49, 48],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRectTriangle__2'",
-          "rect": [630, 232, 49, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [11, 257, 48, 29],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [11, 257, 48, 29],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [11, 257, 48, 29],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [11, 257, 48, 29],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [11, 257, 48, 29],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRound__2'",
-          "rect": [513, 37, 48, 20],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [130, 257, 47, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [130, 257, 47, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [130, 257, 47, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [130, 257, 47, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [130, 257, 47, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupTriangle__3'",
-          "rect": [178, 256, 44, 31],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [680, 234, 41, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [680, 234, 41, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [680, 234, 41, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [563, 38, 41, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [563, 38, 41, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [563, 38, 41, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [514, 429, 40, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [514, 429, 40, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [514, 429, 40, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [474, 389, 38, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [474, 389, 38, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [474, 389, 38, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [635, 234, 38, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [635, 234, 38, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [635, 234, 38, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [518, 38, 38, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [518, 38, 38, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [518, 38, 38, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [184, 257, 32, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [184, 257, 32, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [184, 257, 32, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [184, 257, 32, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [184, 257, 32, 29],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRect__0'",
-          "rect": [178, 6, 19, 68],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRect__1'",
-          "rect": [178, 70, 19, 64],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRect__3'",
-          "rect": [178, 175, 19, 51],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath path id='tabgroupRect__2'",
-          "rect": [178, 130, 19, 49],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [180, 11, 16, 57],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [180, 11, 16, 57],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [180, 11, 16, 57],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [180, 75, 16, 53],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [180, 75, 16, 53],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [180, 75, 16, 53],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [180, 180, 16, 41],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [180, 180, 16, 41],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [180, 180, 16, 41],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [180, 135, 16, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [180, 135, 16, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [180, 135, 16, 38],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRect__1'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRect__1_content'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Geodata'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Browser'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Download'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Folder'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Your'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Account'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupTriangle__0'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGHiddenContainer g id='tabgroupTriangle__0_content'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Help'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox '& Info'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectTriangle__2'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectTriangle__2_content'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRound__1'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRound__1_content'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectRound__0'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectRound__0_content'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGHiddenContainer g id='oversizeContent'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupTriangle__0'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupTriangle__0_content'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRect__0'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Biography'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRect__0_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRect__2'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Events'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRect__2_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRect__3'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Portrait'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRect__3_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRect__1'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Relations'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRect__1_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupTriangle'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupTriangle__1'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Download'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Folder'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupTriangle__2'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Your'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Account'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupTriangle__3'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Help'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox '& Info'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupTriangle__0'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Geodata'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Browser'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupTriangle__0_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='contentTabGroupTriangle0'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'This is a tabgroup with triangular tab corners'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'and a double line tab. (use \"\\n\" as a line separator)'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Click on the second tab to see oversize content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectTriangle'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectTriangle__0'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Biography'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectTriangle__0_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectTriangle__1'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Relations'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectTriangle__1_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectTriangle__3'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Portrait'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectTriangle__3_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectTriangle__2'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Events'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectTriangle__2_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRound'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRound__0'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Biography'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRound__0_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRound__2'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Events'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRound__2_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRound__3'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Portrait'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRound__3_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRound__1'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Relations'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRound__1_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectRound'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectRound__1'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Relations'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectRound__1_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectRound__2'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Events'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectRound__2_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectRound__3'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Portrait'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectRound__3_content'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath path id='tabgroupRectRound__0'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Biography'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='tabgroupRectRound__0_content'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-dom-removal-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-dom-removal-expected.txt
deleted file mode 100644
index 4b15e27c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-dom-removal-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='objectsToRemove'",
-          "rect": [0, 0, 212, 129],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [50, 110, 162, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [50, 110, 162, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [0, 0, 20, 20],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='objectsToRemove'",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-mask-update-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-mask-update-expected.txt
deleted file mode 100644
index c463a0f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-mask-update-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 3, 46, 22],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [10, 33, 43, 17],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-pattern-update-2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-pattern-update-2-expected.txt
deleted file mode 100644
index 0b8785d4a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-pattern-update-2-expected.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGText text",
-          "rect": [8, 8, 300, 100],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGText text",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "InlineTextBox 'X'",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "InlineTextBox 'Y'",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "InlineTextBox 'Z'",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-pattern-update-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-pattern-update-expected.txt
deleted file mode 100644
index 1e74b24b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-pattern-update-expected.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGText text",
-          "rect": [8, 8, 100, 100],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGText text",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "InlineTextBox 'X'",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-repaint-including-stroke-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-repaint-including-stroke-expected.txt
deleted file mode 100644
index d36f8f9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-repaint-including-stroke-expected.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [80, 0, 553, 117],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text id='bounce'",
-          "rect": [80, 0, 553, 117],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [30, 0, 404, 59],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text id='bounce'",
-          "rect": [30, 0, 404, 59],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGText text id='bounce'",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Repaint me!'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGText text id='bounce'",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Repaint me!'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-rescale-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-rescale-expected.txt
deleted file mode 100644
index f866cc5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-rescale-expected.txt
+++ /dev/null
@@ -1,435 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='text2g'",
-          "rect": [0, 63, 402, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer g id='text1g'",
-          "rect": [0, 13, 402, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGContainer g id='text3g'",
-          "rect": [0, 113, 402, 87],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 114, 193, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 114, 193, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 114, 193, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [0, 114, 193, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 114, 193, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 14, 193, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 14, 193, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 14, 193, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [0, 14, 193, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 14, 193, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGForeignObject foreignObject",
-          "rect": [210, 13, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGForeignObject foreignObject",
-          "rect": [210, 113, 100, 87],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [210, 113, 100, 48],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [210, 13, 100, 48],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [310, 114, 92, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [310, 114, 92, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg",
-          "rect": [310, 114, 92, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [310, 14, 92, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [310, 14, 92, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg",
-          "rect": [310, 14, 92, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [210, 114, 92, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [210, 14, 92, 46],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGContainer g id='text3g'",
-          "rect": [0, 3, 14, 4],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGContainer g id='text1g'",
-          "rect": [0, 0, 8, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 0, 8, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 0, 8, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 0, 8, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [0, 0, 8, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 0, 8, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 3, 7, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 3, 7, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 3, 7, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [0, 3, 7, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 3, 7, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [9, 3, 5, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [9, 3, 5, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg",
-          "rect": [9, 3, 5, 3],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 0, 5, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 0, 5, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg",
-          "rect": [0, 0, 5, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGForeignObject foreignObject",
-          "rect": [6, 3, 4, 4],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [6, 3, 4, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [6, 3, 4, 2],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow P",
-          "rect": [0, 0, 1, 1],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGForeignObject foreignObject",
-          "rect": [0, 0, 1, 1],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [0, 0, 1, 1],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='text1g'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS '",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGForeignObject foreignObject",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGContainer g id='text2g'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGContainer g id='text3g'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS '",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGForeignObject foreignObject",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow P",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-selection-text-05-t-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-selection-text-05-t-expected.png
deleted file mode 100644
index 0a36152..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-selection-text-05-t-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-selection-text-05-t-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-selection-text-05-t-expected.txt
deleted file mode 100644
index da4422d5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-selection-text-05-t-expected.txt
+++ /dev/null
@@ -1,973 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [16, 523, 449, 77],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [186, 13, 128, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [520, 13, 127, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [353, 13, 127, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [266, 485, 113, 29],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [266, 201, 113, 21],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [428, 485, 104, 29],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [428, 201, 104, 21],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [590, 485, 95, 29],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [590, 201, 95, 21],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [376, 36, 81, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [16, 491, 79, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [16, 441, 79, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [16, 391, 79, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [16, 341, 79, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [16, 291, 79, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [16, 241, 79, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [16, 191, 79, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [16, 141, 79, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [16, 91, 79, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [590, 285, 62, 54],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [590, 435, 62, 29],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [590, 151, 62, 21],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [428, 285, 61, 54],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [266, 285, 61, 54],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [428, 435, 61, 29],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [266, 435, 61, 29],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [428, 151, 61, 21],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [266, 151, 61, 21],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [225, 36, 50, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [428, 335, 46, 54],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [590, 335, 45, 54],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [266, 335, 44, 54],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [563, 36, 41, 34],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [573, 235, 39, 54],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [411, 235, 39, 54],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [546, 101, 38, 21],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [250, 235, 37, 54],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [250, 385, 37, 45],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [398, 101, 37, 21],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [250, 101, 37, 21],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [565, 385, 29, 45],
-          "reason": "selection"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [411, 385, 29, 45],
-          "reason": "selection"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1.x 1.y'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4.x 1.y'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2.x 1.y'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1.x 4.y'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4.x 4.y'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2.x 4.y'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1.x 2.y'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4.x 2.y'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2.x 2.y'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'text-anchor'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'start'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1234'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '234'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '234'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '234'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'text-anchor'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'middle'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1234'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '234'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '234'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '234'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'text-anchor'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox 'end'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1234'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '234'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '234'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '1'",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '234'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGText text id='revision'",
-      "reason": "selection"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "selection"
-    },
-    {
-      "object": "InlineTextBox '$Revision: 1.8 $'",
-      "reason": "selection"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-viewbox-rescale-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-viewbox-rescale-expected.txt
deleted file mode 100644
index 54432484..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-viewbox-rescale-expected.txt
+++ /dev/null
@@ -1,187 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [59, 140, 95, 23],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [59, 140, 95, 23],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [59, 140, 95, 23],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [59, 140, 95, 23],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='inner2'",
-          "rect": [59, 140, 95, 23],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [59, 40, 95, 23],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [59, 40, 95, 23],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [59, 40, 95, 23],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [59, 40, 95, 23],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [59, 40, 95, 23],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='inner1'",
-          "rect": [59, 40, 95, 23],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 0, 8, 2],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 0, 8, 2],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [0, 0, 8, 2],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [0, 0, 8, 2],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [0, 0, 8, 2],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='inner1'",
-          "rect": [0, 0, 8, 2],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGViewportContainer svg id='inner1'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'PASS '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='inner2'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'PASS '",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt
deleted file mode 100644
index 614a0118..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/text-xy-updates-SVGList-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [808, 621],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [208, 13, 166, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text id='ttt'",
-          "rect": [208, 13, 166, 19],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [18, 193, 166, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGText text id='ttt'",
-          "rect": [18, 193, 166, 19],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGText text id='ttt'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Passes, if text is at 200x20'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/transform-changed-state-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/transform-changed-state-expected.txt
deleted file mode 100644
index 5f619ed..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/transform-changed-state-expected.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [108, 108, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [108, 108, 100, 100],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [108, 8, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [108, 8, 100, 100],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/transform-focus-ring-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/transform-focus-ring-repaint-expected.txt
deleted file mode 100644
index b16846c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/transform-focus-ring-repaint-expected.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV id='target'",
-      "position": [7, 57],
-      "bounds": [402, 542],
-      "backfaceVisibility": "hidden",
-      "backgroundColor": "#FFFF00",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [0, 0, 402, 542],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [0, 0, 200, 200],
-          "reason": "full"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV",
-      "bounds": [440, 300],
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [108, 158, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [0, 1, 0, 0],
-        [-1, 0, 0, 0],
-        [0, 0, 1, 0],
-        [0, 0, 0, 1]
-      ],
-      "origin": [150, 150]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/transform-foreign-object-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/transform-foreign-object-expected.txt
deleted file mode 100644
index a24c2b1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/transform-foreign-object-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [108, 8, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGForeignObject foreignObject",
-          "rect": [108, 8, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 8, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGForeignObject foreignObject",
-          "rect": [8, 8, 100, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGForeignObject foreignObject",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGForeignObject foreignObject",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/transform-text-element-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/transform-text-element-expected.txt
deleted file mode 100644
index 92a11e6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/transform-text-element-expected.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [8, 58, 400, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [8, 58, 400, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [8, 8, 400, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [8, 8, 400, 100],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Test'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Test'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/tspan-dynamic-positioning-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/tspan-dynamic-positioning-expected.txt
deleted file mode 100644
index 76b8efc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/tspan-dynamic-positioning-expected.txt
+++ /dev/null
@@ -1,80 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [200, 185, 251, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan id='ts'",
-          "rect": [200, 185, 251, 19],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [200, 185, 251, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [20, 5, 251, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan id='ts'",
-          "rect": [20, 5, 251, 19],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [20, 5, 251, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGText text",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan id='ts'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'This text should be at visible at 200,200'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/tspan-pattern-update-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/tspan-pattern-update-expected.txt
deleted file mode 100644
index fbfd43a6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/tspan-pattern-update-expected.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [8, 8, 300, 100],
-          "reason": "SVG resource change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "InlineTextBox 'Y'",
-      "reason": "SVG resource change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-clipped-hit-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-clipped-hit-expected.txt
deleted file mode 100644
index b529c25..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-clipped-hit-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [90, 115, 64, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGText text id='status'",
-          "rect": [90, 115, 64, 19],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [90, 115, 44, 19],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text id='status'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Passed'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-detach-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-detach-expected.txt
deleted file mode 100644
index da113fc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-detach-expected.txt
+++ /dev/null
@@ -1,252 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='use'",
-          "rect": [210, 57, 44, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='use'",
-          "rect": [210, 57, 44, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='use'",
-          "rect": [210, 57, 44, 65],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [210, 57, 44, 39],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [210, 57, 44, 39],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [210, 57, 44, 39],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [210, 57, 44, 39],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [210, 57, 44, 39],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [210, 57, 44, 39],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGText text id='use_text'",
-          "rect": [210, 57, 44, 39],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='use_text'",
-          "rect": [210, 57, 44, 39],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='use_text'",
-          "rect": [210, 57, 44, 39],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [218, 94, 28, 28],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [218, 94, 28, 28],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [218, 94, 28, 28],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGEllipse circle id='use_circle'",
-          "rect": [218, 94, 28, 28],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGEllipse circle id='use_circle'",
-          "rect": [218, 94, 28, 28],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGEllipse circle id='use_circle'",
-          "rect": [218, 94, 28, 28],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text id='use_text'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGEllipse circle id='use_circle'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGHiddenContainer g id='use'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='use'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='use_text'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'use'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGEllipse circle id='use_circle'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text id='use_text'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGEllipse circle id='use_circle'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='use'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGText text id='use_text'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGEllipse circle id='use_circle'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGHiddenContainer g id='use'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='use'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='use_text'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'use'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGEllipse circle id='use_circle'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-disappears-after-style-update-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-disappears-after-style-update-expected.txt
deleted file mode 100644
index f54ba2c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-disappears-after-style-update-expected.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [50, 10, 36, 36],
-          "reason": "SVG resource change"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 10, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [50, 10, 30, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 10, 30, 30],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [10, 10, 30, 30],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "SVG resource change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-inherit-style-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-inherit-style-expected.txt
deleted file mode 100644
index c892caa..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-inherit-style-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='g'",
-          "rect": [0, 0, 100, 60],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGContainer use",
-          "rect": [0, 0, 100, 60],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutSVGRect rect id='rect'",
-          "rect": [0, 0, 100, 60],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='g'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGContainer use",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutSVGRect rect id='rect'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-setAttribute-crash-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-setAttribute-crash-expected.txt
deleted file mode 100644
index c8ba024..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/use-setAttribute-crash-expected.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow body",
-          "rect": [8, 8, 784, 205],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer svg:use id='use'",
-          "rect": [33, 33, 50, 50],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGEllipse svg:circle id='circle'",
-          "rect": [33, 33, 50, 50],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRoot svg:svg id='svg'",
-          "rect": [33, 33, 50, 50],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='symbol'",
-          "rect": [33, 33, 50, 50],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGEllipse svg:circle id='circle'",
-          "rect": [53, 53, 10, 10],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='symbol'",
-          "rect": [53, 53, 10, 10],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGEllipse svg:circle id='circle'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='symbol'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow body",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGRoot svg:svg id='svg'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGContainer svg:use id='use'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='symbol'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGEllipse svg:circle id='circle'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/window-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/window-expected.txt
deleted file mode 100644
index 165ce95ec..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/window-expected.txt
+++ /dev/null
@@ -1,2015 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutSVGContainer g id='Windows'",
-          "rect": [38, 81, 760, 454],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer g id='Windows'",
-          "rect": [38, 92, 760, 443],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='bigWindow'",
-          "rect": [38, 143, 549, 392],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowMainGroupbigWindow'",
-          "rect": [38, 143, 549, 392],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [38, 143, 549, 392],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowTitlebarGroupbigWindow'",
-          "rect": [38, 143, 549, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='titleBarbigWindow'",
-          "rect": [38, 143, 549, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [38, 523, 549, 12],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='nestedWindow'",
-          "rect": [77, 182, 315, 236],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowMainGroupnestedWindow'",
-          "rect": [77, 182, 315, 236],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [77, 182, 315, 236],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowTitlebarGroupnestedWindow'",
-          "rect": [77, 182, 315, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='titleBarnestedWindow'",
-          "rect": [77, 182, 315, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [77, 406, 315, 12],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='navWindow'",
-          "rect": [613, 81, 185, 169],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGContainer g id='decoGroupnavWindow'",
-          "rect": [613, 81, 185, 159],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowTitlebarGroupnavWindow'",
-          "rect": [613, 81, 185, 159],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect id='decoGroupMinimizednavWindow'",
-          "rect": [613, 81, 185, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='navWindow'",
-          "rect": [624, 92, 174, 158],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowMainGroupnavWindow'",
-          "rect": [624, 92, 174, 158],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [624, 92, 174, 158],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='colourPickerWindow'",
-          "rect": [77, 195, 174, 143],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowMainGroupcolourPickerWindow'",
-          "rect": [77, 195, 174, 143],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [77, 195, 174, 143],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowTitlebarGroupcolourPickerWindow'",
-          "rect": [77, 195, 174, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='titleBarcolourPickerWindow'",
-          "rect": [77, 195, 174, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [624, 238, 174, 12],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [77, 326, 174, 12],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='textNavWindow'",
-          "rect": [632, 101, 159, 99],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='smallWindow'",
-          "rect": [312, 377, 158, 143],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowMainGroupsmallWindow'",
-          "rect": [312, 377, 158, 143],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [312, 377, 158, 143],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowTitlebarGroupsmallWindow'",
-          "rect": [312, 377, 158, 16],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='titleBarsmallWindow'",
-          "rect": [312, 377, 158, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [312, 508, 158, 12],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='statusWindow'",
-          "rect": [249, 344, 143, 64],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowMainGroupstatusWindow'",
-          "rect": [249, 344, 143, 64],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [249, 344, 143, 64],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowTitlebarGroupstatusWindow'",
-          "rect": [249, 344, 143, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect id='titleBarstatusWindow'",
-          "rect": [249, 344, 143, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='textSmallWindow'",
-          "rect": [320, 398, 136, 65],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [80, 326, 133, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [80, 326, 133, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [80, 182, 131, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [80, 182, 131, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [80, 406, 125, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [80, 406, 125, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [257, 364, 120, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [257, 364, 120, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [257, 364, 120, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [257, 364, 120, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [257, 364, 120, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [257, 364, 120, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='textStatusWindow'",
-          "rect": [257, 364, 120, 40],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='minimalWindow'",
-          "rect": [39, 476, 119, 48],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowMainGroupminimalWindow'",
-          "rect": [39, 476, 119, 48],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [39, 476, 119, 48],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g",
-          "rect": [43, 480, 115, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [43, 480, 115, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [43, 480, 115, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [43, 480, 115, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [43, 480, 115, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGTSpan tspan",
-          "rect": [43, 480, 115, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text id='textMinimalWindow'",
-          "rect": [43, 480, 115, 38],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [41, 524, 101, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [41, 524, 101, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [314, 508, 90, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [314, 508, 90, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [252, 344, 73, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [252, 344, 73, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [314, 378, 68, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [314, 378, 68, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [80, 196, 67, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [80, 196, 67, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [41, 143, 57, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [41, 143, 57, 15],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer g id='windowTitlebarGroupnavWindow'",
-          "rect": [756, 94, 37, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [627, 238, 33, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [627, 238, 33, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [613, 81, 16, 159],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGInlineText #text",
-          "rect": [615, 153, 13, 81],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGText text",
-          "rect": [615, 153, 13, 81],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtonnavWindow'",
-          "rect": [769, 94, 11, 11],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtonnavWindow'",
-          "rect": [769, 94, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [769, 94, 11, 11],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [769, 94, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [769, 94, 11, 11],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [769, 94, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtonbigWindow'",
-          "rect": [558, 145, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [558, 145, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [558, 145, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='closeButtonnestedWindow'",
-          "rect": [376, 184, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [376, 184, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [376, 184, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='closeButton'",
-          "rect": [376, 184, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtonnestedWindow'",
-          "rect": [363, 184, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [363, 184, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [363, 184, 11, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtonnavWindow'",
-          "rect": [756, 95, 11, 10],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtonnavWindow'",
-          "rect": [756, 95, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [756, 95, 11, 10],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [756, 95, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtonbigWindow'",
-          "rect": [545, 146, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [545, 146, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtonsmallWindow'",
-          "rect": [441, 380, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [441, 380, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [441, 380, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtonstatusWindow'",
-          "rect": [376, 346, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [376, 346, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [376, 346, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtonstatusWindow'",
-          "rect": [363, 346, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [363, 346, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtoncolourPickerWindow'",
-          "rect": [209, 198, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [209, 198, 11, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [756, 103, 11, 2],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [756, 103, 11, 2],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [545, 154, 11, 2],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [209, 206, 11, 2],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [363, 355, 11, 1],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='closeButtonnavWindow'",
-          "rect": [783, 94, 10, 11],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer use id='closeButtonnavWindow'",
-          "rect": [783, 94, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [783, 94, 10, 11],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [783, 94, 10, 11],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [783, 94, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [783, 94, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='closeButton'",
-          "rect": [783, 94, 10, 11],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='closeButton'",
-          "rect": [783, 94, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='closeButtonbigWindow'",
-          "rect": [572, 145, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [572, 145, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [572, 145, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='closeButton'",
-          "rect": [572, 145, 10, 11],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtonnavWindow'",
-          "rect": [616, 100, 10, 10],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [616, 100, 10, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [616, 100, 10, 10],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer use id='closeButtonnavWindow'",
-          "rect": [616, 84, 10, 10],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [616, 84, 10, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [616, 84, 10, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [616, 84, 10, 10],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='closeButton'",
-          "rect": [616, 84, 10, 10],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGContainer use id='closeButtonsmallWindow'",
-          "rect": [455, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [455, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [455, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [455, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='closeButton'",
-          "rect": [455, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtonsmallWindow'",
-          "rect": [428, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [428, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [428, 380, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtonnestedWindow'",
-          "rect": [350, 185, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [350, 185, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='closeButtoncolourPickerWindow'",
-          "rect": [236, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [236, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [236, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [236, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='closeButton'",
-          "rect": [236, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='maximizeButtoncolourPickerWindow'",
-          "rect": [223, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [223, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-          "rect": [223, 198, 10, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [783, 95, 10, 9],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [783, 95, 10, 9],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGContainer use id='minimizeButtonnavWindow'",
-          "rect": [616, 116, 10, 9],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [616, 116, 10, 9],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-          "rect": [616, 116, 10, 9],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [572, 146, 10, 9],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [350, 185, 10, 9],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [428, 388, 10, 2],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [350, 193, 10, 2],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGPath line",
-          "rect": [616, 124, 10, 1],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [364, 346, 9, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [210, 198, 9, 10],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [757, 95, 9, 9],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [757, 95, 9, 9],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [546, 146, 9, 9],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutSVGRect rect",
-          "rect": [377, 185, 9, 9],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutSVGContainer g id='Windows'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='navWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowMainGroupnavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='textNavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'This window should'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'contain navigation tools'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Click on button'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox ''Resize Navigation Window' for a'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'random resize of this Window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Note that this window also'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'features a window decoration'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Statusbar'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupnavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='closeButtonnavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='closeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='maximizeButtonnavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='minimizeButtonnavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='bigWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowMainGroupbigWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'This is a big movable window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='nestedWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowMainGroupnestedWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'This window contains other windows'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='colourPickerWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowMainGroupcolourPickerWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Changing a colour changes background'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupcolourPickerWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='titleBarcolourPickerWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Colour Picker'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='closeButtoncolourPickerWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='closeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='maximizeButtoncolourPickerWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='minimizeButtoncolourPickerWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='statusWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowMainGroupstatusWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='textStatusWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'This is a none-moveable'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'none-closeable status'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupstatusWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='titleBarstatusWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Status Window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='maximizeButtonstatusWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='minimizeButtonstatusWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupnestedWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='titleBarnestedWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Nested middlesize Window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='closeButtonnestedWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='closeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='maximizeButtonnestedWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='minimizeButtonnestedWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='smallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowMainGroupsmallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='textSmallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'This window has a callback'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'function indicating mouse'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'movements in the statusbar'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'and alerting window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'events'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Callback function is active'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupsmallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='titleBarsmallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Small Window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='closeButtonsmallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='closeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='maximizeButtonsmallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='minimizeButtonsmallWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='minimalWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowMainGroupminimalWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text id='textMinimalWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'This is a minimal window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'without title and status bar.'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGTSpan tspan",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'it is also not moveable'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupminimalWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupbigWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='titleBarbigWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Big Window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='closeButtonbigWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='closeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='maximizeButtonbigWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='minimizeButtonbigWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='Windows'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer g id='navWindow'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupnavWindow'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer g id='decoGroupnavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGRect rect id='decoGroupMinimizednavWindow'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGText text",
-      "reason": "appeared"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGInlineText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'Navigation Window'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer use id='closeButtonnavWindow'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='closeButton'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer use id='maximizeButtonnavWindow'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='maximizeButton'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer use id='minimizeButtonnavWindow'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGViewportContainer svg id='minimizeButton'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutSVGRect rect",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGPath line",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutSVGContainer g id='windowTitlebarGroupminimalWindow'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png
deleted file mode 100644
index 235f06c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/add-table-overpaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/add-table-overpaint-expected.txt
deleted file mode 100644
index 287be82e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/add-table-overpaint-expected.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [0, 312, 800, 156],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [0, 312, 156, 156],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableSection TBODY",
-          "rect": [0, 312, 156, 156],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [0, 314, 156, 152],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [2, 314, 152, 152],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/animated-row-background-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/animated-row-background-expected.txt
deleted file mode 100644
index 65c1fd1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/animated-row-background-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR id='row'",
-          "rect": [8, 10, 210, 102],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutImage IMG id='image'",
-          "rect": [8, 114, 50, 50],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR id='row'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutImage IMG id='image'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/border-collapse-change-collapse-to-separate-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/border-collapse-change-collapse-to-separate-expected.txt
deleted file mode 100644
index 6b3c603..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/border-collapse-change-collapse-to-separate-expected.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTable TABLE id='table'",
-          "rect": [8, 8, 220, 112],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableSection TBODY",
-          "rect": [8, 8, 220, 112],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 10, 220, 108],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 212, 108],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [118, 10, 108, 108],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 10, 106, 108],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [113, 9, 105, 105],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [9, 9, 104, 105],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTable TABLE id='table'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/border-collapse-change-separate-to-collapse-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/border-collapse-change-separate-to-collapse-expected.txt
deleted file mode 100644
index 6b3c603..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/border-collapse-change-separate-to-collapse-expected.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTable TABLE id='table'",
-          "rect": [8, 8, 220, 112],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableSection TBODY",
-          "rect": [8, 8, 220, 112],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 10, 220, 108],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 212, 108],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [118, 10, 108, 108],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 10, 106, 108],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [113, 9, 105, 105],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [9, 9, 104, 105],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTable TABLE id='table'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-69296-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-69296-expected.txt
deleted file mode 100644
index e299ab4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-69296-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR id='row1'",
-          "rect": [20, 20, 160, 51],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR id='row1'",
-          "rect": [20, 20, 160, 51],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR id='row1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR id='row1'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-cell-append-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-cell-append-expected.txt
deleted file mode 100644
index ee5cb08..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-cell-append-expected.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR id='row'",
-          "rect": [8, 8, 120, 56],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [8, 59, 120, 5],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [65, 8, 63, 56],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [67, 11, 58, 50],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 11, 57, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 10, 56, 50],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutTableRow TR id='row'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-cell-border-color-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-cell-border-color-expected.txt
deleted file mode 100644
index 08ad01a5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-cell-border-color-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 114, 54],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD id='foo'",
-          "rect": [10, 10, 56, 50],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD id='foo'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-cell-border-width-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-cell-border-width-expected.txt
deleted file mode 100644
index 13ab236..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-cell-border-width-expected.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 114, 54],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [8, 58, 114, 4],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTableCell TD id='foo'",
-          "rect": [10, 10, 56, 50],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [66, 10, 55, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [62, 9, 54, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD id='foo'",
-          "rect": [9, 9, 53, 50],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [116, 8, 6, 54],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD id='foo'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-cell-sl-border-color-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-cell-sl-border-color-expected.txt
deleted file mode 100644
index 0afcc65d2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-cell-sl-border-color-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 114, 54],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD id='foo'",
-          "rect": [10, 10, 56, 50],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='blockDiv'",
-          "rect": [90, 30, 20, 20],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [90, 30, 12, 19],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD id='foo'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='blockDiv'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-col-border-color-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-col-border-color-expected.txt
deleted file mode 100644
index ef07245..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-col-border-color-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCol COL id='col'",
-          "rect": [8, 8, 113, 104],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 59, 113, 53],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 113, 53],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCol COL id='col'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-col-border-width-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-col-border-width-expected.txt
deleted file mode 100644
index fe8d0c7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-col-border-width-expected.txt
+++ /dev/null
@@ -1,137 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCol COL id='col'",
-          "rect": [8, 8, 113, 104],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableSection TBODY",
-          "rect": [8, 8, 113, 104],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 59, 113, 53],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 113, 53],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [8, 108, 113, 4],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 58, 109, 52],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 60, 56, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 10, 56, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [66, 60, 54, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [66, 10, 54, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [9, 59, 54, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [9, 9, 54, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [63, 59, 53, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [63, 9, 53, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [116, 8, 5, 104],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutTableCol COL id='col'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-colgroup-border-color-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-colgroup-border-color-expected.txt
deleted file mode 100644
index ba20a9b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-colgroup-border-color-expected.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCol COLGROUP id='colgroup'",
-          "rect": [8, 8, 167, 104],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 59, 167, 53],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 167, 53],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCol COLGROUP id='colgroup'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-colgroup-border-width-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-colgroup-border-width-expected.txt
deleted file mode 100644
index abfd93f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-colgroup-border-width-expected.txt
+++ /dev/null
@@ -1,165 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCol COLGROUP id='colgroup'",
-          "rect": [8, 8, 167, 104],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableSection TBODY",
-          "rect": [8, 8, 167, 104],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 59, 167, 53],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 167, 53],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [8, 108, 167, 4],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 58, 162, 52],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [65, 60, 55, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [65, 10, 55, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 60, 55, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 10, 55, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [120, 60, 54, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [120, 10, 54, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [9, 59, 54, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [9, 9, 54, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [116, 59, 53, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [116, 9, 53, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [63, 59, 53, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [63, 9, 53, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [169, 8, 6, 104],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutTableCol COLGROUP id='colgroup'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-row-border-color-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-row-border-color-expected.txt
deleted file mode 100644
index c2156b9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-row-border-color-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR id='row'",
-          "rect": [8, 8, 60, 54],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 58, 60, 53],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR id='row'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-row-border-width-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-row-border-width-expected.txt
deleted file mode 100644
index d02ff82d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-row-border-width-expected.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR id='row'",
-          "rect": [8, 8, 60, 54],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 58, 60, 53],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [8, 109, 60, 2],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 60, 56, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 10, 56, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [9, 59, 54, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [9, 9, 54, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [62, 8, 6, 103],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutTableRow TR id='row'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-table-border-color-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-table-border-color-expected.txt
deleted file mode 100644
index a58fe86..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-table-border-color-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTable TABLE id='tbl'",
-          "rect": [8, 8, 60, 54],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 60, 54],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTable TABLE id='tbl'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-table-border-width-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-table-border-width-expected.txt
deleted file mode 100644
index c279e7c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-table-border-width-expected.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTable TABLE id='tbl'",
-          "rect": [8, 8, 60, 54],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 60, 54],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 10, 56, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [9, 9, 54, 50],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTable TABLE id='tbl'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-tbody-border-color-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-tbody-border-color-expected.txt
deleted file mode 100644
index dde1d55..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-tbody-border-color-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableSection TBODY id='tbody'",
-          "rect": [8, 8, 114, 104],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 108, 114, 53],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 59, 114, 53],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 114, 53],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY id='tbody'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-tbody-border-width-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-tbody-border-width-expected.txt
deleted file mode 100644
index 3846f964..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/cached-change-tbody-border-width-expected.txt
+++ /dev/null
@@ -1,165 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableSection TBODY id='tbody'",
-          "rect": [8, 8, 114, 104],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 108, 114, 53],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 59, 114, 53],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 114, 53],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [8, 159, 114, 2],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 58, 109, 52],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [65, 110, 55, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [65, 60, 55, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [65, 10, 55, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 110, 55, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 60, 55, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 10, 55, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [9, 109, 54, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [9, 59, 54, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [9, 9, 54, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [63, 109, 53, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [63, 59, 53, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [63, 9, 53, 50],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [115, 8, 7, 153],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutTableSection TBODY id='tbody'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/caret-contenteditable-content-after-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/caret-contenteditable-content-after-expected.txt
deleted file mode 100644
index 3677b2d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/caret-contenteditable-content-after-expected.txt
+++ /dev/null
@@ -1,187 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='editor'",
-          "rect": [7, 47, 786, 22],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='editor'",
-          "rect": [7, 47, 786, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='editor'",
-          "rect": [7, 47, 786, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='editor'",
-          "rect": [7, 47, 786, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 48, 22, 19],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 48, 15, 19],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [30, 48, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [23, 48, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [23, 48, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [15, 48, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [15, 48, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [8, 48, 8, 19],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTextFragment (anonymous)",
-          "rect": [8, 48, 8, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='editor'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='editor'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'a'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTextFragment (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='editor'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'ab'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutTextFragment (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='editor'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "Caret",
-      "reason": "caret"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'abc'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutTextFragment (anonymous)",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'x'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/collapsed-border-cell-resize-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/collapsed-border-cell-resize-expected.txt
deleted file mode 100644
index 11df92e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/collapsed-border-cell-resize-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 104, 204],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD id='target'",
-          "rect": [8, 111, 103, 100],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD id='target'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/collapsed-border-change-rowspan-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/collapsed-border-change-rowspan-expected.txt
deleted file mode 100644
index d291c39f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/collapsed-border-change-rowspan-expected.txt
+++ /dev/null
@@ -1,98 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [8, 8, 200, 300],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutTableRow TR id='row1'",
-          "rect": [8, 8, 200, 300],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableSection TBODY",
-          "rect": [8, 8, 200, 300],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableRow TR id='row3'",
-          "rect": [8, 207, 200, 101],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR id='row2'",
-          "rect": [8, 107, 200, 101],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD id='cell1'",
-          "rect": [8, 8, 99, 299],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutTableCell TD id='cell3'",
-          "rect": [8, 207, 99, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutTableCell TD id='cell2'",
-          "rect": [8, 107, 99, 100],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell TD id='cell3'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTableCell TD id='cell2'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR id='row1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD id='cell1'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutTableRow TR id='row2'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR id='row3'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-expected.txt
deleted file mode 100644
index 30a60e10..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCol COL id='target'",
-          "rect": [8, 28, 186, 134],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutTableCell TD",
-      "position": [72, 96],
-      "bounds": [59, 64]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCol COL id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-initial-empty-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-initial-empty-expected.txt
deleted file mode 100644
index 30a60e10..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-initial-empty-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCol COL id='target'",
-          "rect": [8, 28, 186, 134],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutTableCell TD",
-      "position": [72, 96],
-      "bounds": [59, 64]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCol COL id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-span-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-span-expected.txt
deleted file mode 100644
index c017344..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-span-expected.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCol COL id='target'",
-          "rect": [8, 28, 186, 134],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutTableCell TD",
-      "position": [72, 96],
-      "bounds": [59, 64]
-    },
-    {
-      "name": "LayoutTableCell TD",
-      "position": [133, 96],
-      "bounds": [59, 64]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCol COL id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-span-initial-empty-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-span-initial-empty-expected.txt
deleted file mode 100644
index c017344..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-col-span-initial-empty-expected.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCol COL id='target'",
-          "rect": [8, 28, 186, 134],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutTableCell TD",
-      "position": [72, 96],
-      "bounds": [59, 64]
-    },
-    {
-      "name": "LayoutTableCell TD",
-      "position": [133, 96],
-      "bounds": [59, 64]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCol COL id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-colgroup-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-colgroup-expected.txt
deleted file mode 100644
index b48688e1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-colgroup-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCol COLGROUP id='target'",
-          "rect": [8, 28, 186, 134],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutTableCell TD id='target'",
-      "position": [72, 96],
-      "bounds": [59, 64]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCol COLGROUP id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-colgroup-initial-empty-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-colgroup-initial-empty-expected.txt
deleted file mode 100644
index b48688e1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-colgroup-initial-empty-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCol COLGROUP id='target'",
-          "rect": [8, 28, 186, 134],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutTableCell TD id='target'",
-      "position": [72, 96],
-      "bounds": [59, 64]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCol COLGROUP id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-composited-row-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-composited-row-expected.txt
deleted file mode 100644
index 684626f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-composited-row-expected.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutTableRow TR id='target'",
-      "position": [8, 96],
-      "bounds": [186, 64],
-      "backgroundColor": "#ADD8E6",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR id='target'",
-          "rect": [0, 0, 186, 64],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutTableCell TD",
-      "position": [72, 96],
-      "bounds": [59, 64]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-composited-row-initial-empty-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-composited-row-initial-empty-expected.txt
deleted file mode 100644
index 684626f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-composited-row-initial-empty-expected.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutTableRow TR id='target'",
-      "position": [8, 96],
-      "bounds": [186, 64],
-      "backgroundColor": "#ADD8E6",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR id='target'",
-          "rect": [0, 0, 186, 64],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutTableCell TD",
-      "position": [72, 96],
-      "bounds": [59, 64]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-expected.txt
deleted file mode 100644
index 189d3c0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR id='target'",
-          "rect": [8, 96, 186, 64],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutTableCell TD",
-      "position": [72, 96],
-      "bounds": [59, 64]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-initial-empty-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-initial-empty-expected.txt
deleted file mode 100644
index 189d3c0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-initial-empty-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR id='target'",
-          "rect": [8, 96, 186, 64],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutTableCell TD",
-      "position": [72, 96],
-      "bounds": [59, 64]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-composited-row-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-composited-row-expected.txt
deleted file mode 100644
index d3a53ec..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-composited-row-expected.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutTableSection TBODY id='target'",
-      "position": [8, 28],
-      "bounds": [186, 134],
-      "backgroundColor": "#ADD8E6",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableSection TBODY id='target'",
-          "rect": [0, 0, 186, 134],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutTableRow TR",
-      "position": [8, 96],
-      "bounds": [186, 64]
-    },
-    {
-      "name": "LayoutTableCell TD",
-      "position": [72, 96],
-      "bounds": [59, 64]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-composited-row-initial-empty-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-composited-row-initial-empty-expected.txt
deleted file mode 100644
index d3a53ec..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-composited-row-initial-empty-expected.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutTableSection TBODY id='target'",
-      "position": [8, 28],
-      "bounds": [186, 134],
-      "backgroundColor": "#ADD8E6",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableSection TBODY id='target'",
-          "rect": [0, 0, 186, 134],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutTableRow TR",
-      "position": [8, 96],
-      "bounds": [186, 64]
-    },
-    {
-      "name": "LayoutTableCell TD",
-      "position": [72, 96],
-      "bounds": [59, 64]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-expected.txt
deleted file mode 100644
index 9b8c49e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-expected.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutTableSection TBODY id='target'",
-      "position": [8, 28],
-      "bounds": [186, 134],
-      "backgroundColor": "#ADD8E6",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableSection TBODY id='target'",
-          "rect": [0, 0, 186, 134],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutTableCell TD",
-      "position": [72, 96],
-      "bounds": [59, 64]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-initial-empty-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-initial-empty-expected.txt
deleted file mode 100644
index 9b8c49e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-background-section-initial-empty-expected.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutTableSection TBODY id='target'",
-      "position": [8, 28],
-      "bounds": [186, 134],
-      "backgroundColor": "#ADD8E6",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableSection TBODY id='target'",
-          "rect": [0, 0, 186, 134],
-          "reason": "style change"
-        }
-      ]
-    },
-    {
-      "name": "LayoutTableCell TD",
-      "position": [72, 96],
-      "bounds": [59, 64]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-row-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-row-expected.txt
deleted file mode 100644
index 46bbcba..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/composited-table-row-expected.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutTableRow TR",
-      "position": [8, 8],
-      "bounds": [74, 24],
-      "backgroundColor": "#FF0000",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCell TD id='target'",
-          "rect": [0, 0, 37, 23],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell TD id='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt
deleted file mode 100644
index 6a24b8b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/dynamic-table-vertical-alignment-change-expected.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [808, 585],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 77, 102, 99],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [12, 74, 100, 102],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow (floating) DIV id='target'",
-          "rect": [11, 75, 100, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [114, 74, 2, 102],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [14, 74, 2, 3],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (floating) DIV id='target'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/fixed-table-cell-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/fixed-table-cell-expected.txt
deleted file mode 100644
index a047754..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/fixed-table-cell-expected.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTable (positioned) TABLE",
-          "rect": [0, 0, 350, 350],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableSection TBODY",
-          "rect": [0, 0, 350, 350],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell (anonymous)",
-          "rect": [200, 200, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableCell TD id='moveMe' class='fixed'",
-          "rect": [200, 200, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) TD id='moveMe' class='fixed'",
-          "rect": [50, 200, 100, 100],
-          "reason": "appeared"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell TD id='moveMe' class='fixed'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTable (positioned) TABLE",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell (anonymous)",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) TD id='moveMe' class='fixed'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/fixed-table-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/fixed-table-overflow-expected.txt
deleted file mode 100644
index 5defc7b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/fixed-table-overflow-expected.txt
+++ /dev/null
@@ -1,102 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTable (positioned) TABLE",
-          "rect": [0, 0, 200, 200],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableSection TBODY",
-          "rect": [0, 0, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) TD id='moveMe' class='fixed'",
-          "rect": [100, 100, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableCell (anonymous)",
-          "rect": [100, 100, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableCell TD id='moveMe' class='fixed'",
-          "rect": [100, 100, 100, 100],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='green'",
-          "rect": [0, 100, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='green'",
-          "rect": [0, 100, 100, 100],
-          "reason": "disappeared"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='green'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTableCell TD id='moveMe' class='fixed'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTable (positioned) TABLE",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell (anonymous)",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) TD id='moveMe' class='fixed'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='green'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/fixed-table-overflow-zindex-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/fixed-table-overflow-zindex-expected.txt
deleted file mode 100644
index 111fd17f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/fixed-table-overflow-zindex-expected.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTable (positioned) TABLE",
-          "rect": [0, 0, 200, 200],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableSection TBODY",
-          "rect": [0, 0, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) TD id='moveMe' class='fixed'",
-          "rect": [100, 100, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableCell (anonymous)",
-          "rect": [0, 100, 100, 100],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableCell TD id='moveMe' class='fixed'",
-          "rect": [0, 100, 100, 100],
-          "reason": "disappeared"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -100, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell TD id='moveMe' class='fixed'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTable (positioned) TABLE",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell (anonymous)",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) TD id='moveMe' class='fixed'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/input-overflow-in-table-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/input-overflow-in-table-expected.txt
deleted file mode 100644
index 0aca0a882..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/input-overflow-in-table-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='test'",
-          "rect": [7, 7, 102, 22],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='test'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/invalidate-cell-in-row-with-offset-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/invalidate-cell-in-row-with-offset-expected.txt
deleted file mode 100644
index 1b90796..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/invalidate-cell-in-row-with-offset-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutTableRow TR",
-      "position": [8, 18],
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "LayoutTableRow TR",
-      "position": [8, 28],
-      "bounds": [234, 102],
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "LayoutTableRow TR class='shadow-inset'",
-      "position": [8, 140],
-      "bounds": [234, 102],
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCell TD id='target'",
-          "rect": [10, 0, 102, 102],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell TD id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/invisible-col-visible-td-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/invisible-col-visible-td-expected.txt
deleted file mode 100644
index 480ab54..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/invisible-col-visible-td-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCol COL id='col'",
-          "rect": [8, 8, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCol COL id='col'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/invisible-tbody-visible-td-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/invisible-tbody-visible-td-expected.txt
deleted file mode 100644
index e1df7250..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/invisible-tbody-visible-td-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableSection TBODY id='tbody'",
-          "rect": [8, 8, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY id='tbody'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/invisible-tr-visible-td-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/invisible-tr-visible-td-expected.txt
deleted file mode 100644
index 7c533d893..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/invisible-tr-visible-td-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR id='row'",
-          "rect": [8, 8, 200, 200],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR id='row'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/no-caret-repaint-in-non-content-editable-element-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/no-caret-repaint-in-non-content-editable-element-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/no-caret-repaint-in-non-content-editable-element-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/repaint-table-row-in-composited-document-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/repaint-table-row-in-composited-document-expected.txt
deleted file mode 100644
index 12cc017c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/repaint-table-row-in-composited-document-expected.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [256, 306, 204, 104],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [256, 156, 204, 104],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD id='target'",
-          "rect": [52, 154, 202, 150],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [52, 306, 202, 104],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [52, 156, 202, 104],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell TD id='target'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/replace-col-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/replace-col-expected.txt
deleted file mode 100644
index 15a6ca7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/replace-col-expected.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [8, 82, 56, 74],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutTableCol COL",
-          "rect": [8, 82, 56, 74],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableCol COL id='col'",
-          "rect": [8, 82, 56, 74],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCol COL id='col'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutTableSection THEAD",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableSection TFOOT",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCol COL",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/resize-table-repaint-percent-size-cell-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/resize-table-repaint-percent-size-cell-expected.txt
deleted file mode 100644
index ea07c34..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/resize-table-repaint-percent-size-cell-expected.txt
+++ /dev/null
@@ -1,120 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [0, 292, 106, 236],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [0, 100, 106, 190],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [0, 102, 106, 46],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [2, 52, 102, 238],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [2, 292, 102, 236],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [2, 102, 102, 46],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [3, 400, 46, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [3, 161, 46, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [3, 115, 46, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [3, 66, 46, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'ROW1'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'ROW2'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/resize-table-repaint-vertical-align-cell-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/resize-table-repaint-vertical-align-cell-expected.txt
deleted file mode 100644
index 0541ec5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/resize-table-repaint-vertical-align-cell-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [2, 52, 102, 476],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [3, 280, 63, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [3, 90, 63, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'MIDDLE'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/resize-table-row-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/resize-table-row-repaint-expected.txt
deleted file mode 100644
index c93043a4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/resize-table-row-repaint-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [2, 102, 102, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [3, 192, 63, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [3, 142, 63, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'MIDDLE'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/row-change-background-rowspan-cell-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/row-change-background-rowspan-cell-expected.txt
deleted file mode 100644
index a371826e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/row-change-background-rowspan-cell-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR id='target'",
-          "rect": [8, 298, 110, 106],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/scroll-inside-table-cell-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/scroll-inside-table-cell-expected.txt
deleted file mode 100644
index 73414c1e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/scroll-inside-table-cell-expected.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCell (relative positioned) TD id='cellToScroll' class='relative'",
-          "rect": [312, 112, 454, 469],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-          "rect": [314, 114, 435, 450],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='relative red'",
-          "rect": [314, 114, 435, 450],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutTableCell (relative positioned) TD id='cellToScroll' class='relative'",
-          "rect": [314, 564, 435, 15],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell (relative positioned) TD id='cellToScroll' class='relative'",
-      "reason": "full"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='relative red'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/scroll-relative-table-inside-table-cell-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/scroll-relative-table-inside-table-cell-expected.txt
deleted file mode 100644
index a6fd3df..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/scroll-relative-table-inside-table-cell-expected.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1566, 1781],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCell (relative positioned) TD id='cellToScroll' class='relative'",
-          "rect": [1112, 1312, 454, 469],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-          "rect": [1114, 1314, 435, 450],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='relative red'",
-          "rect": [1114, 1314, 435, 450],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutTableCell (relative positioned) TD id='cellToScroll' class='relative'",
-          "rect": [1114, 1764, 435, 15],
-          "reason": "scroll control"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-766, -1181, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell (relative positioned) TD id='cellToScroll' class='relative'",
-      "reason": "full"
-    },
-    {
-      "object": "HorizontalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='relative red'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='absolute green'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt
deleted file mode 100644
index 2381bff..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 585],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [1059, 585],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 72, 836, 190],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 72, 836, 190],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 72, 836, 190],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 72, 836, 190],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Col 1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Col 1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Col 1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Col 1'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-cell-collapsed-border-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-cell-collapsed-border-expected.txt
deleted file mode 100644
index ba43044..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-cell-collapsed-border-expected.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [3, 264, 441, 110],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [3, 166, 441, 108],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [3, 364, 441, 105],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 64, 436, 108],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD id='t3'",
-          "rect": [225, 269, 112, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD id='t1'",
-          "rect": [225, 69, 112, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD id='t2'",
-          "rect": [8, 269, 110, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD id='t1'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD id='t2'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD id='t3'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-cell-move-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-cell-move-expected.txt
deleted file mode 100644
index feeecd34..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-cell-move-expected.txt
+++ /dev/null
@@ -1,80 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 206, 60, 180],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 146, 60, 180],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 326, 60, 60],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 266, 60, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [8, 206, 60, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 146, 60, 60],
-          "reason": "appeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTableCell TD id='s'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-cell-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-cell-overflow-expected.txt
deleted file mode 100644
index 1da7981..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-cell-overflow-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [111, 9, 100, 100],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-col-background-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-col-background-expected.txt
deleted file mode 100644
index 48c82598..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-col-background-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCol COL id='col'",
-          "rect": [8, 108, 106, 104],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCol COL id='col'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-col-background-offset-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-col-background-offset-expected.txt
deleted file mode 100644
index 1f29bba..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-col-background-offset-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableCol COL id='col'",
-          "rect": [8, 108, 210, 104],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCol COL id='col'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-collapsed-border-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-collapsed-border-expected.txt
deleted file mode 100644
index f58541e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-collapsed-border-expected.txt
+++ /dev/null
@@ -1,388 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [8, 194, 108, 82],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutTableSection TBODY",
-          "rect": [8, 194, 108, 82],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableRow TR id='r2'",
-          "rect": [8, 224, 108, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [8, 102, 99, 82],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutTableSection TBODY",
-          "rect": [8, 102, 99, 82],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 338, 99, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 286, 99, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 154, 99, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 102, 99, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 316, 99, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableRow TR id='r'",
-          "rect": [8, 132, 99, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE id='t'",
-          "rect": [8, 10, 95, 82],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 62, 95, 30],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 10, 95, 30],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 40, 95, 22],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD id='d2'",
-          "rect": [22, 224, 90, 22],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [22, 338, 81, 26],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [22, 290, 81, 26],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [22, 154, 81, 26],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [22, 106, 81, 26],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD id='d3'",
-          "rect": [22, 316, 81, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD id='d'",
-          "rect": [22, 132, 81, 22],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [23, 317, 76, 19],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [23, 133, 76, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [23, 339, 49, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [23, 155, 49, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [23, 295, 43, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [23, 111, 43, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [23, 225, 34, 19],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [76, 286, 31, 82],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [12, 224, 10, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [12, 132, 10, 22],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [17, 225, 4, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [17, 133, 4, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTableCell TD id='d'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTableCell TD id='d2'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTable TABLE id='t'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Lorem'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR id='r'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'sit amet'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR id='r2'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '\u00A0'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'Lorem'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD id='d3'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'ipsum dolor'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'sit amet'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-extra-bottom-grow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-extra-bottom-grow-expected.txt
deleted file mode 100644
index 58ba65a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-extra-bottom-grow-expected.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-outer-border-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-outer-border-expected.txt
deleted file mode 100644
index db3fcfe..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-outer-border-expected.txt
+++ /dev/null
@@ -1,134 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTable TABLE id='table'",
-          "rect": [8, 8, 132, 149],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutTable TABLE id='table' class='green'",
-          "rect": [8, 8, 132, 149],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableSection TBODY",
-          "rect": [8, 8, 132, 149],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableSection TBODY",
-          "rect": [8, 8, 132, 149],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 75, 132, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 75, 132, 82],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 132, 82],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 8, 132, 82],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [15, 82, 117, 67],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [15, 82, 117, 67],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [15, 15, 117, 67],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [15, 15, 117, 67],
-          "reason": "disappeared"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTable TABLE id='table'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTable TABLE id='table' class='green'",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "appeared"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-overflow-auto-in-overflow-auto-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-overflow-auto-in-overflow-auto-scrolled-expected.txt
deleted file mode 100644
index 274eefd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-overflow-auto-in-overflow-auto-scrolled-expected.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='innerDiv'",
-          "rect": [8, 8, 769, 300],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 8, 302, 300],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 8, 302, 300],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='innerDiv'",
-          "rect": [762, 8, 15, 300],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='innerDiv'",
-      "reason": "full"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-overflow-scroll-in-overflow-scroll-scrolled-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-overflow-scroll-in-overflow-scroll-scrolled-expected.txt
deleted file mode 100644
index 274eefd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-overflow-scroll-in-overflow-scroll-scrolled-expected.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='innerDiv'",
-          "rect": [8, 8, 769, 300],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 8, 302, 300],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 8, 302, 300],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='innerDiv'",
-          "rect": [762, 8, 15, 300],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='innerDiv'",
-      "reason": "full"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-row-bg-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-row-bg-change-expected.txt
deleted file mode 100644
index 9cf5dda..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-row-bg-change-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR id='first'",
-          "rect": [8, 10, 200, 97],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR id='first'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-row-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-row-expected.txt
deleted file mode 100644
index b779611..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-row-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR id='target' class='green'",
-          "rect": [8, 10, 106, 100],
-          "reason": "style change"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [10, 10, 102, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR id='target' class='green'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-section-overflow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-section-overflow-expected.txt
deleted file mode 100644
index 8ba704d8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-section-overflow-expected.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [33, 58, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [33, 8, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [58, 58, 50, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [58, 8, 50, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableSection TBODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-section-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-section-repaint-expected.txt
deleted file mode 100644
index 8ca3135..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-section-repaint-expected.txt
+++ /dev/null
@@ -1,226 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 353, 60, 38],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 338, 60, 38],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 323, 60, 38],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [8, 308, 60, 38],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD class='red half'",
-          "rect": [8, 248, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD class='green half'",
-          "rect": [8, 218, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD class='red half'",
-          "rect": [8, 218, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD class='green half'",
-          "rect": [8, 188, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD class='green half'",
-          "rect": [8, 158, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD class='green half'",
-          "rect": [8, 128, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD class='red half'",
-          "rect": [8, 128, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='top' class='blue half'",
-          "rect": [8, 98, 60, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 98, 60, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutTableCell TD class='red half'",
-          "rect": [8, 98, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD class='green half'",
-          "rect": [8, 68, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD class='green half'",
-          "rect": [8, 38, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD class='red half'",
-          "rect": [8, 38, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow CAPTION id='caption1' class='blue half'",
-          "rect": [8, 8, 60, 30],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutTableCell TD class='red half'",
-          "rect": [8, 8, 60, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTable TABLE",
-          "rect": [8, 372, 60, 19],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTableCell TD class='half'",
-          "rect": [12, 357, 52, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD class='half'",
-          "rect": [12, 342, 52, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD class='half'",
-          "rect": [12, 327, 52, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD class='half'",
-          "rect": [12, 312, 52, 30],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow CAPTION id='caption1' class='blue half'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD class='red half'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD class='green half'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='top' class='blue half'",
-      "reason": "disappeared"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD class='red half'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD class='green half'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD class='green half'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD class='red half'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTable TABLE",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD class='half'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD class='half'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-shrink-row-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-shrink-row-repaint-expected.txt
deleted file mode 100644
index 894951d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-shrink-row-repaint-expected.txt
+++ /dev/null
@@ -1,476 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 850],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 850, 785, 200],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutTableCell TD id='resizeMe'",
-          "rect": [8, 117, 769, 205],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 982, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 922, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 862, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 802, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 782, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 742, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 722, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 682, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 662, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 622, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 602, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 562, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 542, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 502, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 482, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 442, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 422, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 382, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 362, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 322, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 302, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 242, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 182, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutTableCell TD",
-          "rect": [8, 122, 769, 60],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 1002, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 942, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 882, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 822, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 802, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 742, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 682, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 622, 16, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 762, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 702, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 642, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 582, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 562, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 522, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 502, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 462, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 442, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 402, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 382, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 342, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 322, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 262, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 202, 8, 19],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [13, 142, 8, 19],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutTableCell TD id='resizeMe'",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '2'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '3'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '4'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '5'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '6'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '7'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '8'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '9'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '10'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '11'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '12'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutTableCell TD",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox '13'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-two-pass-layout-overpaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-two-pass-layout-overpaint-expected.txt
deleted file mode 100644
index 7fb4223..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-two-pass-layout-overpaint-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [61, 45, 50, 25],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-with-padding-row-invalidation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-with-padding-row-invalidation-expected.txt
deleted file mode 100644
index 4a060e37..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/table/table-with-padding-row-invalidation-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutTableRow TR",
-          "rect": [0, 0, 260, 50],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutTableRow TR",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/text-append-dirty-lines-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/text-append-dirty-lines-expected.txt
deleted file mode 100644
index 717e24e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/text-append-dirty-lines-expected.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [7, 44, 757, 139],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse placerat. Morbi tristique. Mauris eu lacus sed felis'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'pellentesque cursus. Proin vitae nulla. Vivamus in ipsum. Etiam mi. Nam malesuada purus in sem. Sed eget elit vel erat'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'laoreet feugiat. Phasellus mollis pulvinar mi. Etiam ut neque sed eros egestas laoreet. Vestibulum ullamcorper, nulla non'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'feugiat molestie, mi lorem bibendum leo, ac gravida orci nunc nec nulla. Nunc nunc lorem, rhoncus et, rutrum ac,'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'fermentum ut, tortor. Sed rhoncus. Quisque enim metus, luctus tincidunt, vestibulum eu, vestibulum eu, libero. Mauris'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'sagittis aliquam nunc. Nullam pharetra molestie eros. Donec tempus purus ut ligula. Phasellus non nisl. Etiam eu mauris.'",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'Curabitur a velit.'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/text-match-document-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/text-match-document-change-expected.txt
deleted file mode 100644
index f8b51d82..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/text-match-document-change-expected.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='to-be-changed'",
-          "rect": [18, 130, 269, 40],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [18, 130, 251, 39],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [18, 130, 82, 19],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [295, 102, 15, 400],
-          "reason": "scroll control"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "disappeared"
-    },
-    {
-      "object": "VerticalScrollbar",
-      "reason": "scroll control"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='to-be-changed'",
-      "reason": "full"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "appeared"
-    },
-    {
-      "object": "InlineTextBox 'After change'",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/caret-with-transformation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/caret-with-transformation-expected.txt
deleted file mode 100644
index bb1d0e7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/caret-with-transformation-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='div'",
-          "rect": [337, 206, 11, 18],
-          "reason": "caret"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='div'",
-          "rect": [42, 36, 11, 18],
-          "reason": "caret"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Caret",
-      "reason": "caret"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/change-transform-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/change-transform-expected.txt
deleted file mode 100644
index a550b9e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/change-transform-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='square'",
-          "rect": [10, 10, 100, 100],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='square'",
-          "rect": [35, 35, 50, 50],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='square'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='square'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/invalidation-with-scale-transform-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/invalidation-with-scale-transform-expected.txt
deleted file mode 100644
index 002472c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/invalidation-with-scale-transform-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [85, 70, 91, 92],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='target'",
-          "rect": [84, 70, 91, 92],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='target'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/resize-skewed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/resize-skewed-expected.txt
deleted file mode 100644
index 74dbee4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/resize-skewed-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='skewed'",
-          "rect": [0, 50, 700, 500],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='skewed'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/subpixel-offset-scaled-transform-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/subpixel-offset-scaled-transform-expected.txt
deleted file mode 100644
index e57c1e5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/subpixel-offset-scaled-transform-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='child scale'",
-          "rect": [9, 58, 40, 40],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='child scale'",
-          "rect": [8, 58, 40, 40],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='child scale'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/subtree-layoutstate-transform-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/subtree-layoutstate-transform-expected.txt
deleted file mode 100644
index 78900fec..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/subtree-layoutstate-transform-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV class='layoutroot'",
-          "rect": [28, 48, 200, 200],
-          "reason": "background"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [28, 48, 200, 200],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV class='layoutroot'",
-      "reason": "background"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-disable-layoutstate-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-disable-layoutstate-expected.txt
deleted file mode 100644
index 061756b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-disable-layoutstate-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [58, 152, 500, 49],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [58, 256, 500, 45],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-inline-layered-child-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-inline-layered-child-expected.txt
deleted file mode 100644
index 5e2de92..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-inline-layered-child-expected.txt
+++ /dev/null
@@ -1,240 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='box'",
-          "rect": [61, 87, 178, 206],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutInline (relative positioned) SPAN id='child'",
-          "rect": [135, 360, 160, 196],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [135, 361, 159, 195],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='box'",
-          "rect": [100, 100, 100, 180],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutInline (relative positioned) SPAN id='child'",
-          "rect": [300, 300, 80, 179],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [300, 302, 80, 177],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='box'",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutInline (relative positioned) SPAN id='child'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'A B C'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'D E F'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'G H I'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'J K L'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'M N O'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'P Q R'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'S T U'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'V W X'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Y Z'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='box'",
-      "reason": "subtree"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutInline (relative positioned) SPAN id='child'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineFlowBox",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'A B C'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'D E F'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'G H I'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'J K L'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'M N O'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'P Q R'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'S T U'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'V W X'",
-      "reason": "subtree"
-    },
-    {
-      "object": "InlineTextBox 'Y Z'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-layout-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-layout-repaint-expected.txt
deleted file mode 100644
index ef29280..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-layout-repaint-expected.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [40, 50, 208, 118],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [52, 51, 43, 32],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "full"
-    },
-    {
-      "object": "InlineTextBox 'PASS'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-repaint-descendants-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-repaint-descendants-expected.txt
deleted file mode 100644
index d78852c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-repaint-descendants-expected.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [176, 220, 394, 185],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [176, 220, 388, 203],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV id='box'",
-          "rect": [76, 120, 266, 266],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV id='box'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-replaced-shadows-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-replaced-shadows-expected.txt
deleted file mode 100644
index 1b6ec86c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-replaced-shadows-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutImage IMG id='box' class='smaller'",
-          "rect": [-10, 28, 276, 278],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutImage IMG id='box' class='smaller'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-rotate-and-remove-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-rotate-and-remove-expected.txt
deleted file mode 100644
index a6fdd73..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-rotate-and-remove-expected.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='rel'",
-          "rect": [8, 8, 220, 70],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='rel'",
-          "rect": [20, -64, 196, 214],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='rel'",
-      "reason": "subtree"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='rel'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-translate-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-translate-expected.txt
deleted file mode 100644
index 0a45847f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/transform/transform-translate-expected.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [28, 66, 106, 107],
-          "reason": "subtree"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [8, 66, 106, 107],
-          "reason": "subtree"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "subtree"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-align-length1-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-align-length1-expected.txt
deleted file mode 100644
index 12f309d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-align-length1-expected.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 800, 155],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [20, 0, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [120, 130, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [120, 100, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [0, 130, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [0, 100, 20, 20],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-align-length2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-align-length2-expected.txt
deleted file mode 100644
index 2999c19..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-align-length2-expected.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 800, 205],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [300, 0, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [0, 0, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [200, 80, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [200, 50, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-align1-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-align1-expected.txt
deleted file mode 100644
index 0adb76e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-align1-expected.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 800, 105],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [20, 0, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [120, 80, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [120, 33, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [0, 80, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [0, 33, 20, 20],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-align2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-align2-expected.txt
deleted file mode 100644
index 72c66bc..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-align2-expected.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [0, 0, 800, 247],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [300, 0, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='other'",
-          "rect": [0, 0, 200, 200],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [200, 147, 100, 100],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow DIV id='target'",
-          "rect": [200, 100, 100, 100],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='target'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='other'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-rl-as-paint-container-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-rl-as-paint-container-expected.txt
deleted file mode 100644
index 6250bb6..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/vertical-rl-as-paint-container-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='target'",
-      "position": [8, 8],
-      "bounds": [600, 400],
-      "backfaceVisibility": "hidden",
-      "paintInvalidations": [
-        {
-          "object": "LayoutText #text",
-          "rect": [520, 0, 80, 340],
-          "reason": "style change"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutText #text",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'Lorem ipsum dolor'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'sit amet,'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'consectetur'",
-      "reason": "style change"
-    },
-    {
-      "object": "InlineTextBox 'adipiscing elit.'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/video-mute-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/video-mute-repaint-expected.txt
deleted file mode 100644
index 5f440767..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/video-mute-repaint-expected.txt
+++ /dev/null
@@ -1,102 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutVideo VIDEO id='v'",
-      "position": [8, 8],
-      "bounds": [700, 525],
-      "drawsContent": false
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutFlexibleBox (relative positioned) DIV class='phase-ready state-stopped'",
-      "position": [8, 8],
-      "bounds": [700, 525],
-      "paintInvalidations": [
-        {
-          "object": "LayoutFlexibleBox (relative positioned) DIV class='phase-ready state-stopped'",
-          "rect": [0, 0, 700, 525],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutFlexibleBox (relative positioned) DIV)",
-      "position": [8, 8],
-      "bounds": [700, 525],
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [580, 508, 70, 2],
-          "reason": "disappeared"
-        },
-        {
-          "object": "LayoutFlexibleBox DIV",
-          "rect": [580, 508, 70, 2],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='thumb'",
-          "rect": [632, 485, 36, 48],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='thumb'",
-          "rect": [562, 485, 36, 48],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutButton INPUT class='muted'",
-          "rect": [530, 493, 32, 32],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutVideo VIDEO id='v'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutFlexibleBox (relative positioned) DIV class='phase-ready state-stopped'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutButton INPUT class='muted'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutFlexibleBox DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='thumb'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "disappeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/video-paint-invalidation-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/video-paint-invalidation-expected.txt
deleted file mode 100644
index 14be5e2f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/video-paint-invalidation-expected.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutVideo VIDEO id='video'",
-      "position": [8, 8],
-      "bounds": [320, 240],
-      "drawsContent": false
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutFlexibleBox (relative positioned) DIV class='sizing-small phase-ready state-stopped'",
-      "position": [8, 8],
-      "bounds": [320, 240]
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutFlexibleBox (relative positioned) DIV)",
-      "position": [8, 8],
-      "bounds": [320, 240]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutVideo VIDEO id='video'",
-      "reason": "full"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/video-unmute-repaint-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/video-unmute-repaint-expected.txt
deleted file mode 100644
index 7126aa4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/video-unmute-repaint-expected.txt
+++ /dev/null
@@ -1,102 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutVideo VIDEO id='v'",
-      "position": [8, 8],
-      "bounds": [700, 525],
-      "drawsContent": false
-    },
-    {
-      "name": "Squashing Containment Layer",
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutFlexibleBox (relative positioned) DIV class='phase-ready state-stopped'",
-      "position": [8, 8],
-      "bounds": [700, 525],
-      "paintInvalidations": [
-        {
-          "object": "LayoutFlexibleBox (relative positioned) DIV class='phase-ready state-stopped'",
-          "rect": [0, 0, 700, 525],
-          "reason": "geometry"
-        }
-      ]
-    },
-    {
-      "name": "Squashing Layer (first squashed layer: LayoutFlexibleBox (relative positioned) DIV)",
-      "position": [8, 8],
-      "bounds": [700, 525],
-      "paintInvalidations": [
-        {
-          "object": "LayoutFlexibleBox DIV",
-          "rect": [580, 508, 70, 2],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='thumb'",
-          "rect": [597, 485, 36, 48],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV id='thumb'",
-          "rect": [562, 485, 36, 48],
-          "reason": "full"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [580, 508, 35, 2],
-          "reason": "appeared"
-        },
-        {
-          "object": "LayoutButton INPUT",
-          "rect": [530, 493, 32, 32],
-          "reason": "full"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutVideo VIDEO id='v'",
-      "reason": "style change"
-    },
-    {
-      "object": "LayoutFlexibleBox (relative positioned) DIV class='phase-ready state-stopped'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutButton INPUT",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutFlexibleBox DIV",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV id='thumb'",
-      "reason": "full"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "appeared"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-background-image-fixed-centered-composited-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-background-image-fixed-centered-composited-expected.txt
deleted file mode 100644
index be93e98..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-background-image-fixed-centered-composited-expected.txt
+++ /dev/null
@@ -1,133 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 600, 500],
-          "reason": "background"
-        }
-      ]
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [600, 250],
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "background"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 600, 250],
-          "reason": "background"
-        }
-      ]
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 250],
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "background"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 400, 600],
-          "reason": "background"
-        }
-      ]
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 600],
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "background"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 800, 600],
-          "reason": "background"
-        }
-      ]
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "background"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-background-image-fixed-centered-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-background-image-fixed-centered-expected.txt
deleted file mode 100644
index 22e1c43..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-background-image-fixed-centered-expected.txt
+++ /dev/null
@@ -1,153 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [600, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 600, 500],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "background"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 600, 250],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "background"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 400, 600],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "background"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 800, 600],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "background"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-background-image-generated-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-background-image-generated-expected.txt
deleted file mode 100644
index 22e1c43..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-background-image-generated-expected.txt
+++ /dev/null
@@ -1,153 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [600, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 600, 500],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "background"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 600, 250],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "background"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 400, 600],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "background"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 800, 600],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "background"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-background-image-non-fixed-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-background-image-non-fixed-expected.txt
deleted file mode 100644
index 5d87613..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-background-image-non-fixed-expected.txt
+++ /dev/null
@@ -1,153 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [600, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 600, 250],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [400, 0, 200, 250],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 400, 350],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [400, 0, 400, 600],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-centered-inline-under-fixed-pos-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-centered-inline-under-fixed-pos-expected.txt
deleted file mode 100644
index 946d704..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-centered-inline-under-fixed-pos-expected.txt
+++ /dev/null
@@ -1,287 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [600, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='container'",
-          "rect": [0, 0, 600, 500],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 600, 250],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 0, 6, 500],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-          "rect": [0, 250, 6, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-          "rect": [0, 125, 6, 30],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='container'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='container'",
-          "rect": [0, 0, 600, 250],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [400, 0, 200, 250],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 0, 6, 250],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-          "rect": [0, 125, 6, 30],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='container'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='container'",
-          "rect": [0, 0, 400, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 400, 350],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 0, 6, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-          "rect": [0, 300, 6, 30],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-          "rect": [0, 125, 6, 30],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='container'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutBlockFlow (positioned) DIV class='container'",
-          "rect": [0, 0, 800, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [400, 0, 400, 600],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow DIV class='parent'",
-          "rect": [0, 0, 6, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-          "rect": [0, 300, 6, 30],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV class='container'",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow DIV class='parent'",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow (relative positioned) DIV class='child'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-frameset-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-frameset-expected.txt
deleted file mode 100644
index dc81d470..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-frameset-expected.txt
+++ /dev/null
@@ -1,477 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [600, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutFrameSet FRAMESET",
-          "rect": [0, 0, 600, 500],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 600, 250],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [153, 0, 294, 500],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [153, 250, 294, 250],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [453, 0, 147, 500],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [0, 0, 147, 500],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [453, 250, 147, 250],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 147, 250],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutFrameSet FRAMESET",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutFrame FRAME",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutFrame FRAME",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutFrame FRAME",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutFrameSet FRAMESET",
-          "rect": [0, 0, 600, 250],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [153, 0, 294, 250],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [153, 0, 294, 250],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [400, 0, 200, 250],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [103, 0, 194, 250],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [103, 0, 194, 250],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [453, 0, 147, 250],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [453, 0, 147, 250],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [0, 0, 147, 250],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [303, 0, 97, 250],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [303, 0, 97, 250],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [97, 0, 50, 250],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutFrameSet FRAMESET",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutFrame FRAME",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutFrame FRAME",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutFrame FRAME",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutFrameSet FRAMESET",
-          "rect": [0, 0, 400, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 400, 350],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [103, 0, 194, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [103, 250, 194, 350],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [303, 0, 97, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [0, 0, 97, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [303, 250, 97, 350],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 97, 350],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutFrameSet FRAMESET",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutFrame FRAME",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutFrame FRAME",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutFrame FRAME",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutFrameSet FRAMESET",
-          "rect": [0, 0, 800, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [400, 0, 400, 600],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [203, 0, 394, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [203, 0, 394, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [603, 0, 197, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [603, 0, 197, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [0, 0, 197, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [103, 0, 194, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [103, 0, 194, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [97, 0, 100, 600],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutFrame FRAME",
-          "rect": [303, 0, 97, 600],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [303, 0, 97, 600],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutFrameSet FRAMESET",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutFrame FRAME",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutFrame FRAME",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutFrame FRAME",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow HTML",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-media-query-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-media-query-expected.txt
deleted file mode 100644
index cdd28d2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-media-query-expected.txt
+++ /dev/null
@@ -1,153 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [600, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 600, 250],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [400, 0, 200, 250],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 400, 350],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#0000FF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [400, 0, 400, 600],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-no-layout-change1-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-no-layout-change1-expected.txt
deleted file mode 100644
index c2580d0a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-no-layout-change1-expected.txt
+++ /dev/null
@@ -1,109 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-no-layout-change2-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-no-layout-change2-expected.txt
deleted file mode 100644
index ecf0b55b..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-no-layout-change2-expected.txt
+++ /dev/null
@@ -1,109 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2008],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2008],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2008],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [2008, 2008],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-percent-html-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-percent-html-expected.txt
deleted file mode 100644
index 9fdcac0c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-percent-html-expected.txt
+++ /dev/null
@@ -1,189 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [600, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 600, 250],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [0, 62, 300, 63],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [400, 0, 200, 250],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [200, 0, 100, 63],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 400, 350],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [0, 62, 200, 88],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [400, 0, 400, 600],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [200, 0, 200, 150],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-percent-width-height-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-percent-width-height-expected.txt
deleted file mode 100644
index 8e644a8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-percent-width-height-expected.txt
+++ /dev/null
@@ -1,189 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [600, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 600, 250],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 125, 300, 125],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 600, 250],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [200, 0, 100, 125],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 400, 350],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 125, 200, 175],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 800, 600],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [200, 0, 200, 300],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-positioned-bottom-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-positioned-bottom-expected.txt
deleted file mode 100644
index d977a5d5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-positioned-bottom-expected.txt
+++ /dev/null
@@ -1,181 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [600, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 600, 250],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 460, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 210, 20, 20],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 600, 250],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 400, 350],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 560, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 210, 20, 20],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 800, 600],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-positioned-percent-top-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-positioned-percent-top-expected.txt
deleted file mode 100644
index aef356b9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-positioned-percent-top-expected.txt
+++ /dev/null
@@ -1,181 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [600, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 600, 250],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 250, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 125, 20, 20],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 600, 250],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 400, 350],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 300, 20, 20],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow (positioned) DIV",
-          "rect": [0, 125, 20, 20],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow (positioned) DIV",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 800, 600],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt
deleted file mode 100644
index aa7e9770..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt
+++ /dev/null
@@ -1,478 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 235],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [939, 235],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 939, 235],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 8, 923, 219],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 7, 920, 213],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [339, 0, 600, 500],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [505, 8, 426, 484],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [507, 8, 423, 482],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-339, 0, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AAAA'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'BBBB'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'CCCC'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'DDDD'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'EEEE'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'FFFF'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'GGGG'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'HHHH'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'IIII JJJJ'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'KKKK'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'LLLL'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'MMMM'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'NNNN'",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 235],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [939, 235],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [200, 0, 939, 235],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 939, 235],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [208, 8, 923, 219],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [8, 8, 923, 219],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [210, 7, 920, 213],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [10, 7, 920, 213],
-          "reason": "geometry"
-        }
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [-539, 0, 0, 1]
-      ],
-      "flattenInheritedTransform": false
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AAAA'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'BBBB'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'CCCC'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'DDDD'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'EEEE'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'FFFF'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'GGGG'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'HHHH'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'IIII JJJJ'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'KKKK'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'LLLL'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'MMMM'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'NNNN'",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [-539, 0, 939, 235],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [-531, 8, 923, 219],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [-529, 7, 920, 213],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 400, 600],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [37, 8, 355, 584],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [39, 7, 352, 563],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AAAA BBBB CCCC'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'DDDD EEEE FFFF'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'GGGG HHHH IIII JJJJ'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'KKKK LLLL MMMM'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'NNNN'",
-      "reason": "geometry"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [400, 0, 400, 600],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [437, 8, 355, 584],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutBlockFlow BODY",
-          "rect": [37, 8, 355, 584],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [439, 7, 352, 563],
-          "reason": "geometry"
-        },
-        {
-          "object": "LayoutText #text",
-          "rect": [39, 7, 352, 563],
-          "reason": "geometry"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow BODY",
-      "reason": "geometry"
-    },
-    {
-      "object": "RootInlineBox",
-      "reason": "geometry"
-    },
-    {
-      "object": "LayoutText #text",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'AAAA BBBB CCCC'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'DDDD EEEE FFFF'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'GGGG HHHH IIII JJJJ'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'KKKK LLLL MMMM'",
-      "reason": "geometry"
-    },
-    {
-      "object": "InlineTextBox 'NNNN'",
-      "reason": "geometry"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-viewport-percent-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-viewport-percent-expected.txt
deleted file mode 100644
index 54c4350..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/window-resize/window-resize-viewport-percent-expected.txt
+++ /dev/null
@@ -1,181 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [600, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [600, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [600, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 600, 250],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [0, 25, 50, 25],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [25, 0, 25, 50],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 250],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 250],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 250],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 600, 250],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [400, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [400, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [400, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 250, 400, 350],
-          "reason": "background on scrolling contents layer"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [0, 25, 60, 35],
-          "reason": "incremental"
-        },
-        {
-          "object": "LayoutBlockFlow DIV",
-          "rect": [25, 0, 35, 60],
-          "reason": "incremental"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    },
-    {
-      "object": "LayoutBlockFlow DIV",
-      "reason": "incremental"
-    }
-  ]
-}
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 0, 800, 600],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutView #document",
-      "reason": "incremental"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/markers/first-letter-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/markers/first-letter-expected.png
deleted file mode 100644
index 687a4d0f88..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/markers/first-letter-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/markers/first-letter-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/markers/first-letter-expected.txt
deleted file mode 100644
index 53221d4..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/markers/first-letter-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x36
-  LayoutBlockFlow {HTML} at (0,0) size 800x36
-    LayoutBlockFlow {BODY} at (8,8) size 784x20
-      LayoutBlockFlow {DIV} at (0,0) size 784x20
-        LayoutInline {<pseudo:first-letter>} at (0,0) size 12x19 [color=#FF0000]
-          LayoutTextFragment (anonymous) at (0,0) size 12x19
-            text run at (0,0) width 12: "N"
-        LayoutTextFragment {#text} at (12,0) size 236x19
-          text run at (12,0) width 236: "one Composition Spelling TextMatch"
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/pagination/pagination-change-clip-crash-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/pagination/pagination-change-clip-crash-expected.txt
deleted file mode 100644
index 6137f44..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/pagination/pagination-change-clip-crash-expected.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutView #document",
-      "bounds": [800, 600],
-      "drawsContent": false,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling Layer",
-      "bounds": [785, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "Scrolling Contents Layer",
-      "bounds": [785, 736],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "paintInvalidations": [
-        {
-          "object": "LayoutView #document",
-          "rect": [0, 636, 785, 100],
-          "reason": "background on scrolling contents layer"
-        }
-      ]
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='background'",
-      "bounds": [769, 300],
-      "drawsContent": false,
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 428, 0, 1]
-      ]
-    }
-  ],
-  "objectPaintInvalidations": [
-    {
-      "object": "Scrolling Contents Layer",
-      "reason": "background on scrolling contents layer"
-    },
-    {
-      "object": "LayoutBlockFlow DIV id='background'",
-      "reason": "style change"
-    }
-  ]
-}
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/printing/print-box-shadow-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/printing/print-box-shadow-expected.png
deleted file mode 100644
index cf765e8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/printing/print-box-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/printing/print-box-shadow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/printing/print-box-shadow-expected.txt
deleted file mode 100644
index ca6b7d0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/printing/print-box-shadow-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 1066x799
-layer at (0,0) size 1066x143 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1066x143
-    LayoutBlockFlow {BODY} at (8,8) size 1050x127
-layer at (8,8) size 332x127 clip at (9,9) size 330x125
-  LayoutBlockFlow {DIV} at (0,0) size 332x127 [border: (1px solid #000000)]
-layer at (9,9) size 330x125
-  LayoutBlockFlow {DIV} at (1,1) size 330x125
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/printing/print-text-shadow-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/printing/print-text-shadow-expected.txt
deleted file mode 100644
index 46ef5a0..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/printing/print-text-shadow-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 1066x799
-layer at (0,0) size 1066x51 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1066x51
-    LayoutBlockFlow {BODY} at (8,8) size 1050x35
-      LayoutBlockFlow {DIV} at (0,0) size 1050x35
-        LayoutText {#text} at (0,0) size 546x34
-          text run at (0,0) width 546: "Text shadow should be visible when printing."
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/roundedrects/circle-with-shadow-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/roundedrects/circle-with-shadow-expected.png
deleted file mode 100644
index f79939b1..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/roundedrects/circle-with-shadow-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/README.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/README.txt
deleted file mode 100644
index 315232a..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-# This suite runs tests with --disable-blink-features=SlimmingPaintV175
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/absolute-position-headers-and-footers-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/absolute-position-headers-and-footers-expected.txt
deleted file mode 100644
index 8c8af57..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/absolute-position-headers-and-footers-expected.txt
+++ /dev/null
@@ -1,243 +0,0 @@
-layer at (0,0) size 800x600 scrollHeight 2685
-  LayoutView at (0,0) size 1046x799
-layer at (0,0) size 1046x2685 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1046x2685
-    LayoutBlockFlow {BODY} at (8,16) size 1030x2653
-      LayoutBlockFlow {P} at (0,0) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,36) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,72) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,108) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,144) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,180) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,216) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,252) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,288) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,324) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,360) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,396) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,432) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,468) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,504) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,540) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,576) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,612) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,648) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,684) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,720) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,756) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,783) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,819) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,855) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,891) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,927) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,963) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,999) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1035) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1071) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1107) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1143) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1179) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1215) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1251) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1287) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1323) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1359) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1395) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1431) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1467) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1503) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1539) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1582) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1618) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1654) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1690) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1726) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1762) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1798) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1834) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1870) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1906) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1942) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1978) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2014) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2050) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2086) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2122) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2158) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2194) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2230) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2266) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2302) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2338) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2381) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2417) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2453) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2489) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2525) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2561) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2597) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2633) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-layer at (8,0) size 606x38
-  LayoutBlockFlow (positioned) {DIV} at (8,0) size 606x38
-    LayoutBlockFlow {DIV} at (0,0) size 606x30
-      LayoutBlockFlow (anonymous) at (0,0) size 606x20
-        LayoutText {#text} at (0,0) size 606x19
-          text run at (0,0) width 606: "crbug.com/303728: Header Line is absolute positioned so should not be repeated on every page."
-layer at (8,28) size 606x2 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,28) size 606x2 [border: (1px inset #EEEEEE)]
-layer at (8,761) size 601x38 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow (positioned) {DIV} at (8,761) size 601x38
-    LayoutBlockFlow {DIV} at (0,8) size 601x30
-      LayoutBlockFlow (anonymous) at (0,10) size 601x20
-        LayoutText {#text} at (0,0) size 601x19
-          text run at (0,0) width 601: "crbug.com/303728: Footer Line is absolute positioned so should not be repeated on every page."
-layer at (8,769) size 601x2 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,0) size 601x2 [border: (1px inset #EEEEEE)]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/ellipsis-printing-style-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/ellipsis-printing-style-expected.txt
deleted file mode 100644
index 5560839..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/ellipsis-printing-style-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 1066x799
-layer at (0,0) size 1066x40 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1066x40
-    LayoutBlockFlow {BODY} at (8,8) size 1050x24
-layer at (8,8) size 168x24 scrollWidth 1216
-  LayoutBlockFlow {DIV} at (0,0) size 168x24 [color=#FFFFFF] [bgcolor=#000000]
-    LayoutText {#text} at (0,0) size 1216x16
-      text run at (0,0) width 1216: "This text should be ellipsized and the ellipsis should visible when printed."
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-but-static-headers-and-footers-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-but-static-headers-and-footers-expected.txt
deleted file mode 100644
index e6a2b11..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-but-static-headers-and-footers-expected.txt
+++ /dev/null
@@ -1,243 +0,0 @@
-layer at (0,0) size 800x600 scrollHeight 2685
-  LayoutView at (0,0) size 1046x799
-layer at (0,0) size 1046x2685 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1046x2685
-    LayoutBlockFlow {BODY} at (8,16) size 1030x2653
-      LayoutBlockFlow {P} at (0,0) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,36) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,72) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,108) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,144) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,180) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,216) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,252) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,288) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,324) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,360) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,396) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,432) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,468) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,504) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,540) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,576) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,612) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,648) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,684) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,720) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,756) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,783) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,819) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,855) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,891) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,927) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,963) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,999) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1035) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1071) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1107) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1143) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1179) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1215) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1251) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1287) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1323) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1359) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1395) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1431) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1467) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1503) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1539) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1582) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1618) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1654) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1690) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1726) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1762) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1798) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1834) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1870) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1906) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1942) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1978) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2014) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2050) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2086) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2122) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2158) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2194) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2230) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2266) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2302) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2338) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2381) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2417) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2453) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2489) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2525) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2561) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2597) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2633) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-layer at (8,16) size 667x38
-  LayoutBlockFlow (positioned) {DIV} at (8,16) size 667x38
-    LayoutBlockFlow {DIV} at (0,0) size 667x30
-      LayoutBlockFlow (anonymous) at (0,0) size 667x20
-        LayoutText {#text} at (0,0) size 667x19
-          text run at (0,0) width 667: "crbug.com/303728: Fixed-position header Line is statically positioned and will be repeated on every page."
-layer at (8,44) size 667x2 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,28) size 667x2 [border: (1px inset #EEEEEE)]
-layer at (8,2685) size 613x38 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow (positioned) {DIV} at (8,2685) size 613x38
-    LayoutBlockFlow {DIV} at (0,8) size 613x30
-      LayoutBlockFlow (anonymous) at (0,10) size 613x20
-        LayoutText {#text} at (0,0) size 613x19
-          text run at (0,0) width 613: "crbug.com/303728: Footer Line is statically positioned and should not be repeated on every page."
-layer at (8,2693) size 613x2 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,0) size 613x2 [border: (1px inset #EEEEEE)]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-absolute-covering-some-pages-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-absolute-covering-some-pages-expected.txt
deleted file mode 100644
index c10310a5..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-absolute-covering-some-pages-expected.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-layer at (0,0) size 800x600 scrollHeight 5016
-  LayoutView at (0,0) size 1046x799
-layer at (0,0) size 1046x5016 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1046x5016
-    LayoutBlockFlow {BODY} at (8,8) size 1030x5000
-      LayoutBlockFlow {DIV} at (0,0) size 1030x5000
-layer at (0,0) size 510x68
-  LayoutBlockFlow (positioned) {DIV} at (0,0) size 510x68 [border: (5px solid #000000)]
-    LayoutBlockFlow {DIV} at (5,5) size 500x50
-      LayoutBlockFlow (anonymous) at (0,0) size 500x40
-        LayoutText {#text} at (0,0) size 466x39
-          text run at (0,0) width 466: "crbug.com/303728: Header Line should be repeated on every page except"
-          text run at (0,20) width 377: "where it's clipped by the absolute element on pages 3 and 4."
-layer at (5,53) size 500x2 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,48) size 500x2 [border: (1px inset #EEEEEE)]
-layer at (0,1000) size 600x2000 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow (positioned) zI: 2 {DIV} at (0,1000) size 600x2000 [bgcolor=#000000]
-    LayoutText zI: 2 {#text} at (0,0) size 57x19
-      text run at (0,0) width 57: "Absolute"
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-clipped-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-clipped-expected.png
deleted file mode 100644
index e0de8f8..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-clipped-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-expected.txt
deleted file mode 100644
index 72829d9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-expected.txt
+++ /dev/null
@@ -1,243 +0,0 @@
-layer at (0,0) size 800x600 scrollHeight 2685
-  LayoutView at (0,0) size 1046x799
-layer at (0,0) size 1046x2685 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1046x2685
-    LayoutBlockFlow {BODY} at (8,16) size 1030x2653
-      LayoutBlockFlow {P} at (0,0) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,36) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,72) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,108) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,144) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,180) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,216) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,252) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,288) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,324) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,360) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,396) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,432) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,468) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,504) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,540) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,576) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,612) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,648) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,684) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,720) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,756) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,783) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,819) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,855) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,891) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,927) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,963) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,999) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1035) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1071) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1107) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1143) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1179) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1215) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1251) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1287) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1323) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1359) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1395) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1431) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1467) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1503) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1539) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1582) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1618) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1654) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1690) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1726) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1762) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1798) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1834) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1870) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1906) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1942) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1978) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2014) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2050) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2086) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2122) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2158) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2194) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2230) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2266) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2302) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2338) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2381) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2417) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2453) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2489) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2525) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2561) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2597) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2633) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-layer at (8,0) size 516x38
-  LayoutBlockFlow (positioned) {DIV} at (8,0) size 516x38
-    LayoutBlockFlow {DIV} at (0,0) size 516x30
-      LayoutBlockFlow (anonymous) at (0,0) size 516x20
-        LayoutText {#text} at (0,0) size 516x19
-          text run at (0,0) width 516: "crbug.com/303728: Fixed-position header Line should be repeated on every page."
-layer at (8,28) size 516x2 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,28) size 516x2 [border: (1px inset #EEEEEE)]
-layer at (8,761) size 420x38 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow (positioned) {DIV} at (8,761) size 420x38
-    LayoutBlockFlow {DIV} at (0,8) size 420x30
-      LayoutBlockFlow (anonymous) at (0,10) size 420x20
-        LayoutText {#text} at (0,0) size 420x19
-          text run at (0,0) width 420: "crbug.com/303728: Footer Line should be repeated on every page."
-layer at (8,769) size 420x2 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,0) size 420x2 [border: (1px inset #EEEEEE)]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-inside-transform-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-inside-transform-expected.txt
deleted file mode 100644
index a312cca92..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-inside-transform-expected.txt
+++ /dev/null
@@ -1,247 +0,0 @@
-layer at (0,0) size 800x600 scrollHeight 2685
-  LayoutView at (0,0) size 1046x799
-layer at (0,0) size 1046x2685 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1046x2685
-    LayoutBlockFlow {BODY} at (8,16) size 1030x2653
-      LayoutBlockFlow {P} at (0,0) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,36) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,72) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,108) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,144) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,180) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,216) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,252) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,288) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,324) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,360) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,396) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,432) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,468) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,504) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,540) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,576) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,612) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,648) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,684) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,720) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,756) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,783) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,819) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,855) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,891) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,927) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,963) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,999) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1035) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1071) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1107) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1143) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1179) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1215) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1251) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1287) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1323) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1359) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1395) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1431) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1467) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1503) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1539) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1582) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1618) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1654) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1690) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1726) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1762) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1798) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1834) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1870) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1906) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1942) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1978) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2014) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2050) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2086) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2122) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2158) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2194) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2230) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2266) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2302) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2338) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2381) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2417) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2453) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2489) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2525) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2561) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2597) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2633) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-layer at (8,16) size 1030x0
-  LayoutBlockFlow {DIV} at (0,0) size 1030x0
-layer at (8,16) size 449x38
-  LayoutBlockFlow (positioned) {DIV} at (0,0) size 449x38
-    LayoutBlockFlow {DIV} at (0,0) size 449x30
-      LayoutBlockFlow (anonymous) at (0,0) size 449x20
-        LayoutText {#text} at (0,0) size 449x19
-          text run at (0,0) width 449: "crbug.com/303728: Header Line should not be repeated on every page."
-layer at (8,44) size 449x2 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,28) size 449x2 [border: (1px inset #EEEEEE)]
-layer at (8,2685) size 1030x0
-  LayoutBlockFlow {DIV} at (0,2669) size 1030x0
-layer at (8,2647) size 444x38 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow (positioned) {DIV} at (0,-38) size 444x38
-    LayoutBlockFlow {DIV} at (0,8) size 444x30
-      LayoutBlockFlow (anonymous) at (0,10) size 444x20
-        LayoutText {#text} at (0,0) size 444x19
-          text run at (0,0) width 444: "crbug.com/303728: Footer Line should not be repeated on every page."
-layer at (8,2655) size 444x2 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,0) size 444x2 [border: (1px inset #EEEEEE)]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-larger-than-page-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-larger-than-page-expected.txt
deleted file mode 100644
index 01ffa2e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/fixed-positioned-headers-and-footers-larger-than-page-expected.txt
+++ /dev/null
@@ -1,243 +0,0 @@
-layer at (0,0) size 800x600 scrollHeight 2685
-  LayoutView at (0,0) size 1046x799
-layer at (0,0) size 1046x2685 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1046x2685
-    LayoutBlockFlow {BODY} at (8,16) size 1030x2653
-      LayoutBlockFlow {P} at (0,0) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,36) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,72) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,108) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,144) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,180) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,216) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,252) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,288) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,324) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,360) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,396) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,432) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,468) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,504) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,540) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,576) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,612) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,648) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,684) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,720) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,756) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,783) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,819) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,855) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,891) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,927) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,963) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,999) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1035) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1071) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1107) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1143) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1179) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1215) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1251) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1287) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1323) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1359) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1395) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1431) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1467) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1503) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1539) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1582) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1618) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1654) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1690) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1726) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1762) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1798) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1834) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1870) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1906) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1942) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,1978) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2014) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2050) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2086) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2122) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2158) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2194) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2230) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2266) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2302) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2338) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2381) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2417) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2453) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2489) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2525) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2561) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2597) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-      LayoutBlockFlow {P} at (0,2633) size 1030x20
-        LayoutText {#text} at (0,0) size 66x19
-          text run at (0,0) width 66: "Filler lines"
-layer at (8,0) size 2010x48 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow (positioned) {DIV} at (8,0) size 2010x48 [border: (5px solid #000000)]
-    LayoutBlockFlow {DIV} at (5,5) size 2000x30
-      LayoutBlockFlow (anonymous) at (0,0) size 2000x20
-        LayoutText {#text} at (0,0) size 696x19
-          text run at (0,0) width 696: "crbug.com/303728: Footer Line should be repeated on every page and should be clipped because it's too wide."
-layer at (13,33) size 2000x2 backgroundClip at (13,33) size 787x2 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,28) size 2000x2 [border: (1px inset #EEEEEE)]
-layer at (8,751) size 2010x48 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow (positioned) {DIV} at (8,751) size 2010x48 [border: (5px solid #000000)]
-    LayoutBlockFlow {DIV} at (5,13) size 2000x30
-      LayoutBlockFlow (anonymous) at (0,10) size 2000x20
-        LayoutText {#text} at (0,0) size 696x19
-          text run at (0,0) width 696: "crbug.com/303728: Footer Line should be repeated on every page and should be clipped because it's too wide."
-layer at (13,764) size 2000x2 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0
-  LayoutBlockFlow {HR} at (0,0) size 2000x2 [border: (1px inset #EEEEEE)]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/forced-break-tree-dump-only-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/forced-break-tree-dump-only-expected.txt
deleted file mode 100644
index f08711c..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/forced-break-tree-dump-only-expected.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-layer at (0,0) size 800x600 scrollHeight 827
-  LayoutView at (0,0) size 1066x799
-layer at (0,0) size 1066x827 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1066x827
-    LayoutBlockFlow {BODY} at (8,16) size 1050x803
-      LayoutBlockFlow {P} at (0,0) size 1050x40
-        LayoutText {#text} at (0,0) size 1010x39
-          text run at (0,0) width 554: "This is a test that only dumps the layout tree, and doesn't actually display the page. This "
-          text run at (554,0) width 456: "tests some peculiarities in the test framework for printing. To run this test"
-          text run at (0,20) width 102: "manually, run it "
-          text run at (101,20) width 221: "with content_shell --run-layout-test"
-      LayoutBlockFlow {DIV} at (0,56) size 1050x20
-        LayoutText {#text} at (0,0) size 163x19
-          text run at (0,0) width 163: "This should be on page 1."
-      LayoutBlockFlow {DIV} at (0,783) size 1050x20
-        LayoutText {#text} at (0,0) size 163x19
-          text run at (0,0) width 163: "This should be on page 2."
-
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/iframe-print-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/iframe-print-expected.png
deleted file mode 100644
index eea9f8e..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/iframe-print-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/iframe-print-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/iframe-print-expected.txt
deleted file mode 100644
index 6fe1690..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/iframe-print-expected.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 1066x799
-layer at (0,0) size 1066x799 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1066x799
-    LayoutBlockFlow {BODY} at (8,8) size 1050x783
-      LayoutText {#text} at (304,289) size 4x19
-        text run at (304,289) width 4: " "
-      LayoutText {#text} at (0,0) size 0x0
-layer at (8,208) size 304x104
-  LayoutIFrame {IFRAME} at (0,200) size 304x104 [border: (2px inset #EEEEEE)]
-    layer at (0,0) size 300x100
-      LayoutView at (0,0) size 300x100
-    layer at (0,0) size 300x36
-      LayoutBlockFlow {HTML} at (0,0) size 300x36
-        LayoutBlockFlow {BODY} at (8,8) size 284x20
-          LayoutText {#text} at (0,0) size 241x19
-            text run at (0,0) width 241: "You should see this text when printed."
-layer at (316,8) size 304x304
-  LayoutIFrame {IFRAME} at (308,0) size 304x304 [border: (2px inset #EEEEEE)]
-    layer at (0,0) size 300x300
-      LayoutView at (0,0) size 300x300
-    layer at (35,0) size 265x300
-      LayoutBlockFlow {HTML} at (0,0) size 265x300
-        LayoutBlockFlow {BODY} at (8,8) size 249x284
-          LayoutText {#text} at (0,0) size 19x245
-            text run at (0,0) width 245: "You should see this text when printed. "
-          LayoutBR {BR} at (0,244) size 19x1
-          LayoutText {#text} at (20,0) size 19x160
-            text run at (20,0) width 160: "Vertical text on the right. "
-          LayoutBR {BR} at (20,159) size 19x1
-          LayoutText {#text} at (0,0) size 0x0
-    layer at (48,8) size 204x154
-      LayoutIFrame {IFRAME} at (40,0) size 204x154 [border: (2px inset #EEEEEE)]
-        layer at (0,0) size 200x150
-          LayoutView at (0,0) size 200x150
-        layer at (0,0) size 200x56
-          LayoutBlockFlow {HTML} at (0,0) size 200x56
-            LayoutBlockFlow {BODY} at (8,8) size 184x40
-              LayoutText {#text} at (0,0) size 150x39
-                text run at (0,0) width 150: "You should see this text"
-                text run at (0,20) width 87: "when printed."
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/list-item-with-empty-first-line-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/list-item-with-empty-first-line-expected.txt
deleted file mode 100644
index 6476598..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/list-item-with-empty-first-line-expected.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 1066x799
-layer at (0,0) size 1066x120 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1066x120
-    LayoutBlockFlow {BODY} at (8,8) size 1050x96
-      LayoutBlockFlow (anonymous) at (0,0) size 1050x20
-        LayoutText {#text} at (0,0) size 408x19
-          text run at (0,0) width 408: "Passes if both 'first' (with a line break) and 'second' have a bullet."
-      LayoutBlockFlow {UL} at (0,36) size 1050x60
-        LayoutListItem {LI} at (40,0) size 1010x40
-          LayoutListMarker (anonymous) at (-18,0) size 7x19: bullet
-          LayoutBR {BR} at (0,0) size 0x19
-          LayoutText {#text} at (0,20) size 24x19
-            text run at (0,20) width 24: "first"
-        LayoutListItem {LI} at (40,40) size 1010x20
-          LayoutListMarker (anonymous) at (-18,0) size 7x19: bullet
-          LayoutText {#text} at (0,0) size 44x19
-            text run at (0,0) width 44: "second"
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/quirks-percentage-height-body-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/quirks-percentage-height-body-expected.txt
deleted file mode 100644
index 1f9261b9..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/quirks-percentage-height-body-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 1066x799
-layer at (0,0) size 1066x799 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1066x799
-    LayoutBlockFlow {BODY} at (0,0) size 543x409.50 [border: (5px solid #FA8072)]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/quirks-percentage-height-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/quirks-percentage-height-expected.txt
deleted file mode 100644
index 00065cb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/quirks-percentage-height-expected.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 1066x799
-layer at (0,0) size 1066x799 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1066x799
-    LayoutBlockFlow {BODY} at (0,0) size 1066x799
-      LayoutBlockFlow {DIV} at (0,0) size 543x409.50 [border: (5px solid #FA8072)]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/simultaneous-position-float-change-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/simultaneous-position-float-change-expected.txt
deleted file mode 100644
index d7c4f91f..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/simultaneous-position-float-change-expected.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 1066x799
-layer at (0,0) size 1066x799 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1066x799
-    LayoutBlockFlow {BODY} at (8,8) size 1050x783
-layer at (8,8) size 0x0
-  LayoutBlockFlow (positioned) {DIV} at (8,8) size 0x0
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/standards-percentage-heights-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/standards-percentage-heights-expected.txt
deleted file mode 100644
index c9957e2..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/standards-percentage-heights-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 1066x799
-layer at (0,0) size 510x510
-  LayoutBlockFlow {HTML} at (0,0) size 510x510 [border: (5px solid #FFC0CB)]
-    LayoutBlockFlow {BODY} at (5,5) size 260x260 [border: (5px solid #FA8072)]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/subframes-percentage-height-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/subframes-percentage-height-expected.png
deleted file mode 100644
index c360ac7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/subframes-percentage-height-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/subframes-percentage-height-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/subframes-percentage-height-expected.txt
deleted file mode 100644
index 235a5a19..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/subframes-percentage-height-expected.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 1066x799
-layer at (0,0) size 1066x400 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1066x400
-    LayoutBlockFlow {BODY} at (0,0) size 1066x400
-      LayoutText {#text} at (0,0) size 0x0
-layer at (0,0) size 300x150
-  LayoutIFrame {IFRAME} at (0,0) size 300x150
-    layer at (0,0) size 300x150
-      LayoutView at (0,0) size 300x150
-    layer at (0,0) size 300x150
-      LayoutBlockFlow {HTML} at (0,0) size 300x150
-        LayoutBlockFlow {BODY} at (0,0) size 300x150
-          LayoutBlockFlow {DIV} at (0,0) size 300x150 [border: (10px solid #0000FF)]
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/tfoot-repeats-at-bottom-of-each-page-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/tfoot-repeats-at-bottom-of-each-page-expected.txt
deleted file mode 100644
index 3027f1cd..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/tfoot-repeats-at-bottom-of-each-page-expected.txt
+++ /dev/null
@@ -1,379 +0,0 @@
-layer at (0,0) size 800x600 scrollHeight 1542
-  LayoutView at (0,0) size 1046x799
-layer at (0,0) size 1046x1542 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1046x1542
-    LayoutBlockFlow {BODY} at (0,0) size 1046x1542
-      LayoutTable {TABLE} at (0,0) size 447x1542
-        LayoutTableSection {THEAD} at (0,0) size 447x40
-          LayoutTableRow {TR} at (0,0) size 447x40
-            LayoutTableCell {TH} at (0,0) size 149x40 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 147x37
-                text run at (1,1) width 147: "Column 1"
-            LayoutTableCell {TH} at (149,0) size 149x40 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 147x37
-                text run at (1,1) width 147: "Column 2"
-            LayoutTableCell {TH} at (298,0) size 149x40 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 147x37
-                text run at (1,1) width 147: "Column 3"
-        LayoutTableSection {TBODY} at (0,40) size 447x1462
-          LayoutTableRow {TR} at (0,0) size 447x39
-            LayoutTableCell {TD} at (0,0) size 149x39 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-1"
-            LayoutTableCell {TD} at (149,0) size 149x39 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-1"
-            LayoutTableCell {TD} at (298,0) size 149x39 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-1"
-          LayoutTableRow {TR} at (0,39) size 447x39
-            LayoutTableCell {TD} at (0,39) size 149x39 [r=1 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-2"
-            LayoutTableCell {TD} at (149,39) size 149x39 [r=1 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-2"
-            LayoutTableCell {TD} at (298,39) size 149x39 [r=1 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-2"
-          LayoutTableRow {TR} at (0,78) size 447x39
-            LayoutTableCell {TD} at (0,78) size 149x39 [r=2 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-3"
-            LayoutTableCell {TD} at (149,78) size 149x39 [r=2 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-3"
-            LayoutTableCell {TD} at (298,78) size 149x39 [r=2 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-3"
-          LayoutTableRow {TR} at (0,117) size 447x39
-            LayoutTableCell {TD} at (0,117) size 149x39 [r=3 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-4"
-            LayoutTableCell {TD} at (149,117) size 149x39 [r=3 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-4"
-            LayoutTableCell {TD} at (298,117) size 149x39 [r=3 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-4"
-          LayoutTableRow {TR} at (0,156) size 447x39
-            LayoutTableCell {TD} at (0,156) size 149x39 [r=4 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-5"
-            LayoutTableCell {TD} at (149,156) size 149x39 [r=4 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-5"
-            LayoutTableCell {TD} at (298,156) size 149x39 [r=4 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-5"
-          LayoutTableRow {TR} at (0,195) size 447x39
-            LayoutTableCell {TD} at (0,195) size 149x39 [r=5 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-6"
-            LayoutTableCell {TD} at (149,195) size 149x39 [r=5 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-6"
-            LayoutTableCell {TD} at (298,195) size 149x39 [r=5 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-6"
-          LayoutTableRow {TR} at (0,234) size 447x39
-            LayoutTableCell {TD} at (0,234) size 149x39 [r=6 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-7"
-            LayoutTableCell {TD} at (149,234) size 149x39 [r=6 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-7"
-            LayoutTableCell {TD} at (298,234) size 149x39 [r=6 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-7"
-          LayoutTableRow {TR} at (0,273) size 447x39
-            LayoutTableCell {TD} at (0,273) size 149x39 [r=7 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-8"
-            LayoutTableCell {TD} at (149,273) size 149x39 [r=7 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-8"
-            LayoutTableCell {TD} at (298,273) size 149x39 [r=7 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-8"
-          LayoutTableRow {TR} at (0,312) size 447x39
-            LayoutTableCell {TD} at (0,312) size 149x39 [r=8 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-9"
-            LayoutTableCell {TD} at (149,312) size 149x39 [r=8 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-9"
-            LayoutTableCell {TD} at (298,312) size 149x39 [r=8 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-9"
-          LayoutTableRow {TR} at (0,351) size 447x39
-            LayoutTableCell {TD} at (0,351) size 149x39 [r=9 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-10"
-            LayoutTableCell {TD} at (149,351) size 149x39 [r=9 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-10"
-            LayoutTableCell {TD} at (298,351) size 149x39 [r=9 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-10"
-          LayoutTableRow {TR} at (0,390) size 447x39
-            LayoutTableCell {TD} at (0,390) size 149x39 [r=10 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "1-11"
-            LayoutTableCell {TD} at (149,390) size 149x39 [r=10 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "2-11"
-            LayoutTableCell {TD} at (298,390) size 149x39 [r=10 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "3-11"
-          LayoutTableRow {TR} at (0,429) size 447x39
-            LayoutTableCell {TD} at (0,429) size 149x39 [r=11 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-12"
-            LayoutTableCell {TD} at (149,429) size 149x39 [r=11 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-12"
-            LayoutTableCell {TD} at (298,429) size 149x39 [r=11 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-12"
-          LayoutTableRow {TR} at (0,468) size 447x39
-            LayoutTableCell {TD} at (0,468) size 149x39 [r=12 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-13"
-            LayoutTableCell {TD} at (149,468) size 149x39 [r=12 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-13"
-            LayoutTableCell {TD} at (298,468) size 149x39 [r=12 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-13"
-          LayoutTableRow {TR} at (0,507) size 447x39
-            LayoutTableCell {TD} at (0,507) size 149x39 [r=13 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-14"
-            LayoutTableCell {TD} at (149,507) size 149x39 [r=13 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-14"
-            LayoutTableCell {TD} at (298,507) size 149x39 [r=13 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-14"
-          LayoutTableRow {TR} at (0,546) size 447x39
-            LayoutTableCell {TD} at (0,546) size 149x39 [r=14 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-15"
-            LayoutTableCell {TD} at (149,546) size 149x39 [r=14 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-15"
-            LayoutTableCell {TD} at (298,546) size 149x39 [r=14 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-15"
-          LayoutTableRow {TR} at (0,585) size 447x39
-            LayoutTableCell {TD} at (0,585) size 149x39 [r=15 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-16"
-            LayoutTableCell {TD} at (149,585) size 149x39 [r=15 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-16"
-            LayoutTableCell {TD} at (298,585) size 149x39 [r=15 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-16"
-          LayoutTableRow {TR} at (0,624) size 447x39
-            LayoutTableCell {TD} at (0,624) size 149x39 [r=16 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-17"
-            LayoutTableCell {TD} at (149,624) size 149x39 [r=16 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-17"
-            LayoutTableCell {TD} at (298,624) size 149x39 [r=16 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-17"
-          LayoutTableRow {TR} at (0,663) size 447x39
-            LayoutTableCell {TD} at (0,663) size 149x39 [r=17 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-18"
-            LayoutTableCell {TD} at (149,663) size 149x39 [r=17 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-18"
-            LayoutTableCell {TD} at (298,663) size 149x39 [r=17 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-18"
-          LayoutTableRow {TR} at (0,799) size 447x39
-            LayoutTableCell {TD} at (0,799) size 149x39 [r=18 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-19"
-            LayoutTableCell {TD} at (149,799) size 149x39 [r=18 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-19"
-            LayoutTableCell {TD} at (298,799) size 149x39 [r=18 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-19"
-          LayoutTableRow {TR} at (0,838) size 447x39
-            LayoutTableCell {TD} at (0,838) size 149x39 [r=19 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-20"
-            LayoutTableCell {TD} at (149,838) size 149x39 [r=19 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-20"
-            LayoutTableCell {TD} at (298,838) size 149x39 [r=19 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-20"
-          LayoutTableRow {TR} at (0,877) size 447x39
-            LayoutTableCell {TD} at (0,877) size 149x39 [r=20 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-21"
-            LayoutTableCell {TD} at (149,877) size 149x39 [r=20 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-21"
-            LayoutTableCell {TD} at (298,877) size 149x39 [r=20 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-21"
-          LayoutTableRow {TR} at (0,916) size 447x39
-            LayoutTableCell {TD} at (0,916) size 149x39 [r=21 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-22"
-            LayoutTableCell {TD} at (149,916) size 149x39 [r=21 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-22"
-            LayoutTableCell {TD} at (298,916) size 149x39 [r=21 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-22"
-          LayoutTableRow {TR} at (0,955) size 447x39
-            LayoutTableCell {TD} at (0,955) size 149x39 [r=22 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-23"
-            LayoutTableCell {TD} at (149,955) size 149x39 [r=22 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-23"
-            LayoutTableCell {TD} at (298,955) size 149x39 [r=22 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-23"
-          LayoutTableRow {TR} at (0,994) size 447x39
-            LayoutTableCell {TD} at (0,994) size 149x39 [r=23 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-24"
-            LayoutTableCell {TD} at (149,994) size 149x39 [r=23 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-24"
-            LayoutTableCell {TD} at (298,994) size 149x39 [r=23 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-24"
-          LayoutTableRow {TR} at (0,1033) size 447x39
-            LayoutTableCell {TD} at (0,1033) size 149x39 [r=24 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-25"
-            LayoutTableCell {TD} at (149,1033) size 149x39 [r=24 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-25"
-            LayoutTableCell {TD} at (298,1033) size 149x39 [r=24 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-25"
-          LayoutTableRow {TR} at (0,1072) size 447x39
-            LayoutTableCell {TD} at (0,1072) size 149x39 [r=25 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-26"
-            LayoutTableCell {TD} at (149,1072) size 149x39 [r=25 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-26"
-            LayoutTableCell {TD} at (298,1072) size 149x39 [r=25 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-26"
-          LayoutTableRow {TR} at (0,1111) size 447x39
-            LayoutTableCell {TD} at (0,1111) size 149x39 [r=26 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-27"
-            LayoutTableCell {TD} at (149,1111) size 149x39 [r=26 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-27"
-            LayoutTableCell {TD} at (298,1111) size 149x39 [r=26 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-27"
-          LayoutTableRow {TR} at (0,1150) size 447x39
-            LayoutTableCell {TD} at (0,1150) size 149x39 [r=27 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-28"
-            LayoutTableCell {TD} at (149,1150) size 149x39 [r=27 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-28"
-            LayoutTableCell {TD} at (298,1150) size 149x39 [r=27 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-28"
-          LayoutTableRow {TR} at (0,1189) size 447x39
-            LayoutTableCell {TD} at (0,1189) size 149x39 [r=28 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-29"
-            LayoutTableCell {TD} at (149,1189) size 149x39 [r=28 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-29"
-            LayoutTableCell {TD} at (298,1189) size 149x39 [r=28 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-29"
-          LayoutTableRow {TR} at (0,1228) size 447x39
-            LayoutTableCell {TD} at (0,1228) size 149x39 [r=29 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-30"
-            LayoutTableCell {TD} at (149,1228) size 149x39 [r=29 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-30"
-            LayoutTableCell {TD} at (298,1228) size 149x39 [r=29 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-30"
-          LayoutTableRow {TR} at (0,1267) size 447x39
-            LayoutTableCell {TD} at (0,1267) size 149x39 [r=30 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-31"
-            LayoutTableCell {TD} at (149,1267) size 149x39 [r=30 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-31"
-            LayoutTableCell {TD} at (298,1267) size 149x39 [r=30 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-31"
-          LayoutTableRow {TR} at (0,1306) size 447x39
-            LayoutTableCell {TD} at (0,1306) size 149x39 [r=31 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-32"
-            LayoutTableCell {TD} at (149,1306) size 149x39 [r=31 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-32"
-            LayoutTableCell {TD} at (298,1306) size 149x39 [r=31 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-32"
-          LayoutTableRow {TR} at (0,1345) size 447x39
-            LayoutTableCell {TD} at (0,1345) size 149x39 [r=32 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-33"
-            LayoutTableCell {TD} at (149,1345) size 149x39 [r=32 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-33"
-            LayoutTableCell {TD} at (298,1345) size 149x39 [r=32 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-33"
-          LayoutTableRow {TR} at (0,1384) size 447x39
-            LayoutTableCell {TD} at (0,1384) size 149x39 [r=33 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-34"
-            LayoutTableCell {TD} at (149,1384) size 149x39 [r=33 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-34"
-            LayoutTableCell {TD} at (298,1384) size 149x39 [r=33 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-34"
-          LayoutTableRow {TR} at (0,1423) size 447x39
-            LayoutTableCell {TD} at (0,1423) size 149x39 [r=34 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-35"
-            LayoutTableCell {TD} at (149,1423) size 149x39 [r=34 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-35"
-            LayoutTableCell {TD} at (298,1423) size 149x39 [r=34 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-35"
-        LayoutTableSection {TFOOT} at (0,1502) size 447x40
-          LayoutTableRow {TR} at (0,0) size 447x40
-            LayoutTableCell {TH} at (0,0) size 149x40 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (10,1) size 129x37
-                text run at (10,1) width 129: "Footer 1"
-            LayoutTableCell {TH} at (149,0) size 149x40 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (10,1) size 129x37
-                text run at (10,1) width 129: "Footer 2"
-            LayoutTableCell {TH} at (298,0) size 149x40 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (10,1) size 129x37
-                text run at (10,1) width 129: "Footer 3"
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/tfoot-repeats-at-bottom-of-each-page-multiple-tables-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/tfoot-repeats-at-bottom-of-each-page-multiple-tables-expected.txt
deleted file mode 100644
index 7da7bb7..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/tfoot-repeats-at-bottom-of-each-page-multiple-tables-expected.txt
+++ /dev/null
@@ -1,713 +0,0 @@
-layer at (0,0) size 800x600 scrollHeight 3023
-  LayoutView at (0,0) size 1046x799
-layer at (0,0) size 1046x3023 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1046x3023
-    LayoutBlockFlow {BODY} at (0,0) size 1046x3023
-      LayoutTable {TABLE} at (0,0) size 447x1386
-        LayoutTableSection {THEAD} at (0,0) size 447x40
-          LayoutTableRow {TR} at (0,0) size 447x40
-            LayoutTableCell {TH} at (0,0) size 149x40 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 147x37
-                text run at (1,1) width 147: "Column 1"
-            LayoutTableCell {TH} at (149,0) size 149x40 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 147x37
-                text run at (1,1) width 147: "Column 2"
-            LayoutTableCell {TH} at (298,0) size 149x40 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 147x37
-                text run at (1,1) width 147: "Column 3"
-        LayoutTableSection {TBODY} at (0,40) size 447x1306
-          LayoutTableRow {TR} at (0,0) size 447x39
-            LayoutTableCell {TD} at (0,0) size 149x39 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-1"
-            LayoutTableCell {TD} at (149,0) size 149x39 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-1"
-            LayoutTableCell {TD} at (298,0) size 149x39 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-1"
-          LayoutTableRow {TR} at (0,39) size 447x39
-            LayoutTableCell {TD} at (0,39) size 149x39 [r=1 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-2"
-            LayoutTableCell {TD} at (149,39) size 149x39 [r=1 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-2"
-            LayoutTableCell {TD} at (298,39) size 149x39 [r=1 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-2"
-          LayoutTableRow {TR} at (0,78) size 447x39
-            LayoutTableCell {TD} at (0,78) size 149x39 [r=2 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-3"
-            LayoutTableCell {TD} at (149,78) size 149x39 [r=2 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-3"
-            LayoutTableCell {TD} at (298,78) size 149x39 [r=2 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-3"
-          LayoutTableRow {TR} at (0,117) size 447x39
-            LayoutTableCell {TD} at (0,117) size 149x39 [r=3 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-4"
-            LayoutTableCell {TD} at (149,117) size 149x39 [r=3 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-4"
-            LayoutTableCell {TD} at (298,117) size 149x39 [r=3 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-4"
-          LayoutTableRow {TR} at (0,156) size 447x39
-            LayoutTableCell {TD} at (0,156) size 149x39 [r=4 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-5"
-            LayoutTableCell {TD} at (149,156) size 149x39 [r=4 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-5"
-            LayoutTableCell {TD} at (298,156) size 149x39 [r=4 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-5"
-          LayoutTableRow {TR} at (0,195) size 447x39
-            LayoutTableCell {TD} at (0,195) size 149x39 [r=5 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-6"
-            LayoutTableCell {TD} at (149,195) size 149x39 [r=5 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-6"
-            LayoutTableCell {TD} at (298,195) size 149x39 [r=5 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-6"
-          LayoutTableRow {TR} at (0,234) size 447x39
-            LayoutTableCell {TD} at (0,234) size 149x39 [r=6 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-7"
-            LayoutTableCell {TD} at (149,234) size 149x39 [r=6 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-7"
-            LayoutTableCell {TD} at (298,234) size 149x39 [r=6 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-7"
-          LayoutTableRow {TR} at (0,273) size 447x39
-            LayoutTableCell {TD} at (0,273) size 149x39 [r=7 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-8"
-            LayoutTableCell {TD} at (149,273) size 149x39 [r=7 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-8"
-            LayoutTableCell {TD} at (298,273) size 149x39 [r=7 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-8"
-          LayoutTableRow {TR} at (0,312) size 447x39
-            LayoutTableCell {TD} at (0,312) size 149x39 [r=8 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-9"
-            LayoutTableCell {TD} at (149,312) size 149x39 [r=8 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-9"
-            LayoutTableCell {TD} at (298,312) size 149x39 [r=8 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-9"
-          LayoutTableRow {TR} at (0,351) size 447x39
-            LayoutTableCell {TD} at (0,351) size 149x39 [r=9 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-10"
-            LayoutTableCell {TD} at (149,351) size 149x39 [r=9 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-10"
-            LayoutTableCell {TD} at (298,351) size 149x39 [r=9 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-10"
-          LayoutTableRow {TR} at (0,390) size 447x39
-            LayoutTableCell {TD} at (0,390) size 149x39 [r=10 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "1-11"
-            LayoutTableCell {TD} at (149,390) size 149x39 [r=10 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "2-11"
-            LayoutTableCell {TD} at (298,390) size 149x39 [r=10 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "3-11"
-          LayoutTableRow {TR} at (0,429) size 447x39
-            LayoutTableCell {TD} at (0,429) size 149x39 [r=11 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-12"
-            LayoutTableCell {TD} at (149,429) size 149x39 [r=11 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-12"
-            LayoutTableCell {TD} at (298,429) size 149x39 [r=11 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-12"
-          LayoutTableRow {TR} at (0,468) size 447x39
-            LayoutTableCell {TD} at (0,468) size 149x39 [r=12 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-13"
-            LayoutTableCell {TD} at (149,468) size 149x39 [r=12 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-13"
-            LayoutTableCell {TD} at (298,468) size 149x39 [r=12 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-13"
-          LayoutTableRow {TR} at (0,507) size 447x39
-            LayoutTableCell {TD} at (0,507) size 149x39 [r=13 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-14"
-            LayoutTableCell {TD} at (149,507) size 149x39 [r=13 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-14"
-            LayoutTableCell {TD} at (298,507) size 149x39 [r=13 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-14"
-          LayoutTableRow {TR} at (0,546) size 447x39
-            LayoutTableCell {TD} at (0,546) size 149x39 [r=14 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-15"
-            LayoutTableCell {TD} at (149,546) size 149x39 [r=14 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-15"
-            LayoutTableCell {TD} at (298,546) size 149x39 [r=14 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-15"
-          LayoutTableRow {TR} at (0,585) size 447x39
-            LayoutTableCell {TD} at (0,585) size 149x39 [r=15 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-16"
-            LayoutTableCell {TD} at (149,585) size 149x39 [r=15 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-16"
-            LayoutTableCell {TD} at (298,585) size 149x39 [r=15 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-16"
-          LayoutTableRow {TR} at (0,624) size 447x39
-            LayoutTableCell {TD} at (0,624) size 149x39 [r=16 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-17"
-            LayoutTableCell {TD} at (149,624) size 149x39 [r=16 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-17"
-            LayoutTableCell {TD} at (298,624) size 149x39 [r=16 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-17"
-          LayoutTableRow {TR} at (0,663) size 447x39
-            LayoutTableCell {TD} at (0,663) size 149x39 [r=17 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-18"
-            LayoutTableCell {TD} at (149,663) size 149x39 [r=17 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-18"
-            LayoutTableCell {TD} at (298,663) size 149x39 [r=17 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-18"
-          LayoutTableRow {TR} at (0,799) size 447x39
-            LayoutTableCell {TD} at (0,799) size 149x39 [r=18 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-19"
-            LayoutTableCell {TD} at (149,799) size 149x39 [r=18 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-19"
-            LayoutTableCell {TD} at (298,799) size 149x39 [r=18 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-19"
-          LayoutTableRow {TR} at (0,838) size 447x39
-            LayoutTableCell {TD} at (0,838) size 149x39 [r=19 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-20"
-            LayoutTableCell {TD} at (149,838) size 149x39 [r=19 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-20"
-            LayoutTableCell {TD} at (298,838) size 149x39 [r=19 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-20"
-          LayoutTableRow {TR} at (0,877) size 447x39
-            LayoutTableCell {TD} at (0,877) size 149x39 [r=20 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-21"
-            LayoutTableCell {TD} at (149,877) size 149x39 [r=20 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-21"
-            LayoutTableCell {TD} at (298,877) size 149x39 [r=20 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-21"
-          LayoutTableRow {TR} at (0,916) size 447x39
-            LayoutTableCell {TD} at (0,916) size 149x39 [r=21 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-22"
-            LayoutTableCell {TD} at (149,916) size 149x39 [r=21 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-22"
-            LayoutTableCell {TD} at (298,916) size 149x39 [r=21 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-22"
-          LayoutTableRow {TR} at (0,955) size 447x39
-            LayoutTableCell {TD} at (0,955) size 149x39 [r=22 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-23"
-            LayoutTableCell {TD} at (149,955) size 149x39 [r=22 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-23"
-            LayoutTableCell {TD} at (298,955) size 149x39 [r=22 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-23"
-          LayoutTableRow {TR} at (0,994) size 447x39
-            LayoutTableCell {TD} at (0,994) size 149x39 [r=23 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-24"
-            LayoutTableCell {TD} at (149,994) size 149x39 [r=23 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-24"
-            LayoutTableCell {TD} at (298,994) size 149x39 [r=23 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-24"
-          LayoutTableRow {TR} at (0,1033) size 447x39
-            LayoutTableCell {TD} at (0,1033) size 149x39 [r=24 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-25"
-            LayoutTableCell {TD} at (149,1033) size 149x39 [r=24 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-25"
-            LayoutTableCell {TD} at (298,1033) size 149x39 [r=24 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-25"
-          LayoutTableRow {TR} at (0,1072) size 447x39
-            LayoutTableCell {TD} at (0,1072) size 149x39 [r=25 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-26"
-            LayoutTableCell {TD} at (149,1072) size 149x39 [r=25 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-26"
-            LayoutTableCell {TD} at (298,1072) size 149x39 [r=25 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-26"
-          LayoutTableRow {TR} at (0,1111) size 447x39
-            LayoutTableCell {TD} at (0,1111) size 149x39 [r=26 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-27"
-            LayoutTableCell {TD} at (149,1111) size 149x39 [r=26 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-27"
-            LayoutTableCell {TD} at (298,1111) size 149x39 [r=26 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-27"
-          LayoutTableRow {TR} at (0,1150) size 447x39
-            LayoutTableCell {TD} at (0,1150) size 149x39 [r=27 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-28"
-            LayoutTableCell {TD} at (149,1150) size 149x39 [r=27 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-28"
-            LayoutTableCell {TD} at (298,1150) size 149x39 [r=27 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-28"
-          LayoutTableRow {TR} at (0,1189) size 447x39
-            LayoutTableCell {TD} at (0,1189) size 149x39 [r=28 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-29"
-            LayoutTableCell {TD} at (149,1189) size 149x39 [r=28 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-29"
-            LayoutTableCell {TD} at (298,1189) size 149x39 [r=28 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-29"
-          LayoutTableRow {TR} at (0,1228) size 447x39
-            LayoutTableCell {TD} at (0,1228) size 149x39 [r=29 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-30"
-            LayoutTableCell {TD} at (149,1228) size 149x39 [r=29 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-30"
-            LayoutTableCell {TD} at (298,1228) size 149x39 [r=29 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-30"
-          LayoutTableRow {TR} at (0,1267) size 447x39
-            LayoutTableCell {TD} at (0,1267) size 149x39 [r=30 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-31"
-            LayoutTableCell {TD} at (149,1267) size 149x39 [r=30 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-31"
-            LayoutTableCell {TD} at (298,1267) size 149x39 [r=30 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-31"
-        LayoutTableSection {TFOOT} at (0,1346) size 447x40
-          LayoutTableRow {TR} at (0,0) size 447x40
-            LayoutTableCell {TH} at (0,0) size 149x40 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (10,1) size 129x37
-                text run at (10,1) width 129: "Footer 1"
-            LayoutTableCell {TH} at (149,0) size 149x40 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (10,1) size 129x37
-                text run at (10,1) width 129: "Footer 2"
-            LayoutTableCell {TH} at (298,0) size 149x40 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (10,1) size 129x37
-                text run at (10,1) width 129: "Footer 3"
-      LayoutTable {TABLE} at (0,1386) size 501x1637
-        LayoutTableSection {THEAD} at (0,0) size 501x40
-          LayoutTableRow {TR} at (0,0) size 501x40
-            LayoutTableCell {TH} at (0,0) size 167x40 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 165x37
-                text run at (1,1) width 165: "Column2 1"
-            LayoutTableCell {TH} at (167,0) size 167x40 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 165x37
-                text run at (1,1) width 165: "Column2 2"
-            LayoutTableCell {TH} at (334,0) size 167x40 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 165x37
-                text run at (1,1) width 165: "Column2 3"
-        LayoutTableSection {TBODY} at (0,40) size 501x1557
-          LayoutTableRow {TR} at (0,0) size 501x39
-            LayoutTableCell {TD} at (0,0) size 167x39 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-1"
-            LayoutTableCell {TD} at (167,0) size 167x39 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-1"
-            LayoutTableCell {TD} at (334,0) size 167x39 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-1"
-          LayoutTableRow {TR} at (0,39) size 501x39
-            LayoutTableCell {TD} at (0,39) size 167x39 [r=1 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-2"
-            LayoutTableCell {TD} at (167,39) size 167x39 [r=1 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-2"
-            LayoutTableCell {TD} at (334,39) size 167x39 [r=1 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-2"
-          LayoutTableRow {TR} at (0,78) size 501x39
-            LayoutTableCell {TD} at (0,78) size 167x39 [r=2 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-3"
-            LayoutTableCell {TD} at (167,78) size 167x39 [r=2 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-3"
-            LayoutTableCell {TD} at (334,78) size 167x39 [r=2 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-3"
-          LayoutTableRow {TR} at (0,212) size 501x39
-            LayoutTableCell {TD} at (0,212) size 167x39 [r=3 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-4"
-            LayoutTableCell {TD} at (167,212) size 167x39 [r=3 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-4"
-            LayoutTableCell {TD} at (334,212) size 167x39 [r=3 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-4"
-          LayoutTableRow {TR} at (0,251) size 501x39
-            LayoutTableCell {TD} at (0,251) size 167x39 [r=4 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-5"
-            LayoutTableCell {TD} at (167,251) size 167x39 [r=4 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-5"
-            LayoutTableCell {TD} at (334,251) size 167x39 [r=4 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-5"
-          LayoutTableRow {TR} at (0,290) size 501x39
-            LayoutTableCell {TD} at (0,290) size 167x39 [r=5 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-6"
-            LayoutTableCell {TD} at (167,290) size 167x39 [r=5 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-6"
-            LayoutTableCell {TD} at (334,290) size 167x39 [r=5 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-6"
-          LayoutTableRow {TR} at (0,329) size 501x39
-            LayoutTableCell {TD} at (0,329) size 167x39 [r=6 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-7"
-            LayoutTableCell {TD} at (167,329) size 167x39 [r=6 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-7"
-            LayoutTableCell {TD} at (334,329) size 167x39 [r=6 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-7"
-          LayoutTableRow {TR} at (0,368) size 501x39
-            LayoutTableCell {TD} at (0,368) size 167x39 [r=7 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-8"
-            LayoutTableCell {TD} at (167,368) size 167x39 [r=7 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-8"
-            LayoutTableCell {TD} at (334,368) size 167x39 [r=7 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-8"
-          LayoutTableRow {TR} at (0,407) size 501x39
-            LayoutTableCell {TD} at (0,407) size 167x39 [r=8 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-9"
-            LayoutTableCell {TD} at (167,407) size 167x39 [r=8 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-9"
-            LayoutTableCell {TD} at (334,407) size 167x39 [r=8 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-9"
-          LayoutTableRow {TR} at (0,446) size 501x39
-            LayoutTableCell {TD} at (0,446) size 167x39 [r=9 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-10"
-            LayoutTableCell {TD} at (167,446) size 167x39 [r=9 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-10"
-            LayoutTableCell {TD} at (334,446) size 167x39 [r=9 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-10"
-          LayoutTableRow {TR} at (0,485) size 501x39
-            LayoutTableCell {TD} at (0,485) size 167x39 [r=10 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "1-11"
-            LayoutTableCell {TD} at (167,485) size 167x39 [r=10 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "2-11"
-            LayoutTableCell {TD} at (334,485) size 167x39 [r=10 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "3-11"
-          LayoutTableRow {TR} at (0,524) size 501x39
-            LayoutTableCell {TD} at (0,524) size 167x39 [r=11 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-12"
-            LayoutTableCell {TD} at (167,524) size 167x39 [r=11 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-12"
-            LayoutTableCell {TD} at (334,524) size 167x39 [r=11 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-12"
-          LayoutTableRow {TR} at (0,563) size 501x39
-            LayoutTableCell {TD} at (0,563) size 167x39 [r=12 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-13"
-            LayoutTableCell {TD} at (167,563) size 167x39 [r=12 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-13"
-            LayoutTableCell {TD} at (334,563) size 167x39 [r=12 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-13"
-          LayoutTableRow {TR} at (0,602) size 501x39
-            LayoutTableCell {TD} at (0,602) size 167x39 [r=13 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-14"
-            LayoutTableCell {TD} at (167,602) size 167x39 [r=13 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-14"
-            LayoutTableCell {TD} at (334,602) size 167x39 [r=13 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-14"
-          LayoutTableRow {TR} at (0,641) size 501x39
-            LayoutTableCell {TD} at (0,641) size 167x39 [r=14 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-15"
-            LayoutTableCell {TD} at (167,641) size 167x39 [r=14 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-15"
-            LayoutTableCell {TD} at (334,641) size 167x39 [r=14 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-15"
-          LayoutTableRow {TR} at (0,680) size 501x39
-            LayoutTableCell {TD} at (0,680) size 167x39 [r=15 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-16"
-            LayoutTableCell {TD} at (167,680) size 167x39 [r=15 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-16"
-            LayoutTableCell {TD} at (334,680) size 167x39 [r=15 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-16"
-          LayoutTableRow {TR} at (0,719) size 501x39
-            LayoutTableCell {TD} at (0,719) size 167x39 [r=16 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-17"
-            LayoutTableCell {TD} at (167,719) size 167x39 [r=16 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-17"
-            LayoutTableCell {TD} at (334,719) size 167x39 [r=16 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-17"
-          LayoutTableRow {TR} at (0,758) size 501x39
-            LayoutTableCell {TD} at (0,758) size 167x39 [r=17 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-18"
-            LayoutTableCell {TD} at (167,758) size 167x39 [r=17 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-18"
-            LayoutTableCell {TD} at (334,758) size 167x39 [r=17 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-18"
-          LayoutTableRow {TR} at (0,797) size 501x39
-            LayoutTableCell {TD} at (0,797) size 167x39 [r=18 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-19"
-            LayoutTableCell {TD} at (167,797) size 167x39 [r=18 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-19"
-            LayoutTableCell {TD} at (334,797) size 167x39 [r=18 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-19"
-          LayoutTableRow {TR} at (0,836) size 501x39
-            LayoutTableCell {TD} at (0,836) size 167x39 [r=19 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-20"
-            LayoutTableCell {TD} at (167,836) size 167x39 [r=19 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-20"
-            LayoutTableCell {TD} at (334,836) size 167x39 [r=19 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-20"
-          LayoutTableRow {TR} at (0,875) size 501x39
-            LayoutTableCell {TD} at (0,875) size 167x39 [r=20 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-21"
-            LayoutTableCell {TD} at (167,875) size 167x39 [r=20 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-21"
-            LayoutTableCell {TD} at (334,875) size 167x39 [r=20 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-21"
-          LayoutTableRow {TR} at (0,1011) size 501x39
-            LayoutTableCell {TD} at (0,1011) size 167x39 [r=21 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-22"
-            LayoutTableCell {TD} at (167,1011) size 167x39 [r=21 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-22"
-            LayoutTableCell {TD} at (334,1011) size 167x39 [r=21 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-22"
-          LayoutTableRow {TR} at (0,1050) size 501x39
-            LayoutTableCell {TD} at (0,1050) size 167x39 [r=22 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-23"
-            LayoutTableCell {TD} at (167,1050) size 167x39 [r=22 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-23"
-            LayoutTableCell {TD} at (334,1050) size 167x39 [r=22 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-23"
-          LayoutTableRow {TR} at (0,1089) size 501x39
-            LayoutTableCell {TD} at (0,1089) size 167x39 [r=23 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-24"
-            LayoutTableCell {TD} at (167,1089) size 167x39 [r=23 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-24"
-            LayoutTableCell {TD} at (334,1089) size 167x39 [r=23 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-24"
-          LayoutTableRow {TR} at (0,1128) size 501x39
-            LayoutTableCell {TD} at (0,1128) size 167x39 [r=24 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-25"
-            LayoutTableCell {TD} at (167,1128) size 167x39 [r=24 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-25"
-            LayoutTableCell {TD} at (334,1128) size 167x39 [r=24 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-25"
-          LayoutTableRow {TR} at (0,1167) size 501x39
-            LayoutTableCell {TD} at (0,1167) size 167x39 [r=25 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-26"
-            LayoutTableCell {TD} at (167,1167) size 167x39 [r=25 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-26"
-            LayoutTableCell {TD} at (334,1167) size 167x39 [r=25 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-26"
-          LayoutTableRow {TR} at (0,1206) size 501x39
-            LayoutTableCell {TD} at (0,1206) size 167x39 [r=26 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-27"
-            LayoutTableCell {TD} at (167,1206) size 167x39 [r=26 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-27"
-            LayoutTableCell {TD} at (334,1206) size 167x39 [r=26 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-27"
-          LayoutTableRow {TR} at (0,1245) size 501x39
-            LayoutTableCell {TD} at (0,1245) size 167x39 [r=27 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-28"
-            LayoutTableCell {TD} at (167,1245) size 167x39 [r=27 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-28"
-            LayoutTableCell {TD} at (334,1245) size 167x39 [r=27 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-28"
-          LayoutTableRow {TR} at (0,1284) size 501x39
-            LayoutTableCell {TD} at (0,1284) size 167x39 [r=28 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-29"
-            LayoutTableCell {TD} at (167,1284) size 167x39 [r=28 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-29"
-            LayoutTableCell {TD} at (334,1284) size 167x39 [r=28 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-29"
-          LayoutTableRow {TR} at (0,1323) size 501x39
-            LayoutTableCell {TD} at (0,1323) size 167x39 [r=29 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-30"
-            LayoutTableCell {TD} at (167,1323) size 167x39 [r=29 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-30"
-            LayoutTableCell {TD} at (334,1323) size 167x39 [r=29 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-30"
-          LayoutTableRow {TR} at (0,1362) size 501x39
-            LayoutTableCell {TD} at (0,1362) size 167x39 [r=30 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-31"
-            LayoutTableCell {TD} at (167,1362) size 167x39 [r=30 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-31"
-            LayoutTableCell {TD} at (334,1362) size 167x39 [r=30 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-31"
-          LayoutTableRow {TR} at (0,1401) size 501x39
-            LayoutTableCell {TD} at (0,1401) size 167x39 [r=31 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-32"
-            LayoutTableCell {TD} at (167,1401) size 167x39 [r=31 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-32"
-            LayoutTableCell {TD} at (334,1401) size 167x39 [r=31 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-32"
-          LayoutTableRow {TR} at (0,1440) size 501x39
-            LayoutTableCell {TD} at (0,1440) size 167x39 [r=32 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-33"
-            LayoutTableCell {TD} at (167,1440) size 167x39 [r=32 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-33"
-            LayoutTableCell {TD} at (334,1440) size 167x39 [r=32 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-33"
-          LayoutTableRow {TR} at (0,1479) size 501x39
-            LayoutTableCell {TD} at (0,1479) size 167x39 [r=33 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-34"
-            LayoutTableCell {TD} at (167,1479) size 167x39 [r=33 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-34"
-            LayoutTableCell {TD} at (334,1479) size 167x39 [r=33 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-34"
-          LayoutTableRow {TR} at (0,1518) size 501x39
-            LayoutTableCell {TD} at (0,1518) size 167x39 [r=34 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-35"
-            LayoutTableCell {TD} at (167,1518) size 167x39 [r=34 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-35"
-            LayoutTableCell {TD} at (334,1518) size 167x39 [r=34 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-35"
-        LayoutTableSection {TFOOT} at (0,1597) size 501x40
-          LayoutTableRow {TR} at (0,0) size 501x40
-            LayoutTableCell {TH} at (0,0) size 167x40 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (10,1) size 147x37
-                text run at (10,1) width 147: "Footer2 1"
-            LayoutTableCell {TH} at (167,0) size 167x40 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (10,1) size 147x37
-                text run at (10,1) width 147: "Footer2 2"
-            LayoutTableCell {TH} at (334,0) size 167x40 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (10,1) size 147x37
-                text run at (10,1) width 147: "Footer2 3"
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/thead-repeats-at-top-of-each-page-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/thead-repeats-at-top-of-each-page-expected.txt
deleted file mode 100644
index 0e791e10..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/thead-repeats-at-top-of-each-page-expected.txt
+++ /dev/null
@@ -1,368 +0,0 @@
-layer at (0,0) size 800x600 scrollHeight 1548
-  LayoutView at (0,0) size 1046x799
-layer at (0,0) size 1046x1548 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1046x1548
-    LayoutBlockFlow {BODY} at (8,8) size 1030x1532
-      LayoutTable {TABLE} at (0,0) size 455x1532
-        LayoutTableSection {THEAD} at (0,0) size 455x44
-          LayoutTableRow {TR} at (0,2) size 455x40
-            LayoutTableCell {TH} at (2,2) size 149x40 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 147x37
-                text run at (1,1) width 147: "Column 1"
-            LayoutTableCell {TH} at (153,2) size 149x40 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 147x37
-                text run at (1,1) width 147: "Column 2"
-            LayoutTableCell {TH} at (304,2) size 149x40 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 147x37
-                text run at (1,1) width 147: "Column 3"
-        LayoutTableSection {TBODY} at (0,44) size 455x1488
-          LayoutTableRow {TR} at (0,0) size 455x39
-            LayoutTableCell {TD} at (2,0) size 149x39 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-1"
-            LayoutTableCell {TD} at (153,0) size 149x39 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-1"
-            LayoutTableCell {TD} at (304,0) size 149x39 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-1"
-          LayoutTableRow {TR} at (0,41) size 455x39
-            LayoutTableCell {TD} at (2,41) size 149x39 [r=1 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-2"
-            LayoutTableCell {TD} at (153,41) size 149x39 [r=1 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-2"
-            LayoutTableCell {TD} at (304,41) size 149x39 [r=1 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-2"
-          LayoutTableRow {TR} at (0,82) size 455x39
-            LayoutTableCell {TD} at (2,82) size 149x39 [r=2 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-3"
-            LayoutTableCell {TD} at (153,82) size 149x39 [r=2 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-3"
-            LayoutTableCell {TD} at (304,82) size 149x39 [r=2 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-3"
-          LayoutTableRow {TR} at (0,123) size 455x39
-            LayoutTableCell {TD} at (2,123) size 149x39 [r=3 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-4"
-            LayoutTableCell {TD} at (153,123) size 149x39 [r=3 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-4"
-            LayoutTableCell {TD} at (304,123) size 149x39 [r=3 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-4"
-          LayoutTableRow {TR} at (0,164) size 455x39
-            LayoutTableCell {TD} at (2,164) size 149x39 [r=4 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-5"
-            LayoutTableCell {TD} at (153,164) size 149x39 [r=4 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-5"
-            LayoutTableCell {TD} at (304,164) size 149x39 [r=4 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-5"
-          LayoutTableRow {TR} at (0,205) size 455x39
-            LayoutTableCell {TD} at (2,205) size 149x39 [r=5 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-6"
-            LayoutTableCell {TD} at (153,205) size 149x39 [r=5 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-6"
-            LayoutTableCell {TD} at (304,205) size 149x39 [r=5 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-6"
-          LayoutTableRow {TR} at (0,246) size 455x39
-            LayoutTableCell {TD} at (2,246) size 149x39 [r=6 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-7"
-            LayoutTableCell {TD} at (153,246) size 149x39 [r=6 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-7"
-            LayoutTableCell {TD} at (304,246) size 149x39 [r=6 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-7"
-          LayoutTableRow {TR} at (0,287) size 455x39
-            LayoutTableCell {TD} at (2,287) size 149x39 [r=7 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-8"
-            LayoutTableCell {TD} at (153,287) size 149x39 [r=7 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-8"
-            LayoutTableCell {TD} at (304,287) size 149x39 [r=7 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-8"
-          LayoutTableRow {TR} at (0,328) size 455x39
-            LayoutTableCell {TD} at (2,328) size 149x39 [r=8 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-9"
-            LayoutTableCell {TD} at (153,328) size 149x39 [r=8 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-9"
-            LayoutTableCell {TD} at (304,328) size 149x39 [r=8 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-9"
-          LayoutTableRow {TR} at (0,369) size 455x39
-            LayoutTableCell {TD} at (2,369) size 149x39 [r=9 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-10"
-            LayoutTableCell {TD} at (153,369) size 149x39 [r=9 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-10"
-            LayoutTableCell {TD} at (304,369) size 149x39 [r=9 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-10"
-          LayoutTableRow {TR} at (0,410) size 455x39
-            LayoutTableCell {TD} at (2,410) size 149x39 [r=10 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "1-11"
-            LayoutTableCell {TD} at (153,410) size 149x39 [r=10 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "2-11"
-            LayoutTableCell {TD} at (304,410) size 149x39 [r=10 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "3-11"
-          LayoutTableRow {TR} at (0,451) size 455x39
-            LayoutTableCell {TD} at (2,451) size 149x39 [r=11 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-12"
-            LayoutTableCell {TD} at (153,451) size 149x39 [r=11 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-12"
-            LayoutTableCell {TD} at (304,451) size 149x39 [r=11 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-12"
-          LayoutTableRow {TR} at (0,492) size 455x39
-            LayoutTableCell {TD} at (2,492) size 149x39 [r=12 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-13"
-            LayoutTableCell {TD} at (153,492) size 149x39 [r=12 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-13"
-            LayoutTableCell {TD} at (304,492) size 149x39 [r=12 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-13"
-          LayoutTableRow {TR} at (0,533) size 455x39
-            LayoutTableCell {TD} at (2,533) size 149x39 [r=13 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-14"
-            LayoutTableCell {TD} at (153,533) size 149x39 [r=13 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-14"
-            LayoutTableCell {TD} at (304,533) size 149x39 [r=13 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-14"
-          LayoutTableRow {TR} at (0,574) size 455x39
-            LayoutTableCell {TD} at (2,574) size 149x39 [r=14 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-15"
-            LayoutTableCell {TD} at (153,574) size 149x39 [r=14 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-15"
-            LayoutTableCell {TD} at (304,574) size 149x39 [r=14 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-15"
-          LayoutTableRow {TR} at (0,615) size 455x39
-            LayoutTableCell {TD} at (2,615) size 149x39 [r=15 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-16"
-            LayoutTableCell {TD} at (153,615) size 149x39 [r=15 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-16"
-            LayoutTableCell {TD} at (304,615) size 149x39 [r=15 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-16"
-          LayoutTableRow {TR} at (0,656) size 455x39
-            LayoutTableCell {TD} at (2,656) size 149x39 [r=16 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-17"
-            LayoutTableCell {TD} at (153,656) size 149x39 [r=16 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-17"
-            LayoutTableCell {TD} at (304,656) size 149x39 [r=16 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-17"
-          LayoutTableRow {TR} at (0,697) size 455x39
-            LayoutTableCell {TD} at (2,697) size 149x39 [r=17 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-18"
-            LayoutTableCell {TD} at (153,697) size 149x39 [r=17 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-18"
-            LayoutTableCell {TD} at (304,697) size 149x39 [r=17 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-18"
-          LayoutTableRow {TR} at (0,791) size 455x39
-            LayoutTableCell {TD} at (2,791) size 149x39 [r=18 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-19"
-            LayoutTableCell {TD} at (153,791) size 149x39 [r=18 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-19"
-            LayoutTableCell {TD} at (304,791) size 149x39 [r=18 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-19"
-          LayoutTableRow {TR} at (0,832) size 455x39
-            LayoutTableCell {TD} at (2,832) size 149x39 [r=19 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-20"
-            LayoutTableCell {TD} at (153,832) size 149x39 [r=19 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-20"
-            LayoutTableCell {TD} at (304,832) size 149x39 [r=19 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-20"
-          LayoutTableRow {TR} at (0,873) size 455x39
-            LayoutTableCell {TD} at (2,873) size 149x39 [r=20 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-21"
-            LayoutTableCell {TD} at (153,873) size 149x39 [r=20 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-21"
-            LayoutTableCell {TD} at (304,873) size 149x39 [r=20 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-21"
-          LayoutTableRow {TR} at (0,914) size 455x39
-            LayoutTableCell {TD} at (2,914) size 149x39 [r=21 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-22"
-            LayoutTableCell {TD} at (153,914) size 149x39 [r=21 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-22"
-            LayoutTableCell {TD} at (304,914) size 149x39 [r=21 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-22"
-          LayoutTableRow {TR} at (0,955) size 455x39
-            LayoutTableCell {TD} at (2,955) size 149x39 [r=22 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-23"
-            LayoutTableCell {TD} at (153,955) size 149x39 [r=22 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-23"
-            LayoutTableCell {TD} at (304,955) size 149x39 [r=22 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-23"
-          LayoutTableRow {TR} at (0,996) size 455x39
-            LayoutTableCell {TD} at (2,996) size 149x39 [r=23 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-24"
-            LayoutTableCell {TD} at (153,996) size 149x39 [r=23 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-24"
-            LayoutTableCell {TD} at (304,996) size 149x39 [r=23 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-24"
-          LayoutTableRow {TR} at (0,1037) size 455x39
-            LayoutTableCell {TD} at (2,1037) size 149x39 [r=24 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-25"
-            LayoutTableCell {TD} at (153,1037) size 149x39 [r=24 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-25"
-            LayoutTableCell {TD} at (304,1037) size 149x39 [r=24 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-25"
-          LayoutTableRow {TR} at (0,1078) size 455x39
-            LayoutTableCell {TD} at (2,1078) size 149x39 [r=25 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-26"
-            LayoutTableCell {TD} at (153,1078) size 149x39 [r=25 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-26"
-            LayoutTableCell {TD} at (304,1078) size 149x39 [r=25 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-26"
-          LayoutTableRow {TR} at (0,1119) size 455x39
-            LayoutTableCell {TD} at (2,1119) size 149x39 [r=26 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-27"
-            LayoutTableCell {TD} at (153,1119) size 149x39 [r=26 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-27"
-            LayoutTableCell {TD} at (304,1119) size 149x39 [r=26 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-27"
-          LayoutTableRow {TR} at (0,1160) size 455x39
-            LayoutTableCell {TD} at (2,1160) size 149x39 [r=27 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-28"
-            LayoutTableCell {TD} at (153,1160) size 149x39 [r=27 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-28"
-            LayoutTableCell {TD} at (304,1160) size 149x39 [r=27 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-28"
-          LayoutTableRow {TR} at (0,1201) size 455x39
-            LayoutTableCell {TD} at (2,1201) size 149x39 [r=28 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-29"
-            LayoutTableCell {TD} at (153,1201) size 149x39 [r=28 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-29"
-            LayoutTableCell {TD} at (304,1201) size 149x39 [r=28 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-29"
-          LayoutTableRow {TR} at (0,1242) size 455x39
-            LayoutTableCell {TD} at (2,1242) size 149x39 [r=29 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-30"
-            LayoutTableCell {TD} at (153,1242) size 149x39 [r=29 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-30"
-            LayoutTableCell {TD} at (304,1242) size 149x39 [r=29 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-30"
-          LayoutTableRow {TR} at (0,1283) size 455x39
-            LayoutTableCell {TD} at (2,1283) size 149x39 [r=30 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-31"
-            LayoutTableCell {TD} at (153,1283) size 149x39 [r=30 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-31"
-            LayoutTableCell {TD} at (304,1283) size 149x39 [r=30 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-31"
-          LayoutTableRow {TR} at (0,1324) size 455x39
-            LayoutTableCell {TD} at (2,1324) size 149x39 [r=31 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-32"
-            LayoutTableCell {TD} at (153,1324) size 149x39 [r=31 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-32"
-            LayoutTableCell {TD} at (304,1324) size 149x39 [r=31 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-32"
-          LayoutTableRow {TR} at (0,1365) size 455x39
-            LayoutTableCell {TD} at (2,1365) size 149x39 [r=32 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-33"
-            LayoutTableCell {TD} at (153,1365) size 149x39 [r=32 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-33"
-            LayoutTableCell {TD} at (304,1365) size 149x39 [r=32 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-33"
-          LayoutTableRow {TR} at (0,1406) size 455x39
-            LayoutTableCell {TD} at (2,1406) size 149x39 [r=33 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-34"
-            LayoutTableCell {TD} at (153,1406) size 149x39 [r=33 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-34"
-            LayoutTableCell {TD} at (304,1406) size 149x39 [r=33 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-34"
-          LayoutTableRow {TR} at (0,1447) size 455x39
-            LayoutTableCell {TD} at (2,1447) size 149x39 [r=34 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-35"
-            LayoutTableCell {TD} at (153,1447) size 149x39 [r=34 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-35"
-            LayoutTableCell {TD} at (304,1447) size 149x39 [r=34 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-35"
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/thead-repeats-at-top-of-each-page-multiple-tables-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/thead-repeats-at-top-of-each-page-multiple-tables-expected.txt
deleted file mode 100644
index 122c0cbf..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/thead-repeats-at-top-of-each-page-multiple-tables-expected.txt
+++ /dev/null
@@ -1,691 +0,0 @@
-layer at (0,0) size 800x600 scrollHeight 2982
-  LayoutView at (0,0) size 1046x799
-layer at (0,0) size 1046x2982 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1046x2982
-    LayoutBlockFlow {BODY} at (8,8) size 1030x2966
-      LayoutTable {TABLE} at (0,0) size 455x1368
-        LayoutTableSection {THEAD} at (0,0) size 455x44
-          LayoutTableRow {TR} at (0,2) size 455x40
-            LayoutTableCell {TH} at (2,2) size 149x40 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 147x37
-                text run at (1,1) width 147: "Column 1"
-            LayoutTableCell {TH} at (153,2) size 149x40 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 147x37
-                text run at (1,1) width 147: "Column 2"
-            LayoutTableCell {TH} at (304,2) size 149x40 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 147x37
-                text run at (1,1) width 147: "Column 3"
-        LayoutTableSection {TBODY} at (0,44) size 455x1324
-          LayoutTableRow {TR} at (0,0) size 455x39
-            LayoutTableCell {TD} at (2,0) size 149x39 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-1"
-            LayoutTableCell {TD} at (153,0) size 149x39 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-1"
-            LayoutTableCell {TD} at (304,0) size 149x39 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-1"
-          LayoutTableRow {TR} at (0,41) size 455x39
-            LayoutTableCell {TD} at (2,41) size 149x39 [r=1 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-2"
-            LayoutTableCell {TD} at (153,41) size 149x39 [r=1 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-2"
-            LayoutTableCell {TD} at (304,41) size 149x39 [r=1 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-2"
-          LayoutTableRow {TR} at (0,82) size 455x39
-            LayoutTableCell {TD} at (2,82) size 149x39 [r=2 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-3"
-            LayoutTableCell {TD} at (153,82) size 149x39 [r=2 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-3"
-            LayoutTableCell {TD} at (304,82) size 149x39 [r=2 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-3"
-          LayoutTableRow {TR} at (0,123) size 455x39
-            LayoutTableCell {TD} at (2,123) size 149x39 [r=3 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-4"
-            LayoutTableCell {TD} at (153,123) size 149x39 [r=3 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-4"
-            LayoutTableCell {TD} at (304,123) size 149x39 [r=3 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-4"
-          LayoutTableRow {TR} at (0,164) size 455x39
-            LayoutTableCell {TD} at (2,164) size 149x39 [r=4 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-5"
-            LayoutTableCell {TD} at (153,164) size 149x39 [r=4 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-5"
-            LayoutTableCell {TD} at (304,164) size 149x39 [r=4 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-5"
-          LayoutTableRow {TR} at (0,205) size 455x39
-            LayoutTableCell {TD} at (2,205) size 149x39 [r=5 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-6"
-            LayoutTableCell {TD} at (153,205) size 149x39 [r=5 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-6"
-            LayoutTableCell {TD} at (304,205) size 149x39 [r=5 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-6"
-          LayoutTableRow {TR} at (0,246) size 455x39
-            LayoutTableCell {TD} at (2,246) size 149x39 [r=6 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-7"
-            LayoutTableCell {TD} at (153,246) size 149x39 [r=6 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-7"
-            LayoutTableCell {TD} at (304,246) size 149x39 [r=6 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-7"
-          LayoutTableRow {TR} at (0,287) size 455x39
-            LayoutTableCell {TD} at (2,287) size 149x39 [r=7 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-8"
-            LayoutTableCell {TD} at (153,287) size 149x39 [r=7 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-8"
-            LayoutTableCell {TD} at (304,287) size 149x39 [r=7 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-8"
-          LayoutTableRow {TR} at (0,328) size 455x39
-            LayoutTableCell {TD} at (2,328) size 149x39 [r=8 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-9"
-            LayoutTableCell {TD} at (153,328) size 149x39 [r=8 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-9"
-            LayoutTableCell {TD} at (304,328) size 149x39 [r=8 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-9"
-          LayoutTableRow {TR} at (0,369) size 455x39
-            LayoutTableCell {TD} at (2,369) size 149x39 [r=9 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-10"
-            LayoutTableCell {TD} at (153,369) size 149x39 [r=9 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-10"
-            LayoutTableCell {TD} at (304,369) size 149x39 [r=9 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-10"
-          LayoutTableRow {TR} at (0,410) size 455x39
-            LayoutTableCell {TD} at (2,410) size 149x39 [r=10 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "1-11"
-            LayoutTableCell {TD} at (153,410) size 149x39 [r=10 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "2-11"
-            LayoutTableCell {TD} at (304,410) size 149x39 [r=10 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "3-11"
-          LayoutTableRow {TR} at (0,451) size 455x39
-            LayoutTableCell {TD} at (2,451) size 149x39 [r=11 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-12"
-            LayoutTableCell {TD} at (153,451) size 149x39 [r=11 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-12"
-            LayoutTableCell {TD} at (304,451) size 149x39 [r=11 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-12"
-          LayoutTableRow {TR} at (0,492) size 455x39
-            LayoutTableCell {TD} at (2,492) size 149x39 [r=12 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-13"
-            LayoutTableCell {TD} at (153,492) size 149x39 [r=12 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-13"
-            LayoutTableCell {TD} at (304,492) size 149x39 [r=12 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-13"
-          LayoutTableRow {TR} at (0,533) size 455x39
-            LayoutTableCell {TD} at (2,533) size 149x39 [r=13 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-14"
-            LayoutTableCell {TD} at (153,533) size 149x39 [r=13 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-14"
-            LayoutTableCell {TD} at (304,533) size 149x39 [r=13 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-14"
-          LayoutTableRow {TR} at (0,574) size 455x39
-            LayoutTableCell {TD} at (2,574) size 149x39 [r=14 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-15"
-            LayoutTableCell {TD} at (153,574) size 149x39 [r=14 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-15"
-            LayoutTableCell {TD} at (304,574) size 149x39 [r=14 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-15"
-          LayoutTableRow {TR} at (0,615) size 455x39
-            LayoutTableCell {TD} at (2,615) size 149x39 [r=15 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-16"
-            LayoutTableCell {TD} at (153,615) size 149x39 [r=15 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-16"
-            LayoutTableCell {TD} at (304,615) size 149x39 [r=15 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-16"
-          LayoutTableRow {TR} at (0,656) size 455x39
-            LayoutTableCell {TD} at (2,656) size 149x39 [r=16 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-17"
-            LayoutTableCell {TD} at (153,656) size 149x39 [r=16 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-17"
-            LayoutTableCell {TD} at (304,656) size 149x39 [r=16 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-17"
-          LayoutTableRow {TR} at (0,697) size 455x39
-            LayoutTableCell {TD} at (2,697) size 149x39 [r=17 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-18"
-            LayoutTableCell {TD} at (153,697) size 149x39 [r=17 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-18"
-            LayoutTableCell {TD} at (304,697) size 149x39 [r=17 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-18"
-          LayoutTableRow {TR} at (0,791) size 455x39
-            LayoutTableCell {TD} at (2,791) size 149x39 [r=18 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-19"
-            LayoutTableCell {TD} at (153,791) size 149x39 [r=18 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-19"
-            LayoutTableCell {TD} at (304,791) size 149x39 [r=18 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-19"
-          LayoutTableRow {TR} at (0,832) size 455x39
-            LayoutTableCell {TD} at (2,832) size 149x39 [r=19 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-20"
-            LayoutTableCell {TD} at (153,832) size 149x39 [r=19 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-20"
-            LayoutTableCell {TD} at (304,832) size 149x39 [r=19 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-20"
-          LayoutTableRow {TR} at (0,873) size 455x39
-            LayoutTableCell {TD} at (2,873) size 149x39 [r=20 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-21"
-            LayoutTableCell {TD} at (153,873) size 149x39 [r=20 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-21"
-            LayoutTableCell {TD} at (304,873) size 149x39 [r=20 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-21"
-          LayoutTableRow {TR} at (0,914) size 455x39
-            LayoutTableCell {TD} at (2,914) size 149x39 [r=21 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-22"
-            LayoutTableCell {TD} at (153,914) size 149x39 [r=21 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-22"
-            LayoutTableCell {TD} at (304,914) size 149x39 [r=21 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-22"
-          LayoutTableRow {TR} at (0,955) size 455x39
-            LayoutTableCell {TD} at (2,955) size 149x39 [r=22 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-23"
-            LayoutTableCell {TD} at (153,955) size 149x39 [r=22 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-23"
-            LayoutTableCell {TD} at (304,955) size 149x39 [r=22 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-23"
-          LayoutTableRow {TR} at (0,996) size 455x39
-            LayoutTableCell {TD} at (2,996) size 149x39 [r=23 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-24"
-            LayoutTableCell {TD} at (153,996) size 149x39 [r=23 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-24"
-            LayoutTableCell {TD} at (304,996) size 149x39 [r=23 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-24"
-          LayoutTableRow {TR} at (0,1037) size 455x39
-            LayoutTableCell {TD} at (2,1037) size 149x39 [r=24 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-25"
-            LayoutTableCell {TD} at (153,1037) size 149x39 [r=24 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-25"
-            LayoutTableCell {TD} at (304,1037) size 149x39 [r=24 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-25"
-          LayoutTableRow {TR} at (0,1078) size 455x39
-            LayoutTableCell {TD} at (2,1078) size 149x39 [r=25 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-26"
-            LayoutTableCell {TD} at (153,1078) size 149x39 [r=25 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-26"
-            LayoutTableCell {TD} at (304,1078) size 149x39 [r=25 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-26"
-          LayoutTableRow {TR} at (0,1119) size 455x39
-            LayoutTableCell {TD} at (2,1119) size 149x39 [r=26 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-27"
-            LayoutTableCell {TD} at (153,1119) size 149x39 [r=26 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-27"
-            LayoutTableCell {TD} at (304,1119) size 149x39 [r=26 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-27"
-          LayoutTableRow {TR} at (0,1160) size 455x39
-            LayoutTableCell {TD} at (2,1160) size 149x39 [r=27 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-28"
-            LayoutTableCell {TD} at (153,1160) size 149x39 [r=27 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-28"
-            LayoutTableCell {TD} at (304,1160) size 149x39 [r=27 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-28"
-          LayoutTableRow {TR} at (0,1201) size 455x39
-            LayoutTableCell {TD} at (2,1201) size 149x39 [r=28 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-29"
-            LayoutTableCell {TD} at (153,1201) size 149x39 [r=28 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-29"
-            LayoutTableCell {TD} at (304,1201) size 149x39 [r=28 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-29"
-          LayoutTableRow {TR} at (0,1242) size 455x39
-            LayoutTableCell {TD} at (2,1242) size 149x39 [r=29 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-30"
-            LayoutTableCell {TD} at (153,1242) size 149x39 [r=29 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-30"
-            LayoutTableCell {TD} at (304,1242) size 149x39 [r=29 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-30"
-          LayoutTableRow {TR} at (0,1283) size 455x39
-            LayoutTableCell {TD} at (2,1283) size 149x39 [r=30 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-31"
-            LayoutTableCell {TD} at (153,1283) size 149x39 [r=30 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-31"
-            LayoutTableCell {TD} at (304,1283) size 149x39 [r=30 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-31"
-      LayoutTable {TABLE} at (0,1368) size 509x1598
-        LayoutTableSection {THEAD} at (0,0) size 509x44
-          LayoutTableRow {TR} at (0,2) size 509x40
-            LayoutTableCell {TH} at (2,2) size 167x40 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 165x37
-                text run at (1,1) width 165: "Column2 1"
-            LayoutTableCell {TH} at (171,2) size 167x40 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 165x37
-                text run at (1,1) width 165: "Column2 2"
-            LayoutTableCell {TH} at (340,2) size 167x40 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 165x37
-                text run at (1,1) width 165: "Column2 3"
-        LayoutTableSection {TBODY} at (0,44) size 509x1554
-          LayoutTableRow {TR} at (0,0) size 509x39
-            LayoutTableCell {TD} at (2,0) size 167x39 [r=0 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-1"
-            LayoutTableCell {TD} at (171,0) size 167x39 [r=0 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-1"
-            LayoutTableCell {TD} at (340,0) size 167x39 [r=0 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-1"
-          LayoutTableRow {TR} at (0,41) size 509x39
-            LayoutTableCell {TD} at (2,41) size 167x39 [r=1 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-2"
-            LayoutTableCell {TD} at (171,41) size 167x39 [r=1 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-2"
-            LayoutTableCell {TD} at (340,41) size 167x39 [r=1 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-2"
-          LayoutTableRow {TR} at (0,82) size 509x39
-            LayoutTableCell {TD} at (2,82) size 167x39 [r=2 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-3"
-            LayoutTableCell {TD} at (171,82) size 167x39 [r=2 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-3"
-            LayoutTableCell {TD} at (340,82) size 167x39 [r=2 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-3"
-          LayoutTableRow {TR} at (0,123) size 509x39
-            LayoutTableCell {TD} at (2,123) size 167x39 [r=3 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-4"
-            LayoutTableCell {TD} at (171,123) size 167x39 [r=3 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-4"
-            LayoutTableCell {TD} at (340,123) size 167x39 [r=3 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-4"
-          LayoutTableRow {TR} at (0,222) size 509x39
-            LayoutTableCell {TD} at (2,222) size 167x39 [r=4 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-5"
-            LayoutTableCell {TD} at (171,222) size 167x39 [r=4 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-5"
-            LayoutTableCell {TD} at (340,222) size 167x39 [r=4 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-5"
-          LayoutTableRow {TR} at (0,263) size 509x39
-            LayoutTableCell {TD} at (2,263) size 167x39 [r=5 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-6"
-            LayoutTableCell {TD} at (171,263) size 167x39 [r=5 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-6"
-            LayoutTableCell {TD} at (340,263) size 167x39 [r=5 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-6"
-          LayoutTableRow {TR} at (0,304) size 509x39
-            LayoutTableCell {TD} at (2,304) size 167x39 [r=6 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-7"
-            LayoutTableCell {TD} at (171,304) size 167x39 [r=6 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-7"
-            LayoutTableCell {TD} at (340,304) size 167x39 [r=6 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-7"
-          LayoutTableRow {TR} at (0,345) size 509x39
-            LayoutTableCell {TD} at (2,345) size 167x39 [r=7 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-8"
-            LayoutTableCell {TD} at (171,345) size 167x39 [r=7 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-8"
-            LayoutTableCell {TD} at (340,345) size 167x39 [r=7 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-8"
-          LayoutTableRow {TR} at (0,386) size 509x39
-            LayoutTableCell {TD} at (2,386) size 167x39 [r=8 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "1-9"
-            LayoutTableCell {TD} at (171,386) size 167x39 [r=8 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "2-9"
-            LayoutTableCell {TD} at (340,386) size 167x39 [r=8 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 47x36
-                text run at (1,1) width 47: "3-9"
-          LayoutTableRow {TR} at (0,427) size 509x39
-            LayoutTableCell {TD} at (2,427) size 167x39 [r=9 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-10"
-            LayoutTableCell {TD} at (171,427) size 167x39 [r=9 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-10"
-            LayoutTableCell {TD} at (340,427) size 167x39 [r=9 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-10"
-          LayoutTableRow {TR} at (0,468) size 509x39
-            LayoutTableCell {TD} at (2,468) size 167x39 [r=10 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "1-11"
-            LayoutTableCell {TD} at (171,468) size 167x39 [r=10 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "2-11"
-            LayoutTableCell {TD} at (340,468) size 167x39 [r=10 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 63x36
-                text run at (1,1) width 63: "3-11"
-          LayoutTableRow {TR} at (0,509) size 509x39
-            LayoutTableCell {TD} at (2,509) size 167x39 [r=11 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-12"
-            LayoutTableCell {TD} at (171,509) size 167x39 [r=11 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-12"
-            LayoutTableCell {TD} at (340,509) size 167x39 [r=11 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-12"
-          LayoutTableRow {TR} at (0,550) size 509x39
-            LayoutTableCell {TD} at (2,550) size 167x39 [r=12 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-13"
-            LayoutTableCell {TD} at (171,550) size 167x39 [r=12 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-13"
-            LayoutTableCell {TD} at (340,550) size 167x39 [r=12 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-13"
-          LayoutTableRow {TR} at (0,591) size 509x39
-            LayoutTableCell {TD} at (2,591) size 167x39 [r=13 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-14"
-            LayoutTableCell {TD} at (171,591) size 167x39 [r=13 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-14"
-            LayoutTableCell {TD} at (340,591) size 167x39 [r=13 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-14"
-          LayoutTableRow {TR} at (0,632) size 509x39
-            LayoutTableCell {TD} at (2,632) size 167x39 [r=14 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-15"
-            LayoutTableCell {TD} at (171,632) size 167x39 [r=14 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-15"
-            LayoutTableCell {TD} at (340,632) size 167x39 [r=14 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-15"
-          LayoutTableRow {TR} at (0,673) size 509x39
-            LayoutTableCell {TD} at (2,673) size 167x39 [r=15 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-16"
-            LayoutTableCell {TD} at (171,673) size 167x39 [r=15 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-16"
-            LayoutTableCell {TD} at (340,673) size 167x39 [r=15 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-16"
-          LayoutTableRow {TR} at (0,714) size 509x39
-            LayoutTableCell {TD} at (2,714) size 167x39 [r=16 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-17"
-            LayoutTableCell {TD} at (171,714) size 167x39 [r=16 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-17"
-            LayoutTableCell {TD} at (340,714) size 167x39 [r=16 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-17"
-          LayoutTableRow {TR} at (0,755) size 509x39
-            LayoutTableCell {TD} at (2,755) size 167x39 [r=17 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-18"
-            LayoutTableCell {TD} at (171,755) size 167x39 [r=17 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-18"
-            LayoutTableCell {TD} at (340,755) size 167x39 [r=17 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-18"
-          LayoutTableRow {TR} at (0,796) size 509x39
-            LayoutTableCell {TD} at (2,796) size 167x39 [r=18 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-19"
-            LayoutTableCell {TD} at (171,796) size 167x39 [r=18 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-19"
-            LayoutTableCell {TD} at (340,796) size 167x39 [r=18 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-19"
-          LayoutTableRow {TR} at (0,837) size 509x39
-            LayoutTableCell {TD} at (2,837) size 167x39 [r=19 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-20"
-            LayoutTableCell {TD} at (171,837) size 167x39 [r=19 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-20"
-            LayoutTableCell {TD} at (340,837) size 167x39 [r=19 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-20"
-          LayoutTableRow {TR} at (0,878) size 509x39
-            LayoutTableCell {TD} at (2,878) size 167x39 [r=20 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-21"
-            LayoutTableCell {TD} at (171,878) size 167x39 [r=20 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-21"
-            LayoutTableCell {TD} at (340,878) size 167x39 [r=20 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-21"
-          LayoutTableRow {TR} at (0,919) size 509x39
-            LayoutTableCell {TD} at (2,919) size 167x39 [r=21 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-22"
-            LayoutTableCell {TD} at (171,919) size 167x39 [r=21 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-22"
-            LayoutTableCell {TD} at (340,919) size 167x39 [r=21 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-22"
-          LayoutTableRow {TR} at (0,1021) size 509x39
-            LayoutTableCell {TD} at (2,1021) size 167x39 [r=22 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-23"
-            LayoutTableCell {TD} at (171,1021) size 167x39 [r=22 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-23"
-            LayoutTableCell {TD} at (340,1021) size 167x39 [r=22 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-23"
-          LayoutTableRow {TR} at (0,1062) size 509x39
-            LayoutTableCell {TD} at (2,1062) size 167x39 [r=23 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-24"
-            LayoutTableCell {TD} at (171,1062) size 167x39 [r=23 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-24"
-            LayoutTableCell {TD} at (340,1062) size 167x39 [r=23 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-24"
-          LayoutTableRow {TR} at (0,1103) size 509x39
-            LayoutTableCell {TD} at (2,1103) size 167x39 [r=24 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-25"
-            LayoutTableCell {TD} at (171,1103) size 167x39 [r=24 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-25"
-            LayoutTableCell {TD} at (340,1103) size 167x39 [r=24 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-25"
-          LayoutTableRow {TR} at (0,1144) size 509x39
-            LayoutTableCell {TD} at (2,1144) size 167x39 [r=25 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-26"
-            LayoutTableCell {TD} at (171,1144) size 167x39 [r=25 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-26"
-            LayoutTableCell {TD} at (340,1144) size 167x39 [r=25 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-26"
-          LayoutTableRow {TR} at (0,1185) size 509x39
-            LayoutTableCell {TD} at (2,1185) size 167x39 [r=26 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-27"
-            LayoutTableCell {TD} at (171,1185) size 167x39 [r=26 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-27"
-            LayoutTableCell {TD} at (340,1185) size 167x39 [r=26 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-27"
-          LayoutTableRow {TR} at (0,1226) size 509x39
-            LayoutTableCell {TD} at (2,1226) size 167x39 [r=27 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-28"
-            LayoutTableCell {TD} at (171,1226) size 167x39 [r=27 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-28"
-            LayoutTableCell {TD} at (340,1226) size 167x39 [r=27 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-28"
-          LayoutTableRow {TR} at (0,1267) size 509x39
-            LayoutTableCell {TD} at (2,1267) size 167x39 [r=28 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-29"
-            LayoutTableCell {TD} at (171,1267) size 167x39 [r=28 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-29"
-            LayoutTableCell {TD} at (340,1267) size 167x39 [r=28 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-29"
-          LayoutTableRow {TR} at (0,1308) size 509x39
-            LayoutTableCell {TD} at (2,1308) size 167x39 [r=29 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-30"
-            LayoutTableCell {TD} at (171,1308) size 167x39 [r=29 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-30"
-            LayoutTableCell {TD} at (340,1308) size 167x39 [r=29 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-30"
-          LayoutTableRow {TR} at (0,1349) size 509x39
-            LayoutTableCell {TD} at (2,1349) size 167x39 [r=30 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-31"
-            LayoutTableCell {TD} at (171,1349) size 167x39 [r=30 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-31"
-            LayoutTableCell {TD} at (340,1349) size 167x39 [r=30 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-31"
-          LayoutTableRow {TR} at (0,1390) size 509x39
-            LayoutTableCell {TD} at (2,1390) size 167x39 [r=31 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-32"
-            LayoutTableCell {TD} at (171,1390) size 167x39 [r=31 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-32"
-            LayoutTableCell {TD} at (340,1390) size 167x39 [r=31 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-32"
-          LayoutTableRow {TR} at (0,1431) size 509x39
-            LayoutTableCell {TD} at (2,1431) size 167x39 [r=32 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-33"
-            LayoutTableCell {TD} at (171,1431) size 167x39 [r=32 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-33"
-            LayoutTableCell {TD} at (340,1431) size 167x39 [r=32 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-33"
-          LayoutTableRow {TR} at (0,1472) size 509x39
-            LayoutTableCell {TD} at (2,1472) size 167x39 [r=33 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-34"
-            LayoutTableCell {TD} at (171,1472) size 167x39 [r=33 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-34"
-            LayoutTableCell {TD} at (340,1472) size 167x39 [r=33 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-34"
-          LayoutTableRow {TR} at (0,1513) size 509x39
-            LayoutTableCell {TD} at (2,1513) size 167x39 [r=34 c=0 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "1-35"
-            LayoutTableCell {TD} at (171,1513) size 167x39 [r=34 c=1 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "2-35"
-            LayoutTableCell {TD} at (340,1513) size 167x39 [r=34 c=2 rs=1 cs=1]
-              LayoutText {#text} at (1,1) size 65x36
-                text run at (1,1) width 65: "3-35"
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/thead-under-multicol-expected.png b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/thead-under-multicol-expected.png
deleted file mode 100644
index 19481ffb..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/thead-under-multicol-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/thead-under-multicol-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/thead-under-multicol-expected.txt
deleted file mode 100644
index f95e21d..0000000
--- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/printing/thead-under-multicol-expected.txt
+++ /dev/null
@@ -1,373 +0,0 @@
-layer at (0,0) size 800x600 scrollHeight 2016
-  LayoutView at (0,0) size 1561x1193
-layer at (0,0) size 1561x2016 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 1561x2016
-    LayoutBlockFlow {BODY} at (8,8) size 1545x2000
-layer at (8,8) size 1545x2000 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
-  LayoutBlockFlow {DIV} at (0,0) size 1545x2000
-    LayoutMultiColumnSet (anonymous) at (0,0) size 1545x2000
-layer at (8,8) size 765x3840 backgroundClip at (0,0) size 781x600 clip at (0,0) size 781x600
-  LayoutMultiColumnFlowThread (anonymous) at (0,0) size 764.50x3840
-    LayoutTable {TABLE} at (0,0) size 305x3840
-      LayoutTableSection {THEAD} at (0,0) size 305x31
-        LayoutTableRow {TR} at (0,2) size 305x27
-          LayoutTableCell {TH} at (2,2) size 99x27 [r=0 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 97x24
-              text run at (1,1) width 97: "Column 1"
-          LayoutTableCell {TH} at (103,2) size 99x27 [r=0 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 97x24
-              text run at (1,1) width 97: "Column 2"
-          LayoutTableCell {TH} at (204,2) size 99x27 [r=0 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 97x24
-              text run at (1,1) width 97: "Column 3"
-      LayoutTableSection {TBODY} at (0,31) size 305x3809
-        LayoutTableRow {TR} at (0,0) size 305x102
-          LayoutTableCell {TD} at (2,37) size 99x27 [r=0 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-1"
-          LayoutTableCell {TD} at (103,37) size 99x27 [r=0 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-1"
-          LayoutTableCell {TD} at (204,37) size 99x27 [r=0 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-1"
-        LayoutTableRow {TR} at (0,104) size 305x102
-          LayoutTableCell {TD} at (2,141) size 99x27 [r=1 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-2"
-          LayoutTableCell {TD} at (103,141) size 99x27 [r=1 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-2"
-          LayoutTableCell {TD} at (204,141) size 99x27 [r=1 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-2"
-        LayoutTableRow {TR} at (0,208) size 305x102
-          LayoutTableCell {TD} at (2,245) size 99x27 [r=2 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-3"
-          LayoutTableCell {TD} at (103,245) size 99x27 [r=2 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-3"
-          LayoutTableCell {TD} at (204,245) size 99x27 [r=2 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-3"
-        LayoutTableRow {TR} at (0,312) size 305x102
-          LayoutTableCell {TD} at (2,349) size 99x27 [r=3 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-4"
-          LayoutTableCell {TD} at (103,349) size 99x27 [r=3 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-4"
-          LayoutTableCell {TD} at (204,349) size 99x27 [r=3 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-4"
-        LayoutTableRow {TR} at (0,416) size 305x102
-          LayoutTableCell {TD} at (2,453) size 99x27 [r=4 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-5"
-          LayoutTableCell {TD} at (103,453) size 99x27 [r=4 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-5"
-          LayoutTableCell {TD} at (204,453) size 99x27 [r=4 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-5"
-        LayoutTableRow {TR} at (0,520) size 305x102
-          LayoutTableCell {TD} at (2,557) size 99x27 [r=5 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-6"
-          LayoutTableCell {TD} at (103,557) size 99x27 [r=5 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-6"
-          LayoutTableCell {TD} at (204,557) size 99x27 [r=5 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-6"
-        LayoutTableRow {TR} at (0,624) size 305x102
-          LayoutTableCell {TD} at (2,661) size 99x27 [r=6 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-7"
-          LayoutTableCell {TD} at (103,661) size 99x27 [r=6 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-7"
-          LayoutTableCell {TD} at (204,661) size 99x27 [r=6 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-7"
-        LayoutTableRow {TR} at (0,728) size 305x102
-          LayoutTableCell {TD} at (2,765) size 99x27 [r=7 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-8"
-          LayoutTableCell {TD} at (103,765) size 99x27 [r=7 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-8"
-          LayoutTableCell {TD} at (204,765) size 99x27 [r=7 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-8"
-        LayoutTableRow {TR} at (0,832) size 305x102
-          LayoutTableCell {TD} at (2,869) size 99x27 [r=8 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "1-9"
-          LayoutTableCell {TD} at (103,869) size 99x27 [r=8 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "2-9"
-          LayoutTableCell {TD} at (204,869) size 99x27 [r=8 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 31x24
-              text run at (1,1) width 31: "3-9"
-        LayoutTableRow {TR} at (0,936) size 305x102
-          LayoutTableCell {TD} at (2,973) size 99x27 [r=9 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-10"
-          LayoutTableCell {TD} at (103,973) size 99x27 [r=9 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-10"
-          LayoutTableCell {TD} at (204,973) size 99x27 [r=9 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-10"
-        LayoutTableRow {TR} at (0,1040) size 305x102
-          LayoutTableCell {TD} at (2,1077) size 99x27 [r=10 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 42x24
-              text run at (1,1) width 42: "1-11"
-          LayoutTableCell {TD} at (103,1077) size 99x27 [r=10 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 42x24
-              text run at (1,1) width 42: "2-11"
-          LayoutTableCell {TD} at (204,1077) size 99x27 [r=10 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 42x24
-              text run at (1,1) width 42: "3-11"
-        LayoutTableRow {TR} at (0,1185) size 305x102
-          LayoutTableCell {TD} at (2,1222) size 99x27 [r=11 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-12"
-          LayoutTableCell {TD} at (103,1222) size 99x27 [r=11 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-12"
-          LayoutTableCell {TD} at (204,1222) size 99x27 [r=11 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-12"
-        LayoutTableRow {TR} at (0,1289) size 305x102
-          LayoutTableCell {TD} at (2,1326) size 99x27 [r=12 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-13"
-          LayoutTableCell {TD} at (103,1326) size 99x27 [r=12 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-13"
-          LayoutTableCell {TD} at (204,1326) size 99x27 [r=12 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-13"
-        LayoutTableRow {TR} at (0,1393) size 305x102
-          LayoutTableCell {TD} at (2,1430) size 99x27 [r=13 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-14"
-          LayoutTableCell {TD} at (103,1430) size 99x27 [r=13 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-14"
-          LayoutTableCell {TD} at (204,1430) size 99x27 [r=13 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-14"
-        LayoutTableRow {TR} at (0,1497) size 305x102
-          LayoutTableCell {TD} at (2,1534) size 99x27 [r=14 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-15"
-          LayoutTableCell {TD} at (103,1534) size 99x27 [r=14 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-15"
-          LayoutTableCell {TD} at (204,1534) size 99x27 [r=14 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-15"
-        LayoutTableRow {TR} at (0,1601) size 305x102
-          LayoutTableCell {TD} at (2,1638) size 99x27 [r=15 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-16"
-          LayoutTableCell {TD} at (103,1638) size 99x27 [r=15 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-16"
-          LayoutTableCell {TD} at (204,1638) size 99x27 [r=15 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-16"
-        LayoutTableRow {TR} at (0,1705) size 305x102
-          LayoutTableCell {TD} at (2,1742) size 99x27 [r=16 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-17"
-          LayoutTableCell {TD} at (103,1742) size 99x27 [r=16 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-17"
-          LayoutTableCell {TD} at (204,1742) size 99x27 [r=16 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-17"
-        LayoutTableRow {TR} at (0,1809) size 305x102
-          LayoutTableCell {TD} at (2,1846) size 99x27 [r=17 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-18"
-          LayoutTableCell {TD} at (103,1846) size 99x27 [r=17 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-18"
-          LayoutTableCell {TD} at (204,1846) size 99x27 [r=17 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-18"
-        LayoutTableRow {TR} at (0,1913) size 305x102
-          LayoutTableCell {TD} at (2,1950) size 99x27 [r=18 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-19"
-          LayoutTableCell {TD} at (103,1950) size 99x27 [r=18 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-19"
-          LayoutTableCell {TD} at (204,1950) size 99x27 [r=18 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-19"
-        LayoutTableRow {TR} at (0,2017) size 305x102
-          LayoutTableCell {TD} at (2,2054) size 99x27 [r=19 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-20"
-          LayoutTableCell {TD} at (103,2054) size 99x27 [r=19 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-20"
-          LayoutTableCell {TD} at (204,2054) size 99x27 [r=19 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-20"
-        LayoutTableRow {TR} at (0,2121) size 305x102
-          LayoutTableCell {TD} at (2,2158) size 99x27 [r=20 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-21"
-          LayoutTableCell {TD} at (103,2158) size 99x27 [r=20 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-21"
-          LayoutTableCell {TD} at (204,2158) size 99x27 [r=20 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-21"
-        LayoutTableRow {TR} at (0,2225) size 305x102
-          LayoutTableCell {TD} at (2,2262) size 99x27 [r=21 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-22"
-          LayoutTableCell {TD} at (103,2262) size 99x27 [r=21 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-22"
-          LayoutTableCell {TD} at (204,2262) size 99x27 [r=21 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-22"
-        LayoutTableRow {TR} at (0,2370) size 305x102
-          LayoutTableCell {TD} at (2,2407) size 99x27 [r=22 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-23"
-          LayoutTableCell {TD} at (103,2407) size 99x27 [r=22 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-23"
-          LayoutTableCell {TD} at (204,2407) size 99x27 [r=22 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-23"
-        LayoutTableRow {TR} at (0,2474) size 305x102
-          LayoutTableCell {TD} at (2,2511) size 99x27 [r=23 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-24"
-          LayoutTableCell {TD} at (103,2511) size 99x27 [r=23 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-24"
-          LayoutTableCell {TD} at (204,2511) size 99x27 [r=23 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-24"
-        LayoutTableRow {TR} at (0,2578) size 305x102
-          LayoutTableCell {TD} at (2,2615) size 99x27 [r=24 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-25"
-          LayoutTableCell {TD} at (103,2615) size 99x27 [r=24 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-25"
-          LayoutTableCell {TD} at (204,2615) size 99x27 [r=24 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-25"
-        LayoutTableRow {TR} at (0,2682) size 305x102
-          LayoutTableCell {TD} at (2,2719) size 99x27 [r=25 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-26"
-          LayoutTableCell {TD} at (103,2719) size 99x27 [r=25 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-26"
-          LayoutTableCell {TD} at (204,2719) size 99x27 [r=25 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-26"
-        LayoutTableRow {TR} at (0,2786) size 305x102
-          LayoutTableCell {TD} at (2,2823) size 99x27 [r=26 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-27"
-          LayoutTableCell {TD} at (103,2823) size 99x27 [r=26 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-27"
-          LayoutTableCell {TD} at (204,2823) size 99x27 [r=26 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-27"
-        LayoutTableRow {TR} at (0,2890) size 305x102
-          LayoutTableCell {TD} at (2,2927) size 99x27 [r=27 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-28"
-          LayoutTableCell {TD} at (103,2927) size 99x27 [r=27 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-28"
-          LayoutTableCell {TD} at (204,2927) size 99x27 [r=27 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-28"
-        LayoutTableRow {TR} at (0,2994) size 305x102
-          LayoutTableCell {TD} at (2,3031) size 99x27 [r=28 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-29"
-          LayoutTableCell {TD} at (103,3031) size 99x27 [r=28 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-29"
-          LayoutTableCell {TD} at (204,3031) size 99x27 [r=28 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-29"
-        LayoutTableRow {TR} at (0,3185) size 305x102
-          LayoutTableCell {TD} at (2,3222) size 99x27 [r=29 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-30"
-          LayoutTableCell {TD} at (103,3222) size 99x27 [r=29 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-30"
-          LayoutTableCell {TD} at (204,3222) size 99x27 [r=29 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-30"
-        LayoutTableRow {TR} at (0,3289) size 305x102
-          LayoutTableCell {TD} at (2,3326) size 99x27 [r=30 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-31"
-          LayoutTableCell {TD} at (103,3326) size 99x27 [r=30 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-31"
-          LayoutTableCell {TD} at (204,3326) size 99x27 [r=30 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-31"
-        LayoutTableRow {TR} at (0,3393) size 305x102
-          LayoutTableCell {TD} at (2,3430) size 99x27 [r=31 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-32"
-          LayoutTableCell {TD} at (103,3430) size 99x27 [r=31 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-32"
-          LayoutTableCell {TD} at (204,3430) size 99x27 [r=31 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-32"
-        LayoutTableRow {TR} at (0,3497) size 305x102
-          LayoutTableCell {TD} at (2,3534) size 99x27 [r=32 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-33"
-          LayoutTableCell {TD} at (103,3534) size 99x27 [r=32 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-33"
-          LayoutTableCell {TD} at (204,3534) size 99x27 [r=32 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-33"
-        LayoutTableRow {TR} at (0,3601) size 305x102
-          LayoutTableCell {TD} at (2,3638) size 99x27 [r=33 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-34"
-          LayoutTableCell {TD} at (103,3638) size 99x27 [r=33 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-34"
-          LayoutTableCell {TD} at (204,3638) size 99x27 [r=33 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-34"
-        LayoutTableRow {TR} at (0,3705) size 305x102
-          LayoutTableCell {TD} at (2,3742) size 99x27 [r=34 c=0 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "1-35"
-          LayoutTableCell {TD} at (103,3742) size 99x27 [r=34 c=1 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "2-35"
-          LayoutTableCell {TD} at (204,3742) size 99x27 [r=34 c=2 rs=1 cs=1]
-            LayoutText {#text} at (1,1) size 43x24
-              text run at (1,1) width 43: "3-35"
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
index 46445ed..354fc92 100644
--- a/third_party/blink/public/platform/web_runtime_features.h
+++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -80,7 +80,7 @@
   BLINK_PLATFORM_EXPORT static void EnableScrollTopLeftInterop(bool);
   BLINK_PLATFORM_EXPORT static void EnableDatabase(bool);
   BLINK_PLATFORM_EXPORT static void EnableDecodeToYUV(bool);
-  BLINK_PLATFORM_EXPORT static void EnableDisplayCutoutViewportFit(bool);
+  BLINK_PLATFORM_EXPORT static void EnableDisplayCutoutAPI(bool);
   BLINK_PLATFORM_EXPORT static void EnableFastMobileScrolling(bool);
   BLINK_PLATFORM_EXPORT static void EnableFileSystem(bool);
   BLINK_PLATFORM_EXPORT static void EnableForceTallerSelectPopup(bool);
diff --git a/third_party/blink/renderer/bindings/core/v8/rejected_promises.cc b/third_party/blink/renderer/bindings/core/v8/rejected_promises.cc
index c49a04a..07e5117 100644
--- a/third_party/blink/renderer/bindings/core/v8/rejected_promises.cc
+++ b/third_party/blink/renderer/bindings/core/v8/rejected_promises.cc
@@ -208,7 +208,7 @@
 void RejectedPromises::HandlerAdded(v8::PromiseRejectMessage data) {
   // First look it up in the pending messages and fast return, it'll be covered
   // by processQueue().
-  for (auto it = queue_.begin(); it != queue_.end(); ++it) {
+  for (auto* it = queue_.begin(); it != queue_.end(); ++it) {
     if (!(*it)->IsCollected() && (*it)->HasPromise(data.GetPromise())) {
       queue_.erase(it);
       return;
@@ -235,46 +235,35 @@
   if (queue_.IsEmpty())
     return;
 
-  std::unique_ptr<MessageQueue> queue = std::make_unique<MessageQueue>();
-  queue->Swap(queue_);
-  ProcessQueueNow(std::move(queue));
+  ProcessQueueNow(std::move(queue_));
+  queue_.clear();
 }
 
 void RejectedPromises::ProcessQueue() {
   if (queue_.IsEmpty())
     return;
 
-  std::map<ExecutionContext*, std::unique_ptr<MessageQueue>> queues;
-  while (!queue_.IsEmpty()) {
-    std::unique_ptr<Message> message = queue_.TakeFirst();
-    ExecutionContext* context = message->GetContext();
-    if (queues.find(context) == queues.end()) {
-      queues.emplace(context, std::make_unique<MessageQueue>());
-    }
-    queues[context]->emplace_back(std::move(message));
-  }
+  std::map<ExecutionContext*, MessageQueue> queues;
+  for (auto& message : queue_)
+    queues[message->GetContext()].push_back(std::move(message));
+  queue_.clear();
 
   for (auto& kv : queues) {
-    std::unique_ptr<MessageQueue> queue = std::make_unique<MessageQueue>();
-    queue->Swap(*kv.second);
     kv.first->GetTaskRunner(blink::TaskType::kDOMManipulation)
         ->PostTask(FROM_HERE, WTF::Bind(&RejectedPromises::ProcessQueueNow,
                                         scoped_refptr<RejectedPromises>(this),
-                                        WTF::Passed(std::move(queue))));
+                                        WTF::Passed(std::move(kv.second))));
   }
 }
 
-void RejectedPromises::ProcessQueueNow(std::unique_ptr<MessageQueue> queue) {
+void RejectedPromises::ProcessQueueNow(MessageQueue queue) {
   // Remove collected handlers.
-  for (size_t i = 0; i < reported_as_errors_.size();) {
-    if (reported_as_errors_.at(i)->IsCollected())
-      reported_as_errors_.EraseAt(i);
-    else
-      ++i;
-  }
+  auto* new_end = std::remove_if(
+      reported_as_errors_.begin(), reported_as_errors_.end(),
+      [](const auto& message) { return message->IsCollected(); });
+  reported_as_errors_.Shrink(new_end - reported_as_errors_.begin());
 
-  while (!queue->IsEmpty()) {
-    std::unique_ptr<Message> message = queue->TakeFirst();
+  for (auto& message : queue) {
     if (message->IsCollected())
       continue;
     if (!message->HasHandler()) {
diff --git a/third_party/blink/renderer/bindings/core/v8/rejected_promises.h b/third_party/blink/renderer/bindings/core/v8/rejected_promises.h
index 2ec8e8ca..71821c55 100644
--- a/third_party/blink/renderer/bindings/core/v8/rejected_promises.h
+++ b/third_party/blink/renderer/bindings/core/v8/rejected_promises.h
@@ -8,7 +8,6 @@
 #include <memory>
 #include "third_party/blink/renderer/bindings/core/v8/source_location.h"
 #include "third_party/blink/renderer/platform/loader/fetch/access_control_status.h"
-#include "third_party/blink/renderer/platform/wtf/deque.h"
 #include "third_party/blink/renderer/platform/wtf/forward.h"
 #include "third_party/blink/renderer/platform/wtf/ref_counted.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
@@ -46,9 +45,9 @@
 
   RejectedPromises();
 
-  using MessageQueue = Deque<std::unique_ptr<Message>>;
+  using MessageQueue = Vector<std::unique_ptr<Message>>;
 
-  void ProcessQueueNow(std::unique_ptr<MessageQueue>);
+  void ProcessQueueNow(MessageQueue);
   void RevokeNow(std::unique_ptr<Message>);
 
   MessageQueue queue_;
diff --git a/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.cc b/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.cc
index 1cf46d6..bed72d0 100644
--- a/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.cc
+++ b/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.cc
@@ -130,16 +130,6 @@
   CustomElementDefinition::Trace(visitor);
 }
 
-void ScriptCustomElementDefinition::TraceWrappers(
-    ScriptWrappableVisitor* visitor) const {
-  visitor->TraceWrappers(constructor_.Cast<v8::Value>());
-  visitor->TraceWrappers(connected_callback_.Cast<v8::Value>());
-  visitor->TraceWrappers(disconnected_callback_.Cast<v8::Value>());
-  visitor->TraceWrappers(adopted_callback_.Cast<v8::Value>());
-  visitor->TraceWrappers(attribute_changed_callback_.Cast<v8::Value>());
-  CustomElementDefinition::TraceWrappers(visitor);
-}
-
 HTMLElement* ScriptCustomElementDefinition::HandleCreateElementSyncException(
     Document& document,
     const QualifiedName& tag_name,
diff --git a/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.h b/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.h
index 0ab1b6b..6e2796f 100644
--- a/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.h
+++ b/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.h
@@ -44,7 +44,6 @@
   ~ScriptCustomElementDefinition() override = default;
 
   void Trace(Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
   v8::Local<v8::Object> Constructor() const;
 
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_abstract_event_listener.cc b/third_party/blink/renderer/bindings/core/v8/v8_abstract_event_listener.cc
index b945008..c0c3386c 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_abstract_event_listener.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v8_abstract_event_listener.cc
@@ -263,10 +263,4 @@
   EventListener::Trace(visitor);
 }
 
-void V8AbstractEventListener::TraceWrappers(
-    ScriptWrappableVisitor* visitor) const {
-  visitor->TraceWrappers(listener_.Cast<v8::Value>());
-  EventListener::TraceWrappers(visitor);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_abstract_event_listener.h b/third_party/blink/renderer/bindings/core/v8/v8_abstract_event_listener.h
index 1674ddd..58807c26 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_abstract_event_listener.h
+++ b/third_party/blink/renderer/bindings/core/v8/v8_abstract_event_listener.h
@@ -112,7 +112,6 @@
   DOMWrapperWorld& World() const { return *world_; }
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
  protected:
   V8AbstractEventListener(v8::Isolate*, bool is_attribute, DOMWrapperWorld&);
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_intersection_observer_delegate.cc b/third_party/blink/renderer/bindings/core/v8/v8_intersection_observer_delegate.cc
index 402752f3..acd50fa 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_intersection_observer_delegate.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v8_intersection_observer_delegate.cc
@@ -38,10 +38,4 @@
   ContextClient::Trace(visitor);
 }
 
-void V8IntersectionObserverDelegate::TraceWrappers(
-    ScriptWrappableVisitor* visitor) const {
-  visitor->TraceWrappers(callback_);
-  IntersectionObserverDelegate::TraceWrappers(visitor);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_intersection_observer_delegate.h b/third_party/blink/renderer/bindings/core/v8/v8_intersection_observer_delegate.h
index 9fb8cdd..3611a18e 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_intersection_observer_delegate.h
+++ b/third_party/blink/renderer/bindings/core/v8/v8_intersection_observer_delegate.h
@@ -30,7 +30,6 @@
   ExecutionContext* GetExecutionContext() const override;
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
   void Deliver(const HeapVector<Member<IntersectionObserverEntry>>&,
                IntersectionObserver&) override;
diff --git a/third_party/blink/renderer/build/scripts/core/css/css_properties.py b/third_party/blink/renderer/build/scripts/core/css/css_properties.py
index 839e0c3..371ccc7 100755
--- a/third_party/blink/renderer/build/scripts/core/css/css_properties.py
+++ b/third_party/blink/renderer/build/scripts/core/css/css_properties.py
@@ -240,6 +240,9 @@
         set_if_none(property_, 'custom_compare', False)
         set_if_none(property_, 'mutable', False)
 
+        if property_['direction_aware_options'] and not property_['style_builder_template']:
+            property_['style_builder_template'] = 'direction_aware'
+
     @property
     def default_parameters(self):
         return self._default_parameters
diff --git a/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_subclasses.py b/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_subclasses.py
index e22cffe..020fdbba 100755
--- a/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_subclasses.py
+++ b/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_subclasses.py
@@ -102,10 +102,7 @@
 
         property_['style_builder_declare'] = (
             property_['is_property'] and
-            not property_['longhands'] and
-            not property_['direction_aware_options'] and
-            not property_['builder_skip'] and
-            not property_['style_builder_legacy'])
+            not property_['longhands'])
 
         if not property_['style_builder_declare']:
             for x in ['initial', 'inherit', 'value']:
diff --git a/third_party/blink/renderer/build/scripts/core/css/properties/templates/style_builder_functions.tmpl b/third_party/blink/renderer/build/scripts/core/css/properties/templates/style_builder_functions.tmpl
index 6ff2d06..e10f98b 100644
--- a/third_party/blink/renderer/build/scripts/core/css/properties/templates/style_builder_functions.tmpl
+++ b/third_party/blink/renderer/build/scripts/core/css/properties/templates/style_builder_functions.tmpl
@@ -71,6 +71,14 @@
   {%- endif %}
 {% endmacro %}
 
+{% macro resolve_directional_property(apply_call) %}
+const CSSProperty& resolved_property =
+    ResolveDirectionAwareProperty(state.Style()->Direction(),
+                                  state.Style()->GetWritingMode());
+DCHECK(!resolved_property.IDEquals(PropertyID()));
+ToLonghand(resolved_property).{{apply_call}};
+{% endmacro %}
+
 {% macro style_builder_functions(property, header) %}
   {% if not property.style_builder_template %}
     {% call(property) apply_initial(property, header) %}
@@ -103,6 +111,26 @@
   state.Style()->{{property.is_inherited_setter}}(false);
         {% endif %}
     {% endcall %}
+  {% elif property.style_builder_template == 'empty' %}
+    {% call(property) apply_initial(property, header) %}
+  // Intentionally empty.
+    {% endcall %}
+    {% call(property) apply_inherit(property, header) %}
+  // Intentionally empty.
+    {% endcall %}
+    {% call(property) apply_value(property, header) %}
+  // Intentionally empty.
+    {% endcall %}
+  {% elif property.style_builder_template == 'direction_aware' %}
+    {% call(property) apply_initial(property, header) %}
+{{resolve_directional_property('ApplyInitial(state)')|indent(2, true) -}}
+    {% endcall %}
+    {% call(property) apply_inherit(property, header) %}
+{{resolve_directional_property('ApplyInherit(state)')|indent(2, true) -}}
+    {% endcall %}
+    {% call(property) apply_value(property, header) %}
+{{resolve_directional_property('ApplyValue(state, value)')|indent(2, true) -}}
+    {% endcall %}
   {% elif property.style_builder_template == "auto" %}
     {% set auto_getter = property.style_builder_template_args['auto_getter'] or
                        'HasAuto' + property.name_for_methods %}
diff --git a/third_party/blink/renderer/build/scripts/make_computed_style_base.py b/third_party/blink/renderer/build/scripts/make_computed_style_base.py
index ea1849e..b6e8a5b 100755
--- a/third_party/blink/renderer/build/scripts/make_computed_style_base.py
+++ b/third_party/blink/renderer/build/scripts/make_computed_style_base.py
@@ -7,7 +7,6 @@
 
 import json5_generator
 import template_expander
-import make_style_builder
 import keyword_utils
 import bisect
 
diff --git a/third_party/blink/renderer/build/scripts/make_style_builder.py b/third_party/blink/renderer/build/scripts/make_style_builder.py
index 6be8707..fe09745 100755
--- a/third_party/blink/renderer/build/scripts/make_style_builder.py
+++ b/third_party/blink/renderer/build/scripts/make_style_builder.py
@@ -32,30 +32,18 @@
 
 from core.css import css_properties
 import json5_generator
-import template_expander
-
 
 def calculate_apply_functions_to_declare(property_):
     property_['should_declare_functions'] = \
         not property_['longhands'] \
-        and not property_['direction_aware_options'] \
-        and not property_['builder_skip'] \
         and property_['is_property']
     property_['use_property_class_in_stylebuilder'] = \
-        property_['should_declare_functions'] \
-        and not property_['style_builder_legacy']
-
+        property_['should_declare_functions']
 
 class StyleBuilderWriter(json5_generator.Writer):
 
     def __init__(self, json5_file_paths, output_dir):
         super(StyleBuilderWriter, self).__init__([], output_dir)
-        self._outputs = {
-            'style_builder_functions.h': self.generate_style_builder_functions_h,
-            'style_builder_functions.cc':
-                self.generate_style_builder_functions_cpp,
-            'style_builder.cc': self.generate_style_builder,
-        }
 
         self._json5_properties = css_properties.CSSProperties(json5_file_paths)
         self._input_files = json5_file_paths
@@ -68,29 +56,5 @@
     def css_properties(self):
         return self._json5_properties
 
-    @template_expander.use_jinja('templates/style_builder_functions.h.tmpl')
-    def generate_style_builder_functions_h(self):
-        return {
-            'input_files': self._input_files,
-            'properties': self._properties,
-        }
-
-    @template_expander.use_jinja('templates/style_builder_functions.cc.tmpl')
-    def generate_style_builder_functions_cpp(self):
-        return {
-            'input_files': self._input_files,
-            'properties': self._properties,
-            'properties_by_id': self._json5_properties.properties_by_id,
-        }
-
-    @template_expander.use_jinja('templates/style_builder.cc.tmpl')
-    def generate_style_builder(self):
-        return {
-            'input_files': self._input_files,
-            'properties': self._properties,
-            'properties_by_id': self._json5_properties.properties_by_id,
-        }
-
-
 if __name__ == '__main__':
     json5_generator.Maker(StyleBuilderWriter).main()
diff --git a/third_party/blink/renderer/build/scripts/templates/style_builder.cc.tmpl b/third_party/blink/renderer/build/scripts/templates/style_builder.cc.tmpl
deleted file mode 100644
index 9d5c041..0000000
--- a/third_party/blink/renderer/build/scripts/templates/style_builder.cc.tmpl
+++ /dev/null
@@ -1,73 +0,0 @@
-{% from 'templates/macros.tmpl' import license, source_files_for_generated_file %}
-{{license()}}
-
-{{source_files_for_generated_file(template_file, input_files)}}
-
-#include "third_party/blink/renderer/core/css/resolver/style_builder.h"
-
-#include "third_party/blink/renderer/core/css/css_property_value.h"
-#include "third_party/blink/renderer/core/css/properties/longhand.h"
-#include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h"
-#include "third_party/blink/renderer/core/style/computed_style.h"
-#include "third_party/blink/renderer/core/style_builder_functions.h"
-
-namespace blink {
-
-// TODO(crbug.com/751354): Delete this method and call property class methods
-// directly using CSSProperty::Get() once all StyleBuilderFunctions have been
-// moved to property classes.
-void StyleBuilder::ApplyProperty(const CSSProperty& property,
-                                 StyleResolverState& state,
-                                 const CSSValue& value,
-                                 bool isInitial,
-                                 bool isInherit) {
-  switch (property.PropertyID()) {
-    {% for input_property in properties if input_property.should_declare_functions %}
-    {% set property_id = input_property.property_id %}
-    {% if input_property.use_property_class_in_stylebuilder %}
-    case {{input_property.property_id}}:
-      if (isInitial)
-        ToLonghand(Get{{property_id}}()).ApplyInitial(state);
-      else if (isInherit)
-        ToLonghand(Get{{property_id}}()).ApplyInherit(state);
-      else
-        ToLonghand(Get{{property_id}}()).ApplyValue(state, value);
-      return;
-      {% else %}
-    case {{input_property.property_id}}:
-      if (isInitial)
-        StyleBuilderFunctions::applyInitial{{property_id}}(state);
-      else if (isInherit)
-        StyleBuilderFunctions::applyInherit{{property_id}}(state);
-      else
-        StyleBuilderFunctions::applyValue{{property_id}}(state, value);
-      return;
-    {% endif %}
-
-    {% endfor %}
-    case CSSPropertyVariable:
-      DCHECK(!isInitial);
-      DCHECK(!isInherit);
-      StyleBuilderFunctions::applyValueCSSPropertyVariable(state, value);
-      return;
-    {% for input_property in properties if input_property.direction_aware_options %}
-    case {{input_property.property_id}}:
-    {% endfor %}
-    {
-      const CSSProperty& resolved_property =
-              property.ResolveDirectionAwareProperty(state.Style()->Direction(),
-                                             state.Style()->GetWritingMode());
-      DCHECK(!resolved_property.IDEquals(property.PropertyID()));
-      ApplyProperty(resolved_property, state, value);
-      return;
-    }
-    {% for input_property in properties if input_property.builder_skip %}
-    case {{input_property.property_id}}:
-    {% endfor %}
-      return;
-    default:
-      NOTREACHED();
-  }
-}
-
-} // namespace blink
diff --git a/third_party/blink/renderer/build/scripts/templates/style_builder_functions.cc.tmpl b/third_party/blink/renderer/build/scripts/templates/style_builder_functions.cc.tmpl
deleted file mode 100644
index 044e635..0000000
--- a/third_party/blink/renderer/build/scripts/templates/style_builder_functions.cc.tmpl
+++ /dev/null
@@ -1,88 +0,0 @@
-{% from 'templates/macros.tmpl' import license, source_files_for_generated_file %}
-{% from 'core/css/properties/templates/style_builder_functions.tmpl' import set_value, convert_and_set_value %}
-
-{#
-    This file is for property handlers which use the templating engine to
-    reduce (handwritten) code duplication.
-
-    The `properties' dict can be used to access a property's parameters in
-    jinja2 templates (i.e. setter, getter, initial, type_name)
-
-    TODO(meade): Delete this file once all StyleBuilderFunction generation
-    is moved to the CSSProperty.
-#}
-
-{{source_files_for_generated_file(template_file, input_files)}}
-
-#include "third_party/blink/renderer/core/style_builder_functions.h"
-
-#include "third_party/blink/renderer/core/animation/css/css_animation_data.h"
-#include "third_party/blink/renderer/core/css/basic_shape_functions.h"
-#include "third_party/blink/renderer/core/css/css_content_distribution_value.h"
-#include "third_party/blink/renderer/core/css/css_custom_ident_value.h"
-#include "third_party/blink/renderer/core/css/css_primitive_value_mappings.h"
-#include "third_party/blink/renderer/core/css/css_uri_value.h"
-#include "third_party/blink/renderer/core/css/css_value_pair.h"
-#include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h"
-#include "third_party/blink/renderer/core/css_value_keywords.h"
-#include "third_party/blink/renderer/core/style/computed_style.h"
-
-{% macro declare_initial_function(property_id) %}
-void StyleBuilderFunctions::applyInitial{{property_id}}(StyleResolverState& state)
-{%- endmacro %}
-{% macro declare_inherit_function(property_id) %}
-void StyleBuilderFunctions::applyInherit{{property_id}}(StyleResolverState& state)
-{%- endmacro %}
-{% macro declare_value_function(property_id) %}
-void StyleBuilderFunctions::applyValue{{property_id}}(StyleResolverState& state, const CSSValue& value)
-{%- endmacro %}
-{% macro set_is_inherited(property) %}
-state.Style()->{{property.is_inherited_setter}}
-{%- endmacro %}
-
-namespace blink {
-
-{% for property in properties if property.should_declare_functions
-    and not property.use_property_class_in_stylebuilder
-    and not property.style_builder_template %}
-{% if property.style_builder_generate_initial %}
-{{declare_initial_function(property.property_id)}} {
-  {% if property.svg %}
-  {{set_value(property)}}(SVGComputedStyle::{{property.initial}}());
-  {% elif property.font %}
-  {{set_value(property)}}(FontBuilder::{{property.initial}}());
-  {% else %}
-  {{set_value(property)}}(ComputedStyleInitialValues::{{property.initial}}());
-  {% endif %}
-  {% if property.independent %}
-  {{set_is_inherited(property)}}(false);
-  {% endif %}
-}
-
-{% endif %}
-{% if property.style_builder_generate_inherit %}
-{{declare_inherit_function(property.property_id)}} {
-  {% if property.svg %}
-  {{set_value(property)}}(state.ParentStyle()->SvgStyle().{{property.getter}}());
-  {% elif property.font %}
-  {{set_value(property)}}(state.ParentFontDescription().{{property.getter}}());
-  {% else %}
-  {{set_value(property)}}(state.ParentStyle()->{{property.getter}}());
-  {% endif %}
-  {% if property.independent %}
-  {{set_is_inherited(property)}}(true);
-  {% endif %}
-}
-
-{% endif %}
-{% if property.style_builder_generate_value %}
-{{declare_value_function(property.property_id)}} {
-  {{convert_and_set_value(property)}}
-  {% if property.independent %}
-  {{set_is_inherited(property)}}(false);
-  {% endif %}
-}
-
-{% endif %}
-{% endfor %}
-} // namespace blink
diff --git a/third_party/blink/renderer/build/scripts/templates/style_builder_functions.h.tmpl b/third_party/blink/renderer/build/scripts/templates/style_builder_functions.h.tmpl
deleted file mode 100644
index f5c84f5..0000000
--- a/third_party/blink/renderer/build/scripts/templates/style_builder_functions.h.tmpl
+++ /dev/null
@@ -1,35 +0,0 @@
-{% from 'templates/macros.tmpl' import license, source_files_for_generated_file %}
-{{license()}}
-
-{{source_files_for_generated_file(template_file, input_files)}}
-
-#ifndef BLINK_CORE_STYLE_BUILDER_FUNCTIONS_H_
-#define BLINK_CORE_STYLE_BUILDER_FUNCTIONS_H_
-
-#include "third_party/blink/renderer/core/css/resolver/style_builder_converter.h"
-
-namespace blink {
-
-class CSSValue;
-class StyleResolverState;
-
-// TODO(crbug.com/751354): Delete this class once all StyleBuilderFunctions
-// have been moved to property classes.
-class StyleBuilderFunctions {
- public:
-
-  {% for property in properties if property.should_declare_functions
-      and not property.use_property_class_in_stylebuilder %}
-  static void applyInitial{{property.property_id}}(StyleResolverState&);
-  static void applyInherit{{property.property_id}}(StyleResolverState&);
-  static void applyValue{{property.property_id}}(StyleResolverState&, const CSSValue&);
-
-  {% endfor %}
-
-  static void applyValueCSSPropertyVariable(StyleResolverState&,
-                                            const CSSValue&);
-};
-
-}  // namespace blink
-
-#endif  // BLINK_CORE_STYLE_BUILDER_FUNCTIONS_H_
diff --git a/third_party/blink/renderer/core/BUILD.gn b/third_party/blink/renderer/core/BUILD.gn
index a87df15..18930ed 100644
--- a/third_party/blink/renderer/core/BUILD.gn
+++ b/third_party/blink/renderer/core/BUILD.gn
@@ -1130,20 +1130,6 @@
   ]
 }
 
-css_properties("make_core_generated_style_builder") {
-  script = "../build/scripts/make_style_builder.py"
-  other_inputs = [
-    "../build/scripts/templates/style_builder.cc.tmpl",
-    "../build/scripts/templates/style_builder_functions.cc.tmpl",
-    "../build/scripts/templates/style_builder_functions.h.tmpl",
-  ]
-  outputs = [
-    "$blink_core_output_dir/style_builder.cc",
-    "$blink_core_output_dir/style_builder_functions.h",
-    "$blink_core_output_dir/style_builder_functions.cc",
-  ]
-}
-
 css_properties("make_core_generated_cssom_types") {
   script = "../build/scripts/core/css/make_cssom_types.py"
   other_inputs = [
@@ -1531,7 +1517,6 @@
   ":make_core_generated_media_feature_names",
   ":make_core_generated_media_type_names",
   ":make_core_generated_origin_trials",
-  ":make_core_generated_style_builder",
   ":make_core_generated_style_property_shorthand",
   ":make_core_generated_svg_names",
   ":make_core_generated_xlink_names",
@@ -2037,9 +2022,10 @@
     "paint/ng/ng_text_fragment_painter_test.cc",
     "paint/nine_piece_image_grid_test.cc",
     "paint/object_paint_invalidator_test.cc",
+    "paint/paint_and_raster_invalidation_test.cc",
+    "paint/paint_and_raster_invalidation_test.h",
     "paint/paint_controller_paint_test.cc",
     "paint/paint_controller_paint_test.h",
-    "paint/paint_invalidation_test.cc",
     "paint/paint_layer_clipper_test.cc",
     "paint/paint_layer_painter_test.cc",
     "paint/paint_layer_scrollable_area_test.cc",
@@ -2049,7 +2035,6 @@
     "paint/paint_property_tree_printer_test.cc",
     "paint/paint_property_tree_update_tests.cc",
     "paint/pre_paint_tree_walk_test.cc",
-    "paint/raster_invalidation_test.cc",
     "paint/stub_chrome_client_for_spv2.h",
     "paint/table_painter_test.cc",
     "paint/text_painter_test.cc",
diff --git a/third_party/blink/renderer/core/css/BUILD.gn b/third_party/blink/renderer/core/css/BUILD.gn
index 8db0b38..0456666 100644
--- a/third_party/blink/renderer/core/css/BUILD.gn
+++ b/third_party/blink/renderer/core/css/BUILD.gn
@@ -655,6 +655,7 @@
     "properties/longhands/translate_custom.cc",
     "properties/longhands/unicode_bidi_custom.cc",
     "properties/longhands/user_select_custom.cc",
+    "properties/longhands/variable.cc",
     "properties/longhands/variable.h",
     "properties/longhands/vector_effect_custom.cc",
     "properties/longhands/vertical_align_custom.cc",
diff --git a/third_party/blink/renderer/core/css/CSSProperties.json5 b/third_party/blink/renderer/core/css/CSSProperties.json5
index 0ee973a..6e5f99e 100644
--- a/third_party/blink/renderer/core/css/CSSProperties.json5
+++ b/third_party/blink/renderer/core/css/CSSProperties.json5
@@ -62,6 +62,7 @@
         "border_image",
         "color",
         "counter",
+        "empty",
         "grid",
         // The legacy template means that regular code generation should not be
         // be performed, and that the property is hard-coded in
@@ -80,13 +81,6 @@
       valid_type: "dict"
     },
 
-    // Set this to true if we do not support generation of style builder
-    // functions in the CSSProperty subclasses (yet).
-    style_builder_legacy: {
-      default: false,
-      value_type: "bool"
-    },
-
     // - is_descriptor
     // Whether it is a CSS descriptor. Descriptors define the characteristics of
     // an at-rule. E.g. @viewport is an at-rule, and width is a valid descriptor
@@ -275,8 +269,8 @@
     // The remaining arguments are used for the StyleBuilder and allow us to
     // succinctly describe how to apply properties. When default handlers are
     // not sufficient, we should prefer to use converter, and failing that
-    // define custom property handlers in StyleBuilderCustom.cpp. We only should
-    // use style_builder_functions.cc.tmpl to define handlers when there are
+    // define custom property handlers in CSSProperty subclasses. We should only
+    // use style_builder_functions.tmpl to define handlers when there are
     // multiple properties requiring the same handling, but converter doesn't
     // suffice.
 
@@ -330,13 +324,6 @@
     converter: {
     },
 
-    // - builder_skip
-    // Ignore this property in the StyleBuilder
-    builder_skip: {
-      default: false,
-      valid_type: "bool",
-    },
-
     // - logical_side
     // The logical side represented by a direction-dependent property
     // - shorthand_for_physical_side
@@ -4327,23 +4314,23 @@
     {
       name: "all",
       affected_by_all: false,
-      builder_skip: true,
+      style_builder_template: "empty",
     },
     {
       name: "page",
       property_methods: ["ParseSingleValue"],
-      builder_skip: true,
+      style_builder_template: "empty",
     },
     {
       name: "-webkit-font-size-delta",
       property_methods: ["ParseSingleValue"],
-      builder_skip: true,
+      style_builder_template: "empty",
     },
     {
       name: "-webkit-text-decorations-in-effect",
       property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"],
       inherited: true,
-      builder_skip: true,
+      style_builder_template: "empty",
     },
 
     // Descriptor only names
@@ -4386,7 +4373,7 @@
       name: "viewport-fit",
       is_descriptor: true,
       is_property: false,
-      runtime_flag: "DisplayCutoutViewportFit",
+      runtime_flag: "DisplayCutoutAPI",
     },
 
     // Shorthands
diff --git a/third_party/blink/renderer/core/css/computed_style_css_value_mapping.cc b/third_party/blink/renderer/core/css/computed_style_css_value_mapping.cc
index 5f3bae95..2bc626e 100644
--- a/third_party/blink/renderer/core/css/computed_style_css_value_mapping.cc
+++ b/third_party/blink/renderer/core/css/computed_style_css_value_mapping.cc
@@ -57,13 +57,13 @@
   return CSSCustomPropertyDeclaration::Create(custom_property_name, data);
 }
 
-std::unique_ptr<HashMap<AtomicString, scoped_refptr<CSSVariableData>>>
+HashMap<AtomicString, scoped_refptr<CSSVariableData>>
 ComputedStyleCSSValueMapping::GetVariables(const ComputedStyle& style) {
   // TODO(timloh): Also return non-inherited variables
   StyleInheritedVariables* variables = style.InheritedVariables();
   if (variables)
     return variables->GetVariables();
-  return nullptr;
+  return {};
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/computed_style_css_value_mapping.h b/third_party/blink/renderer/core/css/computed_style_css_value_mapping.h
index 89ab2ca..533f128 100644
--- a/third_party/blink/renderer/core/css/computed_style_css_value_mapping.h
+++ b/third_party/blink/renderer/core/css/computed_style_css_value_mapping.h
@@ -21,8 +21,8 @@
   static const CSSValue* Get(const AtomicString custom_property_name,
                              const ComputedStyle&,
                              const PropertyRegistry*);
-  static std::unique_ptr<HashMap<AtomicString, scoped_refptr<CSSVariableData>>>
-  GetVariables(const ComputedStyle&);
+  static HashMap<AtomicString, scoped_refptr<CSSVariableData>> GetVariables(
+      const ComputedStyle&);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/css_computed_style_declaration.cc b/third_party/blink/renderer/core/css/css_computed_style_declaration.cc
index 73a3dddb..d82b4e9 100644
--- a/third_party/blink/renderer/core/css/css_computed_style_declaration.cc
+++ b/third_party/blink/renderer/core/css/css_computed_style_declaration.cc
@@ -317,11 +317,11 @@
       StyledNode()->GetDocument().GetPropertyRegistry());
 }
 
-std::unique_ptr<HashMap<AtomicString, scoped_refptr<CSSVariableData>>>
+HashMap<AtomicString, scoped_refptr<CSSVariableData>>
 CSSComputedStyleDeclaration::GetVariables() const {
   const ComputedStyle* style = ComputeComputedStyle();
   if (!style)
-    return nullptr;
+    return {};
   return ComputedStyleCSSValueMapping::GetVariables(*style);
 }
 
diff --git a/third_party/blink/renderer/core/css/css_computed_style_declaration.h b/third_party/blink/renderer/core/css/css_computed_style_declaration.h
index 24c796b..27351cf 100644
--- a/third_party/blink/renderer/core/css/css_computed_style_declaration.h
+++ b/third_party/blink/renderer/core/css/css_computed_style_declaration.h
@@ -61,8 +61,7 @@
 
   const CSSValue* GetPropertyCSSValue(const CSSProperty&) const;
   const CSSValue* GetPropertyCSSValue(AtomicString custom_property_name) const;
-  std::unique_ptr<HashMap<AtomicString, scoped_refptr<CSSVariableData>>>
-  GetVariables() const;
+  HashMap<AtomicString, scoped_refptr<CSSVariableData>> GetVariables() const;
 
   const CSSValue* GetFontSizeCSSValuePreferringKeyword() const;
   bool IsMonospaceFont() const;
diff --git a/third_party/blink/renderer/core/css/cssom/computed_style_property_map.cc b/third_party/blink/renderer/core/css/cssom/computed_style_property_map.cc
index b92cf86..826c5139 100644
--- a/third_party/blink/renderer/core/css/cssom/computed_style_property_map.cc
+++ b/third_party/blink/renderer/core/css/cssom/computed_style_property_map.cc
@@ -167,9 +167,8 @@
   if (!style)
     return 0;
 
-  const auto& variables = ComputedStyleCSSValueMapping::GetVariables(*style);
   return CSSComputedStyleDeclaration::ComputableProperties().size() +
-         (variables ? variables->size() : 0);
+         ComputedStyleCSSValueMapping::GetVariables(*style).size();
 }
 
 bool ComputedStylePropertyMap::ComparePropertyNames(const String& a,
@@ -264,14 +263,12 @@
       values.emplace_back(property->GetPropertyNameAtomicString(), value);
   }
 
-  const auto& variables = ComputedStyleCSSValueMapping::GetVariables(*style);
-  if (variables) {
-    for (const auto& name_value : *variables) {
-      if (name_value.value) {
-        values.emplace_back(name_value.key,
-                            CSSCustomPropertyDeclaration::Create(
-                                name_value.key, name_value.value));
-      }
+  for (const auto& name_value :
+       ComputedStyleCSSValueMapping::GetVariables(*style)) {
+    if (name_value.value) {
+      values.emplace_back(name_value.key,
+                          CSSCustomPropertyDeclaration::Create(
+                              name_value.key, name_value.value));
     }
   }
 
diff --git a/third_party/blink/renderer/core/css/properties/longhands/variable.cc b/third_party/blink/renderer/core/css/properties/longhands/variable.cc
new file mode 100644
index 0000000..2e4064b
--- /dev/null
+++ b/third_party/blink/renderer/core/css/properties/longhands/variable.cc
@@ -0,0 +1,98 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/core/css/properties/longhands/variable.h"
+
+#include "third_party/blink/renderer/core/css/css_custom_property_declaration.h"
+#include "third_party/blink/renderer/core/css/property_registration.h"
+#include "third_party/blink/renderer/core/css/property_registry.h"
+#include "third_party/blink/renderer/core/style/computed_style.h"
+
+namespace blink {
+
+void Variable::ApplyValue(StyleResolverState& state,
+                          const CSSValue& value) const {
+  const CSSCustomPropertyDeclaration& declaration =
+      ToCSSCustomPropertyDeclaration(value);
+  const AtomicString& name = declaration.GetName();
+  const PropertyRegistration* registration = nullptr;
+  const PropertyRegistry* registry = state.GetDocument().GetPropertyRegistry();
+  if (registry)
+    registration = registry->Registration(name);
+
+  bool is_inherited_property = !registration || registration->Inherits();
+  bool initial = declaration.IsInitial(is_inherited_property);
+  bool inherit = declaration.IsInherit(is_inherited_property);
+  DCHECK(!(initial && inherit));
+
+  if (!initial && !inherit) {
+    if (declaration.Value()->NeedsVariableResolution()) {
+      if (is_inherited_property) {
+        state.Style()->SetUnresolvedInheritedVariable(name,
+                                                      declaration.Value());
+      } else {
+        state.Style()->SetUnresolvedNonInheritedVariable(name,
+                                                         declaration.Value());
+      }
+      return;
+    }
+
+    if (!registration) {
+      state.Style()->SetResolvedUnregisteredVariable(name, declaration.Value());
+      return;
+    }
+
+    const CSSValue* parsed_value = declaration.Value()->ParseForSyntax(
+        registration->Syntax(), state.GetDocument().GetSecureContextMode());
+    if (parsed_value) {
+      DCHECK(parsed_value);
+      if (is_inherited_property) {
+        state.Style()->SetResolvedInheritedVariable(name, declaration.Value(),
+                                                    parsed_value);
+      } else {
+        state.Style()->SetResolvedNonInheritedVariable(
+            name, declaration.Value(), parsed_value);
+      }
+      return;
+    }
+    if (is_inherited_property)
+      inherit = true;
+    else
+      initial = true;
+  }
+  DCHECK(initial ^ inherit);
+
+  state.Style()->RemoveVariable(name, is_inherited_property);
+  if (initial) {
+    return;
+  }
+
+  DCHECK(inherit);
+  CSSVariableData* parent_value =
+      state.ParentStyle()->GetVariable(name, is_inherited_property);
+  const CSSValue* parent_css_value =
+      registration && parent_value ? state.ParentStyle()->GetRegisteredVariable(
+                                         name, is_inherited_property)
+                                   : nullptr;
+
+  if (!is_inherited_property) {
+    DCHECK(registration);
+    if (parent_value) {
+      state.Style()->SetResolvedNonInheritedVariable(name, parent_value,
+                                                     parent_css_value);
+    }
+    return;
+  }
+
+  if (parent_value) {
+    if (!registration) {
+      state.Style()->SetResolvedUnregisteredVariable(name, parent_value);
+    } else {
+      state.Style()->SetResolvedInheritedVariable(name, parent_value,
+                                                  parent_css_value);
+    }
+  }
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/css/properties/longhands/variable.h b/third_party/blink/renderer/core/css/properties/longhands/variable.h
index 34dbd49..e10d823 100644
--- a/third_party/blink/renderer/core/css/properties/longhands/variable.h
+++ b/third_party/blink/renderer/core/css/properties/longhands/variable.h
@@ -9,13 +9,13 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_CSS_PROPERTIES_LONGHANDS_VARIABLE_H_
 #define THIRD_PARTY_BLINK_RENDERER_CORE_CSS_PROPERTIES_LONGHANDS_VARIABLE_H_
 
-#include "third_party/blink/renderer/core/css/properties/css_property.h"
+#include "third_party/blink/renderer/core/css/properties/longhand.h"
 
 namespace blink {
 
-class Variable final : public CSSProperty {
+class Variable final : public Longhand {
  public:
-  constexpr Variable() : CSSProperty() {}
+  constexpr Variable() : Longhand() {}
 
   bool IsInherited() const override { return true; }
   bool IsAffectedByAll() const override { return false; }
@@ -34,6 +34,9 @@
     NOTREACHED();
     return nullptr;
   }
+
+  void ApplyValue(StyleResolverState& state,
+                  const CSSValue& value) const override;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/resolver/css_variable_resolver.cc b/third_party/blink/renderer/core/css/resolver/css_variable_resolver.cc
index b54e0eb..f0258c7 100644
--- a/third_party/blink/renderer/core/css/resolver/css_variable_resolver.cc
+++ b/third_party/blink/renderer/core/css/resolver/css_variable_resolver.cc
@@ -23,7 +23,6 @@
 #include "third_party/blink/renderer/core/style/computed_style.h"
 #include "third_party/blink/renderer/core/style/style_inherited_variables.h"
 #include "third_party/blink/renderer/core/style/style_non_inherited_variables.h"
-#include "third_party/blink/renderer/core/style_builder_functions.h"
 #include "third_party/blink/renderer/core/style_property_shorthand.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 
diff --git a/third_party/blink/renderer/core/css/resolver/style_builder.h b/third_party/blink/renderer/core/css/resolver/style_builder.h
index 5974c1b..1693a74 100644
--- a/third_party/blink/renderer/core/css/resolver/style_builder.h
+++ b/third_party/blink/renderer/core/css/resolver/style_builder.h
@@ -48,13 +48,6 @@
   static void ApplyProperty(const CSSProperty&,
                             StyleResolverState&,
                             const CSSValue&);
-
- private:
-  static void ApplyProperty(const CSSProperty&,
-                            StyleResolverState&,
-                            const CSSValue&,
-                            bool is_initial,
-                            bool is_inherit);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/resolver/style_builder_custom.cc b/third_party/blink/renderer/core/css/resolver/style_builder_custom.cc
index 39c8710b..effd1f32 100644
--- a/third_party/blink/renderer/core/css/resolver/style_builder_custom.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_builder_custom.cc
@@ -42,49 +42,11 @@
 #include <utility>
 
 #include "third_party/blink/renderer/core/animation/css/css_animations.h"
-#include "third_party/blink/renderer/core/css/css_counter_value.h"
-#include "third_party/blink/renderer/core/css/css_cursor_image_value.h"
-#include "third_party/blink/renderer/core/css/css_custom_property_declaration.h"
-#include "third_party/blink/renderer/core/css/css_function_value.h"
-#include "third_party/blink/renderer/core/css/css_grid_template_areas_value.h"
-#include "third_party/blink/renderer/core/css/css_image_set_value.h"
-#include "third_party/blink/renderer/core/css/css_layout_function_value.h"
-#include "third_party/blink/renderer/core/css/css_pending_substitution_value.h"
-#include "third_party/blink/renderer/core/css/css_primitive_value_mappings.h"
-#include "third_party/blink/renderer/core/css/css_property_value_set.h"
-#include "third_party/blink/renderer/core/css/css_resolution_units.h"
-#include "third_party/blink/renderer/core/css/css_value_id_mappings.h"
-#include "third_party/blink/renderer/core/css/css_variable_reference_value.h"
-#include "third_party/blink/renderer/core/css/properties/css_property.h"
-#include "third_party/blink/renderer/core/css/property_registration.h"
-#include "third_party/blink/renderer/core/css/property_registry.h"
+#include "third_party/blink/renderer/core/css/properties/longhand.h"
 #include "third_party/blink/renderer/core/css/resolver/css_variable_resolver.h"
-#include "third_party/blink/renderer/core/css/resolver/element_style_resources.h"
-#include "third_party/blink/renderer/core/css/resolver/filter_operation_resolver.h"
-#include "third_party/blink/renderer/core/css/resolver/font_builder.h"
 #include "third_party/blink/renderer/core/css/resolver/style_builder.h"
-#include "third_party/blink/renderer/core/css/style_rule.h"
-#include "third_party/blink/renderer/core/css_property_names.h"
-#include "third_party/blink/renderer/core/css_value_keywords.h"
-#include "third_party/blink/renderer/core/frame/local_frame.h"
-#include "third_party/blink/renderer/core/frame/settings.h"
-#include "third_party/blink/renderer/core/frame/use_counter.h"
-#include "third_party/blink/renderer/core/frame/web_feature.h"
+#include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h"
 #include "third_party/blink/renderer/core/style/computed_style.h"
-#include "third_party/blink/renderer/core/style/computed_style_constants.h"
-#include "third_party/blink/renderer/core/style/content_data.h"
-#include "third_party/blink/renderer/core/style/counter_content.h"
-#include "third_party/blink/renderer/core/style/quotes_data.h"
-#include "third_party/blink/renderer/core/style/style_generated_image.h"
-#include "third_party/blink/renderer/core/style/style_inherited_variables.h"
-#include "third_party/blink/renderer/core/style/style_non_inherited_variables.h"
-#include "third_party/blink/renderer/core/style/svg_computed_style.h"
-#include "third_party/blink/renderer/core/style_builder_functions.h"
-#include "third_party/blink/renderer/core/style_property_shorthand.h"
-#include "third_party/blink/renderer/platform/fonts/font_description.h"
-#include "third_party/blink/renderer/platform/wtf/math_extras.h"
-#include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
-#include "third_party/blink/renderer/platform/wtf/vector.h"
 
 namespace blink {
 
@@ -166,90 +128,16 @@
       is_initial = true;
   }
 
-  StyleBuilder::ApplyProperty(property, state, value, is_initial, is_inherit);
-}
+  // CSSPropertyVariable currently handles initial/inherit inside ApplyValue.
+  DCHECK(id != CSSPropertyVariable || !is_initial);
+  DCHECK(id != CSSPropertyVariable || !is_inherit);
 
-void StyleBuilderFunctions::applyValueCSSPropertyVariable(
-    StyleResolverState& state,
-    const CSSValue& value) {
-  const CSSCustomPropertyDeclaration& declaration =
-      ToCSSCustomPropertyDeclaration(value);
-  const AtomicString& name = declaration.GetName();
-  const PropertyRegistration* registration = nullptr;
-  const PropertyRegistry* registry = state.GetDocument().GetPropertyRegistry();
-  if (registry)
-    registration = registry->Registration(name);
-
-  bool is_inherited_property = !registration || registration->Inherits();
-  bool initial = declaration.IsInitial(is_inherited_property);
-  bool inherit = declaration.IsInherit(is_inherited_property);
-  DCHECK(!(initial && inherit));
-
-  if (!initial && !inherit) {
-    if (declaration.Value()->NeedsVariableResolution()) {
-      if (is_inherited_property)
-        state.Style()->SetUnresolvedInheritedVariable(name,
-                                                      declaration.Value());
-      else
-        state.Style()->SetUnresolvedNonInheritedVariable(name,
-                                                         declaration.Value());
-      return;
-    }
-
-    if (!registration) {
-      state.Style()->SetResolvedUnregisteredVariable(name, declaration.Value());
-      return;
-    }
-
-    const CSSValue* parsed_value = declaration.Value()->ParseForSyntax(
-        registration->Syntax(), state.GetDocument().GetSecureContextMode());
-    if (parsed_value) {
-      DCHECK(parsed_value);
-      if (is_inherited_property)
-        state.Style()->SetResolvedInheritedVariable(name, declaration.Value(),
-                                                    parsed_value);
-      else
-        state.Style()->SetResolvedNonInheritedVariable(
-            name, declaration.Value(), parsed_value);
-      return;
-    }
-    if (is_inherited_property)
-      inherit = true;
-    else
-      initial = true;
-  }
-  DCHECK(initial ^ inherit);
-
-  state.Style()->RemoveVariable(name, is_inherited_property);
-  if (initial) {
-    return;
-  }
-
-  DCHECK(inherit);
-  CSSVariableData* parent_value =
-      state.ParentStyle()->GetVariable(name, is_inherited_property);
-  const CSSValue* parent_css_value =
-      registration && parent_value ? state.ParentStyle()->GetRegisteredVariable(
-                                         name, is_inherited_property)
-                                   : nullptr;
-
-  if (!is_inherited_property) {
-    DCHECK(registration);
-    if (parent_value) {
-      state.Style()->SetResolvedNonInheritedVariable(name, parent_value,
-                                                     parent_css_value);
-    }
-    return;
-  }
-
-  if (parent_value) {
-    if (!registration) {
-      state.Style()->SetResolvedUnregisteredVariable(name, parent_value);
-    } else {
-      state.Style()->SetResolvedInheritedVariable(name, parent_value,
-                                                  parent_css_value);
-    }
-  }
+  if (is_initial)
+    ToLonghand(property).ApplyInitial(state);
+  else if (is_inherit)
+    ToLonghand(property).ApplyInherit(state);
+  else
+    ToLonghand(property).ApplyValue(state, value);
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/resolver/viewport_style_resolver.cc b/third_party/blink/renderer/core/css/resolver/viewport_style_resolver.cc
index 202cf64..8576292c 100644
--- a/third_party/blink/renderer/core/css/resolver/viewport_style_resolver.cc
+++ b/third_party/blink/renderer/core/css/resolver/viewport_style_resolver.cc
@@ -56,7 +56,7 @@
 
 bool HasViewportFitProperty(const CSSPropertyValueSet* property_set) {
   DCHECK(property_set);
-  return RuntimeEnabledFeatures::DisplayCutoutViewportFitEnabled() &&
+  return RuntimeEnabledFeatures::DisplayCutoutAPIEnabled() &&
          property_set->HasProperty(CSSPropertyViewportFit);
 }
 
diff --git a/third_party/blink/renderer/core/dom/document_test.cc b/third_party/blink/renderer/core/dom/document_test.cc
index 995d3d7f..c26e8cfb 100644
--- a/third_party/blink/renderer/core/dom/document_test.cc
+++ b/third_party/blink/renderer/core/dom/document_test.cc
@@ -1059,7 +1059,7 @@
   void SetUp() override {
     DocumentTest::SetUp();
 
-    RuntimeEnabledFeatures::SetDisplayCutoutViewportFitEnabled(true);
+    RuntimeEnabledFeatures::SetDisplayCutoutAPIEnabled(true);
     GetDocument().GetSettings()->SetViewportMetaEnabled(true);
   }
 };
diff --git a/third_party/blink/renderer/core/editing/caret_display_item_client_test.cc b/third_party/blink/renderer/core/editing/caret_display_item_client_test.cc
index af6cd31f..8fd80cdd 100644
--- a/third_party/blink/renderer/core/editing/caret_display_item_client_test.cc
+++ b/third_party/blink/renderer/core/editing/caret_display_item_client_test.cc
@@ -10,32 +10,18 @@
 #include "third_party/blink/renderer/core/html_names.h"
 #include "third_party/blink/renderer/core/layout/layout_view.h"
 #include "third_party/blink/renderer/core/page/focus_controller.h"
+#include "third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.h"
 #include "third_party/blink/renderer/core/paint/paint_layer.h"
-#include "third_party/blink/renderer/core/testing/core_unit_test_helper.h"
-#include "third_party/blink/renderer/platform/graphics/graphics_layer.h"
-#include "third_party/blink/renderer/platform/graphics/paint/raster_invalidation_tracking.h"
-#include "third_party/blink/renderer/platform/testing/paint_test_configurations.h"
 
 namespace blink {
 
-class CaretDisplayItemClientTest : public PaintTestConfigurations,
-                                   public RenderingTest {
+class CaretDisplayItemClientTest : public PaintAndRasterInvalidationTest {
  protected:
   void SetUp() override {
-    RenderingTest::SetUp();
-    EnableCompositing();
+    PaintAndRasterInvalidationTest::SetUp();
     Selection().SetCaretBlinkingSuspended(true);
   }
 
-  const RasterInvalidationTracking* GetRasterInvalidationTracking() const {
-    // TODO(wangxianzhu): Test SPv2.
-    DCHECK(!RuntimeEnabledFeatures::SlimmingPaintV2Enabled());
-    return GetLayoutView()
-        .Layer()
-        ->GraphicsLayerBacking()
-        ->GetRasterInvalidationTracking();
-  }
-
   FrameSelection& Selection() const {
     return GetDocument().View()->GetFrame().Selection();
   }
@@ -100,23 +86,14 @@
   EXPECT_EQ(1, caret_visual_rect.Width());
   EXPECT_EQ(block->Location(), caret_visual_rect.Location());
 
-  const Vector<RasterInvalidationInfo>* raster_invalidations;
-  if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
-    raster_invalidations = &GetRasterInvalidationTracking()->Invalidations();
-    ASSERT_EQ(1u, raster_invalidations->size());
-    EXPECT_EQ(EnclosingIntRect(caret_visual_rect),
-              (*raster_invalidations)[0].rect);
-    if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) {
-      EXPECT_EQ(&GetCaretDisplayItemClient(),
-                (*raster_invalidations)[0].client);
-      EXPECT_EQ(PaintInvalidationReason::kAppeared,
-                (*raster_invalidations)[0].reason);
-    } else {
-      EXPECT_EQ(block, (*raster_invalidations)[0].client);
-      EXPECT_EQ(PaintInvalidationReason::kCaret,
-                (*raster_invalidations)[0].reason);
-    }
-  }
+  const auto* raster_invalidations =
+      &GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(1u, raster_invalidations->size());
+  EXPECT_EQ(EnclosingIntRect(caret_visual_rect),
+            (*raster_invalidations)[0].rect);
+  EXPECT_EQ(&GetCaretDisplayItemClient(), (*raster_invalidations)[0].client);
+  EXPECT_EQ(PaintInvalidationReason::kAppeared,
+            (*raster_invalidations)[0].reason);
 
   std::unique_ptr<JSONArray> object_invalidations =
       GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
@@ -139,30 +116,18 @@
   EXPECT_EQ(caret_visual_rect.Y(), new_caret_visual_rect.Y());
   EXPECT_LT(caret_visual_rect.X(), new_caret_visual_rect.X());
 
-  if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
     raster_invalidations = &GetRasterInvalidationTracking()->Invalidations();
     ASSERT_EQ(2u, raster_invalidations->size());
     EXPECT_EQ(EnclosingIntRect(caret_visual_rect),
               (*raster_invalidations)[0].rect);
-    if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) {
-      EXPECT_EQ(&GetCaretDisplayItemClient(),
-                (*raster_invalidations)[0].client);
-    } else {
-      EXPECT_EQ(block, (*raster_invalidations)[0].client);
-    }
+    EXPECT_EQ(&GetCaretDisplayItemClient(), (*raster_invalidations)[0].client);
     EXPECT_EQ(PaintInvalidationReason::kCaret,
               (*raster_invalidations)[0].reason);
     EXPECT_EQ(EnclosingIntRect(new_caret_visual_rect),
               (*raster_invalidations)[1].rect);
-    if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) {
-      EXPECT_EQ(&GetCaretDisplayItemClient(),
-                (*raster_invalidations)[1].client);
-    } else {
-      EXPECT_EQ(block, (*raster_invalidations)[1].client);
-    }
+    EXPECT_EQ(&GetCaretDisplayItemClient(), (*raster_invalidations)[1].client);
     EXPECT_EQ(PaintInvalidationReason::kCaret,
               (*raster_invalidations)[1].reason);
-  }
 
   object_invalidations =
       GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
@@ -179,25 +144,18 @@
   EXPECT_FALSE(block->ShouldPaintCursorCaret());
   EXPECT_EQ(LayoutRect(), GetCaretDisplayItemClient().VisualRect());
 
-  if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
     raster_invalidations = &GetRasterInvalidationTracking()->Invalidations();
     ASSERT_EQ(1u, raster_invalidations->size());
     EXPECT_EQ(EnclosingIntRect(old_caret_visual_rect),
               (*raster_invalidations)[0].rect);
-    if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) {
-      EXPECT_EQ(&GetCaretDisplayItemClient(),
-                (*raster_invalidations)[0].client);
-    } else {
-      EXPECT_EQ(block, (*raster_invalidations)[0].client);
-    }
-  }
+    EXPECT_EQ(&GetCaretDisplayItemClient(), (*raster_invalidations)[0].client);
 
-  object_invalidations =
-      GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
-  ASSERT_EQ(1u, object_invalidations->size());
-  JSONObject::Cast(object_invalidations->at(0))->Get("object")->AsString(&s);
-  EXPECT_EQ("Caret", s);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
+    object_invalidations =
+        GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
+    ASSERT_EQ(1u, object_invalidations->size());
+    JSONObject::Cast(object_invalidations->at(0))->Get("object")->AsString(&s);
+    EXPECT_EQ("Caret", s);
+    GetDocument().View()->SetTracksPaintInvalidations(false);
 }
 
 TEST_P(CaretDisplayItemClientTest, CaretMovesBetweenBlocks) {
@@ -235,36 +193,17 @@
   EXPECT_FALSE(block1->ShouldPaintCursorCaret());
   EXPECT_TRUE(block2->ShouldPaintCursorCaret());
 
-  const Vector<RasterInvalidationInfo>* raster_invalidations;
-  if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
-    raster_invalidations = &GetRasterInvalidationTracking()->Invalidations();
-    ASSERT_EQ(2u, raster_invalidations->size());
-    if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) {
-      EXPECT_EQ(EnclosingIntRect(caret_visual_rect1),
-                (*raster_invalidations)[0].rect);
-      EXPECT_EQ(&GetCaretDisplayItemClient(),
-                (*raster_invalidations)[0].client);
-      EXPECT_EQ(PaintInvalidationReason::kCaret,
-                (*raster_invalidations)[0].reason);
-      EXPECT_EQ(EnclosingIntRect(caret_visual_rect2),
-                (*raster_invalidations)[1].rect);
-      EXPECT_EQ(&GetCaretDisplayItemClient(),
-                (*raster_invalidations)[1].client);
-      EXPECT_EQ(PaintInvalidationReason::kCaret,
-                (*raster_invalidations)[1].reason);
-    } else {
-      EXPECT_EQ(EnclosingIntRect(caret_visual_rect1),
-                (*raster_invalidations)[0].rect);
-      EXPECT_EQ(block1, (*raster_invalidations)[0].client);
-      EXPECT_EQ(PaintInvalidationReason::kCaret,
-                (*raster_invalidations)[0].reason);
-      EXPECT_EQ(EnclosingIntRect(caret_visual_rect2),
-                (*raster_invalidations)[1].rect);
-      EXPECT_EQ(block2, (*raster_invalidations)[1].client);
-      EXPECT_EQ(PaintInvalidationReason::kCaret,
-                (*raster_invalidations)[1].reason);
-    }
-  }
+  const auto* raster_invalidations =
+      &GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(2u, raster_invalidations->size());
+  EXPECT_EQ(EnclosingIntRect(caret_visual_rect1),
+            (*raster_invalidations)[0].rect);
+  EXPECT_EQ(&GetCaretDisplayItemClient(), (*raster_invalidations)[0].client);
+  EXPECT_EQ(PaintInvalidationReason::kCaret, (*raster_invalidations)[0].reason);
+  EXPECT_EQ(EnclosingIntRect(caret_visual_rect2),
+            (*raster_invalidations)[1].rect);
+  EXPECT_EQ(&GetCaretDisplayItemClient(), (*raster_invalidations)[1].client);
+  EXPECT_EQ(PaintInvalidationReason::kCaret, (*raster_invalidations)[1].reason);
 
   std::unique_ptr<JSONArray> object_invalidations =
       GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
@@ -283,10 +222,8 @@
   EXPECT_TRUE(block1->ShouldPaintCursorCaret());
   EXPECT_FALSE(block2->ShouldPaintCursorCaret());
 
-  if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
     raster_invalidations = &GetRasterInvalidationTracking()->Invalidations();
     ASSERT_EQ(2u, raster_invalidations->size());
-    if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) {
       EXPECT_EQ(EnclosingIntRect(caret_visual_rect2),
                 (*raster_invalidations)[0].rect);
       EXPECT_EQ(&GetCaretDisplayItemClient(),
@@ -299,19 +236,6 @@
                 (*raster_invalidations)[1].client);
       EXPECT_EQ(PaintInvalidationReason::kCaret,
                 (*raster_invalidations)[1].reason);
-    } else {
-      EXPECT_EQ(EnclosingIntRect(caret_visual_rect1),
-                (*raster_invalidations)[0].rect);
-      EXPECT_EQ(block1, (*raster_invalidations)[0].client);
-      EXPECT_EQ(PaintInvalidationReason::kCaret,
-                (*raster_invalidations)[0].reason);
-      EXPECT_EQ(EnclosingIntRect(caret_visual_rect2),
-                (*raster_invalidations)[1].rect);
-      EXPECT_EQ(block2, (*raster_invalidations)[1].client);
-      EXPECT_EQ(PaintInvalidationReason::kCaret,
-                (*raster_invalidations)[1].reason);
-    }
-  }
 
   object_invalidations =
       GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
@@ -410,25 +334,17 @@
   EXPECT_EQ(caret_visual_rect.Y(), new_caret_visual_rect.Y());
   EXPECT_LT(caret_visual_rect.X(), new_caret_visual_rect.X());
 
-  if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
     const auto& raster_invalidations =
         GetRasterInvalidationTracking()->Invalidations();
     ASSERT_EQ(2u, raster_invalidations.size());
     EXPECT_EQ(EnclosingIntRect(caret_visual_rect),
               raster_invalidations[0].rect);
-    if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
       EXPECT_EQ(&GetCaretDisplayItemClient(), raster_invalidations[0].client);
-    else
-      EXPECT_EQ(block, raster_invalidations[0].client);
     EXPECT_EQ(PaintInvalidationReason::kCaret, raster_invalidations[0].reason);
     EXPECT_EQ(EnclosingIntRect(new_caret_visual_rect),
               raster_invalidations[1].rect);
-    if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
       EXPECT_EQ(&GetCaretDisplayItemClient(), raster_invalidations[1].client);
-    else
-      EXPECT_EQ(block, raster_invalidations[1].client);
     EXPECT_EQ(PaintInvalidationReason::kCaret, raster_invalidations[1].reason);
-  }
 
   auto object_invalidations =
       GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
@@ -440,10 +356,6 @@
 }
 
 TEST_P(CaretDisplayItemClientTest, CompositingChange) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled())
-    return;
-
-  EnableCompositing();
   SetBodyInnerHTML(
       "<style>"
       "  body { margin: 0 }"
@@ -470,7 +382,12 @@
   // Composite container.
   container->setAttribute(HTMLNames::styleAttr, "will-change: transform");
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(LayoutRect(50, 50, 1, 1), GetCaretDisplayItemClient().VisualRect());
+  // TODO(wangxianzhu): Why will-change:transform doens't trigger compositing
+  // in SPv2?
+  if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
+    EXPECT_EQ(LayoutRect(50, 50, 1, 1),
+              GetCaretDisplayItemClient().VisualRect());
+  }
 
   // Uncomposite container.
   container->setAttribute(HTMLNames::styleAttr, "");
diff --git a/third_party/blink/renderer/core/exported/shared_worker_repository_client_impl.cc b/third_party/blink/renderer/core/exported/shared_worker_repository_client_impl.cc
index c9c4057..4404763e 100644
--- a/third_party/blink/renderer/core/exported/shared_worker_repository_client_impl.cc
+++ b/third_party/blink/renderer/core/exported/shared_worker_repository_client_impl.cc
@@ -121,16 +121,15 @@
   // when multiple might have been sent. Fix by making the
   // SharedWorkerConnectListener interface take a map that can contain
   // multiple headers.
-  std::unique_ptr<Vector<CSPHeaderAndType>> headers =
+  Vector<CSPHeaderAndType> headers =
       worker->GetExecutionContext()->GetContentSecurityPolicy()->Headers();
   WebString header;
   WebContentSecurityPolicyType header_type =
       kWebContentSecurityPolicyTypeReport;
 
-  if (headers->size() > 0) {
-    header = (*headers)[0].first;
-    header_type =
-        static_cast<WebContentSecurityPolicyType>((*headers)[0].second);
+  if (headers.size() > 0) {
+    header = headers[0].first;
+    header_type = static_cast<WebContentSecurityPolicyType>(headers[0].second);
   }
 
   bool is_secure_context = worker->GetExecutionContext()->IsSecureContext();
diff --git a/third_party/blink/renderer/core/exported/web_frame_test.cc b/third_party/blink/renderer/core/exported/web_frame_test.cc
index 90375ecd..6f81093 100644
--- a/third_party/blink/renderer/core/exported/web_frame_test.cc
+++ b/third_party/blink/renderer/core/exported/web_frame_test.cc
@@ -12367,6 +12367,25 @@
   ASSERT_EQ(IntSize(400, 600), area->ContentsSize());
 }
 
+TEST_F(WebFrameSimTest, LayoutViewLocalVisualRect) {
+  WebView().GetSettings()->SetViewportEnabled(true);
+  WebView().GetSettings()->SetViewportMetaEnabled(true);
+
+  WebView().Resize(WebSize(600, 400));
+  WebView().SetDefaultPageScaleLimits(0.5f, 2);
+
+  SimRequest main_resource("https://example.com/test.html", "text/html");
+  LoadURL("https://example.com/test.html");
+  main_resource.Complete(R"HTML(
+    <meta name='viewport' content='width=device-width, minimum-scale=0.5'>
+    <body style='margin: 0; width: 1800px; height: 1200px'></div>
+  )HTML");
+
+  Compositor().BeginFrame();
+  ASSERT_EQ(LayoutRect(0, 0, 1200, 800),
+            GetDocument().GetLayoutView()->LocalVisualRect());
+}
+
 TEST_F(WebFrameSimTest, NamedLookupIgnoresEmptyNames) {
   SimRequest main_resource("https://example.com/main.html", "text/html");
   LoadURL("https://example.com/main.html");
diff --git a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc b/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc
index cbd56fc..97eca9dc 100644
--- a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc
@@ -335,8 +335,8 @@
   auto global_scope_creation_params =
       std::make_unique<GlobalScopeCreationParams>(
           url_, script_type, document->UserAgent(),
-          content_security_policy ? content_security_policy->Headers().get()
-                                  : nullptr,
+          content_security_policy ? content_security_policy->Headers()
+                                  : Vector<CSPHeaderAndType>(),
           referrer_policy, starter_origin, starter_secure_context,
           worker_clients, main_script_loader_->ResponseAddressSpace(),
           main_script_loader_->OriginTrialTokens(), devtools_worker_token_,
diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
index 8f9382c..48d78469 100644
--- a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
+++ b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
@@ -422,13 +422,12 @@
                     String(), CSPSource::kNoWildcard, CSPSource::kNoWildcard);
 }
 
-std::unique_ptr<Vector<CSPHeaderAndType>> ContentSecurityPolicy::Headers()
-    const {
-  std::unique_ptr<Vector<CSPHeaderAndType>> headers =
-      std::make_unique<Vector<CSPHeaderAndType>>();
+Vector<CSPHeaderAndType> ContentSecurityPolicy::Headers() const {
+  Vector<CSPHeaderAndType> headers;
+  headers.ReserveInitialCapacity(policies_.size());
   for (const auto& policy : policies_) {
-    CSPHeaderAndType header_and_type(policy->Header(), policy->HeaderType());
-    headers->push_back(header_and_type);
+    headers.UncheckedAppend(
+        CSPHeaderAndType(policy->Header(), policy->HeaderType()));
   }
   return headers;
 }
diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.h b/third_party/blink/renderer/core/frame/csp/content_security_policy.h
index 3fe223e..8dcddd2 100644
--- a/third_party/blink/renderer/core/frame/csp/content_security_policy.h
+++ b/third_party/blink/renderer/core/frame/csp/content_security_policy.h
@@ -151,7 +151,7 @@
                                 ContentSecurityPolicyHeaderSource);
   void ReportAccumulatedHeaders(LocalFrameClient*) const;
 
-  std::unique_ptr<Vector<CSPHeaderAndType>> Headers() const;
+  Vector<CSPHeaderAndType> Headers() const;
 
   // |element| will not be present for navigations to javascript URLs,
   // as those checks happen in the middle of the navigation algorithm,
diff --git a/third_party/blink/renderer/core/frame/visual_viewport_test.cc b/third_party/blink/renderer/core/frame/visual_viewport_test.cc
index 9a88dff2..297eb88e 100644
--- a/third_party/blink/renderer/core/frame/visual_viewport_test.cc
+++ b/third_party/blink/renderer/core/frame/visual_viewport_test.cc
@@ -38,6 +38,8 @@
 #include "third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.h"
 #include "third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h"
 #include "third_party/blink/renderer/core/paint/paint_layer.h"
+#include "third_party/blink/renderer/core/testing/sim/sim_request.h"
+#include "third_party/blink/renderer/core/testing/sim/sim_test.h"
 #include "third_party/blink/renderer/platform/geometry/double_point.h"
 #include "third_party/blink/renderer/platform/geometry/double_rect.h"
 #include "third_party/blink/renderer/platform/graphics/compositor_element_id.h"
@@ -2290,5 +2292,61 @@
                                    base_url);
 }
 
+class VisualViewportSimTest : public SimTest {
+ public:
+  VisualViewportSimTest() {}
+
+  void SetUp() override {
+    SimTest::SetUp();
+
+    // Use settings that resemble the Android configuration.
+    WebView().GetSettings()->SetViewportEnabled(true);
+    WebView().GetSettings()->SetAcceleratedCompositingEnabled(true);
+    WebView().GetSettings()->SetPreferCompositingToLCDTextEnabled(true);
+    WebView().GetSettings()->SetViewportMetaEnabled(true);
+    WebView().GetSettings()->SetViewportEnabled(true);
+    WebView().GetSettings()->SetMainFrameResizesAreOrientationChanges(true);
+    WebView().GetSettings()->SetShrinksViewportContentToFit(true);
+    WebView().SetDefaultPageScaleLimits(0.25f, 5);
+  }
+};
+
+// Test that we correcty size the visual viewport's scrolling contents layer
+// when the layout viewport is smaller.
+TEST_F(VisualViewportSimTest, ScrollingContentsSmallerThanContainer) {
+  WebView().Resize(WebSize(400, 600));
+  SimRequest request("https://example.com/test.html", "text/html");
+  LoadURL("https://example.com/test.html");
+  request.Complete(R"HTML(
+          <!DOCTYPE html>
+          <meta name="viewport" content="width=320">
+          <style>
+            body {
+              height: 2000px;
+            }
+          </style>
+      )HTML");
+  Compositor().BeginFrame();
+
+  ASSERT_EQ(1.25f, WebView().MinimumPageScaleFactor());
+
+  VisualViewport& visual_viewport = WebView().GetPage()->GetVisualViewport();
+  EXPECT_EQ(IntSize(400, 600), visual_viewport.ContainerLayer()->Size());
+  EXPECT_EQ(gfx::Size(400, 600),
+            visual_viewport.ContainerLayer()->CcLayer()->bounds());
+  EXPECT_EQ(IntSize(320, 480), visual_viewport.ScrollLayer()->Size());
+  EXPECT_EQ(gfx::Size(320, 480),
+            visual_viewport.ScrollLayer()->CcLayer()->bounds());
+
+  WebView().ApplyViewportDeltas(WebFloatSize(1, 1), WebFloatSize(),
+                                WebFloatSize(), 2, 1);
+  EXPECT_EQ(IntSize(400, 600), visual_viewport.ContainerLayer()->Size());
+  EXPECT_EQ(gfx::Size(400, 600),
+            visual_viewport.ContainerLayer()->CcLayer()->bounds());
+  EXPECT_EQ(IntSize(320, 480), visual_viewport.ScrollLayer()->Size());
+  EXPECT_EQ(gfx::Size(320, 480),
+            visual_viewport.ScrollLayer()->CcLayer()->bounds());
+}
+
 }  // namespace
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.cc b/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.cc
index 85f6049..91f52d6 100644
--- a/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.cc
+++ b/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.cc
@@ -4,7 +4,9 @@
 
 #include "third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.h"
 
+#include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/renderer/core/html/canvas/canvas_rendering_context.h"
+#include "third_party/blink/renderer/platform/graphics/gpu/shared_gpu_context.h"
 #include "third_party/blink/renderer/platform/graphics/skia/skia_utils.h"
 #include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
 #include "third_party/skia/include/core/SkSurface.h"
@@ -41,4 +43,44 @@
     RenderingContext()->RestoreCanvasMatrixClipStack(canvas);
 }
 
+bool CanvasRenderingContextHost::Is3d() const {
+  return RenderingContext() && RenderingContext()->Is3d();
+}
+
+bool CanvasRenderingContextHost::Is2d() const {
+  return RenderingContext() && RenderingContext()->Is2d();
+}
+
+CanvasResourceProvider*
+CanvasRenderingContextHost::GetOrCreateCanvasResourceProvider() {
+  if (!ResourceProvider() && !did_fail_to_create_resource_provider_) {
+    resource_provider_is_clear_ = true;
+    if (IsValidImageSize(Size())) {
+      if (Is3d()) {
+        ReplaceResourceProvider(CanvasResourceProvider::Create(
+            Size(),
+            Platform::Current()->IsGpuCompositingDisabled()
+                ? CanvasResourceProvider::kSoftwareResourceUsage
+                : CanvasResourceProvider::kAcceleratedResourceUsage,
+            SharedGpuContext::ContextProviderWrapper(), 0, ColorParams()));
+      } else {
+        // 2d context
+        // TODO: move resource provider ownership from canvas 2d layer bridge
+        // to here.
+        NOTREACHED();
+      }
+    }
+    if (!ResourceProvider()) {
+      did_fail_to_create_resource_provider_ = true;
+    }
+  }
+  return ResourceProvider();
+}
+
+CanvasColorParams CanvasRenderingContextHost::ColorParams() const {
+  if (RenderingContext())
+    return RenderingContext()->ColorParams();
+  return CanvasColorParams();
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.h b/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.h
index 229fd7f8..b9e29cd 100644
--- a/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.h
+++ b/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.h
@@ -18,6 +18,7 @@
 
 namespace blink {
 
+class CanvasColorParams;
 class CanvasRenderingContext;
 class FontSelector;
 class StaticBitmapImage;
@@ -75,10 +76,18 @@
   // Partial CanvasResourceHost implementation
   void RestoreCanvasMatrixClipStack(PaintCanvas*) const final;
 
+  bool Is3d() const;
+  bool Is2d() const;
+  CanvasColorParams ColorParams() const;
+  CanvasResourceProvider* GetOrCreateCanvasResourceProvider();
+
  protected:
   ~CanvasRenderingContextHost() override {}
 
   scoped_refptr<StaticBitmapImage> CreateTransparentImage(const IntSize&) const;
+
+  bool did_fail_to_create_resource_provider_ = false;
+  bool resource_provider_is_clear_ = false;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
index a5d6e6d41..0a5bbca 100644
--- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
+++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
@@ -34,7 +34,6 @@
 #include "base/location.h"
 #include "build/build_config.h"
 #include "gpu/config/gpu_feature_info.h"
-#include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/public/platform/task_type.h"
 #include "third_party/blink/renderer/bindings/core/v8/exception_messages.h"
 #include "third_party/blink/renderer/bindings/core/v8/exception_state.h"
@@ -131,8 +130,6 @@
       context_creation_was_blocked_(false),
       ignore_reset_(false),
       origin_clean_(true),
-      did_fail_to_create_resource_provider_(false),
-      resource_provider_is_clear_(false),
       surface_layer_bridge_(nullptr),
       gpu_memory_usage_(0),
       externally_allocated_memory_(0),
@@ -395,7 +392,7 @@
   // into the canvas, now is a good time to unlock cache entries.
   auto* resource_provider = canvas2d_bridge_
                                 ? canvas2d_bridge_->GetResourceProvider()
-                                : ResourceProviderForWebGL();
+                                : ResourceProvider();
   if (resource_provider)
     resource_provider->ReleaseLockedImages();
 
@@ -613,12 +610,6 @@
   return true;
 }
 
-CanvasColorParams HTMLCanvasElement::ColorParams() const {
-  if (context_)
-    return context_->ColorParams();
-  return CanvasColorParams();
-}
-
 void HTMLCanvasElement::NotifyListenersCanvasChanged() {
   if (listeners_.size() == 0)
     return;
@@ -713,8 +704,7 @@
       scoped_refptr<StaticBitmapImage> snapshot =
           canvas2d_bridge_
               ? canvas2d_bridge_->NewImageSnapshot(kPreferAcceleration)
-              : (webgl_resource_provider_ ? webgl_resource_provider_->Snapshot()
-                                          : nullptr);
+              : (ResourceProvider() ? ResourceProvider()->Snapshot() : nullptr);
       if (snapshot) {
         // GraphicsContext cannot handle gpu resource serialization.
         snapshot = snapshot->MakeUnaccelerated();
@@ -734,14 +724,6 @@
     context_->MarkLayerComposited();
 }
 
-bool HTMLCanvasElement::Is3d() const {
-  return context_ && context_->Is3d();
-}
-
-bool HTMLCanvasElement::Is2d() const {
-  return context_ && context_->Is2d();
-}
-
 bool HTMLCanvasElement::IsAnimated2d() const {
   return Is2d() && canvas2d_bridge_ &&
          canvas2d_bridge_->WasDrawnToAfterSnapshot();
@@ -773,8 +755,8 @@
   if (Is3d()) {
     if (context_->CreationAttributes().premultiplied_alpha) {
       context_->PaintRenderingResultsToCanvas(source_buffer);
-      if (webgl_resource_provider_)
-        image_bitmap = webgl_resource_provider_->Snapshot();
+      if (ResourceProvider())
+        image_bitmap = ResourceProvider()->Snapshot();
     } else {
       scoped_refptr<Uint8Array> data_array =
           context_->PaintRenderingResultsToDataArray(source_buffer);
@@ -1122,28 +1104,6 @@
   return canvas2d_bridge_.get();
 }
 
-CanvasResourceProvider*
-HTMLCanvasElement::GetOrCreateCanvasResourceProviderForWebGL() {
-  DCHECK(Is3d());
-  if (!webgl_resource_provider_ && !did_fail_to_create_resource_provider_) {
-    resource_provider_is_clear_ = true;
-    if (IsValidImageSize(Size())) {
-      webgl_resource_provider_ = CanvasResourceProvider::Create(
-          size_,
-          Platform::Current()->IsGpuCompositingDisabled()
-              ? CanvasResourceProvider::kSoftwareResourceUsage
-              : CanvasResourceProvider::kAcceleratedResourceUsage,
-          SharedGpuContext::ContextProviderWrapper(), 0, ColorParams());
-    }
-    if (!webgl_resource_provider_) {
-      did_fail_to_create_resource_provider_ = true;
-    } else {
-      UpdateMemoryUsage();
-    }
-  }
-  return webgl_resource_provider_.get();
-}
-
 void HTMLCanvasElement::CreateCanvas2DLayerBridgeForTesting(
     std::unique_ptr<Canvas2DLayerBridge> bridge,
     const IntSize& size) {
@@ -1184,8 +1144,8 @@
   if (need_to_update) {
     if (Is2d() && GetOrCreateCanvas2DLayerBridge()) {
       copied_image_ = canvas2d_bridge_->NewImageSnapshot(hint);
-    } else if (Is3d() && GetOrCreateCanvasResourceProviderForWebGL()) {
-      copied_image_ = webgl_resource_provider_->Snapshot();
+    } else if (Is3d() && GetOrCreateCanvasResourceProvider()) {
+      copied_image_ = ResourceProvider()->Snapshot();
     }
     UpdateMemoryUsage();
   }
@@ -1194,7 +1154,7 @@
 
 void HTMLCanvasElement::DiscardResourceProvider() {
   canvas2d_bridge_.reset();
-  webgl_resource_provider_.reset();
+  ReplaceResourceProvider(nullptr);
   dirty_rect_ = FloatRect();
   UpdateMemoryUsage();
 }
@@ -1298,8 +1258,8 @@
     // use paintRenderingResultsToCanvas instead of getImage in order to keep a
     // cached copy of the backing in the canvas's resource provider.
     RenderingContext()->PaintRenderingResultsToCanvas(kBackBuffer);
-    if (webgl_resource_provider_) {
-      image = webgl_resource_provider_->Snapshot();
+    if (ResourceProvider()) {
+      image = ResourceProvider()->Snapshot();
     } else {
       image = CreateTransparentImage(Size());
     }
@@ -1498,9 +1458,9 @@
     non_gpu_buffer_count++;
 
   if (Is3d()) {
-    if (webgl_resource_provider_) {
+    if (ResourceProvider()) {
       non_gpu_buffer_count++;
-      if (webgl_resource_provider_->IsAccelerated()) {
+      if (ResourceProvider()->IsAccelerated()) {
         gpu_buffer_count += 2;
       }
     }
diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.h b/third_party/blink/renderer/core/html/canvas/html_canvas_element.h
index 349ebe6..e815509 100644
--- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.h
+++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.h
@@ -63,7 +63,6 @@
 namespace blink {
 
 class Canvas2DLayerBridge;
-class CanvasColorParams;
 class CanvasContextCreationAttributesCore;
 class CanvasDrawListener;
 class CanvasRenderingContext;
@@ -155,18 +154,13 @@
   bool OriginClean() const override;
   void SetOriginTainted() override { origin_clean_ = false; }
 
-  bool Is3d() const;
-  bool Is2d() const;
   bool IsAnimated2d() const;
 
   Canvas2DLayerBridge* GetCanvas2DLayerBridge() {
     return canvas2d_bridge_.get();
   }
   Canvas2DLayerBridge* GetOrCreateCanvas2DLayerBridge();
-  CanvasResourceProvider* GetOrCreateCanvasResourceProviderForWebGL();
-  CanvasResourceProvider* ResourceProviderForWebGL() const {
-    return webgl_resource_provider_.get();
-  }
+
   void DiscardResourceProvider() override;
 
   FontSelector* GetFontSelector() override;
@@ -321,7 +315,6 @@
   void SetSurfaceSize(const IntSize&);
 
   bool PaintsIntoCanvasBuffer() const;
-  CanvasColorParams ColorParams() const;
 
   scoped_refptr<StaticBitmapImage> ToStaticBitmapImage(SourceDrawingBuffer,
                                                        AccelerationHint) const;
@@ -350,17 +343,10 @@
 
   // It prevents repeated attempts in allocating resources after the first
   // attempt failed.
-  mutable bool did_fail_to_create_resource_provider_;
-
   bool HasResourceProvider() {
-    return canvas2d_bridge_ || webgl_resource_provider_;
+    return canvas2d_bridge_ || !!CanvasResourceHost::ResourceProvider();
   }
 
-  bool resource_provider_is_clear_;
-
-  // This is only used by canvas with webgl rendering context.
-  std::unique_ptr<CanvasResourceProvider> webgl_resource_provider_;
-
   // Canvas2DLayerBridge is used when canvas has 2d rendering context
   std::unique_ptr<Canvas2DLayerBridge> canvas2d_bridge_;
   void ReplaceExisting2dLayerBridge(std::unique_ptr<Canvas2DLayerBridge>);
diff --git a/third_party/blink/renderer/core/html/html_meta_element.cc b/third_party/blink/renderer/core/html/html_meta_element.cc
index f8d660b..d0e8897 100644
--- a/third_party/blink/renderer/core/html/html_meta_element.cc
+++ b/third_party/blink/renderer/core/html/html_meta_element.cc
@@ -366,7 +366,7 @@
   } else if (key_string == "minimal-ui") {
     // Ignore vendor-specific argument.
   } else if (key_string == "viewport-fit") {
-    if (RuntimeEnabledFeatures::DisplayCutoutViewportFitEnabled()) {
+    if (RuntimeEnabledFeatures::DisplayCutoutAPIEnabled()) {
       bool unknown_value = false;
       description->SetViewportFit(
           ParseViewportFitValueAsEnum(unknown_value, value_string));
diff --git a/third_party/blink/renderer/core/html/html_meta_element_test.cc b/third_party/blink/renderer/core/html/html_meta_element_test.cc
index bca197d..697cecb 100644
--- a/third_party/blink/renderer/core/html/html_meta_element_test.cc
+++ b/third_party/blink/renderer/core/html/html_meta_element_test.cc
@@ -17,7 +17,7 @@
   void SetUp() override {
     PageTestBase::SetUp();
 
-    RuntimeEnabledFeatures::SetDisplayCutoutViewportFitEnabled(true);
+    RuntimeEnabledFeatures::SetDisplayCutoutAPIEnabled(true);
     GetDocument().GetSettings()->SetViewportMetaEnabled(true);
   }
 
diff --git a/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc b/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc
index 1539fc8..13638ce 100644
--- a/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc
+++ b/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc
@@ -261,12 +261,6 @@
   Supplement<WorkerGlobalScope>::Trace(visitor);
 }
 
-void ImageBitmapFactories::TraceWrappers(
-    ScriptWrappableVisitor* visitor) const {
-  Supplement<LocalDOMWindow>::TraceWrappers(visitor);
-  Supplement<WorkerGlobalScope>::TraceWrappers(visitor);
-}
-
 void ImageBitmapFactories::ImageBitmapLoader::RejectPromise(
     ImageBitmapRejectionReason reason) {
   switch (reason) {
diff --git a/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.h b/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.h
index 0ad28c2..b8385ed3 100644
--- a/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.h
+++ b/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.h
@@ -95,7 +95,6 @@
   virtual ~ImageBitmapFactories() = default;
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
   const char* NameInHeapSnapshot() const override {
     return "ImageBitmapLoader";
   }
diff --git a/third_party/blink/renderer/core/inspector/inspector_css_agent.cc b/third_party/blink/renderer/core/inspector/inspector_css_agent.cc
index d7eda5c..f54997a 100644
--- a/third_party/blink/renderer/core/inspector/inspector_css_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_css_agent.cc
@@ -1161,18 +1161,13 @@
             .build());
   }
 
-  std::unique_ptr<HashMap<AtomicString, scoped_refptr<CSSVariableData>>>
-      variables = computed_style_info->GetVariables();
-
-  if (variables && !variables->IsEmpty()) {
-    for (const auto& it : *variables) {
-      if (!it.value)
-        continue;
-      (*style)->addItem(protocol::CSS::CSSComputedStyleProperty::create()
-                            .setName(it.key)
-                            .setValue(it.value->TokenRange().Serialize())
-                            .build());
-    }
+  for (const auto& it : computed_style_info->GetVariables()) {
+    if (!it.value)
+      continue;
+    (*style)->addItem(protocol::CSS::CSSComputedStyleProperty::create()
+                          .setName(it.key)
+                          .setValue(it.value->TokenRange().Serialize())
+                          .build());
   }
   return Response::OK();
 }
diff --git a/third_party/blink/renderer/core/inspector/inspector_network_agent.cc b/third_party/blink/renderer/core/inspector/inspector_network_agent.cc
index 372ed54..aacbd59 100644
--- a/third_party/blink/renderer/core/inspector/inspector_network_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_network_agent.cc
@@ -1107,28 +1107,7 @@
     pending_xhr_replay_data_->AddHeader(header.key, header.value);
 }
 
-void InspectorNetworkAgent::DidFailXHRLoading(ExecutionContext* context,
-                                              XMLHttpRequest* xhr,
-                                              ThreadableLoaderClient* client,
-                                              const AtomicString& method,
-                                              const String& url) {
-  DidFinishXHRInternal(context, xhr, client, method, url, false);
-}
-
-void InspectorNetworkAgent::DidFinishXHRLoading(ExecutionContext* context,
-                                                XMLHttpRequest* xhr,
-                                                ThreadableLoaderClient* client,
-                                                const AtomicString& method,
-                                                const String& url) {
-  DidFinishXHRInternal(context, xhr, client, method, url, true);
-}
-
-void InspectorNetworkAgent::DidFinishXHRInternal(ExecutionContext* context,
-                                                 XMLHttpRequest* xhr,
-                                                 ThreadableLoaderClient* client,
-                                                 const AtomicString& method,
-                                                 const String& url,
-                                                 bool success) {
+void InspectorNetworkAgent::DidFinishXHR(XMLHttpRequest* xhr) {
   // This method will be called from the XHR.
   // We delay deleting the replay XHR, as deleting here may delete the caller.
   if (!replay_xhrs_.Contains(xhr))
diff --git a/third_party/blink/renderer/core/inspector/inspector_network_agent.h b/third_party/blink/renderer/core/inspector/inspector_network_agent.h
index 1a5a3de6..7ef18bc 100644
--- a/third_party/blink/renderer/core/inspector/inspector_network_agent.h
+++ b/third_party/blink/renderer/core/inspector/inspector_network_agent.h
@@ -132,16 +132,7 @@
                    bool async,
                    const HTTPHeaderMap& headers,
                    bool include_crendentials);
-  void DidFailXHRLoading(ExecutionContext*,
-                         XMLHttpRequest*,
-                         ThreadableLoaderClient*,
-                         const AtomicString&,
-                         const String&);
-  void DidFinishXHRLoading(ExecutionContext*,
-                           XMLHttpRequest*,
-                           ThreadableLoaderClient*,
-                           const AtomicString&,
-                           const String&);
+  void DidFinishXHR(XMLHttpRequest*);
 
   void WillStartFetch(ThreadableLoaderClient*);
 
diff --git a/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.cc b/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.cc
index a8f64601..e8b8c94 100644
--- a/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.cc
+++ b/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.cc
@@ -67,11 +67,4 @@
   visitor->Trace(intersection_observations_);
 }
 
-void ElementIntersectionObserverData::TraceWrappers(
-    ScriptWrappableVisitor* visitor) const {
-  for (auto& entry : intersection_observations_) {
-    visitor->TraceWrappers(entry.key);
-  }
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.h b/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.h
index 6b5d1b5b..a5d7523 100644
--- a/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.h
+++ b/third_party/blink/renderer/core/intersection_observer/element_intersection_observer_data.h
@@ -30,7 +30,6 @@
   void DeactivateAllIntersectionObservers(Node&);
 
   void Trace(blink::Visitor*);
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
   const char* NameInHeapSnapshot() const override {
     return "ElementIntersectionObserverData";
   }
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observer.cc b/third_party/blink/renderer/core/intersection_observer/intersection_observer.cc
index e604951..514d2a3c4 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_observer.cc
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_observer.cc
@@ -387,10 +387,4 @@
   ContextClient::Trace(visitor);
 }
 
-void IntersectionObserver::TraceWrappers(
-    ScriptWrappableVisitor* visitor) const {
-  visitor->TraceWrappers(delegate_);
-  ScriptWrappable::TraceWrappers(visitor);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observer.h b/third_party/blink/renderer/core/intersection_observer/intersection_observer.h
index 3aca247..b830b75 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_observer.h
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_observer.h
@@ -96,7 +96,6 @@
   bool HasPendingActivity() const override;
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
  private:
   explicit IntersectionObserver(IntersectionObserverDelegate&,
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.cc b/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.cc
index e324bde..92014ef 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.cc
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.cc
@@ -105,12 +105,4 @@
   PausableObject::Trace(visitor);
 }
 
-void IntersectionObserverController::TraceWrappers(
-    ScriptWrappableVisitor* visitor) const {
-  for (const auto& observer : pending_intersection_observers_)
-    visitor->TraceWrappers(observer);
-  for (const auto& observer : intersection_observers_being_invoked_)
-    visitor->TraceWrappers(observer);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.h b/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.h
index b3c35797..a56b2fa6 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.h
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_observer_controller.h
@@ -37,7 +37,6 @@
   void RemoveTrackedObserversForRoot(const Node&);
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
   const char* NameInHeapSnapshot() const override {
     return "IntersectionObserverController";
   }
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observer_delegate.h b/third_party/blink/renderer/core/intersection_observer/intersection_observer_delegate.h
index 8247e849..d77eb933 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_observer_delegate.h
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_observer_delegate.h
@@ -23,7 +23,6 @@
                        IntersectionObserver&) = 0;
   virtual ExecutionContext* GetExecutionContext() const = 0;
   virtual void Trace(blink::Visitor* visitor) {}
-  void TraceWrappers(ScriptWrappableVisitor* visitor) const override {}
   const char* NameInHeapSnapshot() const override {
     return "IntersectionObserverDelegate";
   }
diff --git a/third_party/blink/renderer/core/layout/custom/css_layout_definition.cc b/third_party/blink/renderer/core/layout/custom/css_layout_definition.cc
index 5befc82..3df60411 100644
--- a/third_party/blink/renderer/core/layout/custom/css_layout_definition.cc
+++ b/third_party/blink/renderer/core/layout/custom/css_layout_definition.cc
@@ -280,10 +280,4 @@
   visitor->Trace(layout_.Cast<v8::Value>());
 }
 
-void CSSLayoutDefinition::TraceWrappers(ScriptWrappableVisitor* visitor) const {
-  visitor->TraceWrappers(constructor_.Cast<v8::Value>());
-  visitor->TraceWrappers(intrinsic_sizes_.Cast<v8::Value>());
-  visitor->TraceWrappers(layout_.Cast<v8::Value>());
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/custom/css_layout_definition.h b/third_party/blink/renderer/core/layout/custom/css_layout_definition.h
index 6dc79b50..e0d4ba7 100644
--- a/third_party/blink/renderer/core/layout/custom/css_layout_definition.h
+++ b/third_party/blink/renderer/core/layout/custom/css_layout_definition.h
@@ -81,7 +81,6 @@
   }
 
   virtual void Trace(blink::Visitor* visitor);
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
   const char* NameInHeapSnapshot() const override {
     return "CSSLayoutDefinition";
   }
diff --git a/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope.cc b/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope.cc
index 0687483..08e00b56 100644
--- a/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope.cc
+++ b/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope.cc
@@ -162,11 +162,4 @@
   MainThreadWorkletGlobalScope::Trace(visitor);
 }
 
-void LayoutWorkletGlobalScope::TraceWrappers(
-    ScriptWrappableVisitor* visitor) const {
-  for (auto definition : layout_definitions_)
-    visitor->TraceWrappers(definition.value);
-  MainThreadWorkletGlobalScope::TraceWrappers(visitor);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope.h b/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope.h
index a8e7fe0..a351858 100644
--- a/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope.h
+++ b/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope.h
@@ -42,7 +42,6 @@
   CSSLayoutDefinition* FindDefinition(const AtomicString& name);
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
  private:
   LayoutWorkletGlobalScope(LocalFrame*,
diff --git a/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope_proxy.cc b/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope_proxy.cc
index 7136cdf..8a5d3a7 100644
--- a/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope_proxy.cc
+++ b/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope_proxy.cc
@@ -43,7 +43,7 @@
 
   auto creation_params = std::make_unique<GlobalScopeCreationParams>(
       document->Url(), ScriptType::kModule, document->UserAgent(),
-      document->GetContentSecurityPolicy()->Headers().get(),
+      document->GetContentSecurityPolicy()->Headers(),
       document->GetReferrerPolicy(), document->GetSecurityOrigin(),
       document->IsSecureContext(), worker_clients, document->AddressSpace(),
       OriginTrialContext::GetTokens(document).get(),
diff --git a/third_party/blink/renderer/core/layout/layout_view.cc b/third_party/blink/renderer/core/layout/layout_view.cc
index 1d08587..d3c4df8 100644
--- a/third_party/blink/renderer/core/layout/layout_view.cc
+++ b/third_party/blink/renderer/core/layout/layout_view.cc
@@ -322,6 +322,12 @@
   ClearNeedsLayout();
 }
 
+LayoutRect LayoutView::LocalVisualRectIgnoringVisibility() const {
+  LayoutRect rect = VisualOverflowRect();
+  rect.Unite(LayoutRect(rect.Location(), ViewRect().Size()));
+  return rect;
+}
+
 void LayoutView::MapLocalToAncestor(const LayoutBoxModelObject* ancestor,
                                     TransformState& transform_state,
                                     MapCoordinatesFlags mode) const {
diff --git a/third_party/blink/renderer/core/layout/layout_view.h b/third_party/blink/renderer/core/layout/layout_view.h
index b9c8ac7..b7b9c67 100644
--- a/third_party/blink/renderer/core/layout/layout_view.h
+++ b/third_party/blink/renderer/core/layout/layout_view.h
@@ -220,6 +220,8 @@
     layout_state_ = layout_state_->Next();
   }
 
+  LayoutRect LocalVisualRectIgnoringVisibility() const override;
+
   // Invalidates paint for the entire view, including composited descendants,
   // but not including child frames.
   // It is very likely you do not want to call this method.
diff --git a/third_party/blink/renderer/core/layout/shapes/polygon_shape.h b/third_party/blink/renderer/core/layout/shapes/polygon_shape.h
index 97f7636..87ba2f4 100644
--- a/third_party/blink/renderer/core/layout/shapes/polygon_shape.h
+++ b/third_party/blink/renderer/core/layout/shapes/polygon_shape.h
@@ -64,7 +64,7 @@
 
 class PolygonShape final : public Shape {
  public:
-  PolygonShape(std::unique_ptr<Vector<FloatPoint>> vertices, WindRule fill_rule)
+  PolygonShape(Vector<FloatPoint> vertices, WindRule fill_rule)
       : Shape(), polygon_(std::move(vertices)) {}
 
   LayoutRect ShapeMarginLogicalBoundingBox() const override;
diff --git a/third_party/blink/renderer/core/layout/shapes/shape.cc b/third_party/blink/renderer/core/layout/shapes/shape.cc
index ebfa930..620a72f 100644
--- a/third_party/blink/renderer/core/layout/shapes/shape.cc
+++ b/third_party/blink/renderer/core/layout/shapes/shape.cc
@@ -80,9 +80,8 @@
       radii);
 }
 
-static std::unique_ptr<Shape> CreatePolygonShape(
-    std::unique_ptr<Vector<FloatPoint>> vertices,
-    WindRule fill_rule) {
+static std::unique_ptr<Shape> CreatePolygonShape(Vector<FloatPoint> vertices,
+                                                 WindRule fill_rule) {
   return std::make_unique<PolygonShape>(std::move(vertices), fill_rule);
 }
 
@@ -165,12 +164,11 @@
       const Vector<Length>& values = polygon->Values();
       size_t values_size = values.size();
       DCHECK(!(values_size % 2));
-      std::unique_ptr<Vector<FloatPoint>> vertices =
-          std::make_unique<Vector<FloatPoint>>(values_size / 2);
+      Vector<FloatPoint> vertices(values_size / 2);
       for (unsigned i = 0; i < values_size; i += 2) {
         FloatPoint vertex(FloatValueForLength(values.at(i), box_width),
                           FloatValueForLength(values.at(i + 1), box_height));
-        (*vertices)[i / 2] = PhysicalPointToLogical(
+        vertices[i / 2] = PhysicalPointToLogical(
             vertex, logical_box_size.Height().ToFloat(), writing_mode);
       }
       shape = CreatePolygonShape(std::move(vertices), polygon->GetWindRule());
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc
index 343e594..3dba5442 100644
--- a/third_party/blink/renderer/core/loader/document_loader.cc
+++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -405,9 +405,9 @@
     application_cache_host_->FailedLoadingMainResource();
 
   if (resource->GetResourceError().WasBlockedByResponse()) {
-    probe::CanceledAfterReceivedResourceResponse(
-        frame_, this, MainResourceIdentifier(), resource->GetResponse(),
-        resource);
+    probe::didReceiveResourceResponse(frame_->GetDocument(),
+                                      MainResourceIdentifier(), this,
+                                      resource->GetResponse(), resource);
   }
 
   LoadFailed(resource->GetResourceError());
@@ -562,8 +562,9 @@
 
 void DocumentLoader::CancelLoadAfterCSPDenied(
     const ResourceResponse& response) {
-  probe::CanceledAfterReceivedResourceResponse(
-      frame_, this, MainResourceIdentifier(), response, GetResource());
+  probe::didReceiveResourceResponse(frame_->GetDocument(),
+                                    MainResourceIdentifier(), this, response,
+                                    GetResource());
 
   SetWasBlockedAfterCSP();
 
@@ -657,8 +658,9 @@
     resource->SetDataBufferingPolicy(kBufferData);
 
   if (!ShouldContinueForResponse()) {
-    probe::ContinueWithPolicyIgnore(frame_, this, resource->Identifier(),
-                                    response_, resource);
+    probe::didReceiveResourceResponse(frame_->GetDocument(),
+                                      resource->Identifier(), this, response_,
+                                      resource);
     fetcher_->StopFetching();
     return;
   }
diff --git a/third_party/blink/renderer/core/loader/document_threadable_loader.cc b/third_party/blink/renderer/core/loader/document_threadable_loader.cc
index 75969dd..511e86bc 100644
--- a/third_party/blink/renderer/core/loader/document_threadable_loader.cc
+++ b/third_party/blink/renderer/core/loader/document_threadable_loader.cc
@@ -599,7 +599,6 @@
     const ResourceResponse& redirect_response) {
   DCHECK(client_);
   DCHECK_EQ(resource, GetResource());
-  DCHECK(async_);
 
   checker_.RedirectReceived();
 
@@ -781,7 +780,6 @@
   DCHECK(client_);
   DCHECK_EQ(resource, GetResource());
   DCHECK(actual_request_.IsNull());
-  DCHECK(async_);
 
   checker_.DataDownloaded();
   client_->DidDownloadData(data_length);
@@ -792,7 +790,6 @@
     const ResourceTimingInfo& info) {
   DCHECK(client_);
   DCHECK_EQ(resource, GetResource());
-  DCHECK(async_);
 
   client_->DidReceiveResourceTiming(info);
 }
@@ -802,7 +799,6 @@
     scoped_refptr<BlobDataHandle> blob) {
   DCHECK(client_);
   DCHECK_EQ(resource, GetResource());
-  DCHECK(async_);
 
   checker_.DidDownloadToBlob();
   client_->DidDownloadToBlob(std::move(blob));
@@ -813,7 +809,6 @@
     const ResourceResponse& response,
     std::unique_ptr<WebDataConsumerHandle> handle) {
   DCHECK_EQ(resource, GetResource());
-  DCHECK(async_);
 
   checker_.ResponseReceived();
 
@@ -992,7 +987,6 @@
                                             const char* data,
                                             size_t data_length) {
   DCHECK_EQ(resource, GetResource());
-  DCHECK(async_);
 
   checker_.DataReceived();
 
@@ -1020,11 +1014,16 @@
 void DocumentThreadableLoader::NotifyFinished(Resource* resource) {
   DCHECK(client_);
   DCHECK_EQ(resource, GetResource());
-  DCHECK(async_);
 
   checker_.NotifyFinished(resource);
 
-  if (resource->ErrorOccurred()) {
+  // Don't throw an exception for failed sync local file loads.
+  // TODO(japhet): This logic has been moved around but unchanged since 2007.
+  // Tested by fast/xmlhttprequest/xmlhttprequest-missing-file-exception.html
+  // Do we still need this?
+  bool is_sync_to_local_file = resource->Url().IsLocalFile() && !async_;
+
+  if (resource->ErrorOccurred() && !is_sync_to_local_file) {
     DispatchDidFail(resource->GetResourceError());
   } else {
     HandleSuccessfulFinish(resource->Identifier());
@@ -1176,70 +1175,10 @@
     fetch_params.MutableResourceRequest().SetTimeoutInterval(
         options_.timeout_milliseconds / 1000.0);
   }
-  RawResource* resource = RawResource::FetchSynchronously(
-      fetch_params, loading_context_->GetResourceFetcher());
-  ResourceResponse response = resource->GetResponse();
-  unsigned long identifier = resource->Identifier();
-  ThreadableLoaderClient* client = client_;
-  const KURL& request_url = request.Url();
 
-  // No exception for file:/// resources, see <rdar://problem/4962298>. Also, if
-  // we have an HTTP response, then it wasn't a network error in fact.
-  if (resource->LoadFailedOrCanceled() && !request_url.IsLocalFile() &&
-      response.HttpStatusCode() <= 0) {
-    DispatchDidFail(resource->GetResourceError());
-    return;
-  }
-
-  // FIXME: A synchronous request does not tell us whether a redirect happened
-  // or not, so we guess by comparing the request and response URLs. This isn't
-  // a perfect test though, since a server can serve a redirect to the same URL
-  // that was requested. Also comparing the request and response URLs as strings
-  // will fail if the requestURL still has its credentials.
-  if (request_url != response.Url() &&
-      !IsAllowedRedirect(request.GetFetchRequestMode(), response.Url())) {
-    client_ = nullptr;
-    client->DidFailRedirectCheck();
-    return;
-  }
-
-  HandleResponse(identifier, request.GetFetchRequestMode(),
-                 request.GetFetchCredentialsMode(), response, nullptr);
-
-  // HandleResponse() may detect an error. In such a case (check |m_client| as
-  // it gets reset by clear() call), skip the rest.
-  //
-  // |this| is alive here since loadResourceSynchronously() keeps it alive until
-  // the end of the function.
-  if (!client_)
-    return;
-
-  if (scoped_refptr<const SharedBuffer> data = resource->ResourceBuffer()) {
-    data->ForEachSegment([this](const char* segment, size_t segment_size,
-                                size_t segment_offset) -> bool {
-      HandleReceivedData(segment, segment_size);
-      // The client may cancel this loader in handleReceivedData().
-      return client_;
-    });
-  }
-
-  // The client may cancel this loader in handleReceivedData(). In such a case,
-  // skip the rest.
-  if (!client_)
-    return;
-
-  base::Optional<int64_t> downloaded_file_length =
-      resource->DownloadedFileLength();
-  if (downloaded_file_length) {
-    client_->DidDownloadData(*downloaded_file_length);
-  }
-  if (request.DownloadToBlob()) {
-    if (resource->DownloadedBlob())
-      client_->DidDownloadData(resource->DownloadedBlob()->size());
-    client_->DidDownloadToBlob(resource->DownloadedBlob());
-  }
-
-  HandleSuccessfulFinish(identifier);
+  checker_.WillAddClient();
+  RawResource::FetchSynchronously(fetch_params,
+                                  loading_context_->GetResourceFetcher(), this);
 }
 
 void DocumentThreadableLoader::LoadRequest(
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc b/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc
index 1f9ad0ce..a19f9c61 100644
--- a/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc
+++ b/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc
@@ -186,10 +186,9 @@
       std::make_unique<MainThreadWorkletReportingProxy>(&GetDocument());
   auto creation_params = std::make_unique<GlobalScopeCreationParams>(
       GetDocument().Url(), ScriptType::kModule, GetDocument().UserAgent(),
-      nullptr /* content_security_policy_parsed_headers */,
-      GetDocument().GetReferrerPolicy(), GetDocument().GetSecurityOrigin(),
-      GetDocument().IsSecureContext(), nullptr /* worker_clients */,
-      GetDocument().AddressSpace(),
+      Vector<CSPHeaderAndType>(), GetDocument().GetReferrerPolicy(),
+      GetDocument().GetSecurityOrigin(), GetDocument().IsSecureContext(),
+      nullptr /* worker_clients */, GetDocument().AddressSpace(),
       OriginTrialContext::GetTokens(&GetDocument()).get(),
       base::UnguessableToken::Create(), nullptr /* worker_settings */,
       kV8CacheOptionsDefault, new WorkletModuleResponsesMap);
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc
index f01712f..acfc9a2d 100644
--- a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc
+++ b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc
@@ -65,11 +65,6 @@
   SingleModuleClient::Trace(visitor);
 }
 
-void ModuleTreeLinker::TraceWrappers(ScriptWrappableVisitor* visitor) const {
-  visitor->TraceWrappers(result_);
-  SingleModuleClient::TraceWrappers(visitor);
-}
-
 #if DCHECK_IS_ON()
 const char* ModuleTreeLinker::StateToString(ModuleTreeLinker::State state) {
   switch (state) {
@@ -200,7 +195,7 @@
 
   // Store the |module_script| here which will be used as result of the
   // algorithm when success. Also, this ensures that the |module_script| is
-  // TraceWrappers()ed via ModuleTreeLinker.
+  // traced via ModuleTreeLinker.
   result_ = module_script;
   AdvanceState(State::kFetchingDependencies);
 
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.h b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.h
index 811d843..abcc61db 100644
--- a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.h
+++ b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.h
@@ -57,7 +57,6 @@
 
   ~ModuleTreeLinker() override = default;
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
   bool IsFetching() const {
     return State::kFetchingSelf <= state_ && state_ < State::kFinished;
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.cc b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.cc
index 0af9e592..7ba86bdf 100644
--- a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.cc
+++ b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.cc
@@ -14,12 +14,6 @@
   visitor->Trace(active_tree_linkers_);
 }
 
-void ModuleTreeLinkerRegistry::TraceWrappers(
-    ScriptWrappableVisitor* visitor) const {
-  for (const auto& member : active_tree_linkers_)
-    visitor->TraceWrappers(member);
-}
-
 ModuleTreeLinker* ModuleTreeLinkerRegistry::Fetch(
     const KURL& url,
     const KURL& base_url,
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.h b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.h
index f50aa9e7..7536cd15 100644
--- a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.h
+++ b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker_registry.h
@@ -29,7 +29,6 @@
     return new ModuleTreeLinkerRegistry;
   }
   void Trace(blink::Visitor*);
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
   const char* NameInHeapSnapshot() const override {
     return "ModuleTreeLinkerRegistry";
   }
diff --git a/third_party/blink/renderer/core/mojo/mojo_watcher.cc b/third_party/blink/renderer/core/mojo/mojo_watcher.cc
index 5e080cb..855fb03 100644
--- a/third_party/blink/renderer/core/mojo/mojo_watcher.cc
+++ b/third_party/blink/renderer/core/mojo/mojo_watcher.cc
@@ -56,11 +56,6 @@
   ContextLifecycleObserver::Trace(visitor);
 }
 
-void MojoWatcher::TraceWrappers(ScriptWrappableVisitor* visitor) const {
-  ScriptWrappable::TraceWrappers(visitor);
-  visitor->TraceWrappers(callback_);
-}
-
 bool MojoWatcher::HasPendingActivity() const {
   return handle_.is_valid();
 }
diff --git a/third_party/blink/renderer/core/mojo/mojo_watcher.h b/third_party/blink/renderer/core/mojo/mojo_watcher.h
index a5a3387..816853b7 100644
--- a/third_party/blink/renderer/core/mojo/mojo_watcher.h
+++ b/third_party/blink/renderer/core/mojo/mojo_watcher.h
@@ -34,7 +34,6 @@
   MojoResult cancel();
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
   // ActiveScriptWrappable
   bool HasPendingActivity() const final;
diff --git a/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.h b/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.h
index b1b6fd9..e1ce9e3 100644
--- a/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.h
+++ b/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.h
@@ -102,7 +102,7 @@
   uint32_t SinkId() const { return sink_id_; }
 
   // CanvasRenderingContextHost implementation.
-  void FinalizeFrame() override{};
+  void FinalizeFrame() override {}
   void DetachContext() override { context_ = nullptr; }
   CanvasRenderingContext* RenderingContext() const override { return context_; }
   void PushFrame(scoped_refptr<StaticBitmapImage> image,
@@ -113,9 +113,10 @@
               const SkIRect& damage_rect) override;
 
   // Partial CanvasResourceHost implementation
-  void NotifyGpuContextLost() override{};
-  void SetNeedsCompositingUpdate() override{};
-  void UpdateMemoryUsage() override{/*TODO(crbug.com/842693): implement*/};
+  void NotifyGpuContextLost() override {}
+  void SetNeedsCompositingUpdate() override {}
+  void UpdateMemoryUsage() override { /*TODO(crbug.com/842693): implement*/
+  }
 
   // EventTarget implementation
   const AtomicString& InterfaceName() const final {
diff --git a/third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.cc b/third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.cc
index 5f15853..1e706fc2 100644
--- a/third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.cc
+++ b/third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.cc
@@ -40,6 +40,7 @@
 #include "third_party/blink/renderer/core/frame/event_handler_registry.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
 #include "third_party/blink/renderer/core/frame/local_frame_view.h"
+#include "third_party/blink/renderer/core/frame/page_scale_constraints_set.h"
 #include "third_party/blink/renderer/core/frame/settings.h"
 #include "third_party/blink/renderer/core/frame/visual_viewport.h"
 #include "third_party/blink/renderer/core/html/html_element.h"
@@ -503,17 +504,24 @@
         PixelSnappedIntRect(
             LayoutRect(LayoutPoint(subpixel_accumulation), contents_size))
             .Size();
-    // The scrolling contents layer must be at least as large as the clip.
-    scroll_contents_size = scroll_contents_size.ExpandedTo(IntSize(
-        container_layer->bounds().width(), container_layer->bounds().height()));
-    cc_layer->SetBounds(static_cast<gfx::Size>(scroll_contents_size));
-    // VisualViewport scrolling may involve pinch zoom and gets routed through
-    // WebViewImpl explicitly rather than via ScrollingCoordinator::DidScroll
-    // since it needs to be set in tandem with the page scale delta.
+
     if (scrollable_area != &page_->GetVisualViewport()) {
+      // The scrolling contents layer must be at least as large as its clip.
+      // The visual viewport is special because the size of its scrolling
+      // content depends on the page scale factor. Its scrollable content is
+      // the layout viewport which is sized based on the minimum allowed page
+      // scale so it actually can be smaller than its clip.
+      scroll_contents_size =
+          scroll_contents_size.ExpandedTo(IntSize(container_layer->bounds()));
+
+      // VisualViewport scrolling may involve pinch zoom and gets routed through
+      // WebViewImpl explicitly rather than via ScrollingCoordinator::DidScroll
+      // since it needs to be set in tandem with the page scale delta.
       cc_layer->set_did_scroll_callback(WTF::BindRepeating(
           &ScrollingCoordinator::DidScroll, WrapWeakPersistent(this)));
     }
+
+    cc_layer->SetBounds(static_cast<gfx::Size>(scroll_contents_size));
   }
   if (ScrollbarLayerGroup* scrollbar_layer_group =
           GetScrollbarLayerGroup(scrollable_area, kHorizontalScrollbar)) {
diff --git a/third_party/blink/renderer/core/paint/background_image_geometry.cc b/third_party/blink/renderer/core/paint/background_image_geometry.cc
index 1d2c292..0f67478 100644
--- a/third_party/blink/renderer/core/paint/background_image_geometry.cc
+++ b/third_party/blink/renderer/core/paint/background_image_geometry.cc
@@ -474,18 +474,13 @@
     : box_(view),
       positioning_box_(view.RootBox()),
       has_non_local_geometry_(false),
+      painting_view_(true),
       painting_table_cell_(false),
       cell_using_container_background_(false) {
   // The background of the box generated by the root element covers the
   // entire canvas and will be painted by the view object, but the we should
   // still use the root element box for positioning.
   positioning_size_override_ = view.RootBox().Size();
-
-  // The input paint rect is specified in root element local coordinate
-  // (i.e. a transform is applied on the context for painting), and is
-  // expanded to cover the whole canvas.  Since left/top is relative to the
-  // paint rect, we need to offset them back.
-  coordinate_offset_by_paint_rect_ = true;
 }
 
 BackgroundImageGeometry::BackgroundImageGeometry(
@@ -493,7 +488,7 @@
     : box_(obj),
       positioning_box_(obj),
       has_non_local_geometry_(false),
-      coordinate_offset_by_paint_rect_(false),
+      painting_view_(false),
       painting_table_cell_(false),
       cell_using_container_background_(false) {
   // Specialized constructor should be used for LayoutView.
@@ -508,7 +503,7 @@
                            ? ToLayoutBoxModelObject(*background_object)
                            : cell),
       has_non_local_geometry_(false),
-      coordinate_offset_by_paint_rect_(false),
+      painting_view_(false),
       painting_table_cell_(true) {
   cell_using_container_background_ =
       background_object && !background_object->IsTableCell();
@@ -542,7 +537,7 @@
   // * the layer is not painted as part of a regular background phase
   //  (e.g.paint_phase == kMask)
   // * non-SrcOver compositing is active
-  // * coordinate_offset_by_paint_rect_ is set, meaning we're dealing with a
+  // * painting_view_ is set, meaning we're dealing with a
   //   LayoutView - for which dest_rect is overflowing (expanded to cover
   //   the whole canvas).
   // * We are painting table cells using the table background
@@ -550,7 +545,7 @@
   bool disallow_border_derived_adjustment =
       !ShouldPaintSelfBlockBackground(paint_phase) ||
       fill_layer.Composite() != CompositeOperator::kCompositeSourceOver ||
-      coordinate_offset_by_paint_rect_ || painting_table_cell_ ||
+      painting_view_ || painting_table_cell_ ||
       positioning_box_.StyleRef().BorderImage().GetImage();
   switch (fill_layer.Clip()) {
     case EFillBox::kContent:
@@ -621,7 +616,7 @@
   } else {
     auto dest_rect = LayoutRect(PixelSnappedIntRect(paint_rect));
 
-    if (coordinate_offset_by_paint_rect_ || cell_using_container_background_)
+    if (painting_view_ || cell_using_container_background_)
       positioning_area.SetSize(positioning_size_override_);
     else
       positioning_area = dest_rect;
@@ -641,7 +636,12 @@
 
     box_offset = LayoutPoint(box_outset.Left() - dest_adjust.Left(),
                              box_outset.Top() - dest_adjust.Top());
-    if (coordinate_offset_by_paint_rect_)
+
+    // For view backgrounds, the input paint rect is specified in root element
+    // local coordinate (i.e. a transform is applied on the context for
+    // painting), and is expanded to cover the whole canvas. Since left/top is
+    // relative to the paint rect, we need to offset them back.
+    if (painting_view_)
       box_offset -= paint_rect.Location();
   }
 }
@@ -789,7 +789,7 @@
 }
 
 const ImageResourceObserver& BackgroundImageGeometry::ImageClient() const {
-  return coordinate_offset_by_paint_rect_ ? box_ : positioning_box_;
+  return painting_view_ ? box_ : positioning_box_;
 }
 
 const Document& BackgroundImageGeometry::ImageDocument() const {
diff --git a/third_party/blink/renderer/core/paint/background_image_geometry.h b/third_party/blink/renderer/core/paint/background_image_geometry.h
index 758f5662..34c00de 100644
--- a/third_party/blink/renderer/core/paint/background_image_geometry.h
+++ b/third_party/blink/renderer/core/paint/background_image_geometry.h
@@ -131,7 +131,7 @@
   LayoutSize tile_size_;
   LayoutSize repeat_spacing_;
   bool has_non_local_geometry_;
-  bool coordinate_offset_by_paint_rect_;
+  bool painting_view_;
   bool painting_table_cell_;
   bool cell_using_container_background_;
 };
diff --git a/third_party/blink/renderer/core/paint/box_paint_invalidator_test.cc b/third_party/blink/renderer/core/paint/box_paint_invalidator_test.cc
index 73dacdb6..c1035e3 100644
--- a/third_party/blink/renderer/core/paint/box_paint_invalidator_test.cc
+++ b/third_party/blink/renderer/core/paint/box_paint_invalidator_test.cc
@@ -24,17 +24,6 @@
       : PaintControllerPaintTest(SingleChildLocalFrameClient::Create()) {}
 
  protected:
-  const RasterInvalidationTracking* GetRasterInvalidationTracking() const {
-    // TODO(wangxianzhu): Test SPv2.
-    // TODO(wangxianzhu): For SPv175, XXXPaintInvalidator doesn't do raster
-    // invalidation, so the test should be moved to somewhere else (or use
-    // layout tests?).
-    return GetLayoutView()
-        .Layer()
-        ->GraphicsLayerBacking()
-        ->GetRasterInvalidationTracking();
-  }
-
   PaintInvalidationReason ComputePaintInvalidationReason(
       const LayoutBox& box,
       const LayoutRect& old_visual_rect,
@@ -78,10 +67,7 @@
               ComputePaintInvalidationReason(box, visual_rect, location));
   }
 
- private:
-  void SetUp() override {
-    RenderingTest::SetUp();
-    EnableCompositing();
+  void SetUpHTML() {
     SetBodyInnerHTML(R"HTML(
       <style>
         body {
@@ -99,25 +85,12 @@
           border-style: solid;
           border-color: red;
         }
-        .solid-composited-scroller {
-          overflow: scroll;
-          will-change: transform;
-          background: #ccc;
-        }
-        .local-background {
-          background-attachment: local;
-          overflow: scroll;
-        }
-        .gradient {
-          background-image: linear-gradient(blue, yellow)
-        }
-        .transform {
-          transform: scale(2);
-        }
       </style>
       <div id='target' class='border'></div>
     )HTML");
   }
+
+ private:
   FragmentData fragment_data_;
 };
 
@@ -155,6 +128,7 @@
 }
 
 TEST_P(BoxPaintInvalidatorTest, ComputePaintInvalidationReasonPaintingNothing) {
+  SetUpHTML();
   auto& target = *GetDocument().getElementById("target");
   auto& box = *ToLayoutBox(target.GetLayoutObject());
   // Remove border.
@@ -189,6 +163,7 @@
 }
 
 TEST_P(BoxPaintInvalidatorTest, ComputePaintInvalidationReasonBasic) {
+  SetUpHTML();
   auto& target = *GetDocument().getElementById("target");
   auto& box = *ToLayoutBox(target.GetLayoutObject());
   // Remove border.
@@ -246,6 +221,7 @@
 }
 
 TEST_P(BoxPaintInvalidatorTest, ComputePaintInvalidationReasonOtherCases) {
+  SetUpHTML();
   auto& target = *GetDocument().getElementById("target");
 
   // The target initially has border.
@@ -276,595 +252,4 @@
   ExpectFullPaintInvalidationOnGeometryChange("With clip-path");
 }
 
-TEST_P(BoxPaintInvalidatorTest, IncrementalInvalidationExpand) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  Element* target = GetDocument().getElementById("target");
-  target->setAttribute(HTMLNames::styleAttr, "width: 100px; height: 200px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  const auto& raster_invalidations =
-      GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(2u, raster_invalidations.size());
-  EXPECT_EQ(IntRect(60, 0, 60, 240), raster_invalidations[0].rect);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            raster_invalidations[0].reason);
-  EXPECT_EQ(IntRect(0, 120, 120, 120), raster_invalidations[1].rect);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            raster_invalidations[1].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest, IncrementalInvalidationShrink) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  Element* target = GetDocument().getElementById("target");
-  target->setAttribute(HTMLNames::styleAttr, "width: 20px; height: 80px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  const auto& raster_invalidations =
-      GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(2u, raster_invalidations.size());
-  EXPECT_EQ(IntRect(30, 0, 40, 140), raster_invalidations[0].rect);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            raster_invalidations[0].reason);
-  EXPECT_EQ(IntRect(0, 100, 70, 40), raster_invalidations[1].rect);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            raster_invalidations[1].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest, IncrementalInvalidationMixed) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  Element* target = GetDocument().getElementById("target");
-  target->setAttribute(HTMLNames::styleAttr, "width: 100px; height: 80px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  const auto& raster_invalidations =
-      GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(2u, raster_invalidations.size());
-  EXPECT_EQ(IntRect(60, 0, 60, 120), raster_invalidations[0].rect);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            raster_invalidations[0].reason);
-  EXPECT_EQ(IntRect(0, 100, 70, 40), raster_invalidations[1].rect);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            raster_invalidations[1].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest, SubpixelVisualRectChagne) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  Element* target = GetDocument().getElementById("target");
-
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  target->setAttribute(HTMLNames::styleAttr, "width: 100.6px; height: 70.3px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  const auto* raster_invalidations =
-      &GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(2u, raster_invalidations->size());
-  EXPECT_EQ(IntRect(60, 0, 61, 111), (*raster_invalidations)[0].rect);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            (*raster_invalidations)[0].reason);
-  EXPECT_EQ(IntRect(0, 90, 70, 50), (*raster_invalidations)[1].rect);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            (*raster_invalidations)[1].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  target->setAttribute(HTMLNames::styleAttr, "width: 50px; height: 100px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  raster_invalidations = &GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(2u, raster_invalidations->size());
-  EXPECT_EQ(IntRect(60, 0, 61, 111), (*raster_invalidations)[0].rect);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            (*raster_invalidations)[0].reason);
-  EXPECT_EQ(IntRect(0, 90, 70, 50), (*raster_invalidations)[1].rect);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            (*raster_invalidations)[1].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest, SubpixelVisualRectChangeWithTransform) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  Element* target = GetDocument().getElementById("target");
-  target->setAttribute(HTMLNames::classAttr, "border transform");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  target->setAttribute(HTMLNames::styleAttr, "width: 100.6px; height: 70.3px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  const auto* raster_invalidations =
-      &GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(2u, raster_invalidations->size());
-  EXPECT_EQ(IntRect(0, 0, 140, 280), (*raster_invalidations)[0].rect);
-  EXPECT_EQ(PaintInvalidationReason::kGeometry,
-            (*raster_invalidations)[0].reason);
-  EXPECT_EQ(IntRect(0, 0, 242, 222), (*raster_invalidations)[1].rect);
-  EXPECT_EQ(PaintInvalidationReason::kGeometry,
-            (*raster_invalidations)[1].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  target->setAttribute(HTMLNames::styleAttr, "width: 50px; height: 100px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  raster_invalidations = &GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(2u, raster_invalidations->size());
-  EXPECT_EQ(IntRect(0, 0, 242, 222), (*raster_invalidations)[0].rect);
-  EXPECT_EQ(PaintInvalidationReason::kGeometry,
-            (*raster_invalidations)[0].reason);
-  EXPECT_EQ(IntRect(0, 0, 140, 280), (*raster_invalidations)[1].rect);
-  EXPECT_EQ(PaintInvalidationReason::kGeometry,
-            (*raster_invalidations)[1].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest, SubpixelWithinPixelsChange) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  Element* target = GetDocument().getElementById("target");
-  LayoutObject* target_object = target->GetLayoutObject();
-  EXPECT_EQ(LayoutRect(0, 0, 70, 140),
-            target_object->FirstFragment().VisualRect());
-
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  target->setAttribute(HTMLNames::styleAttr,
-                       "margin-top: 0.6px; width: 50px; height: 99.3px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  EXPECT_EQ(LayoutRect(LayoutUnit(), LayoutUnit(0.6), LayoutUnit(70),
-                       LayoutUnit(139.3)),
-            target_object->FirstFragment().VisualRect());
-  const auto* raster_invalidations =
-      &GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(1u, raster_invalidations->size());
-  EXPECT_EQ(IntRect(0, 0, 70, 140), (*raster_invalidations)[0].rect);
-  EXPECT_EQ(PaintInvalidationReason::kGeometry,
-            (*raster_invalidations)[0].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  target->setAttribute(HTMLNames::styleAttr,
-                       "margin-top: 0.6px; width: 49.3px; height: 98.5px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  EXPECT_EQ(LayoutRect(LayoutUnit(), LayoutUnit(0.6), LayoutUnit(69.3),
-                       LayoutUnit(138.5)),
-            target_object->FirstFragment().VisualRect());
-  raster_invalidations = &GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(2u, raster_invalidations->size());
-  EXPECT_EQ(IntRect(59, 0, 11, 140), (*raster_invalidations)[0].rect);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            (*raster_invalidations)[0].reason);
-  EXPECT_EQ(IntRect(0, 119, 70, 21), (*raster_invalidations)[1].rect);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            (*raster_invalidations)[1].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest, ResizeRotated) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  Element* target = GetDocument().getElementById("target");
-  target->setAttribute(HTMLNames::styleAttr, "transform: rotate(45deg)");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-
-  // Should do full invalidation a rotated object is resized.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  target->setAttribute(HTMLNames::styleAttr,
-                       "transform: rotate(45deg); width: 200px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  const auto* raster_invalidations =
-      &GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(1u, raster_invalidations->size());
-  EXPECT_EQ(IntRect(-99, 0, 255, 255), (*raster_invalidations)[0].rect);
-  EXPECT_EQ(PaintInvalidationReason::kGeometry,
-            (*raster_invalidations)[0].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest, ResizeRotatedChild) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  Element* target = GetDocument().getElementById("target");
-  target->setAttribute(HTMLNames::styleAttr,
-                       "transform: rotate(45deg); width: 200px");
-  target->SetInnerHTMLFromString(
-      "<div id=child style='width: 50px; height: 50px; background: "
-      "red'></div>");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  Element* child = GetDocument().getElementById("child");
-
-  // Should do full invalidation a rotated object is resized.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  child->setAttribute(HTMLNames::styleAttr,
-                      "width: 100px; height: 50px; background: red");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  const auto* raster_invalidations =
-      &GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(1u, raster_invalidations->size());
-  EXPECT_EQ(IntRect(-43, 21, 107, 107), (*raster_invalidations)[0].rect);
-  EXPECT_EQ(PaintInvalidationReason::kGeometry,
-            (*raster_invalidations)[0].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest, CompositedLayoutViewResize) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  EnableCompositing();
-  Element* target = GetDocument().getElementById("target");
-  target->setAttribute(HTMLNames::classAttr, "");
-  target->setAttribute(HTMLNames::styleAttr, "height: 2000px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-
-  // Resize the content.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  target->setAttribute(HTMLNames::styleAttr, "height: 3000px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  const auto& raster_invalidations =
-      GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(1u, raster_invalidations.size());
-  EXPECT_EQ(IntRect(0, 2000, 800, 1000), raster_invalidations[0].rect);
-  EXPECT_EQ(static_cast<const DisplayItemClient*>(&GetLayoutView()),
-            raster_invalidations[0].client);
-  EXPECT_EQ(PaintInvalidationReason::kBackgroundOnScrollingContentsLayer,
-            raster_invalidations[0].reason);
-
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-
-  // Resize the viewport. No paint invalidation.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  GetDocument().View()->Resize(800, 1000);
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  EXPECT_FALSE(GetRasterInvalidationTracking()->HasInvalidations());
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest, CompositedLayoutViewGradientResize) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  EnableCompositing();
-  GetDocument().body()->setAttribute(HTMLNames::classAttr, "gradient");
-  Element* target = GetDocument().getElementById("target");
-  target->setAttribute(HTMLNames::classAttr, "");
-  target->setAttribute(HTMLNames::styleAttr, "height: 2000px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-
-  // Resize the content.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  target->setAttribute(HTMLNames::styleAttr, "height: 3000px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-
-  const auto& raster_invalidations =
-      GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(1u, raster_invalidations.size());
-  EXPECT_EQ(IntRect(0, 0, 800, 3000), raster_invalidations[0].rect);
-  EXPECT_EQ(static_cast<const DisplayItemClient*>(&GetLayoutView()),
-            raster_invalidations[0].client);
-  EXPECT_EQ(PaintInvalidationReason::kBackgroundOnScrollingContentsLayer,
-            raster_invalidations[0].reason);
-
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-
-  // Resize the viewport. No paint invalidation.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  GetDocument().View()->Resize(800, 1000);
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  EXPECT_FALSE(GetRasterInvalidationTracking()->HasInvalidations());
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest, NonCompositedLayoutViewResize) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  SetBodyInnerHTML(R"HTML(
-    <style>
-      body { margin: 0 }
-      iframe { display: block; width: 100px; height: 100px; border: none; }
-    </style>
-    <iframe id='iframe'></iframe>
-  )HTML");
-  SetChildFrameHTML(R"HTML(
-    <style>
-      ::-webkit-scrollbar { display: none }
-      body { margin: 0; background: green; height: 0 }
-    </style>
-    <div id='content' style='width: 200px; height: 200px'></div>
-  )HTML");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  Element* iframe = GetDocument().getElementById("iframe");
-  Element* content = ChildDocument().getElementById("content");
-  EXPECT_EQ(GetLayoutView(),
-            content->GetLayoutObject()->ContainerForPaintInvalidation());
-
-  // Resize the content.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  content->setAttribute(HTMLNames::styleAttr, "height: 500px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  // No invalidation because the changed part of layout overflow is clipped.
-  EXPECT_FALSE(GetRasterInvalidationTracking()->HasInvalidations());
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-
-  // Resize the iframe.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  iframe->setAttribute(HTMLNames::styleAttr, "height: 200px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  const auto& raster_invalidations =
-      GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(2u, raster_invalidations.size());
-  EXPECT_EQ(IntRect(0, 100, 100, 100), raster_invalidations[0].rect);
-  EXPECT_EQ(static_cast<const DisplayItemClient*>(iframe->GetLayoutObject()),
-            raster_invalidations[0].client);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            raster_invalidations[0].reason);
-  EXPECT_EQ(
-      static_cast<const DisplayItemClient*>(content->GetLayoutObject()->View()),
-      raster_invalidations[1].client);
-  EXPECT_EQ(IntRect(0, 100, 100, 100), raster_invalidations[1].rect);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            raster_invalidations[1].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest, NonCompositedLayoutViewGradientResize) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  SetBodyInnerHTML(R"HTML(
-    <style>
-      body { margin: 0 }
-      iframe { display: block; width: 100px; height: 100px; border: none; }
-    </style>
-    <iframe id='iframe'></iframe>
-  )HTML");
-  SetChildFrameHTML(R"HTML(
-    <style>
-      ::-webkit-scrollbar { display: none }
-      body {
-        margin: 0;
-        height: 0;
-        background-image: linear-gradient(blue, yellow);
-      }
-    </style>
-    <div id='content' style='width: 200px; height: 200px'></div>
-  )HTML");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  Element* iframe = GetDocument().getElementById("iframe");
-  Element* content = ChildDocument().getElementById("content");
-  LayoutView* frame_layout_view = content->GetLayoutObject()->View();
-  EXPECT_EQ(GetLayoutView(),
-            content->GetLayoutObject()->ContainerForPaintInvalidation());
-
-  // Resize the content.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  content->setAttribute(HTMLNames::styleAttr, "height: 500px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  const auto* raster_invalidations =
-      &GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(1u, raster_invalidations->size());
-  EXPECT_EQ(IntRect(0, 0, 100, 100), (*raster_invalidations)[0].rect);
-  EXPECT_EQ(static_cast<const DisplayItemClient*>(frame_layout_view),
-            (*raster_invalidations)[0].client);
-  EXPECT_EQ(PaintInvalidationReason::kBackground,
-            (*raster_invalidations)[0].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-
-  // Resize the iframe.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  iframe->setAttribute(HTMLNames::styleAttr, "height: 200px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  raster_invalidations = &GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(2u, raster_invalidations->size());
-  EXPECT_EQ(IntRect(0, 100, 100, 100), (*raster_invalidations)[0].rect);
-  EXPECT_EQ(static_cast<const DisplayItemClient*>(iframe->GetLayoutObject()),
-            (*raster_invalidations)[0].client);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            (*raster_invalidations)[0].reason);
-  EXPECT_EQ(static_cast<const DisplayItemClient*>(frame_layout_view),
-            (*raster_invalidations)[1].client);
-  EXPECT_EQ(IntRect(0, 0, 100, 200), (*raster_invalidations)[1].rect);
-  EXPECT_EQ(PaintInvalidationReason::kGeometry,
-            (*raster_invalidations)[1].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest, CompositedBackgroundAttachmentLocalResize) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  EnableCompositing();
-
-  Element* target = GetDocument().getElementById("target");
-  target->setAttribute(HTMLNames::classAttr, "border local-background");
-  target->setAttribute(HTMLNames::styleAttr, "will-change: transform");
-  target->SetInnerHTMLFromString(
-      "<div id=child style='width: 500px; height: 500px'></div>",
-      ASSERT_NO_EXCEPTION);
-  Element* child = GetDocument().getElementById("child");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-
-  // Resize the content.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  child->setAttribute(HTMLNames::styleAttr, "width: 500px; height: 1000px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  LayoutBoxModelObject* target_obj =
-      ToLayoutBoxModelObject(target->GetLayoutObject());
-  GraphicsLayer* container_layer =
-      target_obj->Layer()->GraphicsLayerBacking(target_obj);
-  GraphicsLayer* contents_layer = target_obj->Layer()->GraphicsLayerBacking();
-  // No invalidation on the container layer.
-  EXPECT_FALSE(
-      container_layer->GetRasterInvalidationTracking()->HasInvalidations());
-  // Incremental invalidation of background on contents layer.
-  const auto& contents_raster_invalidations =
-      contents_layer->GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(1u, contents_raster_invalidations.size());
-  EXPECT_EQ(IntRect(0, 500, 500, 500), contents_raster_invalidations[0].rect);
-  EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()),
-            contents_raster_invalidations[0].client);
-  EXPECT_EQ(PaintInvalidationReason::kBackgroundOnScrollingContentsLayer,
-            contents_raster_invalidations[0].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-
-  // Resize the container.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  target->setAttribute(HTMLNames::styleAttr,
-                       "will-change: transform; height: 200px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  // No invalidation on the contents layer.
-  EXPECT_FALSE(
-      contents_layer->GetRasterInvalidationTracking()->HasInvalidations());
-  // Incremental invalidation on the container layer.
-  const auto& container_raster_invalidations =
-      container_layer->GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(1u, container_raster_invalidations.size());
-  EXPECT_EQ(IntRect(0, 120, 70, 120), container_raster_invalidations[0].rect);
-  EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()),
-            container_raster_invalidations[0].client);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            container_raster_invalidations[0].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest,
-       CompositedBackgroundAttachmentLocalGradientResize) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  EnableCompositing();
-
-  Element* target = GetDocument().getElementById("target");
-  target->setAttribute(HTMLNames::classAttr,
-                       "border local-background gradient");
-  target->setAttribute(HTMLNames::styleAttr, "will-change: transform");
-  target->SetInnerHTMLFromString(
-      "<div id='child' style='width: 500px; height: 500px'></div>",
-      ASSERT_NO_EXCEPTION);
-  Element* child = GetDocument().getElementById("child");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-
-  // Resize the content.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  child->setAttribute(HTMLNames::styleAttr, "width: 500px; height: 1000px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  LayoutBoxModelObject* target_obj =
-      ToLayoutBoxModelObject(target->GetLayoutObject());
-  GraphicsLayer* container_layer =
-      target_obj->Layer()->GraphicsLayerBacking(target_obj);
-  GraphicsLayer* contents_layer = target_obj->Layer()->GraphicsLayerBacking();
-  // No invalidation on the container layer.
-  EXPECT_FALSE(
-      container_layer->GetRasterInvalidationTracking()->HasInvalidations());
-  // Full invalidation of background on contents layer because the gradient
-  // background is resized.
-  const auto& contents_raster_invalidations =
-      contents_layer->GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(1u, contents_raster_invalidations.size());
-  EXPECT_EQ(IntRect(0, 0, 500, 1000), contents_raster_invalidations[0].rect);
-  EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()),
-            contents_raster_invalidations[0].client);
-  EXPECT_EQ(PaintInvalidationReason::kBackgroundOnScrollingContentsLayer,
-            contents_raster_invalidations[0].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-
-  // Resize the container.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  target->setAttribute(HTMLNames::styleAttr,
-                       "will-change: transform; height: 200px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  EXPECT_FALSE(
-      contents_layer->GetRasterInvalidationTracking()->HasInvalidations());
-  // Full invalidation on the container layer.
-  const auto& container_raster_invalidations =
-      container_layer->GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(1u, container_raster_invalidations.size());
-  EXPECT_EQ(IntRect(0, 0, 70, 240), container_raster_invalidations[0].rect);
-  EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()),
-            container_raster_invalidations[0].client);
-  EXPECT_EQ(PaintInvalidationReason::kGeometry,
-            container_raster_invalidations[0].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest, NonCompositedBackgroundAttachmentLocalResize) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  Element* target = GetDocument().getElementById("target");
-  target->setAttribute(HTMLNames::classAttr, "border local-background");
-  target->SetInnerHTMLFromString(
-      "<div id=child style='width: 500px; height: 500px'></div>",
-      ASSERT_NO_EXCEPTION);
-  Element* child = GetDocument().getElementById("child");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  EXPECT_EQ(&GetLayoutView(),
-            &target->GetLayoutObject()->ContainerForPaintInvalidation());
-
-  // Resize the content.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  child->setAttribute(HTMLNames::styleAttr, "width: 500px; height: 1000px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  // No invalidation because the changed part is invisible.
-  EXPECT_FALSE(GetRasterInvalidationTracking()->HasInvalidations());
-
-  // Resize the container.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  target->setAttribute(HTMLNames::styleAttr, "height: 200px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  const auto& raster_invalidations =
-      GetRasterInvalidationTracking()->Invalidations();
-  ASSERT_EQ(1u, raster_invalidations.size());
-  EXPECT_EQ(IntRect(0, 120, 70, 120), raster_invalidations[0].rect);
-  EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()),
-            raster_invalidations[0].client);
-  EXPECT_EQ(PaintInvalidationReason::kIncremental,
-            raster_invalidations[0].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(BoxPaintInvalidatorTest, CompositedSolidBackgroundResize) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    return;
-
-  EnableCompositing();
-  Element* target = GetDocument().getElementById("target");
-  target->setAttribute(HTMLNames::classAttr, "solid-composited-scroller");
-  target->SetInnerHTMLFromString("<div style='height: 500px'></div>",
-                                 ASSERT_NO_EXCEPTION);
-  GetDocument().View()->UpdateAllLifecyclePhases();
-
-  // Resize the scroller.
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  target->setAttribute(HTMLNames::styleAttr, "width: 100px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-
-  LayoutBoxModelObject* target_object =
-      ToLayoutBoxModelObject(target->GetLayoutObject());
-  GraphicsLayer* scrolling_contents_layer =
-      target_object->Layer()->GraphicsLayerBacking();
-  const auto& invalidations =
-      scrolling_contents_layer->GetRasterInvalidationTracking()
-          ->Invalidations();
-
-  ASSERT_EQ(1u, invalidations.size());
-  EXPECT_EQ(IntRect(50, 0, 50, 500), invalidations[0].rect);
-  EXPECT_EQ(static_cast<const DisplayItemClient*>(target_object),
-            invalidations[0].client);
-  EXPECT_EQ(PaintInvalidationReason::kBackgroundOnScrollingContentsLayer,
-            invalidations[0].reason);
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.cc b/third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.cc
new file mode 100644
index 0000000..bf7e1d4
--- /dev/null
+++ b/third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.cc
@@ -0,0 +1,867 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.h"
+
+#include "testing/gmock/include/gmock/gmock-matchers.h"
+
+namespace blink {
+
+void SetUpHTML(PaintAndRasterInvalidationTest& test) {
+  test.SetBodyInnerHTML(R"HTML(
+    <style>
+      body {
+        margin: 0;
+        height: 0;
+      }
+      ::-webkit-scrollbar { display: none }
+      #target {
+        width: 50px;
+        height: 100px;
+        transform-origin: 0 0;
+      }
+      .background {
+        background: blue;
+      }
+      .solid-composited-scroller {
+        overflow: scroll;
+        will-change: transform;
+        background: blue;
+      }
+      .local-background {
+        background-attachment: local;
+        overflow: scroll;
+      }
+      .gradient {
+        background-image: linear-gradient(blue, yellow);
+      }
+      .transform {
+        transform: scale(2);
+      }
+    </style>
+    <div id='target' class='background'></div>
+  )HTML");
+}
+
+INSTANTIATE_PAINT_TEST_CASE_P(PaintAndRasterInvalidationTest);
+
+TEST_P(PaintAndRasterInvalidationTest, TrackingForTracing) {
+  SetBodyInnerHTML(R"HTML(
+    <style>#target { width: 100px; height: 100px; background: blue }</style>
+    <div id="target"></div>
+  )HTML");
+  auto* target = GetDocument().getElementById("target");
+
+  {
+    // This is equivalent to enabling disabled-by-default-blink.invalidation
+    // for tracing.
+    ScopedPaintUnderInvalidationCheckingForTest checking(true);
+
+    target->setAttribute(HTMLNames::styleAttr, "height: 200px");
+    GetDocument().View()->UpdateAllLifecyclePhases();
+    EXPECT_THAT(GetCcLayerClient()->TakeDebugInfo(GetCcLayer())->ToString(),
+                testing::MatchesRegex(
+                    "\\{\"layer_name\":.*\"annotated_invalidation_rects\":\\["
+                    "\\{\"geometry_rect\":\\[8,108,100,100\\],"
+                    "\"reason\":\"incremental\","
+                    "\"client\":\"LayoutBlockFlow DIV id='target'\"\\}\\]\\}"));
+
+    target->setAttribute(HTMLNames::styleAttr, "height: 200px; width: 200px");
+    GetDocument().View()->UpdateAllLifecyclePhases();
+    EXPECT_THAT(GetCcLayerClient()->TakeDebugInfo(GetCcLayer())->ToString(),
+                testing::MatchesRegex(
+                    "\\{\"layer_name\":.*\"annotated_invalidation_rects\":\\["
+                    "\\{\"geometry_rect\":\\[108,8,100,200\\],"
+                    "\"reason\":\"incremental\","
+                    "\"client\":\"LayoutBlockFlow DIV id='target'\"\\}\\]\\}"));
+  }
+
+  target->setAttribute(HTMLNames::styleAttr, "height: 300px; width: 300px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  EXPECT_EQ(std::string::npos, GetCcLayerClient()
+                                   ->TakeDebugInfo(GetCcLayer())
+                                   ->ToString()
+                                   .find("invalidation_rects"));
+}
+
+TEST_P(PaintAndRasterInvalidationTest, IncrementalInvalidationExpand) {
+  SetUpHTML(*this);
+  Element* target = GetDocument().getElementById("target");
+
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr, "width: 100px; height: 200px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  const auto& raster_invalidations =
+      GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(2u, raster_invalidations.size());
+  EXPECT_EQ(IntRect(50, 0, 50, 200), raster_invalidations[0].rect);
+  EXPECT_EQ(PaintInvalidationReason::kIncremental,
+            raster_invalidations[0].reason);
+  EXPECT_EQ(IntRect(0, 100, 100, 100), raster_invalidations[1].rect);
+  EXPECT_EQ(PaintInvalidationReason::kIncremental,
+            raster_invalidations[1].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest, IncrementalInvalidationShrink) {
+  SetUpHTML(*this);
+  Element* target = GetDocument().getElementById("target");
+
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr, "width: 20px; height: 80px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  const auto& raster_invalidations =
+      GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(2u, raster_invalidations.size());
+  EXPECT_EQ(IntRect(20, 0, 30, 100), raster_invalidations[0].rect);
+  EXPECT_EQ(PaintInvalidationReason::kIncremental,
+            raster_invalidations[0].reason);
+  EXPECT_EQ(IntRect(0, 80, 50, 20), raster_invalidations[1].rect);
+  EXPECT_EQ(PaintInvalidationReason::kIncremental,
+            raster_invalidations[1].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest, IncrementalInvalidationMixed) {
+  SetUpHTML(*this);
+  Element* target = GetDocument().getElementById("target");
+
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr, "width: 100px; height: 80px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  const auto& raster_invalidations =
+      GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(2u, raster_invalidations.size());
+  EXPECT_EQ(IntRect(50, 0, 50, 80), raster_invalidations[0].rect);
+  EXPECT_EQ(PaintInvalidationReason::kIncremental,
+            raster_invalidations[0].reason);
+  EXPECT_EQ(IntRect(0, 80, 50, 20), raster_invalidations[1].rect);
+  EXPECT_EQ(PaintInvalidationReason::kIncremental,
+            raster_invalidations[1].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest, SubpixelVisualRectChagne) {
+  SetUpHTML(*this);
+  Element* target = GetDocument().getElementById("target");
+
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr, "width: 100.6px; height: 70.3px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  const auto* raster_invalidations =
+      &GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(2u, raster_invalidations->size());
+  EXPECT_EQ(IntRect(0, 0, 50, 100), (*raster_invalidations)[0].rect);
+  EXPECT_EQ(PaintInvalidationReason::kGeometry,
+            (*raster_invalidations)[0].reason);
+  EXPECT_EQ(IntRect(0, 0, 101, 71), (*raster_invalidations)[1].rect);
+  EXPECT_EQ(PaintInvalidationReason::kGeometry,
+            (*raster_invalidations)[1].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr, "width: 50px; height: 100px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  raster_invalidations = &GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(2u, raster_invalidations->size());
+  EXPECT_EQ(IntRect(0, 0, 101, 71), (*raster_invalidations)[0].rect);
+  EXPECT_EQ(PaintInvalidationReason::kGeometry,
+            (*raster_invalidations)[0].reason);
+  EXPECT_EQ(IntRect(0, 0, 50, 100), (*raster_invalidations)[1].rect);
+  EXPECT_EQ(PaintInvalidationReason::kGeometry,
+            (*raster_invalidations)[1].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest, SubpixelVisualRectChangeWithTransform) {
+  SetUpHTML(*this);
+  Element* target = GetDocument().getElementById("target");
+  target->setAttribute(HTMLNames::classAttr, "background transform");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr, "width: 100.6px; height: 70.3px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  const auto* raster_invalidations =
+      &GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(2u, raster_invalidations->size());
+  EXPECT_EQ(IntRect(0, 0, 100, 200), (*raster_invalidations)[0].rect);
+  EXPECT_EQ(PaintInvalidationReason::kGeometry,
+            (*raster_invalidations)[0].reason);
+  EXPECT_EQ(IntRect(0, 0, 202, 142), (*raster_invalidations)[1].rect);
+  EXPECT_EQ(PaintInvalidationReason::kGeometry,
+            (*raster_invalidations)[1].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr, "width: 50px; height: 100px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  raster_invalidations = &GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(2u, raster_invalidations->size());
+  EXPECT_EQ(IntRect(0, 0, 202, 142), (*raster_invalidations)[0].rect);
+  EXPECT_EQ(PaintInvalidationReason::kGeometry,
+            (*raster_invalidations)[0].reason);
+  EXPECT_EQ(IntRect(0, 0, 100, 200), (*raster_invalidations)[1].rect);
+  EXPECT_EQ(PaintInvalidationReason::kGeometry,
+            (*raster_invalidations)[1].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest, SubpixelWithinPixelsChange) {
+  SetUpHTML(*this);
+  Element* target = GetDocument().getElementById("target");
+  LayoutObject* target_object = target->GetLayoutObject();
+  EXPECT_EQ(LayoutRect(0, 0, 50, 100),
+            target_object->FirstFragment().VisualRect());
+
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr,
+                       "margin-top: 0.6px; width: 50px; height: 99.3px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  EXPECT_EQ(LayoutRect(0, 0, 50, 100),
+            target_object->FirstFragment().VisualRect());
+  const auto* raster_invalidations =
+      &GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(1u, raster_invalidations->size());
+  EXPECT_EQ(IntRect(0, 0, 50, 100), (*raster_invalidations)[0].rect);
+  EXPECT_EQ(PaintInvalidationReason::kGeometry,
+            (*raster_invalidations)[0].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr,
+                       "margin-top: 0.6px; width: 49.3px; height: 98.5px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  EXPECT_EQ(LayoutRect(0, 0, 50, 100),
+            target_object->FirstFragment().VisualRect());
+  raster_invalidations = &GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(1u, raster_invalidations->size());
+  EXPECT_EQ(IntRect(0, 0, 50, 100), (*raster_invalidations)[0].rect);
+  EXPECT_EQ(PaintInvalidationReason::kGeometry,
+            (*raster_invalidations)[0].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest, ResizeRotated) {
+  SetUpHTML(*this);
+  Element* target = GetDocument().getElementById("target");
+  target->setAttribute(HTMLNames::styleAttr, "transform: rotate(45deg)");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr,
+                       "transform: rotate(45deg); width: 200px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  const auto* raster_invalidations =
+      &GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(1u, raster_invalidations->size());
+  auto expected_rect = EnclosingIntRect(
+      TransformationMatrix().Rotate(45).MapRect(FloatRect(50, 0, 150, 100)));
+  expected_rect.Intersect(IntRect(0, 0, 800, 600));
+  EXPECT_EQ(expected_rect, (*raster_invalidations)[0].rect);
+  EXPECT_EQ(PaintInvalidationReason::kIncremental,
+            (*raster_invalidations)[0].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest, ResizeRotatedChild) {
+  SetUpHTML(*this);
+  Element* target = GetDocument().getElementById("target");
+  target->setAttribute(HTMLNames::styleAttr,
+                       "transform: rotate(45deg); width: 200px");
+  target->SetInnerHTMLFromString(
+      "<div id=child style='width: 50px; height: 50px; background: "
+      "red'></div>");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  Element* child = GetDocument().getElementById("child");
+
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  child->setAttribute(HTMLNames::styleAttr,
+                      "width: 100px; height: 50px; background: red");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  const auto* raster_invalidations =
+      &GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(1u, raster_invalidations->size());
+  auto expected_rect = EnclosingIntRect(
+      TransformationMatrix().Rotate(45).MapRect(FloatRect(50, 0, 50, 50)));
+  expected_rect.Intersect(IntRect(0, 0, 800, 600));
+  EXPECT_EQ(expected_rect, (*raster_invalidations)[0].rect);
+  EXPECT_EQ(PaintInvalidationReason::kIncremental,
+            (*raster_invalidations)[0].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest, CompositedLayoutViewResize) {
+  // TODO(crbug.com/732611): Fix SPv2 for scrolling contents layer.
+  if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled())
+    return;
+
+  SetUpHTML(*this);
+  Element* target = GetDocument().getElementById("target");
+  target->setAttribute(HTMLNames::classAttr, "");
+  target->setAttribute(HTMLNames::styleAttr, "height: 2000px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+
+  // Resize the content.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr, "height: 3000px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  const auto& raster_invalidations =
+      GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(1u, raster_invalidations.size());
+  EXPECT_EQ(IntRect(0, 2000, 800, 1000), raster_invalidations[0].rect);
+  EXPECT_EQ(static_cast<const DisplayItemClient*>(
+                ViewScrollingContentsDisplayItemClient()),
+            raster_invalidations[0].client);
+  EXPECT_EQ(PaintInvalidationReason::kIncremental,
+            raster_invalidations[0].reason);
+
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+
+  // Resize the viewport. No paint invalidation.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  GetDocument().View()->Resize(800, 1000);
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  EXPECT_FALSE(GetRasterInvalidationTracking()->HasInvalidations());
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest, CompositedLayoutViewGradientResize) {
+  // TODO(crbug.com/732611): Fix SPv2 for scrolling contents layer.
+  if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled())
+    return;
+
+  SetUpHTML(*this);
+  GetDocument().body()->setAttribute(HTMLNames::classAttr, "gradient");
+  Element* target = GetDocument().getElementById("target");
+  target->setAttribute(HTMLNames::classAttr, "");
+  target->setAttribute(HTMLNames::styleAttr, "height: 2000px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+
+  // Resize the content.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr, "height: 3000px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+
+  const auto& raster_invalidations =
+      GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(1u, raster_invalidations.size());
+  EXPECT_EQ(IntRect(0, 0, 800, 3000), raster_invalidations[0].rect);
+  EXPECT_EQ(static_cast<const DisplayItemClient*>(
+                ViewScrollingContentsDisplayItemClient()),
+            raster_invalidations[0].client);
+  EXPECT_EQ(PaintInvalidationReason::kBackgroundOnScrollingContentsLayer,
+            raster_invalidations[0].reason);
+
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+
+  // Resize the viewport. No paint invalidation.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  GetDocument().View()->Resize(800, 1000);
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  EXPECT_FALSE(GetRasterInvalidationTracking()->HasInvalidations());
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest, NonCompositedLayoutViewResize) {
+  SetBodyInnerHTML(R"HTML(
+    <style>
+      body { margin: 0 }
+      iframe { display: block; width: 100px; height: 100px; border: none; }
+    </style>
+    <iframe id='iframe'></iframe>
+  )HTML");
+  SetChildFrameHTML(R"HTML(
+    <style>
+      ::-webkit-scrollbar { display: none }
+      body { margin: 0; background: green; height: 0 }
+    </style>
+    <div id='content' style='width: 200px; height: 200px'></div>
+  )HTML");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  Element* iframe = GetDocument().getElementById("iframe");
+  Element* content = ChildDocument().getElementById("content");
+  EXPECT_EQ(GetLayoutView(),
+            content->GetLayoutObject()->ContainerForPaintInvalidation());
+
+  // Resize the content.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  content->setAttribute(HTMLNames::styleAttr, "height: 500px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  // No invalidation because the changed part of layout overflow is clipped.
+  EXPECT_FALSE(GetRasterInvalidationTracking()->HasInvalidations());
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+
+  // Resize the iframe.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  iframe->setAttribute(HTMLNames::styleAttr, "height: 200px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  // The iframe doesn't have anything visible by itself, so we only issue raster
+  // invalidation for the frame contents.
+  const auto& raster_invalidations =
+      GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(1u, raster_invalidations.size());
+  EXPECT_EQ(
+      static_cast<const DisplayItemClient*>(content->GetLayoutObject()->View()),
+      raster_invalidations[0].client);
+  EXPECT_EQ(IntRect(0, 100, 100, 100), raster_invalidations[0].rect);
+  EXPECT_EQ(PaintInvalidationReason::kIncremental,
+            raster_invalidations[0].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest, NonCompositedLayoutViewGradientResize) {
+  SetBodyInnerHTML(R"HTML(
+    <style>
+      body { margin: 0 }
+      iframe { display: block; width: 100px; height: 100px; border: none; }
+    </style>
+    <iframe id='iframe'></iframe>
+  )HTML");
+  SetChildFrameHTML(R"HTML(
+    <style>
+      ::-webkit-scrollbar { display: none }
+      body {
+        margin: 0;
+        height: 0;
+        background-image: linear-gradient(blue, yellow);
+      }
+    </style>
+    <div id='content' style='width: 200px; height: 200px'></div>
+  )HTML");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  Element* iframe = GetDocument().getElementById("iframe");
+  Element* content = ChildDocument().getElementById("content");
+  LayoutView* frame_layout_view = content->GetLayoutObject()->View();
+  EXPECT_EQ(GetLayoutView(),
+            content->GetLayoutObject()->ContainerForPaintInvalidation());
+
+  // Resize the content.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  content->setAttribute(HTMLNames::styleAttr, "height: 500px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  const auto* raster_invalidations =
+      &GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(1u, raster_invalidations->size());
+  EXPECT_EQ(IntRect(0, 0, 100, 100), (*raster_invalidations)[0].rect);
+  EXPECT_EQ(static_cast<const DisplayItemClient*>(frame_layout_view),
+            (*raster_invalidations)[0].client);
+  EXPECT_EQ(PaintInvalidationReason::kBackground,
+            (*raster_invalidations)[0].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+
+  // Resize the iframe.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  iframe->setAttribute(HTMLNames::styleAttr, "height: 200px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  raster_invalidations = &GetRasterInvalidationTracking()->Invalidations();
+  // The iframe doesn't have anything visible by itself, so we only issue raster
+  // invalidation for the frame contents.
+  ASSERT_EQ(1u, raster_invalidations->size());
+  EXPECT_EQ(static_cast<const DisplayItemClient*>(frame_layout_view),
+            (*raster_invalidations)[0].client);
+  EXPECT_EQ(IntRect(0, 0, 100, 200), (*raster_invalidations)[0].rect);
+  EXPECT_EQ(PaintInvalidationReason::kGeometry,
+            (*raster_invalidations)[0].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest,
+       CompositedBackgroundAttachmentLocalResize) {
+  // TODO(crbug.com/732611): Fix SPv2 for scrolling contents layer.
+  if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled())
+    return;
+
+  SetUpHTML(*this);
+  Element* target = GetDocument().getElementById("target");
+  target->setAttribute(HTMLNames::classAttr, "background local-background");
+  target->setAttribute(HTMLNames::styleAttr, "will-change: transform");
+  target->SetInnerHTMLFromString(
+      "<div id=child style='width: 500px; height: 500px'></div>",
+      ASSERT_NO_EXCEPTION);
+  Element* child = GetDocument().getElementById("child");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+
+  auto* target_obj = ToLayoutBoxModelObject(target->GetLayoutObject());
+  auto container_raster_invalidation_tracking =
+      [&]() -> const RasterInvalidationTracking* {
+    if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled())
+      return GetRasterInvalidationTracking(1);
+    return target_obj->Layer()
+        ->GraphicsLayerBacking(target_obj)
+        ->GetRasterInvalidationTracking();
+  };
+  auto contents_raster_invalidation_tracking =
+      [&]() -> const RasterInvalidationTracking* {
+    if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled())
+      return GetRasterInvalidationTracking(2);
+    return target_obj->Layer()
+        ->GraphicsLayerBacking()
+        ->GetRasterInvalidationTracking();
+  };
+
+  // Resize the content.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  child->setAttribute(HTMLNames::styleAttr, "width: 500px; height: 1000px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  // No invalidation on the container layer.
+  EXPECT_FALSE(container_raster_invalidation_tracking()->HasInvalidations());
+  // Incremental invalidation of background on contents layer.
+  const auto& contents_raster_invalidations =
+      contents_raster_invalidation_tracking()->Invalidations();
+  ASSERT_EQ(1u, contents_raster_invalidations.size());
+  EXPECT_EQ(IntRect(0, 500, 500, 500), contents_raster_invalidations[0].rect);
+  EXPECT_EQ(static_cast<const DisplayItemClient*>(
+                target_obj->Layer()->GraphicsLayerBacking()),
+            contents_raster_invalidations[0].client);
+  EXPECT_EQ(PaintInvalidationReason::kIncremental,
+            contents_raster_invalidations[0].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+
+  // Resize the container.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr,
+                       "will-change: transform; height: 200px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  // No invalidation for composited layer resize.
+  EXPECT_FALSE(container_raster_invalidation_tracking()->HasInvalidations());
+  EXPECT_FALSE(contents_raster_invalidation_tracking()->HasInvalidations());
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest,
+       CompositedBackgroundAttachmentLocalGradientResize) {
+  // TODO(crbug.com/732611): Fix SPv2 for scrolling contents layer.
+  if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled())
+    return;
+
+  SetUpHTML(*this);
+  Element* target = GetDocument().getElementById("target");
+  target->setAttribute(HTMLNames::classAttr, "local-background gradient");
+  target->setAttribute(HTMLNames::styleAttr, "will-change: transform");
+  target->SetInnerHTMLFromString(
+      "<div id='child' style='width: 500px; height: 500px'></div>",
+      ASSERT_NO_EXCEPTION);
+  Element* child = GetDocument().getElementById("child");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+
+  // Resize the content.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  child->setAttribute(HTMLNames::styleAttr, "width: 500px; height: 1000px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  LayoutBoxModelObject* target_obj =
+      ToLayoutBoxModelObject(target->GetLayoutObject());
+  GraphicsLayer* container_layer =
+      target_obj->Layer()->GraphicsLayerBacking(target_obj);
+  GraphicsLayer* contents_layer = target_obj->Layer()->GraphicsLayerBacking();
+  // No invalidation on the container layer.
+  EXPECT_FALSE(
+      container_layer->GetRasterInvalidationTracking()->HasInvalidations());
+  // Full invalidation of background on contents layer because the gradient
+  // background is resized.
+  const auto& contents_raster_invalidations =
+      contents_layer->GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(1u, contents_raster_invalidations.size());
+  EXPECT_EQ(IntRect(0, 0, 500, 1000), contents_raster_invalidations[0].rect);
+  EXPECT_EQ(static_cast<const DisplayItemClient*>(contents_layer),
+            contents_raster_invalidations[0].client);
+  EXPECT_EQ(PaintInvalidationReason::kBackgroundOnScrollingContentsLayer,
+            contents_raster_invalidations[0].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+
+  // Resize the container.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr,
+                       "will-change: transform; height: 200px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  // No explicit raster invalidation for composited layer resize.
+  EXPECT_FALSE(
+      container_layer->GetRasterInvalidationTracking()->HasInvalidations());
+  EXPECT_FALSE(
+      contents_layer->GetRasterInvalidationTracking()->HasInvalidations());
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest,
+       NonCompositedBackgroundAttachmentLocalResize) {
+  SetUpHTML(*this);
+  Element* target = GetDocument().getElementById("target");
+  target->setAttribute(HTMLNames::classAttr, "background local-background");
+  target->SetInnerHTMLFromString(
+      "<div id=child style='width: 500px; height: 500px'></div>",
+      ASSERT_NO_EXCEPTION);
+  Element* child = GetDocument().getElementById("child");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  EXPECT_EQ(&GetLayoutView(),
+            &target->GetLayoutObject()->ContainerForPaintInvalidation());
+
+  // Resize the content.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  child->setAttribute(HTMLNames::styleAttr, "width: 500px; height: 1000px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  // No invalidation because the changed part is invisible.
+  EXPECT_FALSE(GetRasterInvalidationTracking()->HasInvalidations());
+
+  // Resize the container.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr, "height: 200px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  const auto& raster_invalidations =
+      GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(1u, raster_invalidations.size());
+  EXPECT_EQ(IntRect(0, 100, 50, 100), raster_invalidations[0].rect);
+  EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()),
+            raster_invalidations[0].client);
+  EXPECT_EQ(PaintInvalidationReason::kIncremental,
+            raster_invalidations[0].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest, CompositedSolidBackgroundResize) {
+  // TODO(crbug.com/732611): Fix SPv2 for scrolling contents layer.
+  if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled())
+    return;
+
+  SetUpHTML(*this);
+  Element* target = GetDocument().getElementById("target");
+  target->setAttribute(HTMLNames::classAttr, "solid-composited-scroller");
+  target->SetInnerHTMLFromString("<div style='height: 500px'></div>",
+                                 ASSERT_NO_EXCEPTION);
+  GetDocument().View()->UpdateAllLifecyclePhases();
+
+  // Resize the scroller.
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  target->setAttribute(HTMLNames::styleAttr, "width: 100px");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+
+  LayoutBoxModelObject* target_object =
+      ToLayoutBoxModelObject(target->GetLayoutObject());
+  GraphicsLayer* scrolling_contents_layer =
+      target_object->Layer()->GraphicsLayerBacking();
+  const auto& invalidations =
+      scrolling_contents_layer->GetRasterInvalidationTracking()
+          ->Invalidations();
+
+  ASSERT_EQ(1u, invalidations.size());
+  EXPECT_EQ(IntRect(50, 0, 50, 500), invalidations[0].rect);
+  EXPECT_EQ(static_cast<const DisplayItemClient*>(scrolling_contents_layer),
+            invalidations[0].client);
+  EXPECT_EQ(PaintInvalidationReason::kIncremental, invalidations[0].reason);
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+// Changing style in a way that changes overflow without layout should cause
+// the layout view to possibly need a paint invalidation since we may have
+// revealed additional background that can be scrolled into view.
+TEST_P(PaintAndRasterInvalidationTest, RecalcOverflowInvalidatesBackground) {
+  GetDocument().GetPage()->GetSettings().SetViewportEnabled(true);
+  SetBodyInnerHTML(R"HTML(
+    <!DOCTYPE html>
+    <style type='text/css'>
+      body, html {
+        width: 100%;
+        height: 100%;
+        margin: 0px;
+      }
+      #container {
+        will-change: transform;
+        width: 100%;
+        height: 100%;
+      }
+    </style>
+    <div id='container'></div>
+  )HTML");
+
+  GetDocument().View()->UpdateAllLifecyclePhases();
+
+  ScrollableArea* scrollable_area =
+      GetDocument().View()->LayoutViewportScrollableArea();
+  ASSERT_EQ(scrollable_area->MaximumScrollOffset().Height(), 0);
+  EXPECT_FALSE(GetDocument().GetLayoutView()->MayNeedPaintInvalidation());
+
+  Element* container = GetDocument().getElementById("container");
+  container->setAttribute(HTMLNames::styleAttr,
+                          "transform: translateY(1000px);");
+  GetDocument().UpdateStyleAndLayoutTree();
+
+  EXPECT_EQ(scrollable_area->MaximumScrollOffset().Height(), 1000);
+  EXPECT_TRUE(GetDocument().GetLayoutView()->MayNeedPaintInvalidation());
+}
+
+TEST_P(PaintAndRasterInvalidationTest,
+       UpdateVisualRectOnFrameBorderWidthChange) {
+  SetBodyInnerHTML(R"HTML(
+    <style>
+      body { margin: 10px }
+      iframe { width: 100px; height: 100px; border: none; }
+    </style>
+    <iframe id='iframe'></iframe>
+  )HTML");
+
+  Element* iframe = GetDocument().getElementById("iframe");
+  LayoutView* child_layout_view = ChildDocument().GetLayoutView();
+  EXPECT_EQ(GetDocument().GetLayoutView(),
+            &child_layout_view->ContainerForPaintInvalidation());
+  EXPECT_EQ(LayoutRect(0, 0, 100, 100),
+            child_layout_view->FirstFragment().VisualRect());
+
+  iframe->setAttribute(HTMLNames::styleAttr, "border: 20px solid blue");
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  EXPECT_EQ(GetDocument().GetLayoutView(),
+            &child_layout_view->ContainerForPaintInvalidation());
+  EXPECT_EQ(LayoutRect(0, 0, 100, 100),
+            child_layout_view->FirstFragment().VisualRect());
+};
+
+TEST_P(PaintAndRasterInvalidationTest, DelayedFullPaintInvalidation) {
+  // TODO(crbug.com/732611): Fix SPv2 for scrolling contents layer.
+  if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled())
+    return;
+
+  EnableCompositing();
+  SetBodyInnerHTML(R"HTML(
+    <style>body { margin: 0 }</style>
+    <div style='height: 4000px'></div>
+    <div id='target' style='width: 100px; height: 100px; background: blue'>
+    </div>
+  )HTML");
+
+  auto* target = GetLayoutObjectByElementId("target");
+  target->SetShouldDoFullPaintInvalidationWithoutGeometryChange(
+      PaintInvalidationReason::kDelayedFull);
+  EXPECT_EQ(PaintInvalidationReason::kDelayedFull,
+            target->FullPaintInvalidationReason());
+  EXPECT_FALSE(target->NeedsPaintOffsetAndVisualRectUpdate());
+
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  EXPECT_FALSE(GetRasterInvalidationTracking()->HasInvalidations());
+  EXPECT_EQ(PaintInvalidationReason::kDelayedFull,
+            target->FullPaintInvalidationReason());
+  EXPECT_FALSE(target->NeedsPaintOffsetAndVisualRectUpdate());
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  // Scroll target into view.
+  GetDocument().domWindow()->scrollTo(0, 4000);
+  GetDocument().View()->UpdateAllLifecyclePhases();
+  const auto& raster_invalidations =
+      GetRasterInvalidationTracking()->Invalidations();
+  ASSERT_EQ(1u, raster_invalidations.size());
+  EXPECT_EQ(PaintInvalidationReason::kNone,
+            target->FullPaintInvalidationReason());
+  EXPECT_EQ(IntRect(0, 4000, 100, 100), raster_invalidations[0].rect);
+  EXPECT_EQ(PaintInvalidationReason::kFull, raster_invalidations[0].reason);
+  EXPECT_FALSE(target->NeedsPaintOffsetAndVisualRectUpdate());
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+};
+
+TEST_P(PaintAndRasterInvalidationTest, SVGHiddenContainer) {
+  EnableCompositing();
+  SetBodyInnerHTML(R"HTML(
+    <svg style='position: absolute; top: 100px; left: 100px'>
+      <mask id='mask'>
+        <g transform='scale(2)'>
+          <rect id='mask-rect' x='11' y='22' width='33' height='44'/>
+        </g>
+      </mask>
+      <rect id='real-rect' x='55' y='66' width='7' height='8'
+          mask='url(#mask)'/>
+    </svg>
+  )HTML");
+
+  // mask_rect's visual rect is in coordinates of the mask.
+  auto* mask_rect = GetLayoutObjectByElementId("mask-rect");
+  EXPECT_EQ(LayoutRect(), mask_rect->FirstFragment().VisualRect());
+
+  // real_rect's visual rect is in coordinates of its paint invalidation
+  // container (the view).
+  auto* real_rect = GetLayoutObjectByElementId("real-rect");
+  EXPECT_EQ(LayoutRect(55, 66, 7, 8), real_rect->FirstFragment().VisualRect());
+
+  GetDocument().View()->SetTracksPaintInvalidations(true);
+  ToElement(mask_rect->GetNode())->setAttribute("x", "20");
+  GetDocument().View()->UpdateAllLifecyclePhasesExceptPaint();
+
+  EXPECT_EQ(PaintInvalidationReason::kFull,
+            real_rect->GetPaintInvalidationReason());
+  // mask_rect has PaintInvalidationReason::kFull because it is not cached by
+  // any PaintController.
+  EXPECT_EQ(PaintInvalidationReason::kFull,
+            mask_rect->GetPaintInvalidationReason());
+
+  GetDocument().View()->UpdateAllLifecyclePhases();
+
+  EXPECT_EQ(LayoutRect(), mask_rect->FirstFragment().VisualRect());
+  EXPECT_EQ(LayoutRect(55, 66, 7, 8), real_rect->FirstFragment().VisualRect());
+
+  // Should invalidate raster for real_rect only.
+  if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
+    // SPv2 creates composited layers for the rect and its mask.
+    const auto& rect_raster_invalidations =
+        GetRasterInvalidationTracking(1)->Invalidations();
+    ASSERT_EQ(1u, rect_raster_invalidations.size());
+    EXPECT_EQ(IntRect(0, 0, 7, 8), rect_raster_invalidations[0].rect);
+    EXPECT_EQ(PaintInvalidationReason::kFull,
+              rect_raster_invalidations[0].reason);
+    const auto& mask_raster_invalidations =
+        GetRasterInvalidationTracking(2)->Invalidations();
+    ASSERT_EQ(1u, mask_raster_invalidations.size());
+    EXPECT_EQ(IntRect(0, 0, 7, 8), mask_raster_invalidations[0].rect);
+    EXPECT_EQ(PaintInvalidationReason::kFull,
+              mask_raster_invalidations[0].reason);
+  } else {
+    const auto& raster_invalidations =
+        GetRasterInvalidationTracking()->Invalidations();
+    // The first is for the rect itself, the second is for its mask.
+    ASSERT_EQ(2u, raster_invalidations.size());
+    EXPECT_EQ(IntRect(155, 166, 7, 8), raster_invalidations[0].rect);
+    EXPECT_EQ(PaintInvalidationReason::kFull, raster_invalidations[0].reason);
+    EXPECT_EQ(IntRect(155, 166, 7, 8), raster_invalidations[1].rect);
+    EXPECT_EQ(PaintInvalidationReason::kFull, raster_invalidations[1].reason);
+  }
+
+  GetDocument().View()->SetTracksPaintInvalidations(false);
+}
+
+TEST_P(PaintAndRasterInvalidationTest, UpdateVisualRectWhenPrinting) {
+  SetBodyInnerHTML(R"HTML(
+    <style>
+      * { margin: 0;}
+      span {
+        display: inline-block;
+        width: 150px;
+        height: 20px;
+        background: rebeccapurple;
+      }
+    </style>
+    <div><span id="a"></span><span id="b"></span><span id="c"></div>
+  )HTML");
+
+  auto* a = GetDocument().getElementById("a")->GetLayoutObject();
+  EXPECT_EQ(LayoutRect(0, 0, 150, 20), a->FirstFragment().VisualRect());
+  auto* b = GetDocument().getElementById("b")->GetLayoutObject();
+  EXPECT_EQ(LayoutRect(150, 0, 150, 20), b->FirstFragment().VisualRect());
+  auto* c = GetDocument().getElementById("c")->GetLayoutObject();
+  EXPECT_EQ(LayoutRect(300, 0, 150, 20), c->FirstFragment().VisualRect());
+
+  // Print the page with a width of 400px which will require wrapping 'c'.
+  FloatSize page_size(400, 200);
+  GetFrame().StartPrinting(page_size, page_size, 1);
+  GetDocument().View()->UpdateLifecyclePhasesForPrinting();
+
+  EXPECT_EQ(LayoutRect(0, 0, 150, 20), a->FirstFragment().VisualRect());
+  EXPECT_EQ(LayoutRect(150, 0, 150, 20), b->FirstFragment().VisualRect());
+  // 'c' should be on the next line.
+  EXPECT_EQ(LayoutRect(0, 20, 150, 20), c->FirstFragment().VisualRect());
+
+  GetFrame().EndPrinting();
+  GetDocument().View()->UpdateLifecyclePhasesForPrinting();
+
+  EXPECT_EQ(LayoutRect(0, 0, 150, 20), a->FirstFragment().VisualRect());
+  EXPECT_EQ(LayoutRect(150, 0, 150, 20), b->FirstFragment().VisualRect());
+  EXPECT_EQ(LayoutRect(300, 0, 150, 20), c->FirstFragment().VisualRect());
+};
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.h b/third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.h
new file mode 100644
index 0000000..e577adf
--- /dev/null
+++ b/third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.h
@@ -0,0 +1,72 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_PAINT_AND_RASTER_INVALIDATION_TEST_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_PAINT_AND_RASTER_INVALIDATION_TEST_H_
+
+#include "cc/layers/picture_layer.h"
+#include "third_party/blink/renderer/core/paint/paint_controller_paint_test.h"
+#include "third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.h"
+#include "third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h"
+#include "third_party/blink/renderer/platform/testing/web_layer_tree_view_impl_for_testing.h"
+
+namespace blink {
+
+class PaintAndRasterInvalidationTest : public PaintControllerPaintTest {
+ public:
+  PaintAndRasterInvalidationTest()
+      : PaintControllerPaintTest(SingleChildLocalFrameClient::Create()) {}
+
+ protected:
+  cc::Layer* GetCcLayer(size_t index = 0) const {
+    if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
+      return GetDocument()
+          .View()
+          ->GetPaintArtifactCompositorForTesting()
+          ->RootLayer()
+          ->child_at(index);
+    }
+    return GetLayoutView().Layer()->GraphicsLayerBacking()->ContentLayer();
+  }
+
+  cc::LayerClient* GetCcLayerClient(size_t index = 0) const {
+    return GetCcLayer(index)->GetLayerClientForTesting();
+  }
+
+  const RasterInvalidationTracking* GetRasterInvalidationTracking(
+      size_t index = 0) const {
+    if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
+      return static_cast<ContentLayerClientImpl*>(GetCcLayerClient(index))
+          ->GetRasterInvalidationTrackingForTesting();
+    }
+    return GetLayoutView()
+        .Layer()
+        ->GraphicsLayerBacking()
+        ->GetRasterInvalidationTracking();
+  }
+
+  void SetUp() override {
+    PaintControllerPaintTest::SetUp();
+
+    if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
+      web_layer_tree_view_ = std::make_unique<WebLayerTreeViewImplForTesting>();
+      web_layer_tree_view_->SetRootLayer(
+          GetDocument()
+              .View()
+              ->GetPaintArtifactCompositorForTesting()
+              ->RootLayer());
+    }
+  }
+
+  const DisplayItemClient* ViewScrollingContentsDisplayItemClient() const {
+    return GetLayoutView().Layer()->GraphicsLayerBacking();
+  }
+
+ private:
+  std::unique_ptr<WebLayerTreeViewImplForTesting> web_layer_tree_view_;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_PAINT_AND_RASTER_INVALIDATION_TEST_H_
diff --git a/third_party/blink/renderer/core/paint/paint_invalidation_capable_scrollable_area.cc b/third_party/blink/renderer/core/paint/paint_invalidation_capable_scrollable_area.cc
index bb693b4..ce38b66 100644
--- a/third_party/blink/renderer/core/paint/paint_invalidation_capable_scrollable_area.cc
+++ b/third_party/blink/renderer/core/paint/paint_invalidation_capable_scrollable_area.cc
@@ -138,7 +138,12 @@
   LayoutSize previous_scrollbar_used_space_in_box;
   if (!previously_was_overlay)
     previous_scrollbar_used_space_in_box = previous_visual_rect.Size();
-  if (new_scrollbar_used_space_in_box != previous_scrollbar_used_space_in_box) {
+
+  // The IsEmpty() check avoids invalidaiton in cases when the visual rect
+  // changes from (0,0 0x0) to (0,0 0x100).
+  if (!(new_scrollbar_used_space_in_box.IsEmpty() &&
+        previous_scrollbar_used_space_in_box.IsEmpty()) &&
+      new_scrollbar_used_space_in_box != previous_scrollbar_used_space_in_box) {
     context.painting_layer->SetNeedsRepaint();
     ObjectPaintInvalidator(box).InvalidateDisplayItemClient(
         box, PaintInvalidationReason::kGeometry);
diff --git a/third_party/blink/renderer/core/paint/paint_invalidation_test.cc b/third_party/blink/renderer/core/paint/paint_invalidation_test.cc
deleted file mode 100644
index 2412648c..0000000
--- a/third_party/blink/renderer/core/paint/paint_invalidation_test.cc
+++ /dev/null
@@ -1,345 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/blink/renderer/core/frame/local_frame_view.h"
-#include "third_party/blink/renderer/core/layout/layout_view.h"
-#include "third_party/blink/renderer/core/paint/paint_layer.h"
-#include "third_party/blink/renderer/core/testing/core_unit_test_helper.h"
-#include "third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h"
-#include "third_party/blink/renderer/platform/graphics/graphics_layer.h"
-#include "third_party/blink/renderer/platform/graphics/paint/raster_invalidation_tracking.h"
-#include "third_party/blink/renderer/platform/testing/paint_test_configurations.h"
-
-namespace blink {
-
-namespace {
-
-class PaintInvalidationTest : public PaintTestConfigurations,
-                              public RenderingTest {
- public:
-  PaintInvalidationTest()
-      : RenderingTest(SingleChildLocalFrameClient::Create()) {}
-
- protected:
-  const RasterInvalidationTracking* GetRasterInvalidationTracking() const {
-    // TODO(wangxianzhu): Test raster invalidation for SPv2 (in this test suite
-    // or elsewhere for the applicable cases in this test suite).
-    DCHECK(!RuntimeEnabledFeatures::SlimmingPaintV2Enabled());
-    return GetLayoutView()
-        .Layer()
-        ->GraphicsLayerBacking()
-        ->GetRasterInvalidationTracking();
-  }
-};
-
-INSTANTIATE_PAINT_TEST_CASE_P(PaintInvalidationTest);
-
-// Changing style in a way that changes overflow without layout should cause
-// the layout view to possibly need a paint invalidation since we may have
-// revealed additional background that can be scrolled into view.
-TEST_P(PaintInvalidationTest, RecalcOverflowInvalidatesBackground) {
-  GetDocument().GetPage()->GetSettings().SetViewportEnabled(true);
-  SetBodyInnerHTML(R"HTML(
-    <!DOCTYPE html>
-    <style type='text/css'>
-      body, html {
-        width: 100%;
-        height: 100%;
-        margin: 0px;
-      }
-      #container {
-        will-change: transform;
-        width: 100%;
-        height: 100%;
-      }
-    </style>
-    <div id='container'></div>
-  )HTML");
-
-  GetDocument().View()->UpdateAllLifecyclePhases();
-
-  ScrollableArea* scrollable_area =
-      GetDocument().View()->LayoutViewportScrollableArea();
-  ASSERT_EQ(scrollable_area->MaximumScrollOffset().Height(), 0);
-  EXPECT_FALSE(GetDocument().GetLayoutView()->MayNeedPaintInvalidation());
-
-  Element* container = GetDocument().getElementById("container");
-  container->setAttribute(HTMLNames::styleAttr,
-                          "transform: translateY(1000px);");
-  GetDocument().UpdateStyleAndLayoutTree();
-
-  EXPECT_EQ(scrollable_area->MaximumScrollOffset().Height(), 1000);
-  EXPECT_TRUE(GetDocument().GetLayoutView()->MayNeedPaintInvalidation());
-}
-
-TEST_P(PaintInvalidationTest, UpdateVisualRectOnFrameBorderWidthChange) {
-  // TODO(wangxianzhu): enable for SPv2.
-  if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled())
-    return;
-
-  SetBodyInnerHTML(R"HTML(
-    <style>
-      body { margin: 10px }
-      iframe { width: 100px; height: 100px; border: none; }
-    </style>
-    <iframe id='iframe'></iframe>
-  )HTML");
-
-  Element* iframe = GetDocument().getElementById("iframe");
-  LayoutView* child_layout_view = ChildDocument().GetLayoutView();
-  EXPECT_EQ(GetDocument().GetLayoutView(),
-            &child_layout_view->ContainerForPaintInvalidation());
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) {
-    EXPECT_EQ(LayoutRect(0, 0, 100, 100),
-              child_layout_view->FirstFragment().VisualRect());
-  } else {
-    EXPECT_EQ(LayoutRect(10, 10, 100, 100),
-              child_layout_view->FirstFragment().VisualRect());
-  }
-
-  iframe->setAttribute(HTMLNames::styleAttr, "border: 20px solid blue");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  EXPECT_EQ(GetDocument().GetLayoutView(),
-            &child_layout_view->ContainerForPaintInvalidation());
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) {
-    EXPECT_EQ(LayoutRect(0, 0, 100, 100),
-              child_layout_view->FirstFragment().VisualRect());
-  } else {
-    EXPECT_EQ(LayoutRect(30, 30, 100, 100),
-              child_layout_view->FirstFragment().VisualRect());
-  }
-};
-
-// This is a simplified test case for crbug.com/704182. It ensures no repaint
-// on transform change causing no visual change.
-TEST_P(PaintInvalidationTest, InvisibleTransformUnderFixedOnScroll) {
-  if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled())
-    return;
-
-  EnableCompositing();
-  SetBodyInnerHTML(R"HTML(
-    <style>
-      #fixed {
-        position: fixed;
-        top: 0;
-        left: 0;
-        width: 100px;
-        height: 100px;
-        background-color: blue;
-      }
-      #transform {
-        width: 100px;
-        height: 100px;
-        background-color: yellow;
-        will-change: transform;
-        transform: translate(10px, 20px);
-      }
-    </style>
-    <div style='height: 2000px'></div>
-    <div id='fixed' style='visibility: hidden'>
-      <div id='transform'></div>
-    </div>
-  )HTML");
-
-  auto& fixed = *GetDocument().getElementById("fixed");
-  const auto& fixed_object = ToLayoutBox(*fixed.GetLayoutObject());
-  const auto& fixed_layer = *fixed_object.Layer();
-  auto& transform = *GetDocument().getElementById("transform");
-  EXPECT_TRUE(fixed_layer.SubtreeIsInvisible());
-  EXPECT_EQ(LayoutRect(0, 0, 110, 120), fixed_object.LayoutOverflowRect());
-
-  GetDocument().domWindow()->scrollTo(0, 100);
-  transform.setAttribute(HTMLNames::styleAttr,
-                         "transform: translate(20px, 30px)");
-  GetDocument().View()->UpdateLifecycleToCompositingCleanPlusScrolling();
-
-  EXPECT_TRUE(fixed_layer.SubtreeIsInvisible());
-  // We skip invisible layers when setting non-composited fixed-position
-  // needing paint invalidation when the frame is scrolled.
-  EXPECT_FALSE(fixed_object.ShouldDoFullPaintInvalidation());
-  // This was set when fixedObject is marked needsOverflowRecaldAfterStyleChange
-  // when child changed transform.
-  EXPECT_TRUE(fixed_object.MayNeedPaintInvalidation());
-  EXPECT_EQ(LayoutRect(0, 0, 120, 130), fixed_object.LayoutOverflowRect());
-
-  GetDocument().View()->UpdateAllLifecyclePhasesExceptPaint();
-  // Invalidation is still needed for invisible transformed content, because it
-  // may end up composited (in SPv2 mode) and move on screen.
-  EXPECT_TRUE(fixed_layer.NeedsRepaint());
-  GetDocument().View()->UpdateAllLifecyclePhases();
-
-  // The following ensures normal paint invalidation still works.
-  transform.setAttribute(
-      HTMLNames::styleAttr,
-      "visibility: visible; transform: translate(20px, 30px)");
-  GetDocument().View()->UpdateLifecycleToCompositingCleanPlusScrolling();
-  EXPECT_FALSE(fixed_layer.SubtreeIsInvisible());
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  fixed.setAttribute(HTMLNames::styleAttr, "top: 50px");
-  GetDocument().View()->UpdateLifecycleToCompositingCleanPlusScrolling();
-  EXPECT_TRUE(fixed_object.MayNeedPaintInvalidation());
-  EXPECT_FALSE(fixed_layer.SubtreeIsInvisible());
-  GetDocument().View()->UpdateAllLifecyclePhasesExceptPaint();
-  EXPECT_TRUE(fixed_layer.NeedsRepaint());
-  GetDocument().View()->UpdateAllLifecyclePhases();
-}
-
-TEST_P(PaintInvalidationTest, DelayedFullPaintInvalidation) {
-  EnableCompositing();
-  SetBodyInnerHTML(R"HTML(
-    <style>body { margin: 0 }</style>
-    <div style='height: 4000px'></div>
-    <div id='target' style='width: 100px; height: 100px; background: blue'>
-    </div>
-  )HTML");
-
-  auto* target = GetLayoutObjectByElementId("target");
-  target->SetShouldDoFullPaintInvalidationWithoutGeometryChange(
-      PaintInvalidationReason::kDelayedFull);
-  EXPECT_EQ(PaintInvalidationReason::kDelayedFull,
-            target->FullPaintInvalidationReason());
-  EXPECT_FALSE(target->NeedsPaintOffsetAndVisualRectUpdate());
-
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled())
-    EXPECT_FALSE(GetRasterInvalidationTracking()->HasInvalidations());
-  EXPECT_EQ(PaintInvalidationReason::kDelayedFull,
-            target->FullPaintInvalidationReason());
-  EXPECT_FALSE(target->NeedsPaintOffsetAndVisualRectUpdate());
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  // Scroll target into view.
-  GetDocument().domWindow()->scrollTo(0, 4000);
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
-    const auto& raster_invalidations =
-        GetRasterInvalidationTracking()->Invalidations();
-    ASSERT_EQ(1u, raster_invalidations.size());
-    EXPECT_EQ(PaintInvalidationReason::kNone,
-              target->FullPaintInvalidationReason());
-    EXPECT_EQ(IntRect(0, 4000, 100, 100), raster_invalidations[0].rect);
-    EXPECT_EQ(PaintInvalidationReason::kFull, raster_invalidations[0].reason);
-  }
-  EXPECT_FALSE(target->NeedsPaintOffsetAndVisualRectUpdate());
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-};
-
-TEST_P(PaintInvalidationTest, SVGHiddenContainer) {
-  EnableCompositing();
-  SetBodyInnerHTML(R"HTML(
-    <svg style='position: absolute; top: 100px; left: 100px'>
-      <mask id='mask'>
-        <g transform='scale(2)'>
-          <rect id='mask-rect' x='11' y='22' width='33' height='44'/>
-        </g>
-      </mask>
-      <rect id='real-rect' x='55' y='66' width='7' height='8'
-          mask='url(#mask)'/>
-    </svg>
-  )HTML");
-
-  // mask_rect's visual rect is in coordinates of the mask.
-  auto* mask_rect = GetLayoutObjectByElementId("mask-rect");
-  EXPECT_EQ(LayoutRect(), mask_rect->FirstFragment().VisualRect());
-
-  // real_rect's visual rect is in coordinates of its paint invalidation
-  // container (the view).
-  auto* real_rect = GetLayoutObjectByElementId("real-rect");
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) {
-    EXPECT_EQ(LayoutRect(55, 66, 7, 8),
-              real_rect->FirstFragment().VisualRect());
-  } else {
-    EXPECT_EQ(LayoutRect(155, 166, 7, 8),
-              real_rect->FirstFragment().VisualRect());
-  }
-
-  GetDocument().View()->SetTracksPaintInvalidations(true);
-  ToElement(mask_rect->GetNode())->setAttribute("x", "20");
-  GetDocument().View()->UpdateAllLifecyclePhasesExceptPaint();
-
-  EXPECT_EQ(PaintInvalidationReason::kFull,
-            real_rect->GetPaintInvalidationReason());
-  // mask_rect has PaintInvalidationReason::kFull because it is not cached by
-  // any PaintController.
-  EXPECT_EQ(PaintInvalidationReason::kFull,
-            mask_rect->GetPaintInvalidationReason());
-
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled())
-    GetDocument().View()->UpdateAllLifecyclePhases();
-
-  EXPECT_EQ(LayoutRect(), mask_rect->FirstFragment().VisualRect());
-  if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) {
-    EXPECT_EQ(LayoutRect(55, 66, 7, 8),
-              real_rect->FirstFragment().VisualRect());
-  } else {
-    EXPECT_EQ(LayoutRect(155, 166, 7, 8),
-              real_rect->FirstFragment().VisualRect());
-  }
-
-  // Should invalidate raster for real_rect only.
-  if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
-    const auto& raster_invalidations =
-        GetRasterInvalidationTracking()->Invalidations();
-    if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) {
-      // The first is for the rect itself, the second is for its mask.
-      ASSERT_EQ(2u, raster_invalidations.size());
-      EXPECT_EQ(IntRect(155, 166, 7, 8), raster_invalidations[0].rect);
-      EXPECT_EQ(PaintInvalidationReason::kFull, raster_invalidations[0].reason);
-      EXPECT_EQ(IntRect(155, 166, 7, 8), raster_invalidations[1].rect);
-      EXPECT_EQ(PaintInvalidationReason::kFull, raster_invalidations[1].reason);
-    } else {
-      ASSERT_EQ(1u, raster_invalidations.size());
-      EXPECT_EQ(IntRect(155, 166, 7, 8), raster_invalidations[0].rect);
-      EXPECT_EQ(PaintInvalidationReason::kFull, raster_invalidations[0].reason);
-    }
-  }
-
-  GetDocument().View()->SetTracksPaintInvalidations(false);
-}
-
-TEST_P(PaintInvalidationTest, UpdateVisualRectWhenPrinting) {
-  SetBodyInnerHTML(R"HTML(
-    <style>
-      * { margin: 0;}
-      span {
-        display: inline-block;
-        width: 150px;
-        height: 20px;
-        background: rebeccapurple;
-      }
-    </style>
-    <div><span id="a"></span><span id="b"></span><span id="c"></div>
-  )HTML");
-
-  auto* a = GetDocument().getElementById("a")->GetLayoutObject();
-  EXPECT_EQ(LayoutRect(0, 0, 150, 20), a->FirstFragment().VisualRect());
-  auto* b = GetDocument().getElementById("b")->GetLayoutObject();
-  EXPECT_EQ(LayoutRect(150, 0, 150, 20), b->FirstFragment().VisualRect());
-  auto* c = GetDocument().getElementById("c")->GetLayoutObject();
-  EXPECT_EQ(LayoutRect(300, 0, 150, 20), c->FirstFragment().VisualRect());
-
-  // Print the page with a width of 400px which will require wrapping 'c'.
-  FloatSize page_size(400, 200);
-  GetFrame().StartPrinting(page_size, page_size, 1);
-  GetDocument().View()->UpdateLifecyclePhasesForPrinting();
-
-  EXPECT_EQ(LayoutRect(0, 0, 150, 20), a->FirstFragment().VisualRect());
-  EXPECT_EQ(LayoutRect(150, 0, 150, 20), b->FirstFragment().VisualRect());
-  // 'c' should be on the next line.
-  EXPECT_EQ(LayoutRect(0, 20, 150, 20), c->FirstFragment().VisualRect());
-
-  GetFrame().EndPrinting();
-  GetDocument().View()->UpdateLifecyclePhasesForPrinting();
-
-  EXPECT_EQ(LayoutRect(0, 0, 150, 20), a->FirstFragment().VisualRect());
-  EXPECT_EQ(LayoutRect(150, 0, 150, 20), b->FirstFragment().VisualRect());
-  EXPECT_EQ(LayoutRect(300, 0, 150, 20), c->FirstFragment().VisualRect());
-};
-
-}  // namespace
-
-}  // namespace blink
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
index ec6d6ca..a70393d 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
@@ -1039,6 +1039,9 @@
 }
 
 void PaintLayerScrollableArea::ClampScrollOffsetAfterOverflowChange() {
+  if (HasBeenDisposed())
+    return;
+
   // If a vertical scrollbar was removed, the min/max scroll offsets may have
   // changed, so the scroll offsets needs to be clamped.  If the scroll offset
   // did not change, but the scroll origin *did* change, we still need to notify
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h
index 5486d22..b7315b2 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h
+++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h
@@ -201,7 +201,7 @@
   // last DelayScrollOffsetClampScope object is destructed, all
   // PaintLayerScrollableArea's that delayed clamping their offsets will
   // immediately clamp them.
-  class DelayScrollOffsetClampScope {
+  class CORE_EXPORT DelayScrollOffsetClampScope {
     STACK_ALLOCATED();
 
    public:
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area_test.cc b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area_test.cc
index f4ea4c3fb..f0d3f18 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area_test.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area_test.cc
@@ -931,4 +931,21 @@
                                   .To2DTranslation());
 }
 
+// Delayed scroll offset clamping should not crash. https://crbug.com/842495
+TEST_F(PaintLayerScrollableAreaTest, IgnoreDelayedScrollOnDestroyedLayer) {
+  SetBodyInnerHTML(R"HTML(
+    <div id=scroller style="overflow: scroll; width: 200px; height: 200px;">
+      <div style="height: 1000px;"></div>
+    </div>
+  )HTML");
+  Element* scroller = GetDocument().getElementById("scroller");
+  {
+    PaintLayerScrollableArea::DelayScrollOffsetClampScope scope;
+    PaintLayerScrollableArea::DelayScrollOffsetClampScope::SetNeedsClamp(
+        scroller->GetLayoutBox()->GetScrollableArea());
+    scroller->SetInlineStyleProperty(CSSPropertyDisplay, CSSValueNone);
+    GetDocument().View()->UpdateAllLifecyclePhases();
+  }
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/paint/raster_invalidation_test.cc b/third_party/blink/renderer/core/paint/raster_invalidation_test.cc
deleted file mode 100644
index 55a09c6..0000000
--- a/third_party/blink/renderer/core/paint/raster_invalidation_test.cc
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "third_party/blink/renderer/core/paint/paint_controller_paint_test.h"
-
-#include "cc/layers/picture_layer.h"
-#include "testing/gmock/include/gmock/gmock-matchers.h"
-#include "third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h"
-#include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h"
-#include "third_party/blink/renderer/platform/testing/web_layer_tree_view_impl_for_testing.h"
-
-namespace blink {
-
-class RasterInvalidationTest : public PaintControllerPaintTest {
- protected:
-  cc::Layer* GetCcLayer() const {
-    if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
-      return GetDocument()
-          .View()
-          ->GetPaintArtifactCompositorForTesting()
-          ->RootLayer()
-          ->child_at(0);
-    }
-    return GetLayoutView().Layer()->GraphicsLayerBacking()->ContentLayer();
-  }
-
-  cc::LayerClient* GetCcLayerClient() const {
-    return GetCcLayer()->GetLayerClientForTesting();
-  }
-
-  void SetUp() override {
-    PaintControllerPaintTest::SetUp();
-
-    if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) {
-      web_layer_tree_view_ = std::make_unique<WebLayerTreeViewImplForTesting>();
-      web_layer_tree_view_->SetRootLayer(
-          GetDocument()
-              .View()
-              ->GetPaintArtifactCompositorForTesting()
-              ->RootLayer());
-    }
-  }
-
- private:
-  std::unique_ptr<WebLayerTreeViewImplForTesting> web_layer_tree_view_;
-};
-
-INSTANTIATE_PAINT_TEST_CASE_P(RasterInvalidationTest);
-
-TEST_P(RasterInvalidationTest, TrackingForTracing) {
-  SetBodyInnerHTML(R"HTML(
-    <style>#target { width: 100px; height: 100px; background: blue }</style>
-    <div id="target"></div>
-  )HTML");
-  auto* target = GetDocument().getElementById("target");
-
-  {
-    // This is equivalent to enabling disabled-by-default-blink.invalidation
-    // for tracing.
-    ScopedPaintUnderInvalidationCheckingForTest checking(true);
-
-    target->setAttribute(HTMLNames::styleAttr, "height: 200px");
-    GetDocument().View()->UpdateAllLifecyclePhases();
-    EXPECT_THAT(GetCcLayerClient()->TakeDebugInfo(GetCcLayer())->ToString(),
-                testing::MatchesRegex(
-                    "\\{\"layer_name\":.*\"annotated_invalidation_rects\":\\["
-                    "\\{\"geometry_rect\":\\[8,108,100,100\\],"
-                    "\"reason\":\"incremental\","
-                    "\"client\":\"LayoutBlockFlow DIV id='target'\"\\}\\]\\}"));
-
-    target->setAttribute(HTMLNames::styleAttr, "height: 200px; width: 200px");
-    GetDocument().View()->UpdateAllLifecyclePhases();
-    EXPECT_THAT(GetCcLayerClient()->TakeDebugInfo(GetCcLayer())->ToString(),
-                testing::MatchesRegex(
-                    "\\{\"layer_name\":.*\"annotated_invalidation_rects\":\\["
-                    "\\{\"geometry_rect\":\\[108,8,100,200\\],"
-                    "\"reason\":\"incremental\","
-                    "\"client\":\"LayoutBlockFlow DIV id='target'\"\\}\\]\\}"));
-  }
-
-  target->setAttribute(HTMLNames::styleAttr, "height: 300px; width: 300px");
-  GetDocument().View()->UpdateAllLifecyclePhases();
-  EXPECT_EQ(std::string::npos, GetCcLayerClient()
-                                   ->TakeDebugInfo(GetCcLayer())
-                                   ->ToString()
-                                   .find("invalidation_rects"));
-}
-
-}  // namespace blink
diff --git a/third_party/blink/renderer/core/probe/CoreProbes.json5 b/third_party/blink/renderer/core/probe/CoreProbes.json5
index 1fda025..c2612fe 100644
--- a/third_party/blink/renderer/core/probe/CoreProbes.json5
+++ b/third_party/blink/renderer/core/probe/CoreProbes.json5
@@ -5,6 +5,10 @@
     include_path: "third_party/blink/renderer/core/inspector",
     includes: [
       "third_party/blink/renderer/core/CoreProbeSink.h",
+      "third_party/blink/renderer/core/animation/animation.h",
+      "third_party/blink/renderer/core/dom/pseudo_element.h",
+      "third_party/blink/renderer/core/html/html_slot_element.h",
+      "third_party/blink/renderer/core/page/chrome_client.h",
       "third_party/blink/renderer/core/probe/core_probes.h",
     ],
   },
@@ -112,9 +116,8 @@
         "didCommitLoad",
         "didCreateWebSocket",
         "didFailLoading",
-        "didFailXHRLoading",
         "didFinishLoading",
-        "didFinishXHRLoading",
+        "didFinishXHR",
         "didReceiveCORSRedirectResponse",
         "didReceiveData",
         "didReceiveBlob",
diff --git a/third_party/blink/renderer/core/probe/CoreProbes.pidl b/third_party/blink/renderer/core/probe/CoreProbes.pidl
index 84da2b5..2dd90f43 100644
--- a/third_party/blink/renderer/core/probe/CoreProbes.pidl
+++ b/third_party/blink/renderer/core/probe/CoreProbes.pidl
@@ -105,8 +105,7 @@
   void willSendEventSourceRequest(ExecutionContext*, ThreadableLoaderClient* eventSource);
   void willDispatchEventSourceEvent(ExecutionContext*, unsigned long identifier, const AtomicString& eventName, const AtomicString& eventId, const String& data);
   void willLoadXHR(ExecutionContext*, XMLHttpRequest* xhr, ThreadableLoaderClient* client, const AtomicString& method, const KURL& url, bool async, const HTTPHeaderMap& headers, bool includeCredentials);
-  void didFailXHRLoading([Keep] ExecutionContext*, XMLHttpRequest* xhr, ThreadableLoaderClient* client, const AtomicString& method, const String& url);
-  void didFinishXHRLoading([Keep] ExecutionContext*, XMLHttpRequest* xhr, ThreadableLoaderClient* client, const AtomicString& method, const String& url);
+  void didFinishXHR(ExecutionContext*, XMLHttpRequest* xhr);
   void willStartFetch(ExecutionContext*, ThreadableLoaderClient*);
   void scriptImported(ExecutionContext*, unsigned long identifier, const String& sourceString);
   void scriptExecutionBlockedByCSP(ExecutionContext*, const String& directiveText);
diff --git a/third_party/blink/renderer/core/probe/core_probes.cc b/third_party/blink/renderer/core/probe/core_probes.cc
index e838eeb..c45771c 100644
--- a/third_party/blink/renderer/core/probe/core_probes.cc
+++ b/third_party/blink/renderer/core/probe/core_probes.cc
@@ -31,21 +31,9 @@
 #include "third_party/blink/renderer/core/probe/core_probes.h"
 
 #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h"
-#include "third_party/blink/renderer/core/CoreProbeSink.h"
-#include "third_party/blink/renderer/core/dom/events/event.h"
-#include "third_party/blink/renderer/core/dom/events/event_target.h"
-#include "third_party/blink/renderer/core/inspector/inspector_css_agent.h"
-#include "third_party/blink/renderer/core/inspector/inspector_dom_debugger_agent.h"
-#include "third_party/blink/renderer/core/inspector/inspector_network_agent.h"
-#include "third_party/blink/renderer/core/inspector/inspector_page_agent.h"
-#include "third_party/blink/renderer/core/inspector/inspector_session.h"
 #include "third_party/blink/renderer/core/inspector/inspector_trace_events.h"
-#include "third_party/blink/renderer/core/inspector/main_thread_debugger.h"
 #include "third_party/blink/renderer/core/inspector/thread_debugger.h"
-#include "third_party/blink/renderer/core/page/page.h"
-#include "third_party/blink/renderer/core/workers/worker_global_scope.h"
 #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h"
-#include "third_party/blink/renderer/platform/loader/fetch/fetch_initiator_info.h"
 
 namespace blink {
 namespace probe {
@@ -126,30 +114,5 @@
     debugger->AllAsyncTasksCanceled();
 }
 
-void DidReceiveResourceResponseButCanceled(LocalFrame* frame,
-                                           DocumentLoader* loader,
-                                           unsigned long identifier,
-                                           const ResourceResponse& r,
-                                           Resource* resource) {
-  didReceiveResourceResponse(frame->GetDocument(), identifier, loader, r,
-                             resource);
-}
-
-void CanceledAfterReceivedResourceResponse(LocalFrame* frame,
-                                           DocumentLoader* loader,
-                                           unsigned long identifier,
-                                           const ResourceResponse& r,
-                                           Resource* resource) {
-  DidReceiveResourceResponseButCanceled(frame, loader, identifier, r, resource);
-}
-
-void ContinueWithPolicyIgnore(LocalFrame* frame,
-                              DocumentLoader* loader,
-                              unsigned long identifier,
-                              const ResourceResponse& r,
-                              Resource* resource) {
-  DidReceiveResourceResponseButCanceled(frame, loader, identifier, r, resource);
-}
-
 }  // namespace probe
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/probe/core_probes.h b/third_party/blink/renderer/core/probe/core_probes.h
index 7107ee4..affb944a 100644
--- a/third_party/blink/renderer/core/probe/core_probes.h
+++ b/third_party/blink/renderer/core/probe/core_probes.h
@@ -31,19 +31,14 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_PROBE_CORE_PROBES_H_
 #define THIRD_PARTY_BLINK_RENDERER_CORE_PROBE_CORE_PROBES_H_
 
-#include "third_party/blink/renderer/core/animation/animation.h"
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/dom/document.h"
-#include "third_party/blink/renderer/core/dom/pseudo_element.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
-#include "third_party/blink/renderer/core/html/html_slot_element.h"
-#include "third_party/blink/renderer/core/page/chrome_client.h"
 #include "third_party/blink/renderer/platform/probe/platform_probes.h"
 
 namespace blink {
 
 class CoreProbeSink;
-class Resource;
 class ThreadDebugger;
 
 namespace probe {
@@ -101,18 +96,7 @@
 CORE_EXPORT void AsyncTaskCanceledBreakable(ExecutionContext*,
                                             const char* name,
                                             void*);
-
 CORE_EXPORT void AllAsyncTasksCanceled(ExecutionContext*);
-CORE_EXPORT void CanceledAfterReceivedResourceResponse(LocalFrame*,
-                                                       DocumentLoader*,
-                                                       unsigned long identifier,
-                                                       const ResourceResponse&,
-                                                       Resource*);
-CORE_EXPORT void ContinueWithPolicyIgnore(LocalFrame*,
-                                          DocumentLoader*,
-                                          unsigned long identifier,
-                                          const ResourceResponse&,
-                                          Resource*);
 
 }  // namespace probe
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/resize_observer/resize_observer.cc b/third_party/blink/renderer/core/resize_observer/resize_observer.cc
index af227168..33acd56e 100644
--- a/third_party/blink/renderer/core/resize_observer/resize_observer.cc
+++ b/third_party/blink/renderer/core/resize_observer/resize_observer.cc
@@ -187,9 +187,4 @@
   ContextClient::Trace(visitor);
 }
 
-void ResizeObserver::TraceWrappers(ScriptWrappableVisitor* visitor) const {
-  visitor->TraceWrappers(callback_);
-  ScriptWrappable::TraceWrappers(visitor);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/resize_observer/resize_observer.h b/third_party/blink/renderer/core/resize_observer/resize_observer.h
index d90caa2..1aaea12 100644
--- a/third_party/blink/renderer/core/resize_observer/resize_observer.h
+++ b/third_party/blink/renderer/core/resize_observer/resize_observer.h
@@ -62,7 +62,6 @@
   bool HasPendingActivity() const override;
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
  private:
   ResizeObserver(V8ResizeObserverCallback*, Document&);
diff --git a/third_party/blink/renderer/core/style/style_inherited_variables.cc b/third_party/blink/renderer/core/style/style_inherited_variables.cc
index d1401de..2ec530e1 100644
--- a/third_party/blink/renderer/core/style/style_inherited_variables.cc
+++ b/third_party/blink/renderer/core/style/style_inherited_variables.cc
@@ -74,19 +74,17 @@
     iterator->value = nullptr;
 }
 
-std::unique_ptr<HashMap<AtomicString, scoped_refptr<CSSVariableData>>>
+HashMap<AtomicString, scoped_refptr<CSSVariableData>>
 StyleInheritedVariables::GetVariables() const {
   std::unique_ptr<HashMap<AtomicString, scoped_refptr<CSSVariableData>>> result;
   if (root_) {
-    result.reset(new HashMap<AtomicString, scoped_refptr<CSSVariableData>>(
-        root_->data_));
-    for (auto it = data_.begin(); it != data_.end(); ++it)
-      result->Set(it->key, it->value);
+    HashMap<AtomicString, scoped_refptr<CSSVariableData>> result(root_->data_);
+    for (const auto& pair : data_)
+      result.Set(pair.key, pair.value);
+    return result;
   } else {
-    result.reset(
-        new HashMap<AtomicString, scoped_refptr<CSSVariableData>>(data_));
+    return data_;
   }
-  return result;
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/style/style_inherited_variables.h b/third_party/blink/renderer/core/style/style_inherited_variables.h
index b52e0b6..c12643c 100644
--- a/third_party/blink/renderer/core/style/style_inherited_variables.h
+++ b/third_party/blink/renderer/core/style/style_inherited_variables.h
@@ -42,8 +42,7 @@
   // This map will contain null pointers if variables are invalid due to
   // cycles or referencing invalid variables without using a fallback.
   // Note that this method is slow as a new map is constructed.
-  std::unique_ptr<HashMap<AtomicString, scoped_refptr<CSSVariableData>>>
-  GetVariables() const;
+  HashMap<AtomicString, scoped_refptr<CSSVariableData>> GetVariables() const;
 
  private:
   StyleInheritedVariables() : root_(nullptr) {}
diff --git a/third_party/blink/renderer/core/svg/svg_geometry_element.cc b/third_party/blink/renderer/core/svg/svg_geometry_element.cc
index 1e46cba..97ee5aae 100644
--- a/third_party/blink/renderer/core/svg/svg_geometry_element.cc
+++ b/third_party/blink/renderer/core/svg/svg_geometry_element.cc
@@ -141,8 +141,17 @@
   GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets();
 
   FloatPoint point;
-  if (GetLayoutObject())
-    point = AsPath().PointAtLength(length);
+  if (GetLayoutObject()) {
+    const Path& path = AsPath();
+    if (length < 0) {
+      length = 0;
+    } else {
+      float computed_length = path.length();
+      if (length > computed_length)
+        length = computed_length;
+    }
+    point = path.PointAtLength(length);
+  }
   return SVGPointTearOff::CreateDetached(point);
 }
 
diff --git a/third_party/blink/renderer/core/svg/svg_path_element.cc b/third_party/blink/renderer/core/svg/svg_path_element.cc
index 582dbe0..241cdad 100644
--- a/third_party/blink/renderer/core/svg/svg_path_element.cc
+++ b/third_party/blink/renderer/core/svg/svg_path_element.cc
@@ -70,7 +70,15 @@
 
 SVGPointTearOff* SVGPathElement::getPointAtLength(float length) {
   GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets();
-  FloatPoint point = SVGPathQuery(PathByteStream()).GetPointAtLength(length);
+  SVGPathQuery path_query(PathByteStream());
+  if (length < 0) {
+    length = 0;
+  } else {
+    float computed_length = path_query.GetTotalLength();
+    if (length > computed_length)
+      length = computed_length;
+  }
+  FloatPoint point = path_query.GetPointAtLength(length);
   return SVGPointTearOff::CreateDetached(point);
 }
 
diff --git a/third_party/blink/renderer/core/svg/svg_svg_element.cc b/third_party/blink/renderer/core/svg/svg_svg_element.cc
index 3644fdae..d63c806 100644
--- a/third_party/blink/renderer/core/svg/svg_svg_element.cc
+++ b/third_party/blink/renderer/core/svg/svg_svg_element.cc
@@ -152,7 +152,7 @@
 bool SVGSVGElement::ZoomAndPanEnabled() const {
   SVGZoomAndPanType zoom_and_pan = this->zoomAndPan();
   if (view_spec_)
-    zoom_and_pan = view_spec_->zoomAndPan();
+    zoom_and_pan = view_spec_->ZoomAndPan();
   return zoom_and_pan == kSVGZoomAndPanMagnify;
 }
 
@@ -729,27 +729,16 @@
   if (!IsSVGViewElement(anchor_node))
     return;
 
-  SVGViewElement& view_element = ToSVGViewElement(*anchor_node);
-
-  // Spec: If the SVG fragment identifier addresses a 'view' element
-  // within an SVG document (e.g., MyDrawing.svg#MyView) then the
-  // closest ancestor 'svg' element is displayed in the
-  // viewport. Any view specification attributes included on the
-  // given 'view' element override the corresponding view
-  // specification attributes on the closest ancestor 'svg' element.
-  // TODO(ed): The spec text above is a bit unclear.
-  // Should the transform from outermost svg to nested svg be applied to
-  // "display" the inner svg in the viewport, then let the view element
-  // override the inner svg's view specification attributes. Should it
-  // fill/override the outer viewport?
-  SVGSVGElement* svg = view_element.ownerSVGElement();
-  if (!svg)
-    return;
-  SVGViewSpec* view_spec = SVGViewSpec::CreateForElement(*svg);
-  view_spec->InheritViewAttributesFromElement(view_element);
-  UseCounter::Count(svg->GetDocument(),
+  // Spec: If the SVG fragment identifier addresses a 'view' element within an
+  // SVG document (e.g., MyDrawing.svg#MyView) then the root 'svg' element is
+  // displayed in the SVG viewport. Any view specification attributes included
+  // on the given 'view' element override the corresponding view specification
+  // attributes on the root 'svg' element.
+  SVGViewSpec* view_spec = SVGViewSpec::CreateForElement(*this);
+  view_spec->InheritViewAttributesFromElement(ToSVGViewElement(*anchor_node));
+  UseCounter::Count(GetDocument(),
                     WebFeature::kSVGSVGElementFragmentSVGViewElement);
-  svg->SetViewSpec(view_spec);
+  SetViewSpec(view_spec);
 }
 
 void SVGSVGElement::FinishParsingChildren() {
diff --git a/third_party/blink/renderer/core/svg/svg_view_spec.cc b/third_party/blink/renderer/core/svg/svg_view_spec.cc
index 7103230..d769b43b 100644
--- a/third_party/blink/renderer/core/svg/svg_view_spec.cc
+++ b/third_party/blink/renderer/core/svg/svg_view_spec.cc
@@ -31,7 +31,8 @@
 SVGViewSpec::SVGViewSpec()
     : view_box_(SVGRect::CreateInvalid()),
       preserve_aspect_ratio_(SVGPreserveAspectRatio::Create()),
-      transform_(SVGTransformList::Create()) {}
+      transform_(SVGTransformList::Create()),
+      zoom_and_pan_(kSVGZoomAndPanUnknown) {}
 
 void SVGViewSpec::Trace(blink::Visitor* visitor) {
   visitor->Trace(view_box_);
@@ -72,7 +73,7 @@
 }
 
 void SVGViewSpec::Reset() {
-  ResetZoomAndPan();
+  zoom_and_pan_ = kSVGZoomAndPanUnknown;
   transform_->Clear();
   SetViewBox(FloatRect());
   PreserveAspectRatio()->SetDefault();
@@ -154,7 +155,8 @@
         break;
       }
       case kZoomAndPan:
-        if (!ParseZoomAndPan(ptr, end))
+        zoom_and_pan_ = SVGZoomAndPan::Parse(ptr, end);
+        if (zoom_and_pan_ == kSVGZoomAndPanUnknown)
           return false;
         break;
       case kPreserveAspectRatio:
diff --git a/third_party/blink/renderer/core/svg/svg_view_spec.h b/third_party/blink/renderer/core/svg/svg_view_spec.h
index 7c82fa4..c31fb10 100644
--- a/third_party/blink/renderer/core/svg/svg_view_spec.h
+++ b/third_party/blink/renderer/core/svg/svg_view_spec.h
@@ -31,8 +31,7 @@
 class SVGSVGElement;
 class SVGTransformList;
 
-class SVGViewSpec final : public GarbageCollectedFinalized<SVGViewSpec>,
-                          public SVGZoomAndPan {
+class SVGViewSpec final : public GarbageCollectedFinalized<SVGViewSpec> {
  public:
   static SVGViewSpec* CreateForElement(SVGSVGElement&);
 
@@ -46,6 +45,7 @@
     return preserve_aspect_ratio_;
   }
   SVGTransformList* Transform() { return transform_; }
+  SVGZoomAndPanType ZoomAndPan() const { return zoom_and_pan_; }
 
   virtual void Trace(blink::Visitor*);
 
@@ -61,6 +61,7 @@
   Member<SVGRect> view_box_;
   Member<SVGPreserveAspectRatio> preserve_aspect_ratio_;
   Member<SVGTransformList> transform_;
+  SVGZoomAndPanType zoom_and_pan_;
 };
 
 template <typename T>
@@ -74,7 +75,7 @@
   }
 
   if (inherit_from_element.hasAttribute(SVGNames::zoomAndPanAttr))
-    setZoomAndPan(inherit_from_element.zoomAndPan());
+    zoom_and_pan_ = inherit_from_element.zoomAndPan();
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/svg/svg_zoom_and_pan.cc b/third_party/blink/renderer/core/svg/svg_zoom_and_pan.cc
index 5837aad..5ae806fc 100644
--- a/third_party/blink/renderer/core/svg/svg_zoom_and_pan.cc
+++ b/third_party/blink/renderer/core/svg/svg_zoom_and_pan.cc
@@ -27,35 +27,43 @@
 
 SVGZoomAndPan::SVGZoomAndPan() : zoom_and_pan_(kSVGZoomAndPanMagnify) {}
 
-void SVGZoomAndPan::ResetZoomAndPan() {
-  zoom_and_pan_ = kSVGZoomAndPanMagnify;
-}
-
 bool SVGZoomAndPan::IsKnownAttribute(const QualifiedName& attr_name) {
   return attr_name == SVGNames::zoomAndPanAttr;
 }
 
+bool SVGZoomAndPan::ParseAttribute(const QualifiedName& name,
+                                   const AtomicString& value) {
+  if (name != SVGNames::zoomAndPanAttr)
+    return false;
+  zoom_and_pan_ = kSVGZoomAndPanUnknown;
+  if (!value.IsEmpty()) {
+    if (value.Is8Bit()) {
+      const LChar* start = value.Characters8();
+      zoom_and_pan_ = Parse(start, start + value.length());
+    } else {
+      const UChar* start = value.Characters16();
+      zoom_and_pan_ = Parse(start, start + value.length());
+    }
+  }
+  return true;
+}
+
 template <typename CharType>
-static bool ParseZoomAndPanInternal(const CharType*& start,
-                                    const CharType* end,
-                                    SVGZoomAndPanType& zoom_and_pan) {
-  if (SkipToken(start, end, "disable")) {
-    zoom_and_pan = kSVGZoomAndPanDisable;
-    return true;
-  }
-  if (SkipToken(start, end, "magnify")) {
-    zoom_and_pan = kSVGZoomAndPanMagnify;
-    return true;
-  }
-  return false;
+static SVGZoomAndPanType ParseZoomAndPanInternal(const CharType*& start,
+                                                 const CharType* end) {
+  if (SkipToken(start, end, "disable"))
+    return kSVGZoomAndPanDisable;
+  if (SkipToken(start, end, "magnify"))
+    return kSVGZoomAndPanMagnify;
+  return kSVGZoomAndPanUnknown;
 }
 
-bool SVGZoomAndPan::ParseZoomAndPan(const LChar*& start, const LChar* end) {
-  return ParseZoomAndPanInternal(start, end, zoom_and_pan_);
+SVGZoomAndPanType SVGZoomAndPan::Parse(const LChar*& start, const LChar* end) {
+  return ParseZoomAndPanInternal(start, end);
 }
 
-bool SVGZoomAndPan::ParseZoomAndPan(const UChar*& start, const UChar* end) {
-  return ParseZoomAndPanInternal(start, end, zoom_and_pan_);
+SVGZoomAndPanType SVGZoomAndPan::Parse(const UChar*& start, const UChar* end) {
+  return ParseZoomAndPanInternal(start, end);
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/svg/svg_zoom_and_pan.h b/third_party/blink/renderer/core/svg/svg_zoom_and_pan.h
index 4276248..c31fe7ed 100644
--- a/third_party/blink/renderer/core/svg/svg_zoom_and_pan.h
+++ b/third_party/blink/renderer/core/svg/svg_zoom_and_pan.h
@@ -54,26 +54,10 @@
     return static_cast<SVGZoomAndPanType>(number);
   }
 
-  bool ParseZoomAndPan(const LChar*& start, const LChar* end);
-  bool ParseZoomAndPan(const UChar*& start, const UChar* end);
+  static SVGZoomAndPanType Parse(const LChar*& start, const LChar* end);
+  static SVGZoomAndPanType Parse(const UChar*& start, const UChar* end);
 
-  bool ParseAttribute(const QualifiedName& name, const AtomicString& value) {
-    if (name == SVGNames::zoomAndPanAttr) {
-      zoom_and_pan_ = kSVGZoomAndPanUnknown;
-      if (!value.IsEmpty()) {
-        if (value.Is8Bit()) {
-          const LChar* start = value.Characters8();
-          ParseZoomAndPan(start, start + value.length());
-        } else {
-          const UChar* start = value.Characters16();
-          ParseZoomAndPan(start, start + value.length());
-        }
-      }
-      return true;
-    }
-
-    return false;
-  }
+  bool ParseAttribute(const QualifiedName& name, const AtomicString& value);
 
   // JS API
   SVGZoomAndPanType zoomAndPan() const { return zoom_and_pan_; }
@@ -86,7 +70,6 @@
 
  protected:
   SVGZoomAndPan();
-  void ResetZoomAndPan();
 
  private:
   SVGZoomAndPanType zoom_and_pan_;
diff --git a/third_party/blink/renderer/core/testing/core_unit_test_helper.cc b/third_party/blink/renderer/core/testing/core_unit_test_helper.cc
index a9261a3..97ab35e 100644
--- a/third_party/blink/renderer/core/testing/core_unit_test_helper.cc
+++ b/third_party/blink/renderer/core/testing/core_unit_test_helper.cc
@@ -80,6 +80,14 @@
 void RenderingTest::SetChildFrameHTML(const String& html) {
   ChildDocument().SetBaseURLOverride(KURL("http://test.com"));
   ChildDocument().body()->SetInnerHTMLFromString(html, ASSERT_NO_EXCEPTION);
+
+  // Setting HTML implies the frame loads contents, so we need to advance the
+  // state machine to leave the initial empty document state.
+  auto* state_machine = ChildDocument().GetFrame()->Loader().StateMachine();
+  if (state_machine->IsDisplayingInitialEmptyDocument())
+    state_machine->AdvanceTo(FrameLoaderStateMachine::kCommittedFirstRealLoad);
+  // And let the frame view  exit the initial throttled state.
+  ChildDocument().View()->BeginLifecycleUpdates();
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/testing/core_unit_test_helper.h b/third_party/blink/renderer/core/testing/core_unit_test_helper.h
index b7359bd..6cd9a46 100644
--- a/third_party/blink/renderer/core/testing/core_unit_test_helper.h
+++ b/third_party/blink/renderer/core/testing/core_unit_test_helper.h
@@ -59,6 +59,7 @@
   // FrameClient overrides:
   void Detached(FrameDetachType) override;
   LocalFrame* Parent() const override { return parent_.Get(); }
+  LocalFrame* Top() const override { return parent_.Get(); }
 
  private:
   explicit LocalFrameClientWithParent(LocalFrame* parent) : parent_(parent) {}
diff --git a/third_party/blink/renderer/core/testing/death_aware_script_wrappable.h b/third_party/blink/renderer/core/testing/death_aware_script_wrappable.h
index 4203962..043efbd 100644
--- a/third_party/blink/renderer/core/testing/death_aware_script_wrappable.h
+++ b/third_party/blink/renderer/core/testing/death_aware_script_wrappable.h
@@ -27,10 +27,6 @@
 
   virtual void Trace(Visitor* visitor) { visitor->Trace(dependency_); }
 
-  virtual void TraceWrappers(ScriptWrappableVisitor* visitor) const {
-    visitor->TraceWrappers(dependency_);
-  }
-
  private:
   TraceWrapperMember<DeathAwareScriptWrappable> dependency_;
 };
@@ -72,21 +68,6 @@
     ScriptWrappable::Trace(visitor);
   }
 
-  void TraceWrappers(ScriptWrappableVisitor* visitor) const override {
-    visitor->TraceWrappers(wrapped_dependency_);
-    for (auto dep : wrapped_vector_dependency_) {
-      visitor->TraceWrappers(dep);
-    }
-    for (auto pair : wrapped_hash_map_dependency_) {
-      visitor->TraceWrappers(pair.key);
-      visitor->TraceWrappers(pair.value);
-    }
-    for (const auto& in_object_dependency : in_object_dependency_) {
-      in_object_dependency.TraceWrappers(visitor);
-    }
-    ScriptWrappable::TraceWrappers(visitor);
-  }
-
   void SetWrappedDependency(DeathAwareScriptWrappable* dependency) {
     wrapped_dependency_ = dependency;
   }
diff --git a/third_party/blink/renderer/core/timing/dom_window_performance.cc b/third_party/blink/renderer/core/timing/dom_window_performance.cc
index 4f48d19..1ffdf75 100644
--- a/third_party/blink/renderer/core/timing/dom_window_performance.cc
+++ b/third_party/blink/renderer/core/timing/dom_window_performance.cc
@@ -17,12 +17,6 @@
   Supplement<LocalDOMWindow>::Trace(visitor);
 }
 
-void DOMWindowPerformance::TraceWrappers(
-    ScriptWrappableVisitor* visitor) const {
-  visitor->TraceWrappers(performance_);
-  Supplement<LocalDOMWindow>::TraceWrappers(visitor);
-}
-
 // static
 const char DOMWindowPerformance::kSupplementName[] = "DOMWindowPerformance";
 
diff --git a/third_party/blink/renderer/core/timing/dom_window_performance.h b/third_party/blink/renderer/core/timing/dom_window_performance.h
index 18648dd1..3712328d 100644
--- a/third_party/blink/renderer/core/timing/dom_window_performance.h
+++ b/third_party/blink/renderer/core/timing/dom_window_performance.h
@@ -27,7 +27,6 @@
   static WindowPerformance* performance(LocalDOMWindow&);
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
  private:
   explicit DOMWindowPerformance(LocalDOMWindow&);
diff --git a/third_party/blink/renderer/core/timing/performance.cc b/third_party/blink/renderer/core/timing/performance.cc
index c18e59a..a5f46167 100644
--- a/third_party/blink/renderer/core/timing/performance.cc
+++ b/third_party/blink/renderer/core/timing/performance.cc
@@ -876,10 +876,4 @@
   EventTargetWithInlineData::Trace(visitor);
 }
 
-void Performance::TraceWrappers(ScriptWrappableVisitor* visitor) const {
-  for (const auto& observer : observers_)
-    visitor->TraceWrappers(observer);
-  EventTargetWithInlineData::TraceWrappers(visitor);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/timing/performance.h b/third_party/blink/renderer/core/timing/performance.h
index 2096231e..a87a9539 100644
--- a/third_party/blink/renderer/core/timing/performance.h
+++ b/third_party/blink/renderer/core/timing/performance.h
@@ -203,7 +203,6 @@
   ScriptValue toJSONForBinding(ScriptState*) const;
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
  private:
   static bool PassesTimingAllowCheck(const ResourceResponse&,
diff --git a/third_party/blink/renderer/core/timing/performance_mark.cc b/third_party/blink/renderer/core/timing/performance_mark.cc
index 2073e42..e8023df 100644
--- a/third_party/blink/renderer/core/timing/performance_mark.cc
+++ b/third_party/blink/renderer/core/timing/performance_mark.cc
@@ -40,9 +40,4 @@
   PerformanceEntry::Trace(visitor);
 }
 
-void PerformanceMark::TraceWrappers(ScriptWrappableVisitor* visitor) const {
-  visitor->TraceWrappers(detail_);
-  PerformanceEntry::TraceWrappers(visitor);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/timing/performance_mark.h b/third_party/blink/renderer/core/timing/performance_mark.h
index b2e30e7f..da8b9af 100644
--- a/third_party/blink/renderer/core/timing/performance_mark.h
+++ b/third_party/blink/renderer/core/timing/performance_mark.h
@@ -33,8 +33,6 @@
 
 namespace blink {
 
-class ScriptWrappableVisitor;
-
 class CORE_EXPORT PerformanceMark final : public PerformanceEntry {
   DEFINE_WRAPPERTYPEINFO();
 
@@ -50,8 +48,6 @@
 
   void Trace(blink::Visitor*) override;
 
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
-
  private:
   PerformanceMark(ScriptState*,
                   const String& name,
diff --git a/third_party/blink/renderer/core/timing/performance_observer.cc b/third_party/blink/renderer/core/timing/performance_observer.cc
index 64639d33..350d8d11 100644
--- a/third_party/blink/renderer/core/timing/performance_observer.cc
+++ b/third_party/blink/renderer/core/timing/performance_observer.cc
@@ -141,9 +141,4 @@
   ContextClient::Trace(visitor);
 }
 
-void PerformanceObserver::TraceWrappers(ScriptWrappableVisitor* visitor) const {
-  visitor->TraceWrappers(callback_);
-  ScriptWrappable::TraceWrappers(visitor);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/timing/performance_observer.h b/third_party/blink/renderer/core/timing/performance_observer.h
index eab006f2..6d884e9 100644
--- a/third_party/blink/renderer/core/timing/performance_observer.h
+++ b/third_party/blink/renderer/core/timing/performance_observer.h
@@ -49,7 +49,6 @@
   bool HasPendingActivity() const final;
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
  private:
   PerformanceObserver(ExecutionContext*,
diff --git a/third_party/blink/renderer/core/timing/window_performance.h b/third_party/blink/renderer/core/timing/window_performance.h
index 20dfe894..fdf5074 100644
--- a/third_party/blink/renderer/core/timing/window_performance.h
+++ b/third_party/blink/renderer/core/timing/window_performance.h
@@ -75,7 +75,6 @@
                       bool cancelable);
 
   void Trace(blink::Visitor*) override;
-  using Performance::TraceWrappers;
 
  private:
   explicit WindowPerformance(LocalDOMWindow*);
diff --git a/third_party/blink/renderer/core/timing/worker_global_scope_performance.cc b/third_party/blink/renderer/core/timing/worker_global_scope_performance.cc
index 0a0344a..e62c199 100644
--- a/third_party/blink/renderer/core/timing/worker_global_scope_performance.cc
+++ b/third_party/blink/renderer/core/timing/worker_global_scope_performance.cc
@@ -71,10 +71,4 @@
   Supplement<WorkerGlobalScope>::Trace(visitor);
 }
 
-void WorkerGlobalScopePerformance::TraceWrappers(
-    ScriptWrappableVisitor* visitor) const {
-  visitor->TraceWrappers(performance_);
-  Supplement<WorkerGlobalScope>::TraceWrappers(visitor);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/timing/worker_global_scope_performance.h b/third_party/blink/renderer/core/timing/worker_global_scope_performance.h
index 06ce8e34..ee297eba 100644
--- a/third_party/blink/renderer/core/timing/worker_global_scope_performance.h
+++ b/third_party/blink/renderer/core/timing/worker_global_scope_performance.h
@@ -54,7 +54,6 @@
   static WorkerPerformance* performance(WorkerGlobalScope&);
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
  private:
   explicit WorkerGlobalScopePerformance(WorkerGlobalScope&);
diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third_party/blink/renderer/core/workers/dedicated_worker.cc
index 3b9ea3ac..eeeec22 100644
--- a/third_party/blink/renderer/core/workers/dedicated_worker.cc
+++ b/third_party/blink/renderer/core/workers/dedicated_worker.cc
@@ -277,7 +277,7 @@
                                                           : ScriptType::kModule;
   return std::make_unique<GlobalScopeCreationParams>(
       script_url_, script_type, GetExecutionContext()->UserAgent(),
-      GetExecutionContext()->GetContentSecurityPolicy()->Headers().get(),
+      GetExecutionContext()->GetContentSecurityPolicy()->Headers(),
       kReferrerPolicyDefault, GetExecutionContext()->GetSecurityOrigin(),
       GetExecutionContext()->IsSecureContext(), CreateWorkerClients(),
       GetExecutionContext()->GetSecurityContext().AddressSpace(),
diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_test.cc b/third_party/blink/renderer/core/workers/dedicated_worker_test.cc
index bfb51cf..d424959 100644
--- a/third_party/blink/renderer/core/workers/dedicated_worker_test.cc
+++ b/third_party/blink/renderer/core/workers/dedicated_worker_test.cc
@@ -125,15 +125,13 @@
   void StartWithSourceCode(const String& source) {
     KURL script_url("http://fake.url/");
     security_origin_ = SecurityOrigin::Create(script_url);
-    auto headers = std::make_unique<Vector<CSPHeaderAndType>>();
-    CSPHeaderAndType header_and_type("contentSecurityPolicy",
-                                     kContentSecurityPolicyHeaderTypeReport);
-    headers->push_back(header_and_type);
+    Vector<CSPHeaderAndType> headers{
+        {"contentSecurityPolicy", kContentSecurityPolicyHeaderTypeReport}};
     auto worker_settings = std::make_unique<WorkerSettings>(
         ToDocument(GetExecutionContext())->GetSettings());
     InitializeWorkerThread(
         std::make_unique<GlobalScopeCreationParams>(
-            script_url, ScriptType::kClassic, "fake user agent", headers.get(),
+            script_url, ScriptType::kClassic, "fake user agent", headers,
             kReferrerPolicyDefault, security_origin_.get(),
             false /* starter_secure_context */, nullptr /* worker_clients */,
             mojom::IPAddressSpace::kLocal, nullptr /* origin_trial_tokens */,
diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_params.cc b/third_party/blink/renderer/core/workers/global_scope_creation_params.cc
index 590bf269..40c9d37 100644
--- a/third_party/blink/renderer/core/workers/global_scope_creation_params.cc
+++ b/third_party/blink/renderer/core/workers/global_scope_creation_params.cc
@@ -13,7 +13,7 @@
     const KURL& script_url,
     ScriptType script_type,
     const String& user_agent,
-    const Vector<CSPHeaderAndType>* content_security_policy_parsed_headers,
+    const Vector<CSPHeaderAndType>& content_security_policy_parsed_headers,
     ReferrerPolicy referrer_policy,
     const SecurityOrigin* starter_origin,
     bool starter_secure_context,
@@ -41,14 +41,11 @@
       module_responses_map(module_responses_map),
       interface_provider(std::move(interface_provider_info)),
       begin_frame_provider_params(std::move(begin_frame_provider_params)) {
-  this->content_security_policy_parsed_headers =
-      std::make_unique<Vector<CSPHeaderAndType>>();
-  if (content_security_policy_parsed_headers) {
-    for (const auto& header : *content_security_policy_parsed_headers) {
-      CSPHeaderAndType copied_header(header.first.IsolatedCopy(),
-                                     header.second);
-      this->content_security_policy_parsed_headers->push_back(copied_header);
-    }
+  this->content_security_policy_parsed_headers.ReserveInitialCapacity(
+      content_security_policy_parsed_headers.size());
+  for (const auto& header : content_security_policy_parsed_headers) {
+    this->content_security_policy_parsed_headers.emplace_back(
+        header.first.IsolatedCopy(), header.second);
   }
 
   this->origin_trial_tokens = std::make_unique<Vector<String>>();
diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_params.h b/third_party/blink/renderer/core/workers/global_scope_creation_params.h
index 47320bd7..17fd2be 100644
--- a/third_party/blink/renderer/core/workers/global_scope_creation_params.h
+++ b/third_party/blink/renderer/core/workers/global_scope_creation_params.h
@@ -39,7 +39,7 @@
       const KURL& script_url,
       ScriptType script_type,
       const String& user_agent,
-      const Vector<CSPHeaderAndType>* content_security_policy_parsed_headers,
+      const Vector<CSPHeaderAndType>& content_security_policy_parsed_headers,
       ReferrerPolicy referrer_policy,
       const SecurityOrigin*,
       bool starter_secure_context,
@@ -63,8 +63,7 @@
   // |content_security_policy_raw_headers| are mutually exclusive.
   // |content_security_policy_parsed_headers| is an empty vector
   // when |content_security_policy_raw_headers| is set.
-  std::unique_ptr<Vector<CSPHeaderAndType>>
-      content_security_policy_parsed_headers;
+  Vector<CSPHeaderAndType> content_security_policy_parsed_headers;
   base::Optional<ContentSecurityPolicyResponseHeaders>
       content_security_policy_raw_headers;
 
diff --git a/third_party/blink/renderer/core/workers/main_thread_worklet_test.cc b/third_party/blink/renderer/core/workers/main_thread_worklet_test.cc
index 7b64f77..18d8a84 100644
--- a/third_party/blink/renderer/core/workers/main_thread_worklet_test.cc
+++ b/third_party/blink/renderer/core/workers/main_thread_worklet_test.cc
@@ -63,7 +63,7 @@
         std::make_unique<MainThreadWorkletReportingProxyForTest>(document);
     auto creation_params = std::make_unique<GlobalScopeCreationParams>(
         document->Url(), ScriptType::kModule, document->UserAgent(),
-        document->GetContentSecurityPolicy()->Headers().get(),
+        document->GetContentSecurityPolicy()->Headers(),
         document->GetReferrerPolicy(), document->GetSecurityOrigin(),
         document->IsSecureContext(), nullptr /* worker_clients */,
         document->AddressSpace(), OriginTrialContext::GetTokens(document).get(),
diff --git a/third_party/blink/renderer/core/workers/threaded_worklet_messaging_proxy.cc b/third_party/blink/renderer/core/workers/threaded_worklet_messaging_proxy.cc
index 655d7fae..4ed4738 100644
--- a/third_party/blink/renderer/core/workers/threaded_worklet_messaging_proxy.cc
+++ b/third_party/blink/renderer/core/workers/threaded_worklet_messaging_proxy.cc
@@ -56,7 +56,7 @@
   auto global_scope_creation_params =
       std::make_unique<GlobalScopeCreationParams>(
           document->Url(), ScriptType::kModule, document->UserAgent(),
-          csp->Headers().get(), document->GetReferrerPolicy(),
+          csp->Headers(), document->GetReferrerPolicy(),
           document->GetSecurityOrigin(), document->IsSecureContext(),
           worker_clients, document->AddressSpace(),
           OriginTrialContext::GetTokens(document).get(),
diff --git a/third_party/blink/renderer/core/workers/threaded_worklet_test.cc b/third_party/blink/renderer/core/workers/threaded_worklet_test.cc
index 4a3d116..4a556bb 100644
--- a/third_party/blink/renderer/core/workers/threaded_worklet_test.cc
+++ b/third_party/blink/renderer/core/workers/threaded_worklet_test.cc
@@ -184,7 +184,7 @@
     InitializeWorkerThread(
         std::make_unique<GlobalScopeCreationParams>(
             document->Url(), ScriptType::kModule, document->UserAgent(),
-            document->GetContentSecurityPolicy()->Headers().get(),
+            document->GetContentSecurityPolicy()->Headers(),
             document->GetReferrerPolicy(), document->GetSecurityOrigin(),
             document->IsSecureContext(), worker_clients,
             document->AddressSpace(),
diff --git a/third_party/blink/renderer/core/workers/worker_animation_frame_provider.h b/third_party/blink/renderer/core/workers/worker_animation_frame_provider.h
index 91a86a5..f44c879 100644
--- a/third_party/blink/renderer/core/workers/worker_animation_frame_provider.h
+++ b/third_party/blink/renderer/core/workers/worker_animation_frame_provider.h
@@ -45,10 +45,6 @@
     visitor->Trace(rendering_contexts_);
   }
 
-  void TraceWrappers(ScriptWrappableVisitor* visitor) const {
-    visitor->TraceWrappers(callback_collection_);
-  }
-
   // BeginFrameProviderClient
   void BeginFrame() override;
 
diff --git a/third_party/blink/renderer/core/workers/worker_global_scope.cc b/third_party/blink/renderer/core/workers/worker_global_scope.cc
index 8773b86..adcc8d1 100644
--- a/third_party/blink/renderer/core/workers/worker_global_scope.cc
+++ b/third_party/blink/renderer/core/workers/worker_global_scope.cc
@@ -353,7 +353,7 @@
   }
   SetSecurityOrigin(std::move(security_origin));
   ApplyContentSecurityPolicyFromVector(
-      *creation_params->content_security_policy_parsed_headers);
+      creation_params->content_security_policy_parsed_headers);
   SetWorkerSettings(std::move(creation_params->worker_settings));
   SetReferrerPolicy(creation_params->referrer_policy);
   SetAddressSpace(creation_params->address_space);
@@ -424,10 +424,4 @@
   Supplementable<WorkerGlobalScope>::Trace(visitor);
 }
 
-void WorkerGlobalScope::TraceWrappers(ScriptWrappableVisitor* visitor) const {
-  Supplementable<WorkerGlobalScope>::TraceWrappers(visitor);
-  WorkerOrWorkletGlobalScope::TraceWrappers(visitor);
-  visitor->TraceWrappers(navigator_);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/workers/worker_global_scope.h b/third_party/blink/renderer/core/workers/worker_global_scope.h
index 3aa825f..b860ee8 100644
--- a/third_party/blink/renderer/core/workers/worker_global_scope.h
+++ b/third_party/blink/renderer/core/workers/worker_global_scope.h
@@ -142,7 +142,6 @@
   WorkerSettings* GetWorkerSettings() const { return worker_settings_.get(); }
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
   // TODO(fserb): This can be removed once we WorkerGlobalScope implements
   // FontFaceSource on the IDL.
diff --git a/third_party/blink/renderer/core/workers/worker_navigator.cc b/third_party/blink/renderer/core/workers/worker_navigator.cc
index e670cb5d..166d2fd 100644
--- a/third_party/blink/renderer/core/workers/worker_navigator.cc
+++ b/third_party/blink/renderer/core/workers/worker_navigator.cc
@@ -42,9 +42,4 @@
   Supplementable<WorkerNavigator>::Trace(visitor);
 }
 
-void WorkerNavigator::TraceWrappers(ScriptWrappableVisitor* visitor) const {
-  ScriptWrappable::TraceWrappers(visitor);
-  Supplementable<WorkerNavigator>::TraceWrappers(visitor);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/workers/worker_navigator.h b/third_party/blink/renderer/core/workers/worker_navigator.h
index 53196e76c..203f006 100644
--- a/third_party/blink/renderer/core/workers/worker_navigator.h
+++ b/third_party/blink/renderer/core/workers/worker_navigator.h
@@ -57,7 +57,6 @@
   String userAgent() const override;
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
  private:
   explicit WorkerNavigator(const String&);
diff --git a/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc b/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc
index 436812b..028c668 100644
--- a/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc
+++ b/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc
@@ -233,11 +233,4 @@
   SecurityContext::Trace(visitor);
 }
 
-void WorkerOrWorkletGlobalScope::TraceWrappers(
-    ScriptWrappableVisitor* visitor) const {
-  visitor->TraceWrappers(modulator_);
-  EventTargetWithInlineData::TraceWrappers(visitor);
-  ExecutionContext::TraceWrappers(visitor);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.h b/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.h
index b38152e..84ec2a3 100644
--- a/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.h
+++ b/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.h
@@ -101,7 +101,6 @@
   WorkerReportingProxy& ReportingProxy() { return reporting_proxy_; }
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
   scheduler::WorkerScheduler* GetScheduler() override;
   scoped_refptr<base::SingleThreadTaskRunner> GetTaskRunner(TaskType) override;
diff --git a/third_party/blink/renderer/core/workers/worker_thread_test.cc b/third_party/blink/renderer/core/workers/worker_thread_test.cc
index 1693753..c959227 100644
--- a/third_party/blink/renderer/core/workers/worker_thread_test.cc
+++ b/third_party/blink/renderer/core/workers/worker_thread_test.cc
@@ -298,15 +298,13 @@
   EXPECT_CALL(*reporting_proxy_, DidTerminateWorkerThread()).Times(1);
   EXPECT_CALL(*lifecycle_observer_, ContextDestroyed(_)).Times(1);
 
-  auto headers = std::make_unique<Vector<CSPHeaderAndType>>();
-  CSPHeaderAndType header_and_type("contentSecurityPolicy",
-                                   kContentSecurityPolicyHeaderTypeReport);
-  headers->push_back(header_and_type);
+  Vector<CSPHeaderAndType> headers{
+      {"contentSecurityPolicy", kContentSecurityPolicyHeaderTypeReport}};
 
   auto global_scope_creation_params =
       std::make_unique<GlobalScopeCreationParams>(
           KURL("http://fake.url/"), ScriptType::kClassic, "fake user agent",
-          headers.get(), kReferrerPolicyDefault, security_origin_.get(),
+          headers, kReferrerPolicyDefault, security_origin_.get(),
           false /* starter_secure_context */, nullptr /* workerClients */,
           mojom::IPAddressSpace::kLocal, nullptr /* originTrialToken */,
           base::UnguessableToken::Create(),
diff --git a/third_party/blink/renderer/core/workers/worker_thread_test_helper.h b/third_party/blink/renderer/core/workers/worker_thread_test_helper.h
index e8f00b2..ee82249d 100644
--- a/third_party/blink/renderer/core/workers/worker_thread_test_helper.h
+++ b/third_party/blink/renderer/core/workers/worker_thread_test_helper.h
@@ -102,13 +102,10 @@
       ParentExecutionContextTaskRunners* parent_execution_context_task_runners,
       const KURL& script_url = KURL("http://fake.url/"),
       WorkerClients* worker_clients = nullptr) {
-    auto headers = std::make_unique<Vector<CSPHeaderAndType>>();
-    CSPHeaderAndType header_and_type("contentSecurityPolicy",
-                                     kContentSecurityPolicyHeaderTypeReport);
-    headers->push_back(header_and_type);
-
+    Vector<CSPHeaderAndType> headers{
+        {"contentSecurityPolicy", kContentSecurityPolicyHeaderTypeReport}};
     auto creation_params = std::make_unique<GlobalScopeCreationParams>(
-        script_url, ScriptType::kClassic, "fake user agent", headers.get(),
+        script_url, ScriptType::kClassic, "fake user agent", headers,
         kReferrerPolicyDefault, security_origin,
         false /* starter_secure_context */, worker_clients,
         mojom::IPAddressSpace::kLocal, nullptr,
diff --git a/third_party/blink/renderer/core/workers/worklet_global_scope.cc b/third_party/blink/renderer/core/workers/worklet_global_scope.cc
index 686a7b5..f69dad5 100644
--- a/third_party/blink/renderer/core/workers/worklet_global_scope.cc
+++ b/third_party/blink/renderer/core/workers/worklet_global_scope.cc
@@ -52,7 +52,7 @@
   // Step 6: "Invoke the initialize a global object's CSP list algorithm given
   // workletGlobalScope."
   ApplyContentSecurityPolicyFromVector(
-      *creation_params->content_security_policy_parsed_headers);
+      creation_params->content_security_policy_parsed_headers);
   // CSP checks should resolve self based on the 'fetch client settings object'
   // (i.e., the document's origin), not the 'module map settings object' (i.e.,
   // the opaque origin of this worklet global scope). The current implementation
@@ -127,8 +127,4 @@
   WorkerOrWorkletGlobalScope::Trace(visitor);
 }
 
-void WorkletGlobalScope::TraceWrappers(ScriptWrappableVisitor* visitor) const {
-  WorkerOrWorkletGlobalScope::TraceWrappers(visitor);
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/workers/worklet_global_scope.h b/third_party/blink/renderer/core/workers/worklet_global_scope.h
index 2871348f5..37fce2bb 100644
--- a/third_party/blink/renderer/core/workers/worklet_global_scope.h
+++ b/third_party/blink/renderer/core/workers/worklet_global_scope.h
@@ -85,7 +85,6 @@
   bool DocumentSecureContext() const { return document_secure_context_; }
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
 
  protected:
   // Partial implementation of the "set up a worklet environment settings
diff --git a/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.cc b/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.cc
index faa19ba..2f07392 100644
--- a/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.cc
+++ b/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.cc
@@ -1330,7 +1330,7 @@
                                         long long expected_length) {
   NETWORK_DVLOG(1) << this << " handleRequestError()";
 
-  probe::didFailXHRLoading(GetExecutionContext(), this, this, method_, url_);
+  probe::didFinishXHR(GetExecutionContext(), this);
 
   send_flag_ = false;
   if (!async_) {
@@ -1705,7 +1705,7 @@
 }
 
 void XMLHttpRequest::EndLoading() {
-  probe::didFinishXHRLoading(GetExecutionContext(), this, this, method_, url_);
+  probe::didFinishXHR(GetExecutionContext(), this);
 
   if (loader_) {
     // Set |m_error| in order to suppress the cancel notification (see
@@ -2010,14 +2010,6 @@
   PausableObject::Trace(visitor);
 }
 
-void XMLHttpRequest::TraceWrappers(ScriptWrappableVisitor* visitor) const {
-  visitor->TraceWrappers(response_blob_);
-  visitor->TraceWrappers(response_document_);
-  visitor->TraceWrappers(response_array_buffer_);
-  visitor->TraceWrappers(response_text_);
-  XMLHttpRequestEventTarget::TraceWrappers(visitor);
-}
-
 std::ostream& operator<<(std::ostream& ostream, const XMLHttpRequest* xhr) {
   return ostream << "XMLHttpRequest " << static_cast<const void*>(xhr);
 }
diff --git a/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.h b/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.h
index 0b8beb6..000dfd3 100644
--- a/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.h
+++ b/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.h
@@ -167,7 +167,6 @@
   DEFINE_ATTRIBUTE_EVENT_LISTENER(readystatechange);
 
   void Trace(blink::Visitor*) override;
-  void TraceWrappers(ScriptWrappableVisitor*) const override;
   const char* NameInHeapSnapshot() const override { return "XMLHttpRequest"; }
 
  private:
diff --git a/third_party/blink/renderer/devtools/front_end/audits2/Audits2Panel.js b/third_party/blink/renderer/devtools/front_end/audits2/Audits2Panel.js
index bd9bf55..07e3402 100644
--- a/third_party/blink/renderer/devtools/front_end/audits2/Audits2Panel.js
+++ b/third_party/blink/renderer/devtools/front_end/audits2/Audits2Panel.js
@@ -29,7 +29,6 @@
     this._controller.addEventListener(Audits2.Events.RequestAuditCancel, this._cancelAudit.bind(this));
 
     this._renderToolbar();
-    this.contentElement.createChild('div', 'audits2-dialog-overlay');
     this._auditResultsElement = this.contentElement.createChild('div', 'audits2-results-container');
     this._renderStartView();
 
@@ -100,6 +99,9 @@
     this._startView.show(this.contentElement);
     this._startView.setUnauditableExplanation(this._unauditableExplanation);
     this._startView.setStartButtonEnabled(!this._unauditableExplanation);
+    if (!this._unauditableExplanation)
+      this._startView.focusStartButton();
+
     this._newButton.setEnabled(false);
     this._refreshToolbarUI();
     this.setDefaultFocusedChild(this._startView);
diff --git a/third_party/blink/renderer/devtools/front_end/audits2/Audits2StartView.js b/third_party/blink/renderer/devtools/front_end/audits2/Audits2StartView.js
index c8c822fe..cd3eae4 100644
--- a/third_party/blink/renderer/devtools/front_end/audits2/Audits2StartView.js
+++ b/third_party/blink/renderer/devtools/front_end/audits2/Audits2StartView.js
@@ -142,6 +142,10 @@
     this.contentElement.style.overflow = 'auto';
   }
 
+  focusStartButton() {
+    this._startButton.focus();
+  }
+
   /**
    * @param {boolean} isEnabled
    */
diff --git a/third_party/blink/renderer/devtools/front_end/audits2/Audits2StatusView.js b/third_party/blink/renderer/devtools/front_end/audits2/Audits2StatusView.js
index 98cfc67..3198f95 100644
--- a/third_party/blink/renderer/devtools/front_end/audits2/Audits2StatusView.js
+++ b/third_party/blink/renderer/devtools/front_end/audits2/Audits2StatusView.js
@@ -23,6 +23,8 @@
     this._scheduledFastFactTimeout = null;
 
     this._dialog = new UI.Dialog();
+    this._dialog.setDimmed(true);
+    this._dialog.setCloseOnEscape(false);
     this._dialog.setOutsideClickCallback(event => event.consume(true));
     this._render();
   }
diff --git a/third_party/blink/renderer/devtools/front_end/audits2/audits2Dialog.css b/third_party/blink/renderer/devtools/front_end/audits2/audits2Dialog.css
index b54a3714..6236f88 100644
--- a/third_party/blink/renderer/devtools/front_end/audits2/audits2Dialog.css
+++ b/third_party/blink/renderer/devtools/front_end/audits2/audits2Dialog.css
@@ -22,6 +22,10 @@
     text-align: left;
 }
 
+.audits2-view button {
+    z-index: 10;
+}
+
 .audits2-status {
     width: 100%;
     flex: auto;
diff --git a/third_party/blink/renderer/devtools/front_end/audits2/audits2StartView.css b/third_party/blink/renderer/devtools/front_end/audits2/audits2StartView.css
index 1ce64067..4ac62de 100644
--- a/third_party/blink/renderer/devtools/front_end/audits2/audits2StartView.css
+++ b/third_party/blink/renderer/devtools/front_end/audits2/audits2StartView.css
@@ -10,19 +10,6 @@
   line-height: 18px;
 }
 
-.audits2-dialog-overlay {
-  position: absolute;
-  width: 100%;
-  height: 100%;
-  display: none;
-  background: rgba(0,0,0,.3);
-  z-index: 100;
-}
-
-.in-progress .audits2-dialog-overlay {
-  display: block;
-}
-
 .audits2-start-view header {
   padding: 0 16px;
   display: flex;
diff --git a/third_party/blink/renderer/devtools/front_end/object_ui/ObjectPropertiesSection.js b/third_party/blink/renderer/devtools/front_end/object_ui/ObjectPropertiesSection.js
index 2cc272d..db48ba8 100644
--- a/third_party/blink/renderer/devtools/front_end/object_ui/ObjectPropertiesSection.js
+++ b/third_party/blink/renderer/devtools/front_end/object_ui/ObjectPropertiesSection.js
@@ -129,12 +129,10 @@
    */
   static valueElementForFunctionDescription(description, includePreview, defaultName) {
     const valueElement = createElementWithClass('span', 'object-value-function');
-    let text = '';
-    if (description) {
-      text = description.replace(/^function [gs]et /, 'function ')
-                 .replace(/^function [gs]et\(/, 'function\(')
-                 .replace(/^[gs]et /, '');
-    }
+    description = description || '';
+    const text = description.replace(/^function [gs]et /, 'function ')
+                     .replace(/^function [gs]et\(/, 'function\(')
+                     .replace(/^[gs]et /, '');
     defaultName = defaultName || '';
 
     // This set of best-effort regular expressions captures common function descriptions.
@@ -178,7 +176,7 @@
     } else {
       addElements('\u0192', text, nameAndArguments(text));
     }
-    valueElement.title = description || '';
+    valueElement.title = description.trimEnd(500);
     return valueElement;
 
     /**
diff --git a/third_party/blink/renderer/devtools/front_end/ui/Tooltip.js b/third_party/blink/renderer/devtools/front_end/ui/Tooltip.js
index b0d39214..ecada08 100644
--- a/third_party/blink/renderer/devtools/front_end/ui/Tooltip.js
+++ b/third_party/blink/renderer/devtools/front_end/ui/Tooltip.js
@@ -135,7 +135,7 @@
     if (!anchorTooltipAtElement) {
       tooltipY = event.y + cursorOffset + tooltipHeight < containerBox.y + containerBox.height ?
           event.y + cursorOffset :
-          event.y - tooltipHeight;
+          event.y - tooltipHeight - 1;
     } else {
       const onBottom =
           anchorBox.y + anchorOffset + anchorBox.height + tooltipHeight < containerBox.y + containerBox.height;
diff --git a/third_party/blink/renderer/devtools/front_end/ui/tooltip.css b/third_party/blink/renderer/devtools/front_end/ui/tooltip.css
index e1440b9..a0ad022 100644
--- a/third_party/blink/renderer/devtools/front_end/ui/tooltip.css
+++ b/third_party/blink/renderer/devtools/front_end/ui/tooltip.css
@@ -25,6 +25,7 @@
     opacity: 0;
     text-overflow: ellipsis;
     overflow: hidden;
+    pointer-events: none;
 }
 
 .tooltip-breakword {
diff --git a/third_party/blink/renderer/modules/animationworklet/animation_worklet_global_scope_test.cc b/third_party/blink/renderer/modules/animationworklet/animation_worklet_global_scope_test.cc
index b84acc8..85833ca 100644
--- a/third_party/blink/renderer/modules/animationworklet/animation_worklet_global_scope_test.cc
+++ b/third_party/blink/renderer/modules/animationworklet/animation_worklet_global_scope_test.cc
@@ -85,9 +85,9 @@
     thread->Start(
         std::make_unique<GlobalScopeCreationParams>(
             document->Url(), ScriptType::kModule, document->UserAgent(),
-            nullptr /* content_security_policy_parsed_headers */,
-            document->GetReferrerPolicy(), document->GetSecurityOrigin(),
-            document->IsSecureContext(), clients, document->AddressSpace(),
+            Vector<CSPHeaderAndType>(), document->GetReferrerPolicy(),
+            document->GetSecurityOrigin(), document->IsSecureContext(), clients,
+            document->AddressSpace(),
             OriginTrialContext::GetTokens(document).get(),
             base::UnguessableToken::Create(), nullptr /* worker_settings */,
             kV8CacheOptionsDefault, new WorkletModuleResponsesMap),
diff --git a/third_party/blink/renderer/modules/animationworklet/animation_worklet_thread_test.cc b/third_party/blink/renderer/modules/animationworklet/animation_worklet_thread_test.cc
index 6211e6af..2d9fd362e 100644
--- a/third_party/blink/renderer/modules/animationworklet/animation_worklet_thread_test.cc
+++ b/third_party/blink/renderer/modules/animationworklet/animation_worklet_thread_test.cc
@@ -87,9 +87,9 @@
     thread->Start(
         std::make_unique<GlobalScopeCreationParams>(
             document->Url(), ScriptType::kModule, document->UserAgent(),
-            nullptr /* content_security_policy_parsed_headers */,
-            document->GetReferrerPolicy(), document->GetSecurityOrigin(),
-            document->IsSecureContext(), clients, document->AddressSpace(),
+            Vector<CSPHeaderAndType>(), document->GetReferrerPolicy(),
+            document->GetSecurityOrigin(), document->IsSecureContext(), clients,
+            document->AddressSpace(),
             OriginTrialContext::GetTokens(document).get(),
             base::UnguessableToken::Create(), nullptr /* worker_settings */,
             kV8CacheOptionsDefault, new WorkletModuleResponsesMap),
diff --git a/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope_proxy.cc b/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope_proxy.cc
index 4590f91c..c669e66 100644
--- a/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope_proxy.cc
+++ b/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope_proxy.cc
@@ -43,7 +43,7 @@
 
   auto creation_params = std::make_unique<GlobalScopeCreationParams>(
       document->Url(), ScriptType::kModule, document->UserAgent(),
-      document->GetContentSecurityPolicy()->Headers().get(),
+      document->GetContentSecurityPolicy()->Headers(),
       document->GetReferrerPolicy(), document->GetSecurityOrigin(),
       document->IsSecureContext(), worker_clients, document->AddressSpace(),
       OriginTrialContext::GetTokens(document).get(),
diff --git a/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc b/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc
index 63b9b51..617b147 100644
--- a/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc
+++ b/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc
@@ -370,7 +370,7 @@
     global_scope_creation_params = std::make_unique<GlobalScopeCreationParams>(
         worker_start_data_.script_url, script_type,
         worker_start_data_.user_agent,
-        document->GetContentSecurityPolicy()->Headers().get(),
+        document->GetContentSecurityPolicy()->Headers(),
         document->GetReferrerPolicy(), starter_origin, starter_secure_context,
         worker_clients, main_script_loader_->ResponseAddressSpace(),
         main_script_loader_->OriginTrialTokens(), devtools_worker_token_,
@@ -387,7 +387,7 @@
     // script.
     global_scope_creation_params = std::make_unique<GlobalScopeCreationParams>(
         worker_start_data_.script_url, script_type,
-        worker_start_data_.user_agent, nullptr /* ContentSecurityPolicy */,
+        worker_start_data_.user_agent, Vector<CSPHeaderAndType>(),
         kReferrerPolicyDefault, starter_origin, starter_secure_context,
         worker_clients, worker_start_data_.address_space,
         nullptr /* OriginTrialTokens */, devtools_worker_token_,
diff --git a/third_party/blink/renderer/modules/modules_idl_files.gni b/third_party/blink/renderer/modules/modules_idl_files.gni
index e20c9263..ec5674b 100644
--- a/third_party/blink/renderer/modules/modules_idl_files.gni
+++ b/third_party/blink/renderer/modules/modules_idl_files.gni
@@ -425,6 +425,7 @@
           "xr/xr_device.idl",
           "xr/xr_device_pose.idl",
           "xr/xr_frame_of_reference.idl",
+          "xr/xr_hit_result.idl",
           "xr/xr_input_pose.idl",
           "xr/xr_input_source.idl",
           "xr/xr_input_source_event.idl",
diff --git a/third_party/blink/renderer/modules/serviceworkers/service_worker_global_scope.cc b/third_party/blink/renderer/modules/serviceworkers/service_worker_global_scope.cc
index 3779f88..385208f 100644
--- a/third_party/blink/renderer/modules/serviceworkers/service_worker_global_scope.cc
+++ b/third_party/blink/renderer/modules/serviceworkers/service_worker_global_scope.cc
@@ -84,7 +84,7 @@
           creation_params->script_url)) {
     // CSP headers, referrer policy, and origin trial tokens will be provided by
     // the InstalledScriptsManager in EvaluateClassicScript().
-    DCHECK(creation_params->content_security_policy_parsed_headers->IsEmpty());
+    DCHECK(creation_params->content_security_policy_parsed_headers.IsEmpty());
     DCHECK_EQ(kReferrerPolicyDefault, creation_params->referrer_policy);
     DCHECK(creation_params->origin_trial_tokens->IsEmpty());
   }
diff --git a/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc b/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc
index abe4cb2..59e564d 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc
@@ -70,10 +70,9 @@
     thread->Start(
         std::make_unique<GlobalScopeCreationParams>(
             document->Url(), ScriptType::kModule, document->UserAgent(),
-            nullptr /* content_security_policy_parsed_headers */,
-            document->GetReferrerPolicy(), document->GetSecurityOrigin(),
-            document->IsSecureContext(), nullptr /* worker_clients */,
-            document->AddressSpace(),
+            Vector<CSPHeaderAndType>(), document->GetReferrerPolicy(),
+            document->GetSecurityOrigin(), document->IsSecureContext(),
+            nullptr /* worker_clients */, document->AddressSpace(),
             OriginTrialContext::GetTokens(document).get(),
             base::UnguessableToken::Create(), nullptr /* worker_settings */,
             kV8CacheOptionsDefault, new WorkletModuleResponsesMap),
diff --git a/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc b/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc
index 02f9cd9..060c0164 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc
@@ -54,10 +54,9 @@
     thread->Start(
         std::make_unique<GlobalScopeCreationParams>(
             document->Url(), ScriptType::kModule, document->UserAgent(),
-            nullptr /* content_security_policy_parsed_headers */,
-            document->GetReferrerPolicy(), document->GetSecurityOrigin(),
-            document->IsSecureContext(), nullptr /* worker_clients */,
-            document->AddressSpace(),
+            Vector<CSPHeaderAndType>(), document->GetReferrerPolicy(),
+            document->GetSecurityOrigin(), document->IsSecureContext(),
+            nullptr /* worker_clients */, document->AddressSpace(),
             OriginTrialContext::GetTokens(document).get(),
             base::UnguessableToken::Create(), nullptr /* worker_settings */,
             kV8CacheOptionsDefault, new WorkletModuleResponsesMap),
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
index 1d5c925..3b5f110 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
@@ -1531,18 +1531,18 @@
   canvas()->ClearCopiedImage();
   marked_canvas_dirty_ = false;
 
-  if (!canvas()->GetOrCreateCanvasResourceProviderForWebGL())
+  if (!canvas()->GetOrCreateCanvasResourceProvider())
     return false;
 
-  if (!canvas()->GetOrCreateCanvasResourceProviderForWebGL()->IsAccelerated())
+  if (!canvas()->ResourceProvider()->IsAccelerated())
     return false;
 
   ScopedTexture2DRestorer restorer(this);
   ScopedFramebufferRestorer fbo_restorer(this);
 
   GetDrawingBuffer()->ResolveAndBindForReadAndDraw();
-  if (!CopyRenderingResultsFromDrawingBuffer(
-          canvas()->ResourceProviderForWebGL(), source_buffer)) {
+  if (!CopyRenderingResultsFromDrawingBuffer(canvas()->ResourceProvider(),
+                                             source_buffer)) {
     // Currently, copyRenderingResultsFromDrawingBuffer is expected to always
     // succeed because cases where canvas()-buffer() is not accelerated are
     // handle before reaching this point.  If that assumption ever stops holding
diff --git a/third_party/blink/renderer/modules/xr/BUILD.gn b/third_party/blink/renderer/modules/xr/BUILD.gn
index 0bd7b46..4bb0c5f2 100644
--- a/third_party/blink/renderer/modules/xr/BUILD.gn
+++ b/third_party/blink/renderer/modules/xr/BUILD.gn
@@ -22,6 +22,8 @@
     "xr_frame_provider.h",
     "xr_frame_request_callback_collection.cc",
     "xr_frame_request_callback_collection.h",
+    "xr_hit_result.cc",
+    "xr_hit_result.h",
     "xr_input_pose.cc",
     "xr_input_pose.h",
     "xr_input_source.cc",
diff --git a/third_party/blink/renderer/modules/xr/xr_hit_result.cc b/third_party/blink/renderer/modules/xr/xr_hit_result.cc
new file mode 100644
index 0000000..004c50a
--- /dev/null
+++ b/third_party/blink/renderer/modules/xr/xr_hit_result.cc
@@ -0,0 +1,25 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/modules/xr/xr_hit_result.h"
+
+#include "third_party/blink/renderer/modules/xr/xr_utils.h"
+#include "third_party/blink/renderer/platform/transforms/transformation_matrix.h"
+
+namespace blink {
+XRHitResult::XRHitResult(std::unique_ptr<TransformationMatrix> hit_transform)
+    : hit_transform_(std::move(hit_transform)) {}
+
+XRHitResult::~XRHitResult() {}
+
+DOMFloat32Array* XRHitResult::hitMatrix() const {
+  if (!hit_transform_)
+    return nullptr;
+  // TODO(https://crbug.com/845296): rename
+  // transformationMatrixToFloat32Array() to
+  // TransformationMatrixToDOMFloat32Array().
+  return transformationMatrixToFloat32Array(*hit_transform_);
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/modules/xr/xr_hit_result.h b/third_party/blink/renderer/modules/xr/xr_hit_result.h
new file mode 100644
index 0000000..27d8dce
--- /dev/null
+++ b/third_party/blink/renderer/modules/xr/xr_hit_result.h
@@ -0,0 +1,29 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_HIT_RESULT_H_
+#define THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_HIT_RESULT_H_
+
+#include "third_party/blink/renderer/core/typed_arrays/dom_typed_array.h"
+
+namespace blink {
+
+class TransformationMatrix;
+
+class XRHitResult final : public ScriptWrappable {
+  DEFINE_WRAPPERTYPEINFO();
+
+ public:
+  explicit XRHitResult(std::unique_ptr<TransformationMatrix>);
+  ~XRHitResult() override;
+
+  DOMFloat32Array* hitMatrix() const;
+
+ private:
+  const std::unique_ptr<TransformationMatrix> hit_transform_;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_HIT_RESULT_H_
diff --git a/third_party/blink/renderer/modules/xr/xr_hit_result.idl b/third_party/blink/renderer/modules/xr/xr_hit_result.idl
new file mode 100644
index 0000000..de430e69
--- /dev/null
+++ b/third_party/blink/renderer/modules/xr/xr_hit_result.idl
@@ -0,0 +1,7 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[RuntimeEnabled=WebXRHitTest, SecureContext, Exposed=Window] interface XRHitResult {
+  readonly attribute Float32Array hitMatrix;
+};
\ No newline at end of file
diff --git a/third_party/blink/renderer/modules/xr/xr_session.cc b/third_party/blink/renderer/modules/xr/xr_session.cc
index 4849e4c..813e49675 100644
--- a/third_party/blink/renderer/modules/xr/xr_session.cc
+++ b/third_party/blink/renderer/modules/xr/xr_session.cc
@@ -22,12 +22,14 @@
 #include "third_party/blink/renderer/modules/xr/xr_frame_of_reference.h"
 #include "third_party/blink/renderer/modules/xr/xr_frame_of_reference_options.h"
 #include "third_party/blink/renderer/modules/xr/xr_frame_provider.h"
+#include "third_party/blink/renderer/modules/xr/xr_hit_result.h"
 #include "third_party/blink/renderer/modules/xr/xr_input_source_event.h"
 #include "third_party/blink/renderer/modules/xr/xr_layer.h"
 #include "third_party/blink/renderer/modules/xr/xr_presentation_context.h"
 #include "third_party/blink/renderer/modules/xr/xr_presentation_frame.h"
 #include "third_party/blink/renderer/modules/xr/xr_session_event.h"
 #include "third_party/blink/renderer/modules/xr/xr_view.h"
+#include "third_party/blink/renderer/platform/transforms/transformation_matrix.h"
 
 namespace blink {
 
@@ -245,6 +247,79 @@
   return source_array;
 }
 
+ScriptPromise XRSession::requestHitTest(ScriptState* script_state,
+                                        NotShared<DOMFloat32Array> origin,
+                                        NotShared<DOMFloat32Array> direction,
+                                        XRCoordinateSystem* coordinate_system) {
+  if (ended_) {
+    return ScriptPromise::RejectWithDOMException(
+        script_state, DOMException::Create(kInvalidStateError, kSessionEnded));
+  }
+
+  if (!coordinate_system) {
+    return ScriptPromise::Reject(
+        script_state, V8ThrowException::CreateTypeError(
+                          script_state->GetIsolate(),
+                          "The coordinateSystem parameter is empty."));
+  }
+
+  if (origin.View()->length() != 3 || direction.View()->length() != 3) {
+    return ScriptPromise::RejectWithDOMException(
+        script_state, DOMException::Create(kNotSupportedError, "Invalid ray!"));
+  }
+
+  // TODO(https://crbug.com/846411): use coordinate_system.
+
+  // TODO(https://crbug.com/843376): Reject the promise if device doesn't
+  // support the hit-test API.
+
+  device::mojom::blink::XRRayPtr ray = device::mojom::blink::XRRay::New();
+  ray->origin.resize(3);
+  ray->origin[0] = origin.View()->Data()[0];
+  ray->origin[1] = origin.View()->Data()[1];
+  ray->origin[2] = origin.View()->Data()[2];
+  ray->direction.resize(3);
+  ray->direction[0] = direction.View()->Data()[0];
+  ray->direction[1] = direction.View()->Data()[1];
+  ray->direction[2] = direction.View()->Data()[2];
+
+  ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state);
+  ScriptPromise promise = resolver->Promise();
+
+  // TODO(https://crbug.com/845520): Promise should be rejected if session
+  // is deleted.
+  device_->xrMagicWindowProviderPtr()->RequestHitTest(
+      std::move(ray),
+      WTF::Bind(&XRSession::OnHitTestResults, WrapWeakPersistent(this),
+                WrapPersistent(resolver)));
+
+  return promise;
+}
+
+void XRSession::OnHitTestResults(
+    ScriptPromiseResolver* resolver,
+    base::Optional<WTF::Vector<device::mojom::blink::XRHitResultPtr>> results) {
+  if (!results) {
+    resolver->Reject();
+    return;
+  }
+
+  HeapVector<Member<XRHitResult>> hit_results;
+  for (const auto& mojom_result : results.value()) {
+    XRHitResult* hit_result = new XRHitResult(TransformationMatrix::Create(
+        mojom_result->hit_matrix[0], mojom_result->hit_matrix[1],
+        mojom_result->hit_matrix[2], mojom_result->hit_matrix[3],
+        mojom_result->hit_matrix[4], mojom_result->hit_matrix[5],
+        mojom_result->hit_matrix[6], mojom_result->hit_matrix[7],
+        mojom_result->hit_matrix[8], mojom_result->hit_matrix[9],
+        mojom_result->hit_matrix[10], mojom_result->hit_matrix[11],
+        mojom_result->hit_matrix[12], mojom_result->hit_matrix[13],
+        mojom_result->hit_matrix[14], mojom_result->hit_matrix[15]));
+    hit_results.push_back(hit_result);
+  }
+  resolver->Resolve(hit_results);
+}
+
 ScriptPromise XRSession::end(ScriptState* script_state) {
   // Don't allow a session to end twice.
   if (ended_) {
diff --git a/third_party/blink/renderer/modules/xr/xr_session.h b/third_party/blink/renderer/modules/xr/xr_session.h
index 7cb0c30..cc78888 100644
--- a/third_party/blink/renderer/modules/xr/xr_session.h
+++ b/third_party/blink/renderer/modules/xr/xr_session.h
@@ -9,6 +9,8 @@
 #include "mojo/public/cpp/bindings/binding.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
 #include "third_party/blink/renderer/core/dom/events/event_target.h"
+#include "third_party/blink/renderer/core/typed_arrays/array_buffer_view_helpers.h"
+#include "third_party/blink/renderer/core/typed_arrays/dom_typed_array.h"
 #include "third_party/blink/renderer/modules/xr/xr_frame_request_callback_collection.h"
 #include "third_party/blink/renderer/modules/xr/xr_input_source.h"
 #include "third_party/blink/renderer/platform/bindings/trace_wrapper_member.h"
@@ -21,8 +23,10 @@
 
 class Element;
 class ResizeObserver;
+class ScriptPromiseResolver;
 class V8XRFrameRequestCallback;
 class XRCanvasInputProvider;
+class XRCoordinateSystem;
 class XRDevice;
 class XRFrameOfReferenceOptions;
 class XRInputSourceEvent;
@@ -73,6 +77,11 @@
 
   HeapVector<Member<XRInputSource>> getInputSources() const;
 
+  ScriptPromise requestHitTest(ScriptState* script_state,
+                               NotShared<DOMFloat32Array> origin,
+                               NotShared<DOMFloat32Array> direction,
+                               XRCoordinateSystem* coordinate_system);
+
   // Called by JavaScript to manually end the session.
   ScriptPromise end(ScriptState*);
 
@@ -139,6 +148,11 @@
   void OnBlur();
   bool HasAppropriateFocus();
 
+  void OnHitTestResults(
+      ScriptPromiseResolver* resolver,
+      base::Optional<WTF::Vector<device::mojom::blink::XRHitResultPtr>>
+          results);
+
   const Member<XRDevice> device_;
   const bool exclusive_;
   const Member<XRPresentationContext> output_context_;
diff --git a/third_party/blink/renderer/modules/xr/xr_session.idl b/third_party/blink/renderer/modules/xr/xr_session.idl
index d9baba1..c1ddfbd 100644
--- a/third_party/blink/renderer/modules/xr/xr_session.idl
+++ b/third_party/blink/renderer/modules/xr/xr_session.idl
@@ -28,5 +28,7 @@
 
   [MeasureAs=XRSessionGetInputSources] FrozenArray<XRInputSource> getInputSources();
 
+  [RuntimeEnabled=WebXRHitTest, CallWith=ScriptState] Promise<FrozenArray<XRHitResult>> requestHitTest(Float32Array origin, Float32Array direction, XRCoordinateSystem coordinateSystem);
+
   [CallWith=ScriptState] Promise<void> end();
 };
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
index 4e7d323..7d5ae18 100644
--- a/third_party/blink/renderer/platform/BUILD.gn
+++ b/third_party/blink/renderer/platform/BUILD.gn
@@ -190,7 +190,6 @@
     "//gpu/command_buffer/client:client",
     "//gpu/command_buffer/client:gles2_interface",
     "//gpu/command_buffer/common:common",
-    "//media",
     "//net",
     "//services/device/public/mojom:generic_sensor_blink",
     "//services/device/public/mojom:mojom_blink",
@@ -818,6 +817,7 @@
     "graphics/canvas_metrics.h",
     "graphics/canvas_resource.cc",
     "graphics/canvas_resource.h",
+    "graphics/canvas_resource_host.cc",
     "graphics/canvas_resource_host.h",
     "graphics/canvas_resource_provider.cc",
     "graphics/canvas_resource_provider.h",
@@ -1524,9 +1524,11 @@
   deps = [
     ":platform_export",
     "//base/allocator:buildflags",
-    "//components/viz/service",
+    "//components/viz/client",
+    "//components/viz/common",
     "//device/vr/public/mojom:mojom_blink",
     "//gin",
+    "//media",
     "//mojo/public/cpp/base",
     "//mojo/public/cpp/bindings",
     "//mojo/public/cpp/bindings:wtf_support",
@@ -2223,6 +2225,7 @@
     "graphics/image_frame_generator_test.cc",
     "graphics/image_layer_chromium_test.cc",
     "graphics/offscreen_canvas_frame_dispatcher_test.cc",
+    "graphics/test/fake_canvas_resource_host.h",
     "graphics/test/fake_gles2_interface.h",
     "graphics/test/fake_scrollable_area.h",
     "graphics/test/fake_web_graphics_context_3d_provider.h",
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
index 9f28fee..7e7cde73 100644
--- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
+++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
@@ -520,8 +520,8 @@
   RuntimeEnabledFeatures::SetExperimentalProductivityFeaturesEnabled(enable);
 }
 
-void WebRuntimeFeatures::EnableDisplayCutoutViewportFit(bool enable) {
-  RuntimeEnabledFeatures::SetDisplayCutoutViewportFitEnabled(enable);
+void WebRuntimeFeatures::EnableDisplayCutoutAPI(bool enable) {
+  RuntimeEnabledFeatures::SetDisplayCutoutAPIEnabled(enable);
 }
 
 void WebRuntimeFeatures::EnableAutoplayIgnoresWebAudio(bool enable) {
diff --git a/third_party/blink/renderer/platform/geometry/float_polygon.cc b/third_party/blink/renderer/platform/geometry/float_polygon.cc
index 2b34861..eacb6ba0 100644
--- a/third_party/blink/renderer/platform/geometry/float_polygon.cc
+++ b/third_party/blink/renderer/platform/geometry/float_polygon.cc
@@ -85,7 +85,7 @@
   return vertex_index2;
 }
 
-FloatPolygon::FloatPolygon(std::unique_ptr<Vector<FloatPoint>> vertices)
+FloatPolygon::FloatPolygon(Vector<FloatPoint> vertices)
     : vertices_(std::move(vertices)) {
   unsigned n_vertices = NumberOfVertices();
   edges_.resize(n_vertices);
diff --git a/third_party/blink/renderer/platform/geometry/float_polygon.h b/third_party/blink/renderer/platform/geometry/float_polygon.h
index d478d96..87ac5353 100644
--- a/third_party/blink/renderer/platform/geometry/float_polygon.h
+++ b/third_party/blink/renderer/platform/geometry/float_polygon.h
@@ -30,7 +30,6 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GEOMETRY_FLOAT_POLYGON_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GEOMETRY_FLOAT_POLYGON_H_
 
-#include <memory>
 #include "third_party/blink/renderer/platform/geometry/float_point.h"
 #include "third_party/blink/renderer/platform/geometry/float_rect.h"
 #include "third_party/blink/renderer/platform/pod_interval_tree.h"
@@ -52,12 +51,10 @@
   WTF_MAKE_NONCOPYABLE(FloatPolygon);
 
  public:
-  explicit FloatPolygon(std::unique_ptr<Vector<FloatPoint>> vertices);
+  explicit FloatPolygon(Vector<FloatPoint> vertices);
 
-  const FloatPoint& VertexAt(unsigned index) const {
-    return (*vertices_)[index];
-  }
-  unsigned NumberOfVertices() const { return vertices_->size(); }
+  const FloatPoint& VertexAt(unsigned index) const { return vertices_[index]; }
+  unsigned NumberOfVertices() const { return vertices_.size(); }
 
   const FloatPolygonEdge& EdgeAt(unsigned index) const { return edges_[index]; }
   unsigned NumberOfEdges() const { return edges_.size(); }
@@ -74,7 +71,7 @@
   typedef PODInterval<float, FloatPolygonEdge*> EdgeInterval;
   typedef PODIntervalTree<float, FloatPolygonEdge*> EdgeIntervalTree;
 
-  std::unique_ptr<Vector<FloatPoint>> vertices_;
+  Vector<FloatPoint> vertices_;
   FloatRect bounding_box_;
   bool empty_;
   Vector<FloatPolygonEdge> edges_;
diff --git a/third_party/blink/renderer/platform/geometry/float_polygon_test.cc b/third_party/blink/renderer/platform/geometry/float_polygon_test.cc
index c15f0c99..03aac2d3b 100644
--- a/third_party/blink/renderer/platform/geometry/float_polygon_test.cc
+++ b/third_party/blink/renderer/platform/geometry/float_polygon_test.cc
@@ -41,10 +41,9 @@
  public:
   FloatPolygonTestValue(const float* coordinates, unsigned coordinates_length) {
     DCHECK(!(coordinates_length % 2));
-    std::unique_ptr<Vector<FloatPoint>> vertices =
-        std::make_unique<Vector<FloatPoint>>(coordinates_length / 2);
+    Vector<FloatPoint> vertices(coordinates_length / 2);
     for (unsigned i = 0; i < coordinates_length; i += 2)
-      (*vertices)[i / 2] = FloatPoint(coordinates[i], coordinates[i + 1]);
+      vertices[i / 2] = FloatPoint(coordinates[i], coordinates[i + 1]);
     polygon_ = std::make_unique<FloatPolygon>(std::move(vertices));
   }
 
diff --git a/third_party/blink/renderer/platform/graphics/DEPS b/third_party/blink/renderer/platform/graphics/DEPS
index cdf93f1..d7291ed 100644
--- a/third_party/blink/renderer/platform/graphics/DEPS
+++ b/third_party/blink/renderer/platform/graphics/DEPS
@@ -16,6 +16,7 @@
     "+base/threading/thread.h",
     "+base/threading/thread_checker.h",
     "+cc",
+    "+components/viz/client",
     "+components/viz/common",
     "+components/viz/test/fake_external_begin_frame_source.h",
     "+gpu/config",
@@ -27,6 +28,7 @@
     "+gpu/command_buffer/common/sync_token.h",
     "+media/base/media_switches.h",
     "+media/base/video_frame.h",
+    "+media/renderers/video_resource_updater.h",
     "+services/viz/public/interfaces",
     "+third_party/blink/renderer/platform/animation",
     "+third_party/blink/renderer/platform/bindings/runtime_call_stats.h",
diff --git a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h
index d9eba20..7f2b2c4 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h
+++ b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h
@@ -28,6 +28,7 @@
 
 #include <memory>
 
+#include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "build/build_config.h"
@@ -42,7 +43,6 @@
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/checked_numeric.h"
 #include "third_party/blink/renderer/platform/wtf/deque.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/ref_counted.h"
 #include "third_party/khronos/GLES2/gl2.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
@@ -74,7 +74,6 @@
 #define CANVAS2D_BACKGROUND_RENDER_SWITCH_TO_CPU 0
 
 class PLATFORM_EXPORT Canvas2DLayerBridge : public cc::TextureLayerClient {
-  WTF_MAKE_NONCOPYABLE(Canvas2DLayerBridge);
 
  public:
   enum AccelerationMode {
@@ -220,6 +219,8 @@
   CanvasResourceHost* resource_host_;
 
   base::WeakPtrFactory<Canvas2DLayerBridge> weak_ptr_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(Canvas2DLayerBridge);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge_test.cc b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge_test.cc
index 0dc24d3a..745135b 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge_test.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge_test.cc
@@ -49,6 +49,7 @@
 #include "third_party/blink/renderer/platform/graphics/gpu/shared_gpu_context.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_flags.h"
 #include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
+#include "third_party/blink/renderer/platform/graphics/test/fake_canvas_resource_host.h"
 #include "third_party/blink/renderer/platform/graphics/test/fake_gles2_interface.h"
 #include "third_party/blink/renderer/platform/graphics/test/fake_web_graphics_context_3d_provider.h"
 #include "third_party/blink/renderer/platform/graphics/web_graphics_context_3d_provider_wrapper.h"
@@ -74,28 +75,6 @@
 
 namespace {
 
-class Canvas2DLayerBridgePtr {
- public:
-  Canvas2DLayerBridgePtr() = default;
-  Canvas2DLayerBridgePtr(std::unique_ptr<Canvas2DLayerBridge> layer_bridge)
-      : layer_bridge_(std::move(layer_bridge)) {}
-
-  ~Canvas2DLayerBridgePtr() { Clear(); }
-
-  void Clear() { layer_bridge_.reset(); }
-
-  void operator=(std::unique_ptr<Canvas2DLayerBridge> layer_bridge) {
-    DCHECK(!layer_bridge_);  // Existing ref must be removed with Clear()
-    layer_bridge_ = std::move(layer_bridge);
-  }
-
-  Canvas2DLayerBridge* operator->() { return layer_bridge_.get(); }
-  Canvas2DLayerBridge* Get() { return layer_bridge_.get(); }
-
- private:
-  std::unique_ptr<Canvas2DLayerBridge> layer_bridge_;
-};
-
 class MockGLES2InterfaceWithImageSupport : public FakeGLES2Interface {
  public:
   MOCK_METHOD0(Flush, void());
@@ -172,11 +151,13 @@
  public:
   std::unique_ptr<Canvas2DLayerBridge> MakeBridge(
       const IntSize& size,
-      Canvas2DLayerBridge::AccelerationMode acceleration_mode) {
+      Canvas2DLayerBridge::AccelerationMode acceleration_mode,
+      const CanvasColorParams& color_params) {
     std::unique_ptr<Canvas2DLayerBridge> bridge =
         std::make_unique<Canvas2DLayerBridge>(size, 0, acceleration_mode,
-                                              CanvasColorParams());
+                                              color_params);
     bridge->DontUseIdleSchedulingForTesting();
+    bridge->SetCanvasResourceHost(&host_);
     return bridge;
   }
   void SetUp() override {
@@ -194,258 +175,219 @@
  protected:
   MockGLES2InterfaceWithImageSupport gl_;
   ImageTrackingDecodeCache image_decode_cache_;
-
-  void FullLifecycleTest() {
-    Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-        IntSize(300, 150), 0, Canvas2DLayerBridge::kDisableAcceleration,
-        CanvasColorParams()));
-
-    GrBackendTexture backend_texture =
-        bridge->NewImageSnapshot(kPreferAcceleration)
-            ->PaintImageForCurrentFrame()
-            .GetSkImage()
-            ->getBackendTexture(true);
-
-    EXPECT_FALSE(backend_texture.isValid());
-    bridge.Clear();
-  }
-
-  void FallbackToSoftwareIfContextLost() {
-    gl_.SetIsContextLost(true);
-    Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-        IntSize(300, 150), 0, Canvas2DLayerBridge::kEnableAcceleration,
-        CanvasColorParams()));
-    EXPECT_TRUE(bridge->IsValid());
-    EXPECT_FALSE(bridge->IsAccelerated());
-  }
-
-  void FallbackToSoftwareOnFailedTextureAlloc() {
-    {
-      // No fallback case.
-      Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-          IntSize(300, 150), 0, Canvas2DLayerBridge::kEnableAcceleration,
-          CanvasColorParams()));
-      EXPECT_TRUE(bridge->IsValid());
-      EXPECT_TRUE(bridge->IsAccelerated());
-      scoped_refptr<StaticBitmapImage> snapshot =
-          bridge->NewImageSnapshot(kPreferAcceleration);
-      EXPECT_TRUE(bridge->IsAccelerated());
-      EXPECT_TRUE(snapshot->IsTextureBacked());
-    }
-
-    {
-      // Fallback case.
-      GrContext* gr = SharedGpuContext::ContextProviderWrapper()
-                          ->ContextProvider()
-                          ->GetGrContext();
-      Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-          IntSize(300, 150), 0, Canvas2DLayerBridge::kEnableAcceleration,
-          CanvasColorParams()));
-      EXPECT_TRUE(bridge->IsValid());
-      EXPECT_TRUE(bridge->IsAccelerated());  // We don't yet know that
-                                             // allocation will fail.
-      // This will cause SkSurface_Gpu creation to fail without
-      // Canvas2DLayerBridge otherwise detecting that anything was disabled.
-      gr->abandonContext();
-      scoped_refptr<StaticBitmapImage> snapshot =
-          bridge->NewImageSnapshot(kPreferAcceleration);
-      EXPECT_FALSE(bridge->IsAccelerated());
-      EXPECT_FALSE(snapshot->IsTextureBacked());
-    }
-  }
-
-  void NoDrawOnContextLostTest() {
-    Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-        IntSize(300, 150), 0, Canvas2DLayerBridge::kForceAccelerationForTesting,
-        CanvasColorParams()));
-    EXPECT_TRUE(bridge->IsValid());
-    PaintFlags flags;
-    uint32_t gen_id = bridge->GetOrCreateResourceProvider()->ContentUniqueID();
-    bridge->Canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), flags);
-    EXPECT_EQ(gen_id, bridge->GetOrCreateResourceProvider()->ContentUniqueID());
-    gl_.SetIsContextLost(true);
-    EXPECT_EQ(gen_id, bridge->GetOrCreateResourceProvider()->ContentUniqueID());
-    bridge->Canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), flags);
-    EXPECT_EQ(gen_id, bridge->GetOrCreateResourceProvider()->ContentUniqueID());
-    // This results in the internal surface being torn down in response to the
-    // context loss.
-    EXPECT_FALSE(bridge->IsValid());
-    EXPECT_EQ(nullptr, bridge->GetOrCreateResourceProvider());
-    // The following passes by not crashing
-    bridge->Canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), flags);
-    bridge->NewImageSnapshot(kPreferAcceleration);
-  }
-
-  void PrepareMailboxWhenContextIsLost() {
-    Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-        IntSize(300, 150), 0, Canvas2DLayerBridge::kForceAccelerationForTesting,
-        CanvasColorParams()));
-
-    EXPECT_TRUE(bridge->IsAccelerated());
-    bridge->FinalizeFrame();  // Trigger the creation of a backing store
-    // When the context is lost we are not sure if we should still be producing
-    // GL frames for the compositor or not, so fail to generate frames.
-    gl_.SetIsContextLost(true);
-
-    viz::TransferableResource resource;
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback;
-    EXPECT_FALSE(bridge->PrepareTransferableResource(nullptr, &resource,
-                                                     &release_callback));
-  }
-
-  void PrepareMailboxWhenContextIsLostWithFailedRestore() {
-    Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-        IntSize(300, 150), 0, Canvas2DLayerBridge::kForceAccelerationForTesting,
-        CanvasColorParams()));
-
-    bridge->GetOrCreateResourceProvider();
-    EXPECT_TRUE(bridge->IsValid());
-    // When the context is lost we are not sure if we should still be producing
-    // GL frames for the compositor or not, so fail to generate frames.
-    gl_.SetIsContextLost(true);
-    EXPECT_FALSE(bridge->IsValid());
-
-    // Restoration will fail because
-    // Platform::createSharedOffscreenGraphicsContext3DProvider() is stubbed
-    // in unit tests.  This simulates what would happen when attempting to
-    // restore while the GPU process is down.
-    bridge->Restore();
-
-    viz::TransferableResource resource;
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback;
-    EXPECT_FALSE(bridge->PrepareTransferableResource(nullptr, &resource,
-                                                     &release_callback));
-  }
-
-  void ReleaseCallbackWithNullContextProviderWrapperTest() {
-    viz::TransferableResource resource;
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback;
-
-    {
-      Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-          IntSize(300, 150), 0,
-          Canvas2DLayerBridge::kForceAccelerationForTesting,
-          CanvasColorParams()));
-      bridge->FinalizeFrame();
-      EXPECT_TRUE(bridge->PrepareTransferableResource(nullptr, &resource,
-                                                      &release_callback));
-    }
-
-    bool lost_resource = true;
-    gl_.SetIsContextLost(true);
-    // Get a new context provider so that the WeakPtr to the old one is null.
-    // This is the test to make sure that ReleaseMailboxImageResource() handles
-    // null context_provider_wrapper properly.
-    SharedGpuContext::ContextProviderWrapper();
-    release_callback->Run(gpu::SyncToken(), lost_resource);
-  }
-
-  void PrepareMailboxAndLoseResourceTest() {
-    // Prepare a mailbox, then report the resource as lost.
-    // This test passes by not crashing and not triggering assertions.
-    {
-      Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-          IntSize(300, 150), 0,
-          Canvas2DLayerBridge::kForceAccelerationForTesting,
-          CanvasColorParams()));
-      bridge->FinalizeFrame();
-      viz::TransferableResource resource;
-      std::unique_ptr<viz::SingleReleaseCallback> release_callback;
-      EXPECT_TRUE(bridge->PrepareTransferableResource(nullptr, &resource,
-                                                      &release_callback));
-
-      bool lost_resource = true;
-      release_callback->Run(gpu::SyncToken(), lost_resource);
-    }
-
-    // Retry with mailbox released while bridge destruction is in progress.
-    {
-      viz::TransferableResource resource;
-      std::unique_ptr<viz::SingleReleaseCallback> release_callback;
-
-      {
-        Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-            IntSize(300, 150), 0,
-            Canvas2DLayerBridge::kForceAccelerationForTesting,
-            CanvasColorParams()));
-        bridge->FinalizeFrame();
-        bridge->PrepareTransferableResource(nullptr, &resource,
-                                            &release_callback);
-        // |bridge| goes out of scope and would normally be destroyed, but
-        // object is kept alive by self references.
-      }
-
-      // This should cause the bridge to be destroyed.
-      bool lost_resource = true;
-      // Before fixing crbug.com/411864, the following line would cause a memory
-      // use after free that sometimes caused a crash in normal builds and
-      // crashed consistently with ASAN.
-      release_callback->Run(gpu::SyncToken(), lost_resource);
-    }
-  }
-
-  void AccelerationHintTest() {
-    {
-      Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-          IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-          CanvasColorParams()));
-      PaintFlags flags;
-      bridge->Canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), flags);
-      scoped_refptr<StaticBitmapImage> image =
-          bridge->NewImageSnapshot(kPreferAcceleration);
-      EXPECT_TRUE(bridge->IsValid());
-      EXPECT_TRUE(bridge->IsAccelerated());
-    }
-
-    {
-      Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-          IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-          CanvasColorParams()));
-      PaintFlags flags;
-      bridge->Canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), flags);
-      scoped_refptr<StaticBitmapImage> image =
-          bridge->NewImageSnapshot(kPreferNoAcceleration);
-      EXPECT_TRUE(bridge->IsValid());
-      EXPECT_FALSE(bridge->IsAccelerated());
-    }
-  }
+  FakeCanvasResourceHost host_;
 };
 
 TEST_F(Canvas2DLayerBridgeTest, FullLifecycleSingleThreaded) {
-  FullLifecycleTest();
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 150), Canvas2DLayerBridge::kDisableAcceleration,
+                 CanvasColorParams());
+
+  GrBackendTexture backend_texture =
+      bridge->NewImageSnapshot(kPreferAcceleration)
+          ->PaintImageForCurrentFrame()
+          .GetSkImage()
+          ->getBackendTexture(true);
+
+  EXPECT_FALSE(backend_texture.isValid());
 }
 
 TEST_F(Canvas2DLayerBridgeTest, NoDrawOnContextLost) {
-  NoDrawOnContextLostTest();
+  std::unique_ptr<Canvas2DLayerBridge> bridge = MakeBridge(
+      IntSize(300, 150), Canvas2DLayerBridge::kForceAccelerationForTesting,
+      CanvasColorParams());
+  EXPECT_TRUE(bridge->IsValid());
+  PaintFlags flags;
+  uint32_t gen_id = bridge->GetOrCreateResourceProvider()->ContentUniqueID();
+  bridge->Canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), flags);
+  EXPECT_EQ(gen_id, bridge->GetOrCreateResourceProvider()->ContentUniqueID());
+  gl_.SetIsContextLost(true);
+  EXPECT_EQ(gen_id, bridge->GetOrCreateResourceProvider()->ContentUniqueID());
+  bridge->Canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), flags);
+  EXPECT_EQ(gen_id, bridge->GetOrCreateResourceProvider()->ContentUniqueID());
+  // This results in the internal surface being torn down in response to the
+  // context loss.
+  EXPECT_FALSE(bridge->IsValid());
+  EXPECT_EQ(nullptr, bridge->GetOrCreateResourceProvider());
+  // The following passes by not crashing
+  bridge->Canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), flags);
+  bridge->NewImageSnapshot(kPreferAcceleration);
 }
 
 TEST_F(Canvas2DLayerBridgeTest, PrepareMailboxWhenContextIsLost) {
-  PrepareMailboxWhenContextIsLost();
+  std::unique_ptr<Canvas2DLayerBridge> bridge = MakeBridge(
+      IntSize(300, 150), Canvas2DLayerBridge::kForceAccelerationForTesting,
+      CanvasColorParams());
+
+  EXPECT_TRUE(bridge->IsAccelerated());
+  bridge->FinalizeFrame();  // Trigger the creation of a backing store
+  // When the context is lost we are not sure if we should still be producing
+  // GL frames for the compositor or not, so fail to generate frames.
+  gl_.SetIsContextLost(true);
+
+  viz::TransferableResource resource;
+  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  EXPECT_FALSE(bridge->PrepareTransferableResource(nullptr, &resource,
+                                                   &release_callback));
 }
 
 TEST_F(Canvas2DLayerBridgeTest,
        PrepareMailboxWhenContextIsLostWithFailedRestore) {
-  PrepareMailboxWhenContextIsLostWithFailedRestore();
+  std::unique_ptr<Canvas2DLayerBridge> bridge = MakeBridge(
+      IntSize(300, 150), Canvas2DLayerBridge::kForceAccelerationForTesting,
+      CanvasColorParams());
+
+  bridge->GetOrCreateResourceProvider();
+  EXPECT_TRUE(bridge->IsValid());
+  // When the context is lost we are not sure if we should still be producing
+  // GL frames for the compositor or not, so fail to generate frames.
+  gl_.SetIsContextLost(true);
+  EXPECT_FALSE(bridge->IsValid());
+
+  // Restoration will fail because
+  // Platform::createSharedOffscreenGraphicsContext3DProvider() is stubbed
+  // in unit tests.  This simulates what would happen when attempting to
+  // restore while the GPU process is down.
+  bridge->Restore();
+
+  viz::TransferableResource resource;
+  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  EXPECT_FALSE(bridge->PrepareTransferableResource(nullptr, &resource,
+                                                   &release_callback));
 }
 
 TEST_F(Canvas2DLayerBridgeTest, PrepareMailboxAndLoseResource) {
-  PrepareMailboxAndLoseResourceTest();
+  // Prepare a mailbox, then report the resource as lost.
+  // This test passes by not crashing and not triggering assertions.
+  {
+    std::unique_ptr<Canvas2DLayerBridge> bridge = MakeBridge(
+        IntSize(300, 150), Canvas2DLayerBridge::kForceAccelerationForTesting,
+        CanvasColorParams());
+    bridge->FinalizeFrame();
+    viz::TransferableResource resource;
+    std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+    EXPECT_TRUE(bridge->PrepareTransferableResource(nullptr, &resource,
+                                                    &release_callback));
+
+    bool lost_resource = true;
+    release_callback->Run(gpu::SyncToken(), lost_resource);
+  }
+
+  // Retry with mailbox released while bridge destruction is in progress.
+  {
+    viz::TransferableResource resource;
+    std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+
+    {
+      std::unique_ptr<Canvas2DLayerBridge> bridge = MakeBridge(
+          IntSize(300, 150), Canvas2DLayerBridge::kForceAccelerationForTesting,
+          CanvasColorParams());
+      bridge->FinalizeFrame();
+      bridge->PrepareTransferableResource(nullptr, &resource,
+                                          &release_callback);
+      // |bridge| goes out of scope and would normally be destroyed, but
+      // object is kept alive by self references.
+    }
+
+    // This should cause the bridge to be destroyed.
+    bool lost_resource = true;
+    // Before fixing crbug.com/411864, the following line would cause a memory
+    // use after free that sometimes caused a crash in normal builds and
+    // crashed consistently with ASAN.
+    release_callback->Run(gpu::SyncToken(), lost_resource);
+  }
 }
 
 TEST_F(Canvas2DLayerBridgeTest, ReleaseCallbackWithNullContextProviderWrapper) {
-  ReleaseCallbackWithNullContextProviderWrapperTest();
+  viz::TransferableResource resource;
+  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+
+  {
+    std::unique_ptr<Canvas2DLayerBridge> bridge = MakeBridge(
+        IntSize(300, 150), Canvas2DLayerBridge::kForceAccelerationForTesting,
+        CanvasColorParams());
+    bridge->FinalizeFrame();
+    EXPECT_TRUE(bridge->PrepareTransferableResource(nullptr, &resource,
+                                                    &release_callback));
+  }
+
+  bool lost_resource = true;
+  gl_.SetIsContextLost(true);
+  // Get a new context provider so that the WeakPtr to the old one is null.
+  // This is the test to make sure that ReleaseMailboxImageResource() handles
+  // null context_provider_wrapper properly.
+  SharedGpuContext::ContextProviderWrapper();
+  release_callback->Run(gpu::SyncToken(), lost_resource);
 }
 
 TEST_F(Canvas2DLayerBridgeTest, AccelerationHint) {
-  AccelerationHintTest();
+  {
+    std::unique_ptr<Canvas2DLayerBridge> bridge =
+        MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                   CanvasColorParams());
+    PaintFlags flags;
+    bridge->Canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), flags);
+    scoped_refptr<StaticBitmapImage> image =
+        bridge->NewImageSnapshot(kPreferAcceleration);
+    EXPECT_TRUE(bridge->IsValid());
+    EXPECT_TRUE(bridge->IsAccelerated());
+  }
+
+  {
+    std::unique_ptr<Canvas2DLayerBridge> bridge =
+        MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                   CanvasColorParams());
+    PaintFlags flags;
+    bridge->Canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), flags);
+    scoped_refptr<StaticBitmapImage> image =
+        bridge->NewImageSnapshot(kPreferNoAcceleration);
+    EXPECT_TRUE(bridge->IsValid());
+    EXPECT_FALSE(bridge->IsAccelerated());
+  }
 }
 
 TEST_F(Canvas2DLayerBridgeTest, FallbackToSoftwareIfContextLost) {
-  FallbackToSoftwareIfContextLost();
+  gl_.SetIsContextLost(true);
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 150), Canvas2DLayerBridge::kEnableAcceleration,
+                 CanvasColorParams());
+  EXPECT_TRUE(bridge->IsValid());
+  EXPECT_FALSE(bridge->IsAccelerated());
 }
 
 TEST_F(Canvas2DLayerBridgeTest, FallbackToSoftwareOnFailedTextureAlloc) {
-  FallbackToSoftwareOnFailedTextureAlloc();
+  {
+    // No fallback case.
+    std::unique_ptr<Canvas2DLayerBridge> bridge =
+        MakeBridge(IntSize(300, 150), Canvas2DLayerBridge::kEnableAcceleration,
+                   CanvasColorParams());
+    EXPECT_TRUE(bridge->IsValid());
+    EXPECT_TRUE(bridge->IsAccelerated());
+    scoped_refptr<StaticBitmapImage> snapshot =
+        bridge->NewImageSnapshot(kPreferAcceleration);
+    EXPECT_TRUE(bridge->IsAccelerated());
+    EXPECT_TRUE(snapshot->IsTextureBacked());
+  }
+
+  {
+    // Fallback case.
+    GrContext* gr = SharedGpuContext::ContextProviderWrapper()
+                        ->ContextProvider()
+                        ->GetGrContext();
+    std::unique_ptr<Canvas2DLayerBridge> bridge =
+        MakeBridge(IntSize(300, 150), Canvas2DLayerBridge::kEnableAcceleration,
+                   CanvasColorParams());
+    EXPECT_TRUE(bridge->IsValid());
+    EXPECT_TRUE(bridge->IsAccelerated());  // We don't yet know that
+                                           // allocation will fail.
+    // This will cause SkSurface_Gpu creation to fail without
+    // Canvas2DLayerBridge otherwise detecting that anything was disabled.
+    gr->abandonContext();
+    scoped_refptr<StaticBitmapImage> snapshot =
+        bridge->NewImageSnapshot(kPreferAcceleration);
+    EXPECT_FALSE(bridge->IsAccelerated());
+    EXPECT_FALSE(snapshot->IsTextureBacked());
+  }
 }
 
 class MockLogger : public Canvas2DLayerBridge::Logger {
@@ -464,7 +406,7 @@
   MOCK_CONST_METHOD1(RestoreCanvasMatrixClipStack, void(PaintCanvas*));
 };
 
-void DrawSomething(Canvas2DLayerBridgePtr& bridge) {
+void DrawSomething(Canvas2DLayerBridge* bridge) {
   bridge->DidDraw(FloatRect(0, 0, 1, 1));
   bridge->FinalizeFrame();
   // Grabbing an image forces a flush
@@ -478,11 +420,11 @@
 #endif
 {
   ScopedTestingPlatformSupport<FakePlatformSupport> platform;
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 CanvasColorParams());
   bridge->DontUseIdleSchedulingForTesting();
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
 
   // Register an alternate Logger for tracking hibernation events
   std::unique_ptr<MockLogger> mock_logger = std::make_unique<MockLogger>();
@@ -523,11 +465,11 @@
 #endif
 {
   ScopedTestingPlatformSupport<FakePlatformSupport> platform;
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 CanvasColorParams());
   bridge->DontUseIdleSchedulingForTesting();
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
 
   // Register an alternate Logger for tracking hibernation events
   std::unique_ptr<MockLogger> mock_logger = std::make_unique<MockLogger>();
@@ -576,13 +518,13 @@
   MockCanvasResourceHost mock_host;
   EXPECT_CALL(mock_host, RestoreCanvasMatrixClipStack(_)).Times(AnyNumber());
 
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 CanvasColorParams());
 
   bridge->SetCanvasResourceHost(&mock_host);
   bridge->DontUseIdleSchedulingForTesting();
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
   bridge->DisableDeferral(kDisableDeferralReasonUnknown);
 
   // Register an alternate Logger for tracking hibernation events
@@ -624,11 +566,11 @@
 #endif
 {
   ScopedTestingPlatformSupport<FakePlatformSupport> platform;
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 CanvasColorParams());
   bridge->DontUseIdleSchedulingForTesting();
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
 
   // Register an alternate Logger for tracking hibernation events
   std::unique_ptr<MockLogger> mock_logger = std::make_unique<MockLogger>();
@@ -652,7 +594,7 @@
               ReportHibernationEvent(
                   Canvas2DLayerBridge::
                       kHibernationEndedWithSwitchToBackgroundRendering));
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
   testing::Mock::VerifyAndClearExpectations(mock_logger_ptr);
   EXPECT_FALSE(bridge->IsAccelerated());
   EXPECT_FALSE(bridge->IsHibernating());
@@ -677,11 +619,11 @@
 #endif
 {
   ScopedTestingPlatformSupport<FakePlatformSupport> platform;
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 CanvasColorParams());
   bridge->DontUseIdleSchedulingForTesting();
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
   MockCanvasResourceHost mock_canvas_resource_host;
   EXPECT_CALL(mock_canvas_resource_host, RestoreCanvasMatrixClipStack(_))
       .Times(AnyNumber());
@@ -713,7 +655,7 @@
                       kHibernationEndedWithSwitchToBackgroundRendering));
   EXPECT_CALL(mock_canvas_resource_host, RestoreCanvasMatrixClipStack(_))
       .Times(AtLeast(1));
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
   testing::Mock::VerifyAndClearExpectations(mock_logger_ptr);
   testing::Mock::VerifyAndClearExpectations(&mock_canvas_resource_host);
   EXPECT_FALSE(bridge->IsAccelerated());
@@ -740,11 +682,11 @@
 #endif
 {
   ScopedTestingPlatformSupport<FakePlatformSupport> platform;
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 CanvasColorParams());
   bridge->DontUseIdleSchedulingForTesting();
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
 
   MockCanvasResourceHost mock_canvas_resource_host;
   EXPECT_CALL(mock_canvas_resource_host, RestoreCanvasMatrixClipStack(_))
@@ -796,7 +738,7 @@
 
   EXPECT_CALL(mock_canvas_resource_host, RestoreCanvasMatrixClipStack(_))
       .Times(AnyNumber());
-  bridge.Clear();
+  bridge.reset();
   testing::Mock::VerifyAndClearExpectations(&mock_canvas_resource_host);
 }
 
@@ -807,11 +749,11 @@
 #endif
 {
   ScopedTestingPlatformSupport<FakePlatformSupport> platform;
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 CanvasColorParams());
   bridge->DontUseIdleSchedulingForTesting();
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
 
   // Register an alternate Logger for tracking hibernation events
   std::unique_ptr<MockLogger> mock_logger = std::make_unique<MockLogger>();
@@ -834,7 +776,7 @@
   EXPECT_CALL(*mock_logger_ptr,
               ReportHibernationEvent(
                   Canvas2DLayerBridge::kHibernationEndedWithTeardown));
-  bridge.Clear();
+  bridge.reset();
   testing::Mock::VerifyAndClearExpectations(mock_logger_ptr);
 }
 
@@ -845,11 +787,11 @@
 #endif
 {
   ScopedTestingPlatformSupport<FakePlatformSupport> platform;
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 CanvasColorParams());
   bridge->DontUseIdleSchedulingForTesting();
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
 
   // Register an alternate Logger for tracking hibernation events
   std::unique_ptr<MockLogger> mock_logger = std::make_unique<MockLogger>();
@@ -894,11 +836,11 @@
 #endif
 {
   ScopedTestingPlatformSupport<FakePlatformSupport> platform;
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 CanvasColorParams());
   bridge->DontUseIdleSchedulingForTesting();
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
 
   // Register an alternate Logger for tracking hibernation events
   std::unique_ptr<MockLogger> mock_logger = std::make_unique<MockLogger>();
@@ -910,7 +852,7 @@
       *mock_logger_ptr,
       ReportHibernationEvent(Canvas2DLayerBridge::kHibernationScheduled));
   bridge->SetIsHidden(true);
-  bridge.Clear();
+  bridge.reset();
   // In production, we would expect a
   // HibernationAbortedDueToDestructionWhileHibernatePending event to be
   // fired, but that signal is lost in the unit test due to no longer having
@@ -928,11 +870,11 @@
 #endif
 {
   ScopedTestingPlatformSupport<FakePlatformSupport> platform;
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 CanvasColorParams());
   bridge->DontUseIdleSchedulingForTesting();
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
 
   // Register an alternate Logger for tracking hibernation events
   std::unique_ptr<MockLogger> mock_logger = std::make_unique<MockLogger>();
@@ -964,11 +906,11 @@
 #endif
 {
   ScopedTestingPlatformSupport<FakePlatformSupport> platform;
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 CanvasColorParams());
   bridge->DontUseIdleSchedulingForTesting();
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
 
   // Register an alternate Logger for tracking hibernation events
   std::unique_ptr<MockLogger> mock_logger = std::make_unique<MockLogger>();
@@ -999,11 +941,11 @@
 #endif
 {
   ScopedTestingPlatformSupport<FakePlatformSupport> platform;
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 CanvasColorParams());
   bridge->DontUseIdleSchedulingForTesting();
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
 
   // Register an alternate Logger for tracking hibernation events
   std::unique_ptr<MockLogger> mock_logger = std::make_unique<MockLogger>();
@@ -1031,7 +973,7 @@
   EXPECT_CALL(*mock_logger_ptr,
               ReportHibernationEvent(
                   Canvas2DLayerBridge::kHibernationEndedWithTeardown));
-  bridge.Clear();
+  bridge.reset();
   testing::Mock::VerifyAndClearExpectations(mock_logger_ptr);
 }
 
@@ -1042,10 +984,10 @@
 #endif
 {
   ScopedTestingPlatformSupport<FakePlatformSupport> platform;
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      CanvasColorParams()));
-  DrawSomething(bridge);
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 CanvasColorParams());
+  DrawSomething(bridge.get());
 
   // Register an alternate Logger for tracking hibernation events
   std::unique_ptr<MockLogger> mock_logger = std::make_unique<MockLogger>();
@@ -1068,7 +1010,7 @@
               ReportHibernationEvent(
                   Canvas2DLayerBridge::
                       kHibernationEndedWithSwitchToBackgroundRendering));
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
   testing::Mock::VerifyAndClearExpectations(mock_logger_ptr);
   EXPECT_FALSE(bridge->IsAccelerated());
   EXPECT_FALSE(bridge->IsHibernating());
@@ -1100,22 +1042,22 @@
   constexpr GLuint image_id1 = 3;
   constexpr GLuint image_id2 = 4;
 
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 150), 0, Canvas2DLayerBridge::kForceAccelerationForTesting,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge = MakeBridge(
+      IntSize(300, 150), Canvas2DLayerBridge::kForceAccelerationForTesting,
+      CanvasColorParams());
 
   testing::Mock::VerifyAndClearExpectations(&gl_);
 
   EXPECT_CALL(gl_, CreateImageCHROMIUM(_, _, _, _)).WillOnce(Return(image_id1));
   EXPECT_CALL(gl_, GenTextures(1, _)).WillOnce(SetArgPointee<1>(texture_id1));
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
   bridge->PrepareTransferableResource(nullptr, &resource1, &release_callback1);
 
   testing::Mock::VerifyAndClearExpectations(&gl_);
 
   EXPECT_CALL(gl_, CreateImageCHROMIUM(_, _, _, _)).WillOnce(Return(image_id2));
   EXPECT_CALL(gl_, GenTextures(1, _)).WillOnce(SetArgPointee<1>(texture_id2));
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
   bridge->PrepareTransferableResource(nullptr, &resource2, &release_callback2);
 
   testing::Mock::VerifyAndClearExpectations(&gl_);
@@ -1142,7 +1084,7 @@
   EXPECT_CALL(gl_, DeleteTextures(1, Pointee(texture_id1))).Times(1);
   EXPECT_CALL(gl_, DestroyImageCHROMIUM(image_id2)).Times(1);
   EXPECT_CALL(gl_, DeleteTextures(1, Pointee(texture_id2))).Times(1);
-  bridge.Clear();
+  bridge.reset();
 
   testing::Mock::VerifyAndClearExpectations(&gl_);
 }
@@ -1165,22 +1107,22 @@
   constexpr GLuint image_id1 = 3;
   constexpr GLuint image_id2 = 4;
 
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 150), 0, Canvas2DLayerBridge::kForceAccelerationForTesting,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge = MakeBridge(
+      IntSize(300, 150), Canvas2DLayerBridge::kForceAccelerationForTesting,
+      CanvasColorParams());
 
   testing::Mock::VerifyAndClearExpectations(&gl_);
 
   EXPECT_CALL(gl_, CreateImageCHROMIUM(_, _, _, _)).WillOnce(Return(image_id1));
   EXPECT_CALL(gl_, GenTextures(1, _)).WillOnce(SetArgPointee<1>(texture_id1));
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
   bridge->PrepareTransferableResource(nullptr, &resource1, &release_callback1);
 
   testing::Mock::VerifyAndClearExpectations(&gl_);
 
   EXPECT_CALL(gl_, CreateImageCHROMIUM(_, _, _, _)).WillOnce(Return(image_id2));
   EXPECT_CALL(gl_, GenTextures(1, _)).WillOnce(SetArgPointee<1>(texture_id2));
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
   bridge->PrepareTransferableResource(nullptr, &resource2, &release_callback2);
 
   testing::Mock::VerifyAndClearExpectations(&gl_);
@@ -1225,15 +1167,15 @@
   constexpr GLuint texture_id = 1;
   constexpr GLuint image_id = 2;
 
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 150), 0, Canvas2DLayerBridge::kForceAccelerationForTesting,
-      CanvasColorParams()));
+  std::unique_ptr<Canvas2DLayerBridge> bridge = MakeBridge(
+      IntSize(300, 150), Canvas2DLayerBridge::kForceAccelerationForTesting,
+      CanvasColorParams());
 
   testing::Mock::VerifyAndClearExpectations(&gl_);
 
   EXPECT_CALL(gl_, CreateImageCHROMIUM(_, _, _, _)).WillOnce(Return(image_id));
   EXPECT_CALL(gl_, GenTextures(1, _)).WillOnce(SetArgPointee<1>(texture_id));
-  DrawSomething(bridge);
+  DrawSomething(bridge.get());
   bridge->PrepareTransferableResource(nullptr, &resource, &release_callback);
 
   testing::Mock::VerifyAndClearExpectations(&gl_);
@@ -1241,7 +1183,7 @@
   // Tearing down the bridge does not destroy unreleased resources.
   EXPECT_CALL(gl_, DestroyImageCHROMIUM(_)).Times(0);
   EXPECT_CALL(gl_, DeleteTextures(_, _)).Times(0);
-  bridge.Clear();
+  bridge.reset();
 
   testing::Mock::VerifyAndClearExpectations(&gl_);
 
@@ -1259,9 +1201,9 @@
       CanvasColorParams(kSRGBCanvasColorSpace, kF16CanvasPixelFormat, kOpaque);
   ASSERT_FALSE(color_params.NeedsSkColorSpaceXformCanvas());
 
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      color_params));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 color_params);
   gfx::ColorSpace expected_color_space = gfx::ColorSpace::CreateSRGB();
   std::vector<cc::DrawImage> images = {
       cc::DrawImage(cc::CreateDiscardablePaintImage(gfx::Size(10, 10)),
@@ -1285,9 +1227,9 @@
                                         kRGBA8CanvasPixelFormat, kOpaque);
   ASSERT_TRUE(color_params.NeedsSkColorSpaceXformCanvas());
 
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      color_params));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 color_params);
   std::vector<cc::DrawImage> images = {
       cc::DrawImage(cc::CreateDiscardablePaintImage(gfx::Size(10, 10)),
                     SkIRect::MakeWH(10, 10), kNone_SkFilterQuality,
@@ -1309,9 +1251,9 @@
   // Disable deferral so we can inspect the cache state as we use the canvas.
   auto color_params =
       CanvasColorParams(kSRGBCanvasColorSpace, kF16CanvasPixelFormat, kOpaque);
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      color_params));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 color_params);
   bridge->DisableDeferral(DisableDeferralReason::kDisableDeferralReasonUnknown);
 
   std::vector<cc::DrawImage> images = {
@@ -1345,9 +1287,9 @@
   // Disable deferral so we use the raster canvas directly.
   auto color_params =
       CanvasColorParams(kSRGBCanvasColorSpace, kF16CanvasPixelFormat, kOpaque);
-  Canvas2DLayerBridgePtr bridge(std::make_unique<Canvas2DLayerBridge>(
-      IntSize(300, 300), 0, Canvas2DLayerBridge::kEnableAcceleration,
-      color_params));
+  std::unique_ptr<Canvas2DLayerBridge> bridge =
+      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
+                 color_params);
   bridge->DisableDeferral(DisableDeferralReason::kDisableDeferralReasonUnknown);
 
   cc::PaintFlags flags;
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource.cc b/third_party/blink/renderer/platform/graphics/canvas_resource.cc
index e6308da..ae08093 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource.cc
@@ -71,8 +71,8 @@
     auto* gl = ContextGL();
     if (gl)
       gl->WaitSyncTokenCHROMIUM(sync_token_for_release_.GetData());
+    sync_token_for_release_.Clear();
   }
-  sync_token_for_release_.Clear();
 }
 
 static void ReleaseFrameResources(
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_host.cc b/third_party/blink/renderer/platform/graphics/canvas_resource_host.cc
new file mode 100644
index 0000000..32e57c1
--- /dev/null
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource_host.cc
@@ -0,0 +1,25 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/platform/graphics/canvas_resource_host.h"
+
+#include "third_party/blink/renderer/platform/graphics/canvas_resource_provider.h"
+
+namespace blink {
+
+CanvasResourceProvider* CanvasResourceHost::ResourceProvider() const {
+  return resource_provider_.get();
+}
+
+std::unique_ptr<CanvasResourceProvider>
+CanvasResourceHost::ReplaceResourceProvider(
+    std::unique_ptr<CanvasResourceProvider> new_resource_provider) {
+  std::unique_ptr<CanvasResourceProvider> old_resource_provider =
+      std::move(resource_provider_);
+  resource_provider_ = std::move(new_resource_provider);
+  UpdateMemoryUsage();
+  return old_resource_provider;
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_host.h b/third_party/blink/renderer/platform/graphics/canvas_resource_host.h
index a4518f8..ef2ea8b 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource_host.h
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource_host.h
@@ -10,6 +10,8 @@
 
 namespace blink {
 
+class CanvasResourceProvider;
+
 class PLATFORM_EXPORT CanvasResourceHost {
  public:
   virtual ~CanvasResourceHost() = default;
@@ -17,6 +19,14 @@
   virtual void SetNeedsCompositingUpdate() = 0;
   virtual void RestoreCanvasMatrixClipStack(PaintCanvas*) const = 0;
   virtual void UpdateMemoryUsage() = 0;
+
+  CanvasResourceProvider* ResourceProvider() const;
+
+  std::unique_ptr<CanvasResourceProvider> ReplaceResourceProvider(
+      std::unique_ptr<CanvasResourceProvider>);
+
+ private:
+  std::unique_ptr<CanvasResourceProvider> resource_provider_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_provider.h b/third_party/blink/renderer/platform/graphics/canvas_resource_provider.h
index c68faf8..5a08b1a2 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource_provider.h
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource_provider.h
@@ -5,6 +5,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_CANVAS_RESOURCE_PROVIDER_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_CANVAS_RESOURCE_PROVIDER_H_
 
+#include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/optional.h"
@@ -14,7 +15,6 @@
 #include "third_party/blink/renderer/platform/graphics/canvas_color_params.h"
 #include "third_party/blink/renderer/platform/graphics/canvas_resource.h"
 #include "third_party/blink/renderer/platform/graphics/web_graphics_context_3d_provider_wrapper.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/ref_counted.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 #include "third_party/khronos/GLES2/gl2.h"
@@ -58,7 +58,6 @@
 
 class PLATFORM_EXPORT CanvasResourceProvider
     : public WebGraphicsContext3DProviderWrapper::DestructionObserver {
-  WTF_MAKE_NONCOPYABLE(CanvasResourceProvider);
 
  public:
   enum ResourceUsage {
@@ -168,6 +167,8 @@
   uint32_t snapshot_sk_image_id_ = 0u;
 
   base::WeakPtrFactory<CanvasResourceProvider> weak_ptr_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(CanvasResourceProvider);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.h b/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.h
index d29639e..d5a53d6 100644
--- a/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.h
+++ b/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.h
@@ -5,6 +5,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_COMPOSITING_CONTENT_LAYER_CLIENT_IMPL_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_COMPOSITING_CONTENT_LAYER_CLIENT_IMPL_H_
 
+#include "base/macros.h"
 #include "cc/layers/content_layer_client.h"
 #include "cc/layers/layer_client.h"
 #include "cc/layers/picture_layer.h"
@@ -12,7 +13,6 @@
 #include "third_party/blink/renderer/platform/graphics/graphics_layer_client.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/hash_map.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 
 namespace blink {
@@ -24,7 +24,6 @@
 
 class PLATFORM_EXPORT ContentLayerClientImpl : public cc::ContentLayerClient,
                                                public cc::LayerClient {
-  WTF_MAKE_NONCOPYABLE(ContentLayerClientImpl);
   USING_FAST_MALLOC(ContentLayerClientImpl);
 
  public:
@@ -75,6 +74,11 @@
       const gfx::Rect& layer_bounds,
       const PropertyTreeState&);
 
+  const RasterInvalidationTracking* GetRasterInvalidationTrackingForTesting()
+      const {
+    return raster_invalidator_.GetTracking();
+  }
+
  private:
   scoped_refptr<cc::PictureLayer> cc_picture_layer_;
   scoped_refptr<cc::DisplayItemList> cc_display_item_list_;
@@ -87,6 +91,8 @@
 #endif
 
   base::WeakPtrFactory<ContentLayerClientImpl> weak_ptr_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(ContentLayerClientImpl);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h
index fc97de0b..cc8df48 100644
--- a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h
+++ b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h
@@ -8,13 +8,13 @@
 #include <memory>
 
 #include "base/callback.h"
+#include "base/macros.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.h"
 #include "third_party/blink/renderer/platform/graphics/graphics_layer_client.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_controller.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 
 namespace cc {
@@ -45,7 +45,6 @@
 class PLATFORM_EXPORT PaintArtifactCompositor final
     : private PropertyTreeManagerClient {
   USING_FAST_MALLOC(PaintArtifactCompositor);
-  WTF_MAKE_NONCOPYABLE(PaintArtifactCompositor);
 
  public:
   ~PaintArtifactCompositor();
@@ -225,6 +224,8 @@
 
   friend class StubChromeClientForSPv2;
   friend class PaintArtifactCompositorTest;
+
+  DISALLOW_COPY_AND_ASSIGN(PaintArtifactCompositor);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.h b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.h
index 50c8ba8..fb8ca86 100644
--- a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.h
+++ b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.h
@@ -5,10 +5,10 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_COMPOSITING_PROPERTY_TREE_MANAGER_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_COMPOSITING_PROPERTY_TREE_MANAGER_H_
 
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/graphics/compositor_element_id.h"
 #include "third_party/blink/renderer/platform/wtf/hash_map.h"
 #include "third_party/blink/renderer/platform/wtf/hash_set.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 #include "third_party/skia/include/core/SkBlendMode.h"
 
@@ -40,7 +40,6 @@
 // Mutates a cc property tree to reflect Blink paint property tree
 // state. Intended for use by PaintArtifactCompositor.
 class PropertyTreeManager {
-  WTF_MAKE_NONCOPYABLE(PropertyTreeManager);
 
  public:
   PropertyTreeManager(PropertyTreeManagerClient&,
@@ -185,6 +184,8 @@
 #if DCHECK_IS_ON()
   HashSet<const EffectPaintPropertyNode*> effect_nodes_converted_;
 #endif
+
+  DISALLOW_COPY_AND_ASSIGN(PropertyTreeManager);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/compositor_mutator_impl.h b/third_party/blink/renderer/platform/graphics/compositor_mutator_impl.h
index fccc3892..36a45bb 100644
--- a/third_party/blink/renderer/platform/graphics/compositor_mutator_impl.h
+++ b/third_party/blink/renderer/platform/graphics/compositor_mutator_impl.h
@@ -64,7 +64,6 @@
       HashSet<CrossThreadPersistent<CompositorAnimator>>;
 
   class AutoSignal {
-    WTF_MAKE_NONCOPYABLE(AutoSignal);
 
    public:
     explicit AutoSignal(WaitableEvent*);
@@ -72,6 +71,8 @@
 
    private:
     WaitableEvent* event_;
+
+    DISALLOW_COPY_AND_ASSIGN(AutoSignal);
   };
 
   // The AnimationWorkletProxyClientImpls are also owned by the WorkerClients
diff --git a/third_party/blink/renderer/platform/graphics/contiguous_container.cc b/third_party/blink/renderer/platform/graphics/contiguous_container.cc
index ef305ab..984f1b1 100644
--- a/third_party/blink/renderer/platform/graphics/contiguous_container.cc
+++ b/third_party/blink/renderer/platform/graphics/contiguous_container.cc
@@ -6,6 +6,8 @@
 
 #include <algorithm>
 #include <memory>
+
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/partitions.h"
 #include "third_party/blink/renderer/platform/wtf/container_annotations.h"
@@ -17,7 +19,6 @@
 static const unsigned kDefaultInitialBufferSize = 32;
 
 class ContiguousContainerBase::Buffer {
-  WTF_MAKE_NONCOPYABLE(Buffer);
   USING_FAST_MALLOC(Buffer);
 
  public:
@@ -60,6 +61,8 @@
   char* begin_;
   char* end_;
   size_t capacity_;
+
+  DISALLOW_COPY_AND_ASSIGN(Buffer);
 };
 
 ContiguousContainerBase::ContiguousContainerBase(size_t max_object_size)
diff --git a/third_party/blink/renderer/platform/graphics/contiguous_container.h b/third_party/blink/renderer/platform/graphics/contiguous_container.h
index 6ad356600..d551da7 100644
--- a/third_party/blink/renderer/platform/graphics/contiguous_container.h
+++ b/third_party/blink/renderer/platform/graphics/contiguous_container.h
@@ -9,12 +9,13 @@
 #include <iterator>
 #include <memory>
 #include <utility>
+
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/alignment.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/compiler.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/type_traits.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 
@@ -40,7 +41,6 @@
 
 class PLATFORM_EXPORT ContiguousContainerBase {
   DISALLOW_NEW();
-  WTF_MAKE_NONCOPYABLE(ContiguousContainerBase);
 
  protected:
   explicit ContiguousContainerBase(size_t max_object_size);
@@ -76,6 +76,8 @@
   Vector<std::unique_ptr<Buffer>> buffers_;
   unsigned end_index_;
   size_t max_object_size_;
+
+  DISALLOW_COPY_AND_ASSIGN(ContiguousContainerBase);
 };
 
 // For most cases, no alignment stricter than pointer alignment is required. If
diff --git a/third_party/blink/renderer/platform/graphics/decoding_image_generator.h b/third_party/blink/renderer/platform/graphics/decoding_image_generator.h
index 1058d2c6..3a0b8ee 100644
--- a/third_party/blink/renderer/platform/graphics/decoding_image_generator.h
+++ b/third_party/blink/renderer/platform/graphics/decoding_image_generator.h
@@ -26,12 +26,12 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DECODING_IMAGE_GENERATOR_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DECODING_IMAGE_GENERATOR_H_
 
+#include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_image.h"
 #include "third_party/blink/renderer/platform/image-decoders/segment_reader.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/skia/include/core/SkImageInfo.h"
 
 class SkData;
@@ -46,7 +46,6 @@
 class PLATFORM_EXPORT DecodingImageGenerator final
     : public PaintImageGenerator {
   USING_FAST_MALLOC(DecodingImageGenerator);
-  WTF_MAKE_NONCOPYABLE(DecodingImageGenerator);
 
  public:
   // Aside from tests, this is used to create a decoder from SkData in Skia
@@ -95,6 +94,8 @@
   const bool all_data_received_;
   bool can_yuv_decode_;
   const PaintImage::ContentId complete_frame_content_id_;
+
+  DISALLOW_COPY_AND_ASSIGN(DecodingImageGenerator);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/deferred_image_decoder.cc b/third_party/blink/renderer/platform/graphics/deferred_image_decoder.cc
index b500aea..e162d26 100644
--- a/third_party/blink/renderer/platform/graphics/deferred_image_decoder.cc
+++ b/third_party/blink/renderer/platform/graphics/deferred_image_decoder.cc
@@ -28,6 +28,7 @@
 #include <memory>
 #include <utility>
 
+#include "base/macros.h"
 #include "base/memory/ptr_util.h"
 #include "third_party/blink/renderer/platform/graphics/decoding_image_generator.h"
 #include "third_party/blink/renderer/platform/graphics/image_decoding_store.h"
@@ -42,7 +43,6 @@
 
 struct DeferredFrameData {
   DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
-  WTF_MAKE_NONCOPYABLE(DeferredFrameData);
 
  public:
   DeferredFrameData()
@@ -52,6 +52,9 @@
   ImageOrientation orientation_;
   TimeDelta duration_;
   bool is_received_;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(DeferredFrameData);
 };
 
 std::unique_ptr<DeferredImageDecoder> DeferredImageDecoder::Create(
diff --git a/third_party/blink/renderer/platform/graphics/deferred_image_decoder.h b/third_party/blink/renderer/platform/graphics/deferred_image_decoder.h
index 552f472..225c526 100644
--- a/third_party/blink/renderer/platform/graphics/deferred_image_decoder.h
+++ b/third_party/blink/renderer/platform/graphics/deferred_image_decoder.h
@@ -27,6 +27,8 @@
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DEFERRED_IMAGE_DECODER_H_
 
 #include <memory>
+
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/geometry/int_size.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_image.h"
 #include "third_party/blink/renderer/platform/image-decoders/image_decoder.h"
@@ -45,7 +47,6 @@
 struct DeferredFrameData;
 
 class PLATFORM_EXPORT DeferredImageDecoder final {
-  WTF_MAKE_NONCOPYABLE(DeferredImageDecoder);
   USING_FAST_MALLOC(DeferredImageDecoder);
 
  public:
@@ -112,6 +113,8 @@
   // Caches frame state information.
   Vector<DeferredFrameData> frame_data_;
   scoped_refptr<ImageFrameGenerator> frame_generator_;
+
+  DISALLOW_COPY_AND_ASSIGN(DeferredImageDecoder);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/draw_looper_builder.h b/third_party/blink/renderer/platform/graphics/draw_looper_builder.h
index 7d532552..5f14c521 100644
--- a/third_party/blink/renderer/platform/graphics/draw_looper_builder.h
+++ b/third_party/blink/renderer/platform/graphics/draw_looper_builder.h
@@ -32,9 +32,10 @@
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DRAW_LOOPER_BUILDER_H_
 
 #include <memory>
+
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
 #include "third_party/skia/include/effects/SkLayerDrawLooper.h"
 
@@ -46,9 +47,6 @@
 class FloatSize;
 
 class PLATFORM_EXPORT DrawLooperBuilder final {
-  // Implementing the copy constructor properly would require writing code to
-  // copy the underlying SkLayerDrawLooper::Builder.
-  WTF_MAKE_NONCOPYABLE(DrawLooperBuilder);
   STACK_ALLOCATED();
 
  public:
@@ -74,6 +72,10 @@
 
  private:
   SkLayerDrawLooper::Builder sk_draw_looper_builder_;
+
+  // Implementing the copy constructor properly would require writing code to
+  // copy the underlying SkLayerDrawLooper::Builder.
+  DISALLOW_COPY_AND_ASSIGN(DrawLooperBuilder);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/filters/filter.h b/third_party/blink/renderer/platform/graphics/filters/filter.h
index cb5ae4d..0eda810 100644
--- a/third_party/blink/renderer/platform/graphics/filters/filter.h
+++ b/third_party/blink/renderer/platform/graphics/filters/filter.h
@@ -21,12 +21,12 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_FILTERS_FILTER_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_FILTERS_FILTER_H_
 
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/geometry/float_point_3d.h"
 #include "third_party/blink/renderer/platform/geometry/float_rect.h"
 #include "third_party/blink/renderer/platform/geometry/int_rect.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 
 namespace blink {
 
@@ -34,7 +34,6 @@
 class FilterEffect;
 
 class PLATFORM_EXPORT Filter final : public GarbageCollected<Filter> {
-  WTF_MAKE_NONCOPYABLE(Filter);
 
  public:
   enum UnitScaling { kUserSpace, kBoundingBox };
@@ -81,6 +80,8 @@
 
   Member<SourceGraphic> source_graphic_;
   Member<FilterEffect> last_effect_;
+
+  DISALLOW_COPY_AND_ASSIGN(Filter);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/filters/filter_effect.h b/third_party/blink/renderer/platform/graphics/filters/filter_effect.h
index 70856a53..688ad34 100644
--- a/third_party/blink/renderer/platform/graphics/filters/filter_effect.h
+++ b/third_party/blink/renderer/platform/graphics/filters/filter_effect.h
@@ -23,6 +23,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_FILTERS_FILTER_EFFECT_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_FILTERS_FILTER_EFFECT_H_
 
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/geometry/float_rect.h"
 #include "third_party/blink/renderer/platform/geometry/int_rect.h"
 #include "third_party/blink/renderer/platform/graphics/color.h"
@@ -31,7 +32,6 @@
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/forward.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 
 namespace blink {
@@ -50,7 +50,6 @@
 
 class PLATFORM_EXPORT FilterEffect
     : public GarbageCollectedFinalized<FilterEffect> {
-  WTF_MAKE_NONCOPYABLE(FilterEffect);
 
  public:
   virtual ~FilterEffect();
@@ -166,6 +165,8 @@
   InterpolationSpace operating_interpolation_space_;
 
   sk_sp<PaintFilter> image_filters_[4];
+
+  DISALLOW_COPY_AND_ASSIGN(FilterEffect);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/filters/light_source.h b/third_party/blink/renderer/platform/graphics/filters/light_source.h
index 46dc495..7bed402 100644
--- a/third_party/blink/renderer/platform/graphics/filters/light_source.h
+++ b/third_party/blink/renderer/platform/graphics/filters/light_source.h
@@ -24,11 +24,11 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_FILTERS_LIGHT_SOURCE_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_FILTERS_LIGHT_SOURCE_H_
 
+#include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/platform/geometry/float_point_3d.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/forward.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/ref_counted.h"
 
 namespace blink {
@@ -36,7 +36,6 @@
 enum LightType { LS_DISTANT, LS_POINT, LS_SPOT };
 
 class PLATFORM_EXPORT LightSource : public RefCounted<LightSource> {
-  WTF_MAKE_NONCOPYABLE(LightSource);
 
  public:
   LightSource(LightType type) : type_(type) {}
@@ -55,6 +54,8 @@
 
  private:
   LightType type_;
+
+  DISALLOW_COPY_AND_ASSIGN(LightSource);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h
index 092f0bb..075fe2c 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h
+++ b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h
@@ -33,6 +33,7 @@
 
 #include <memory>
 
+#include "base/macros.h"
 #include "cc/layers/texture_layer_client.h"
 #include "cc/resources/cross_thread_shared_bitmap.h"
 #include "cc/resources/shared_bitmap_id_registrar.h"
@@ -43,7 +44,6 @@
 #include "third_party/blink/renderer/platform/graphics/graphics_types_3d.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/deque.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/ref_counted.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 #include "third_party/khronos/GLES2/gl2.h"
@@ -75,7 +75,6 @@
 // publish its rendering results to a cc::Layer for compositing.
 class PLATFORM_EXPORT DrawingBuffer : public cc::TextureLayerClient,
                                       public RefCounted<DrawingBuffer> {
-  WTF_MAKE_NONCOPYABLE(DrawingBuffer);
 
  public:
   class Client {
@@ -365,7 +364,7 @@
     gpu::SyncToken receive_sync_token;
 
    private:
-    WTF_MAKE_NONCOPYABLE(ColorBuffer);
+    DISALLOW_COPY_AND_ASSIGN(ColorBuffer);
   };
 
   // The same as clearFramebuffers(), but leaves GL state dirty.
@@ -589,6 +588,8 @@
   // A release callback that is run when the previouis image passed to
   // OffscreenCanvas::Commit() is no longer needed.
   std::unique_ptr<viz::SingleReleaseCallback> previous_image_release_callback_;
+
+  DISALLOW_COPY_AND_ASSIGN(DrawingBuffer);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/gpu/extensions_3d_util.h b/third_party/blink/renderer/platform/graphics/gpu/extensions_3d_util.h
index f220a21..8ef40f8 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/extensions_3d_util.h
+++ b/third_party/blink/renderer/platform/graphics/gpu/extensions_3d_util.h
@@ -6,10 +6,11 @@
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GPU_EXTENSIONS_3D_UTIL_H_
 
 #include <memory>
+
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/hash_set.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/text/string_hash.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 #include "third_party/khronos/GLES2/gl2.h"
@@ -24,7 +25,6 @@
 
 class PLATFORM_EXPORT Extensions3DUtil final {
   USING_FAST_MALLOC(Extensions3DUtil);
-  WTF_MAKE_NONCOPYABLE(Extensions3DUtil);
 
  public:
   // Creates a new Extensions3DUtil. If the passed GLES2Interface has been
@@ -48,6 +48,8 @@
   HashSet<String> enabled_extensions_;
   HashSet<String> requestable_extensions_;
   bool is_valid_;
+
+  DISALLOW_COPY_AND_ASSIGN(Extensions3DUtil);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.h b/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.h
index 2b274d4..6f33ac4c6 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.h
+++ b/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.h
@@ -7,6 +7,7 @@
 
 #include <memory>
 
+#include "base/macros.h"
 #include "cc/layers/texture_layer_client.h"
 #include "cc/resources/shared_bitmap_id_registrar.h"
 #include "components/viz/common/resources/resource_format.h"
@@ -31,7 +32,6 @@
 class PLATFORM_EXPORT ImageLayerBridge
     : public GarbageCollectedFinalized<ImageLayerBridge>,
       public cc::TextureLayerClient {
-  WTF_MAKE_NONCOPYABLE(ImageLayerBridge);
 
  public:
   ImageLayerBridge(OpacityMode);
@@ -98,6 +98,8 @@
   bool disposed_ = false;
   bool has_presented_since_last_set_image_ = false;
   OpacityMode opacity_mode_ = kNonOpaque;
+
+  DISALLOW_COPY_AND_ASSIGN(ImageLayerBridge);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/gpu/shared_context_rate_limiter.h b/third_party/blink/renderer/platform/graphics/gpu/shared_context_rate_limiter.h
index 86b0a6c0..0a13f77 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/shared_context_rate_limiter.h
+++ b/third_party/blink/renderer/platform/graphics/gpu/shared_context_rate_limiter.h
@@ -6,10 +6,11 @@
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GPU_SHARED_CONTEXT_RATE_LIMITER_H_
 
 #include <memory>
+
+#include "base/macros.h"
 #include "gpu/command_buffer/client/gles2_interface.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/deque.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 
 namespace blink {
 
@@ -37,7 +38,6 @@
 
 class SharedContextRateLimiter final {
   USING_FAST_MALLOC(SharedContextRateLimiter);
-  WTF_MAKE_NONCOPYABLE(SharedContextRateLimiter);
 
  public:
   static std::unique_ptr<SharedContextRateLimiter> Create(
@@ -52,6 +52,8 @@
   Deque<GLuint> queries_;
   unsigned max_pending_ticks_;
   bool can_use_sync_queries_;
+
+  DISALLOW_COPY_AND_ASSIGN(SharedContextRateLimiter);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/gpu/webgl_image_conversion.h b/third_party/blink/renderer/platform/graphics/gpu/webgl_image_conversion.h
index 10ee7d4..cd954650 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/webgl_image_conversion.h
+++ b/third_party/blink/renderer/platform/graphics/gpu/webgl_image_conversion.h
@@ -5,6 +5,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GPU_WEBGL_IMAGE_CONVERSION_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GPU_WEBGL_IMAGE_CONVERSION_H_
 
+#include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/optional.h"
 #include "third_party/blink/renderer/platform/graphics/image.h"
@@ -129,7 +130,6 @@
 
   class PLATFORM_EXPORT ImageExtractor final {
     STACK_ALLOCATED();
-    WTF_MAKE_NONCOPYABLE(ImageExtractor);
 
    public:
     ImageExtractor(Image*,
@@ -162,6 +162,8 @@
     DataFormat image_source_format_;
     AlphaOp alpha_op_;
     unsigned image_source_unpack_alignment_;
+
+    DISALLOW_COPY_AND_ASSIGN(ImageExtractor);
   };
 
   // Computes the components per pixel and bytes per component
diff --git a/third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.h b/third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.h
index 8a14d34..c7600f2d 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.h
+++ b/third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.h
@@ -5,6 +5,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GPU_XR_WEBGL_DRAWING_BUFFER_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GPU_XR_WEBGL_DRAWING_BUFFER_H_
 
+#include "base/macros.h"
 #include "cc/layers/texture_layer_client.h"
 #include "gpu/command_buffer/client/gles2_interface.h"
 #include "gpu/command_buffer/common/mailbox_holder.h"
@@ -12,7 +13,6 @@
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/deque.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/ref_counted.h"
 
 namespace blink {
@@ -86,7 +86,7 @@
     gpu::SyncToken receive_sync_token;
 
    private:
-    WTF_MAKE_NONCOPYABLE(ColorBuffer);
+    DISALLOW_COPY_AND_ASSIGN(ColorBuffer);
   };
 
   XRWebGLDrawingBuffer(DrawingBuffer*,
diff --git a/third_party/blink/renderer/platform/graphics/gradient.h b/third_party/blink/renderer/platform/graphics/gradient.h
index 20f5231a..62b8c35 100644
--- a/third_party/blink/renderer/platform/graphics/gradient.h
+++ b/third_party/blink/renderer/platform/graphics/gradient.h
@@ -29,13 +29,13 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GRADIENT_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GRADIENT_H_
 
+#include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/platform/graphics/color.h"
 #include "third_party/blink/renderer/platform/graphics/graphics_types.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_flags.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_shader.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/ref_counted.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
@@ -48,7 +48,6 @@
 class FloatPoint;
 
 class PLATFORM_EXPORT Gradient : public RefCounted<Gradient> {
-  WTF_MAKE_NONCOPYABLE(Gradient);
 
  public:
   enum class Type { kLinear, kRadial, kConic };
@@ -128,6 +127,8 @@
   bool stops_sorted_;
 
   mutable sk_sp<PaintShader> cached_shader_;
+
+  DISALLOW_COPY_AND_ASSIGN(Gradient);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context.h b/third_party/blink/renderer/platform/graphics/graphics_context.h
index 961d4a99..735f4e4 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_context.h
+++ b/third_party/blink/renderer/platform/graphics/graphics_context.h
@@ -29,6 +29,8 @@
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GRAPHICS_CONTEXT_H_
 
 #include <memory>
+
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/fonts/font.h"
 #include "third_party/blink/renderer/platform/graphics/dash_array.h"
 #include "third_party/blink/renderer/platform/graphics/draw_looper_builder.h"
@@ -43,7 +45,6 @@
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/forward.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/skia/include/core/SkClipOp.h"
 #include "third_party/skia/include/core/SkMetaData.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
@@ -62,7 +63,6 @@
 struct TextRunPaintInfo;
 
 class PLATFORM_EXPORT GraphicsContext {
-  WTF_MAKE_NONCOPYABLE(GraphicsContext);
   USING_FAST_MALLOC(GraphicsContext);
 
  public:
@@ -500,6 +500,8 @@
 
   unsigned printing_ : 1;
   unsigned has_meta_data_ : 1;
+
+  DISALLOW_COPY_AND_ASSIGN(GraphicsContext);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context_state.h b/third_party/blink/renderer/platform/graphics/graphics_context_state.h
index cbe5e35..abeb92c7 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_context_state.h
+++ b/third_party/blink/renderer/platform/graphics/graphics_context_state.h
@@ -37,7 +37,6 @@
 #include "third_party/blink/renderer/platform/graphics/paint/paint_flags.h"
 #include "third_party/blink/renderer/platform/graphics/stroke_data.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/skia/include/core/SkColorFilter.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
 
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context_state_saver.h b/third_party/blink/renderer/platform/graphics/graphics_context_state_saver.h
index f7ca448..72768f1 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_context_state_saver.h
+++ b/third_party/blink/renderer/platform/graphics/graphics_context_state_saver.h
@@ -29,16 +29,15 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GRAPHICS_CONTEXT_STATE_SAVER_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GRAPHICS_CONTEXT_STATE_SAVER_H_
 
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/graphics/graphics_context.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 
 namespace blink {
 
 class PLATFORM_EXPORT GraphicsContextStateSaver final {
   USING_FAST_MALLOC(GraphicsContextStateSaver);
-  WTF_MAKE_NONCOPYABLE(GraphicsContextStateSaver);
 
  public:
   GraphicsContextStateSaver(GraphicsContext& context,
@@ -77,6 +76,8 @@
  private:
   GraphicsContext& context_;
   bool save_and_restore_;
+
+  DISALLOW_COPY_AND_ASSIGN(GraphicsContextStateSaver);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/graphics_layer.h b/third_party/blink/renderer/platform/graphics/graphics_layer.h
index 2108bee..2c0d730d 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_layer.h
+++ b/third_party/blink/renderer/platform/graphics/graphics_layer.h
@@ -29,6 +29,7 @@
 
 #include <memory>
 
+#include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "cc/input/overscroll_behavior.h"
 #include "cc/layers/content_layer_client.h"
@@ -79,7 +80,6 @@
 class PLATFORM_EXPORT GraphicsLayer : public cc::LayerClient,
                                       public DisplayItemClient,
                                       private cc::ContentLayerClient {
-  WTF_MAKE_NONCOPYABLE(GraphicsLayer);
   USING_FAST_MALLOC(GraphicsLayer);
 
  public:
@@ -459,6 +459,8 @@
   base::WeakPtrFactory<GraphicsLayer> weak_ptr_factory_;
 
   FRIEND_TEST_ALL_PREFIXES(CompositingLayerPropertyUpdaterTest, MaskLayerState);
+
+  DISALLOW_COPY_AND_ASSIGN(GraphicsLayer);
 };
 
 // ObjectPaintInvalidatorWithContext::InvalidatePaintRectangleWithContext uses
diff --git a/third_party/blink/renderer/platform/graphics/image.h b/third_party/blink/renderer/platform/graphics/image.h
index 35e9e3f4..4eeab88 100644
--- a/third_party/blink/renderer/platform/graphics/image.h
+++ b/third_party/blink/renderer/platform/graphics/image.h
@@ -27,6 +27,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_IMAGE_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_IMAGE_H_
 
+#include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "third_party/blink/renderer/platform/geometry/int_rect.h"
@@ -39,7 +40,6 @@
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/shared_buffer.h"
 #include "third_party/blink/renderer/platform/wtf/forward.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h"
 #include "third_party/blink/renderer/platform/wtf/time.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
@@ -71,7 +71,6 @@
   friend class CrossfadeGeneratedImage;
   friend class GradientGeneratedImage;
   friend class GraphicsContext;
-  WTF_MAKE_NONCOPYABLE(Image);
 
  public:
   virtual ~Image();
@@ -307,6 +306,8 @@
   PaintImage::Id stable_image_id_;
   const bool is_multipart_;
   HighContrastClassification high_contrast_classification_;
+
+  DISALLOW_COPY_AND_ASSIGN(Image);
 };
 
 #define DEFINE_IMAGE_TYPE_CASTS(typeName)                          \
diff --git a/third_party/blink/renderer/platform/graphics/image_decoding_store.h b/third_party/blink/renderer/platform/graphics/image_decoding_store.h
index 3ea2883..77cd5bf9 100644
--- a/third_party/blink/renderer/platform/graphics/image_decoding_store.h
+++ b/third_party/blink/renderer/platform/graphics/image_decoding_store.h
@@ -31,6 +31,7 @@
 
 #include "SkSize.h"
 #include "SkTypes.h"
+#include "base/macros.h"
 #include "base/memory/ptr_util.h"
 #include "third_party/blink/renderer/platform/graphics/image_frame_generator.h"
 #include "third_party/blink/renderer/platform/graphics/skia/sk_size_hash.h"
@@ -72,7 +73,6 @@
 // Base class for all cache entries.
 class CacheEntry : public DoublyLinkedListNode<CacheEntry> {
   USING_FAST_MALLOC(CacheEntry);
-  WTF_MAKE_NONCOPYABLE(CacheEntry);
   friend class WTF::DoublyLinkedListNode<CacheEntry>;
 
  public:
@@ -108,6 +108,8 @@
  private:
   CacheEntry* prev_;
   CacheEntry* next_;
+
+  DISALLOW_COPY_AND_ASSIGN(CacheEntry);
 };
 
 class DecoderCacheEntry final : public CacheEntry {
@@ -231,7 +233,6 @@
 
 class PLATFORM_EXPORT ImageDecodingStore final {
   USING_FAST_MALLOC(ImageDecodingStore);
-  WTF_MAKE_NONCOPYABLE(ImageDecodingStore);
 
  public:
   static std::unique_ptr<ImageDecodingStore> Create() {
@@ -332,6 +333,8 @@
   // This mutex also protects calls to underlying skBitmap's
   // lockPixels()/unlockPixels() as they are not threadsafe.
   Mutex mutex_;
+
+  DISALLOW_COPY_AND_ASSIGN(ImageDecodingStore);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/image_frame_generator.cc b/third_party/blink/renderer/platform/graphics/image_frame_generator.cc
index e7fe70e..34bcb86 100644
--- a/third_party/blink/renderer/platform/graphics/image_frame_generator.cc
+++ b/third_party/blink/renderer/platform/graphics/image_frame_generator.cc
@@ -29,6 +29,7 @@
 #include <utility>
 
 #include "SkData.h"
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/graphics/image_decoding_store.h"
 #include "third_party/blink/renderer/platform/image-decoders/image_decoder.h"
 #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h"
@@ -71,7 +72,6 @@
 // decoding.
 class ExternalMemoryAllocator final : public SkBitmap::Allocator {
   USING_FAST_MALLOC(ExternalMemoryAllocator);
-  WTF_MAKE_NONCOPYABLE(ExternalMemoryAllocator);
 
  public:
   ExternalMemoryAllocator(const SkImageInfo& info,
@@ -94,6 +94,8 @@
   SkImageInfo info_;
   void* pixels_;
   size_t row_bytes_;
+
+  DISALLOW_COPY_AND_ASSIGN(ExternalMemoryAllocator);
 };
 
 static bool UpdateYUVComponentSizes(ImageDecoder* decoder,
diff --git a/third_party/blink/renderer/platform/graphics/image_frame_generator.h b/third_party/blink/renderer/platform/graphics/image_frame_generator.h
index d744921..3997976 100644
--- a/third_party/blink/renderer/platform/graphics/image_frame_generator.h
+++ b/third_party/blink/renderer/platform/graphics/image_frame_generator.h
@@ -27,12 +27,13 @@
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_IMAGE_FRAME_GENERATOR_H_
 
 #include <memory>
+
+#include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/platform/image-decoders/image_decoder.h"
 #include "third_party/blink/renderer/platform/image-decoders/segment_reader.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/ref_counted.h"
 #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h"
 #include "third_party/blink/renderer/platform/wtf/threading_primitives.h"
@@ -49,17 +50,18 @@
 
 class PLATFORM_EXPORT ImageDecoderFactory {
   USING_FAST_MALLOC(ImageDecoderFactory);
-  WTF_MAKE_NONCOPYABLE(ImageDecoderFactory);
 
  public:
   ImageDecoderFactory() = default;
   virtual ~ImageDecoderFactory() = default;
   virtual std::unique_ptr<ImageDecoder> Create() = 0;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ImageDecoderFactory);
 };
 
 class PLATFORM_EXPORT ImageFrameGenerator final
     : public ThreadSafeRefCounted<ImageFrameGenerator> {
-  WTF_MAKE_NONCOPYABLE(ImageFrameGenerator);
 
  public:
   static scoped_refptr<ImageFrameGenerator> Create(
@@ -164,6 +166,8 @@
 
   // Protect concurrent access to has_alpha_.
   Mutex alpha_mutex_;
+
+  DISALLOW_COPY_AND_ASSIGN(ImageFrameGenerator);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/intercepting_canvas.h b/third_party/blink/renderer/platform/graphics/intercepting_canvas.h
index 1b30367a..482a437f 100644
--- a/third_party/blink/renderer/platform/graphics/intercepting_canvas.h
+++ b/third_party/blink/renderer/platform/graphics/intercepting_canvas.h
@@ -34,20 +34,17 @@
 #include "third_party/blink/renderer/platform/graphics/paint/paint_record.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/assertions.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/skia/include/core/SkBitmap.h"
 #include "third_party/skia/include/core/SkCanvas.h"
 
 namespace blink {
 
 class InterceptingCanvasBase : public SkCanvas {
-  WTF_MAKE_NONCOPYABLE(InterceptingCanvasBase);
 
  public:
   template <typename DerivedCanvas>
   class CanvasInterceptorBase {
     STACK_ALLOCATED();
-    WTF_MAKE_NONCOPYABLE(CanvasInterceptorBase);
 
    protected:
     CanvasInterceptorBase(InterceptingCanvasBase* canvas) : canvas_(canvas) {
@@ -63,6 +60,9 @@
     DerivedCanvas* Canvas() { return static_cast<DerivedCanvas*>(canvas_); }
     bool TopLevelCall() const { return canvas_->CallNestingDepth() == 1; }
     InterceptingCanvasBase* canvas_;
+
+   private:
+    DISALLOW_COPY_AND_ASSIGN(CanvasInterceptorBase);
   };
 
   void ResetStepCount() { call_count_ = 0; }
@@ -158,6 +158,8 @@
  private:
   unsigned call_nesting_depth_;
   unsigned call_count_;
+
+  DISALLOW_COPY_AND_ASSIGN(InterceptingCanvasBase);
 };
 
 template <typename DerivedCanvas>
diff --git a/third_party/blink/renderer/platform/graphics/offscreen_canvas_frame_dispatcher.cc b/third_party/blink/renderer/platform/graphics/offscreen_canvas_frame_dispatcher.cc
index 410f50cc..232e985 100644
--- a/third_party/blink/renderer/platform/graphics/offscreen_canvas_frame_dispatcher.cc
+++ b/third_party/blink/renderer/platform/graphics/offscreen_canvas_frame_dispatcher.cc
@@ -129,8 +129,14 @@
     scoped_refptr<StaticBitmapImage> image,
     double commit_start_time,
     const SkIRect& damage_rect) {
+  scoped_refptr<CanvasResource> canvas_resource = CanvasResourceBitmap::Create(
+      std::move(image),
+      nullptr,  // Resource provider not specified -> recycling will not work
+      kLow_SkFilterQuality, CanvasColorParams());
+
   viz::CompositorFrame frame;
-  if (!PrepareFrame(std::move(image), commit_start_time, damage_rect, &frame))
+  if (!PrepareFrame(std::move(canvas_resource), commit_start_time, damage_rect,
+                    &frame))
     return;
 
   pending_compositor_frames_++;
@@ -145,8 +151,14 @@
     scoped_refptr<StaticBitmapImage> image,
     double commit_start_time,
     const SkIRect& damage_rect) {
+  scoped_refptr<CanvasResource> canvas_resource = CanvasResourceBitmap::Create(
+      std::move(image),
+      nullptr,  // Resource provider not specified -> recycling will not work
+      kLow_SkFilterQuality, CanvasColorParams());
+
   viz::CompositorFrame frame;
-  if (!PrepareFrame(std::move(image), commit_start_time, damage_rect, &frame))
+  if (!PrepareFrame(std::move(canvas_resource), commit_start_time, damage_rect,
+                    &frame))
     return;
 
   pending_compositor_frames_++;
@@ -156,10 +168,11 @@
 }
 
 bool OffscreenCanvasFrameDispatcher::PrepareFrame(
-    scoped_refptr<StaticBitmapImage> image,
+    scoped_refptr<CanvasResource> image,
     double commit_start_time,
     const SkIRect& damage_rect,
     viz::CompositorFrame* frame) {
+  DCHECK(image->IsBitmap());
   if (!image || !VerifyImageSize(image->Size()))
     return false;
 
@@ -167,14 +180,8 @@
 
   // For frameless canvas, we don't get a valid frame_sink_id and should drop.
   if (!frame_sink_id_.is_valid()) {
-    scoped_refptr<CanvasResource> canvas_resource =
-        CanvasResourceBitmap::Create(std::move(image),
-                                     nullptr,  // Resource provider not
-                                               // specified -> recycling will
-                                               // not work
-                                     kLow_SkFilterQuality, CanvasColorParams());
     PostImageToPlaceholderIfNotBlocked(
-        std::move(canvas_resource),
+        std::move(image),
         offscreen_canvas_resource_provider_->GetNextResourceId());
     return false;
   }
@@ -214,7 +221,7 @@
   DEFINE_THREAD_SAFE_STATIC_LOCAL(
       EnumerationHistogram, commit_type_histogram,
       ("OffscreenCanvas.CommitType", kOffscreenCanvasCommitTypeCount));
-  if (image->IsTextureBacked()) {
+  if (image->IsAccelerated()) {
     // While |image| is texture backed, it could be generated with "software
     // rendering" aka swiftshader. If the compositor is not also using
     // swiftshader, then we could not give a swiftshader based texture
@@ -224,20 +231,22 @@
       // Case 1: both canvas and compositor are gpu accelerated.
       commit_type = kCommitGPUCanvasGPUCompositing;
       offscreen_canvas_resource_provider_
-          ->SetTransferableResourceToStaticBitmapImage(resource, image);
+          ->SetTransferableResourceToStaticBitmapImage(resource,
+                                                       image->Bitmap());
       yflipped = true;
     } else {
       // Case 2: canvas is accelerated but gpu compositing is disabled.
       commit_type = kCommitGPUCanvasSoftwareCompositing;
       offscreen_canvas_resource_provider_
-          ->SetTransferableResourceToSharedBitmap(resource, image);
+          ->SetTransferableResourceToSharedBitmap(resource, image->Bitmap());
     }
   } else {
     if (SharedGpuContext::IsGpuCompositingEnabled()) {
       // Case 3: canvas is not gpu-accelerated, but compositor is.
       commit_type = kCommitSoftwareCanvasGPUCompositing;
       scoped_refptr<StaticBitmapImage> accelerated_image =
-          image->MakeAccelerated(SharedGpuContext::ContextProviderWrapper());
+          image->Bitmap()->MakeAccelerated(
+              SharedGpuContext::ContextProviderWrapper());
       if (!accelerated_image)
         return false;
       offscreen_canvas_resource_provider_
@@ -247,19 +256,14 @@
       // Case 4: both canvas and compositor are not gpu accelerated.
       commit_type = kCommitSoftwareCanvasSoftwareCompositing;
       offscreen_canvas_resource_provider_
-          ->SetTransferableResourceToSharedBitmap(resource, image);
+          ->SetTransferableResourceToSharedBitmap(resource, image->Bitmap());
     }
   }
 
   commit_type_histogram.Count(commit_type);
 
-  scoped_refptr<CanvasResource> canvas_resource = CanvasResourceBitmap::Create(
-      std::move(image),
-      nullptr,  // Resource provider not specified -> recycling will not work
-      kLow_SkFilterQuality, CanvasColorParams());
-
   PostImageToPlaceholderIfNotBlocked(
-      std::move(canvas_resource),
+      std::move(image),
       offscreen_canvas_resource_provider_->GetNextResourceId());
 
   frame->resource_list.push_back(std::move(resource));
diff --git a/third_party/blink/renderer/platform/graphics/offscreen_canvas_frame_dispatcher.h b/third_party/blink/renderer/platform/graphics/offscreen_canvas_frame_dispatcher.h
index 970bad29..62fe661e 100644
--- a/third_party/blink/renderer/platform/graphics/offscreen_canvas_frame_dispatcher.h
+++ b/third_party/blink/renderer/platform/graphics/offscreen_canvas_frame_dispatcher.h
@@ -87,7 +87,7 @@
  private:
   friend class OffscreenCanvasFrameDispatcherTest;
 
-  bool PrepareFrame(scoped_refptr<StaticBitmapImage>,
+  bool PrepareFrame(scoped_refptr<CanvasResource>,
                     double commit_start_time,
                     const SkIRect& damage_rect,
                     viz::CompositorFrame* frame);
diff --git a/third_party/blink/renderer/platform/graphics/paint/clip_path_recorder.h b/third_party/blink/renderer/platform/graphics/paint/clip_path_recorder.h
index 97c7bc1..948230c 100644
--- a/third_party/blink/renderer/platform/graphics/paint/clip_path_recorder.h
+++ b/third_party/blink/renderer/platform/graphics/paint/clip_path_recorder.h
@@ -5,10 +5,10 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_CLIP_PATH_RECORDER_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_CLIP_PATH_RECORDER_H_
 
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/graphics/paint/display_item_client.h"
 #include "third_party/blink/renderer/platform/graphics/path.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 
 namespace blink {
 
@@ -16,7 +16,6 @@
 
 class PLATFORM_EXPORT ClipPathRecorder {
   USING_FAST_MALLOC(ClipPathRecorder);
-  WTF_MAKE_NONCOPYABLE(ClipPathRecorder);
 
  public:
   ClipPathRecorder(GraphicsContext&, const DisplayItemClient&, const Path&);
@@ -25,6 +24,8 @@
  private:
   GraphicsContext& context_;
   const DisplayItemClient& client_;
+
+  DISALLOW_COPY_AND_ASSIGN(ClipPathRecorder);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/paint/clip_recorder.h b/third_party/blink/renderer/platform/graphics/paint/clip_recorder.h
index a17c1d65..74f1a69 100644
--- a/third_party/blink/renderer/platform/graphics/paint/clip_recorder.h
+++ b/third_party/blink/renderer/platform/graphics/paint/clip_recorder.h
@@ -5,9 +5,9 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_CLIP_RECORDER_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_CLIP_RECORDER_H_
 
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/graphics/paint/display_item.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 
 namespace blink {
 
@@ -15,7 +15,6 @@
 
 class PLATFORM_EXPORT ClipRecorder {
   DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
-  WTF_MAKE_NONCOPYABLE(ClipRecorder);
 
  public:
   ClipRecorder(GraphicsContext&,
@@ -28,6 +27,8 @@
   const DisplayItemClient& client_;
   GraphicsContext& context_;
   DisplayItem::Type type_;
+
+  DISALLOW_COPY_AND_ASSIGN(ClipRecorder);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/paint/display_item.h b/third_party/blink/renderer/platform/graphics/paint/display_item.h
index 430a896..adc59a2 100644
--- a/third_party/blink/renderer/platform/graphics/paint/display_item.h
+++ b/third_party/blink/renderer/platform/graphics/paint/display_item.h
@@ -12,7 +12,6 @@
 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/assertions.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 
 #if DCHECK_IS_ON()
 #include "third_party/blink/renderer/platform/json/json_values.h"
diff --git a/third_party/blink/renderer/platform/graphics/paint/display_item_cache_skipper.h b/third_party/blink/renderer/platform/graphics/paint/display_item_cache_skipper.h
index 17ec4e81..b2c7eb6c 100644
--- a/third_party/blink/renderer/platform/graphics/paint/display_item_cache_skipper.h
+++ b/third_party/blink/renderer/platform/graphics/paint/display_item_cache_skipper.h
@@ -5,16 +5,15 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_DISPLAY_ITEM_CACHE_SKIPPER_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_DISPLAY_ITEM_CACHE_SKIPPER_H_
 
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/graphics/graphics_context.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_controller.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 
 namespace blink {
 
 class DisplayItemCacheSkipper final {
   DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
-  WTF_MAKE_NONCOPYABLE(DisplayItemCacheSkipper);
 
  public:
   DisplayItemCacheSkipper(GraphicsContext& context) : context_(context) {
@@ -26,6 +25,8 @@
 
  private:
   GraphicsContext& context_;
+
+  DISALLOW_COPY_AND_ASSIGN(DisplayItemCacheSkipper);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/paint/drawing_recorder.h b/third_party/blink/renderer/platform/graphics/paint/drawing_recorder.h
index f4afbef..129ddf2 100644
--- a/third_party/blink/renderer/platform/graphics/paint/drawing_recorder.h
+++ b/third_party/blink/renderer/platform/graphics/paint/drawing_recorder.h
@@ -8,13 +8,13 @@
 #include "third_party/blink/renderer/platform/platform_export.h"
 
 #include "base/auto_reset.h"
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/geometry/float_rect.h"
 #include "third_party/blink/renderer/platform/geometry/layout_rect.h"
 #include "third_party/blink/renderer/platform/graphics/graphics_context.h"
 #include "third_party/blink/renderer/platform/graphics/paint/drawing_display_item.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_controller.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 
 namespace blink {
 
@@ -22,7 +22,6 @@
 
 class PLATFORM_EXPORT DrawingRecorder final {
   DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
-  WTF_MAKE_NONCOPYABLE(DrawingRecorder);
 
  public:
   static bool UseCachedDrawingIfPossible(GraphicsContext& context,
@@ -69,18 +68,21 @@
   // Ensures the list size does not change during the recorder's scope.
   size_t initial_display_item_list_size_;
 #endif
+
+  DISALLOW_COPY_AND_ASSIGN(DrawingRecorder);
 };
 
 #if DCHECK_IS_ON()
 class DisableListModificationCheck {
   STACK_ALLOCATED();
-  WTF_MAKE_NONCOPYABLE(DisableListModificationCheck);
 
  public:
   DisableListModificationCheck();
 
  private:
   base::AutoReset<bool> disabler_;
+
+  DISALLOW_COPY_AND_ASSIGN(DisableListModificationCheck);
 };
 #endif  // DCHECK_IS_ON()
 
diff --git a/third_party/blink/renderer/platform/graphics/paint/paint_artifact.h b/third_party/blink/renderer/platform/graphics/paint/paint_artifact.h
index d181e81..1959c3b 100644
--- a/third_party/blink/renderer/platform/graphics/paint/paint_artifact.h
+++ b/third_party/blink/renderer/platform/graphics/paint/paint_artifact.h
@@ -5,6 +5,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_PAINT_ARTIFACT_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_PAINT_ARTIFACT_H_
 
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/graphics/paint/display_item_list.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_canvas.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_chunk.h"
@@ -12,7 +13,6 @@
 #include "third_party/blink/renderer/platform/graphics/paint/raster_invalidation_tracking.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 
 namespace blink {
@@ -58,7 +58,6 @@
 // safely be assigned to or destroyed.
 class PLATFORM_EXPORT PaintArtifact final {
   DISALLOW_NEW();
-  WTF_MAKE_NONCOPYABLE(PaintArtifact);
 
  public:
   PaintArtifact();
@@ -151,6 +150,8 @@
  private:
   DisplayItemList display_item_list_;
   PaintChunksAndRasterInvalidations chunks_and_invalidations_;
+
+  DISALLOW_COPY_AND_ASSIGN(PaintArtifact);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/paint/paint_chunker.h b/third_party/blink/renderer/platform/graphics/paint/paint_chunker.h
index 17fdb5b..691072d7 100644
--- a/third_party/blink/renderer/platform/graphics/paint/paint_chunker.h
+++ b/third_party/blink/renderer/platform/graphics/paint/paint_chunker.h
@@ -5,6 +5,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_PAINT_CHUNKER_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_PAINT_CHUNKER_H_
 
+#include "base/macros.h"
 #include "base/optional.h"
 #include "third_party/blink/renderer/platform/graphics/paint/display_item.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_artifact.h"
@@ -12,7 +13,6 @@
 #include "third_party/blink/renderer/platform/graphics/paint/property_tree_state.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 
 namespace blink {
@@ -22,7 +22,6 @@
 // display list with identical properties.
 class PLATFORM_EXPORT PaintChunker final {
   DISALLOW_NEW();
-  WTF_MAKE_NONCOPYABLE(PaintChunker);
 
  public:
   PaintChunker();
@@ -95,6 +94,8 @@
   // the item following a forced chunk. PaintController also forces new chunks
   // before and after subsequences by calling ForceNewChunk().
   bool force_new_chunk_;
+
+  DISALLOW_COPY_AND_ASSIGN(PaintChunker);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/paint/paint_controller.h b/third_party/blink/renderer/platform/graphics/paint/paint_controller.h
index e9a8e1d..736faf13 100644
--- a/third_party/blink/renderer/platform/graphics/paint/paint_controller.h
+++ b/third_party/blink/renderer/platform/graphics/paint/paint_controller.h
@@ -8,6 +8,7 @@
 #include <memory>
 #include <utility>
 
+#include "base/macros.h"
 #include "base/memory/ptr_util.h"
 #include "third_party/blink/renderer/platform/geometry/int_rect.h"
 #include "third_party/blink/renderer/platform/geometry/layout_point.h"
@@ -52,7 +53,6 @@
 // a final paint artifact when complete. This class includes logic for caching,
 // cache invalidation, and merging.
 class PLATFORM_EXPORT PaintController {
-  WTF_MAKE_NONCOPYABLE(PaintController);
   USING_FAST_MALLOC(PaintController);
 
  public:
@@ -476,6 +476,8 @@
   unsigned current_fragment_;
 
   class DisplayItemListAsJSON;
+
+  DISALLOW_COPY_AND_ASSIGN(PaintController);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/paint/paint_record_builder.h b/third_party/blink/renderer/platform/graphics/paint/paint_record_builder.h
index 9365ce0..6fcfc6d 100644
--- a/third_party/blink/renderer/platform/graphics/paint/paint_record_builder.h
+++ b/third_party/blink/renderer/platform/graphics/paint/paint_record_builder.h
@@ -7,6 +7,7 @@
 
 #include <memory>
 
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/geometry/float_rect.h"
 #include "third_party/blink/renderer/platform/graphics/paint/display_item_cache_skipper.h"
 #include "third_party/blink/renderer/platform/graphics/paint/display_item_client.h"
@@ -14,7 +15,6 @@
 #include "third_party/blink/renderer/platform/graphics/paint/paint_record.h"
 #include "third_party/blink/renderer/platform/graphics/paint/property_tree_state.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
 
 class SkMetaData;
@@ -28,7 +28,6 @@
 // When slimming paint ships we can remove this PaintRecord abstraction and
 // rely on PaintController here.
 class PLATFORM_EXPORT PaintRecordBuilder final : public DisplayItemClient {
-  WTF_MAKE_NONCOPYABLE(PaintRecordBuilder);
 
  public:
   // Constructs a new builder for the resulting recorded picture. If |metadata|
@@ -68,6 +67,8 @@
   std::unique_ptr<PaintController> own_paint_controller_;
   std::unique_ptr<GraphicsContext> context_;
   base::Optional<DisplayItemCacheSkipper> cache_skipper_;
+
+  DISALLOW_COPY_AND_ASSIGN(PaintRecordBuilder);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/paint/scoped_display_item_fragment.h b/third_party/blink/renderer/platform/graphics/paint/scoped_display_item_fragment.h
index d0cef18..792cf122 100644
--- a/third_party/blink/renderer/platform/graphics/paint/scoped_display_item_fragment.h
+++ b/third_party/blink/renderer/platform/graphics/paint/scoped_display_item_fragment.h
@@ -5,16 +5,15 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_SCOPED_DISPLAY_ITEM_FRAGMENT_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_SCOPED_DISPLAY_ITEM_FRAGMENT_H_
 
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/graphics/graphics_context.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_controller.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 
 namespace blink {
 
 class ScopedDisplayItemFragment final {
   DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
-  WTF_MAKE_NONCOPYABLE(ScopedDisplayItemFragment);
 
  public:
   ScopedDisplayItemFragment(GraphicsContext& context, unsigned fragment)
@@ -29,6 +28,8 @@
  private:
   GraphicsContext& context_;
   unsigned original_fragment_;
+
+  DISALLOW_COPY_AND_ASSIGN(ScopedDisplayItemFragment);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/paint/scoped_paint_chunk_properties.h b/third_party/blink/renderer/platform/graphics/paint/scoped_paint_chunk_properties.h
index 4a7d0643..2522ea2 100644
--- a/third_party/blink/renderer/platform/graphics/paint/scoped_paint_chunk_properties.h
+++ b/third_party/blink/renderer/platform/graphics/paint/scoped_paint_chunk_properties.h
@@ -5,19 +5,18 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_SCOPED_PAINT_CHUNK_PROPERTIES_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_SCOPED_PAINT_CHUNK_PROPERTIES_H_
 
+#include "base/macros.h"
 #include "base/optional.h"
 #include "third_party/blink/renderer/platform/graphics/paint/display_item.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_chunk.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_controller.h"
 #include "third_party/blink/renderer/platform/graphics/paint/property_tree_state.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 
 namespace blink {
 
 class ScopedPaintChunkProperties {
   DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
-  WTF_MAKE_NONCOPYABLE(ScopedPaintChunkProperties);
 
  public:
   // Use new PropertyTreeState for the scope.
@@ -104,6 +103,8 @@
 
   PaintController& paint_controller_;
   PropertyTreeState previous_properties_;
+
+  DISALLOW_COPY_AND_ASSIGN(ScopedPaintChunkProperties);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/paint/subsequence_recorder.h b/third_party/blink/renderer/platform/graphics/paint/subsequence_recorder.h
index d5609be..8cc4af2 100644
--- a/third_party/blink/renderer/platform/graphics/paint/subsequence_recorder.h
+++ b/third_party/blink/renderer/platform/graphics/paint/subsequence_recorder.h
@@ -5,11 +5,11 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_SUBSEQUENCE_RECORDER_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_SUBSEQUENCE_RECORDER_H_
 
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/graphics/graphics_context.h"
 #include "third_party/blink/renderer/platform/graphics/paint/display_item.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_controller.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 
 namespace blink {
 
@@ -28,7 +28,6 @@
 //
 class SubsequenceRecorder final {
   DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
-  WTF_MAKE_NONCOPYABLE(SubsequenceRecorder);
 
  public:
   static bool UseCachedSubsequenceIfPossible(GraphicsContext& context,
@@ -53,6 +52,8 @@
   PaintController& paint_controller_;
   const DisplayItemClient& client_;
   size_t start_;
+
+  DISALLOW_COPY_AND_ASSIGN(SubsequenceRecorder);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/pattern.h b/third_party/blink/renderer/platform/graphics/pattern.h
index 72bb655..7e790fe 100644
--- a/third_party/blink/renderer/platform/graphics/pattern.h
+++ b/third_party/blink/renderer/platform/graphics/pattern.h
@@ -29,12 +29,12 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PATTERN_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PATTERN_H_
 
+#include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/platform/graphics/image.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_record.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_shader.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/ref_counted.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
 
@@ -43,7 +43,6 @@
 namespace blink {
 
 class PLATFORM_EXPORT Pattern : public RefCounted<Pattern> {
-  WTF_MAKE_NONCOPYABLE(Pattern);
 
  public:
   enum RepeatMode {
@@ -78,6 +77,9 @@
 
   Pattern(RepeatMode);
   mutable sk_sp<PaintShader> cached_shader_;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(Pattern);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/picture_snapshot.h b/third_party/blink/renderer/platform/graphics/picture_snapshot.h
index 6a7b1ae..4262d08a 100644
--- a/third_party/blink/renderer/platform/graphics/picture_snapshot.h
+++ b/third_party/blink/renderer/platform/graphics/picture_snapshot.h
@@ -33,6 +33,7 @@
 
 #include <memory>
 
+#include "base/macros.h"
 #include "third_party/blink/renderer/platform/graphics/graphics_context.h"
 #include "third_party/blink/renderer/platform/json/json_values.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
@@ -46,7 +47,6 @@
 class FloatRect;
 
 class PLATFORM_EXPORT PictureSnapshot : public RefCounted<PictureSnapshot> {
-  WTF_MAKE_NONCOPYABLE(PictureSnapshot);
 
  public:
   typedef Vector<Vector<double>> Timings;
@@ -74,6 +74,8 @@
   std::unique_ptr<SkBitmap> CreateBitmap() const;
 
   sk_sp<const SkPicture> picture_;
+
+  DISALLOW_COPY_AND_ASSIGN(PictureSnapshot);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/skia/image_pixel_locker.h b/third_party/blink/renderer/platform/graphics/skia/image_pixel_locker.h
index fe40364d..bd7dff3f 100644
--- a/third_party/blink/renderer/platform/graphics/skia/image_pixel_locker.h
+++ b/third_party/blink/renderer/platform/graphics/skia/image_pixel_locker.h
@@ -5,10 +5,10 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_SKIA_IMAGE_PIXEL_LOCKER_H_
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_SKIA_IMAGE_PIXEL_LOCKER_H_
 
+#include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/skia/include/core/SkImageInfo.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
 
@@ -18,7 +18,6 @@
 
 class ImagePixelLocker final {
   DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
-  WTF_MAKE_NONCOPYABLE(ImagePixelLocker);
 
  public:
   ImagePixelLocker(sk_sp<const SkImage>, SkAlphaType, SkColorType);
@@ -29,6 +28,8 @@
   const sk_sp<const SkImage> image_;
   const void* pixels_;
   Vector<char> pixel_storage_;
+
+  DISALLOW_COPY_AND_ASSIGN(ImagePixelLocker);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/test/fake_canvas_resource_host.h b/third_party/blink/renderer/platform/graphics/test/fake_canvas_resource_host.h
new file mode 100644
index 0000000..84c7a15
--- /dev/null
+++ b/third_party/blink/renderer/platform/graphics/test/fake_canvas_resource_host.h
@@ -0,0 +1,25 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_TEST_FAKE_CANVAS_RESOURCE_HOST_H_
+#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_TEST_FAKE_CANVAS_RESOURCE_HOST_H_
+
+#include "third_party/blink/renderer/platform/graphics/canvas_resource_host.h"
+#include "third_party/blink/renderer/platform/graphics/paint/paint_canvas.h"
+#include "third_party/blink/renderer/platform/platform_export.h"
+
+namespace blink {
+
+class FakeCanvasResourceHost : public CanvasResourceHost {
+ public:
+  ~FakeCanvasResourceHost() override {}
+  void NotifyGpuContextLost() override {}
+  void SetNeedsCompositingUpdate() override {}
+  void RestoreCanvasMatrixClipStack(PaintCanvas*) const override {}
+  void UpdateMemoryUsage() override {}
+};
+
+}  // namespace blink
+
+#endif
diff --git a/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.cc b/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.cc
index 76a6dd3..061b842 100644
--- a/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.cc
+++ b/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.cc
@@ -7,14 +7,14 @@
 #include <memory>
 #include "base/bind.h"
 #include "base/trace_event/trace_event.h"
-#include "cc/resources/layer_tree_resource_provider.h"
-#include "cc/resources/video_resource_updater.h"
+#include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/gpu/context_provider.h"
 #include "components/viz/common/quads/render_pass.h"
 #include "components/viz/common/quads/solid_color_draw_quad.h"
 #include "components/viz/common/quads/texture_draw_quad.h"
 #include "components/viz/common/quads/yuv_video_draw_quad.h"
 #include "media/base/video_frame.h"
+#include "media/renderers/video_resource_updater.h"
 
 namespace blink {
 
@@ -28,7 +28,7 @@
     viz::ContextProvider* media_context_provider,
     viz::SharedBitmapReporter* shared_bitmap_reporter) {
   context_provider_ = media_context_provider;
-  resource_provider_ = std::make_unique<cc::LayerTreeResourceProvider>(
+  resource_provider_ = std::make_unique<viz::ClientResourceProvider>(
       media_context_provider, true);
 
   int max_texture_size;
@@ -40,7 +40,7 @@
     max_texture_size = 16 * 1024;
   }
 
-  resource_updater_ = std::make_unique<cc::VideoResourceUpdater>(
+  resource_updater_ = std::make_unique<media::VideoResourceUpdater>(
       media_context_provider, shared_bitmap_reporter, resource_provider_.get(),
       settings_.use_stream_video_draw_quad,
       settings_.resource_settings.use_gpu_memory_buffer_resources,
diff --git a/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.h b/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.h
index 8f78593..4a9eb78 100644
--- a/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.h
+++ b/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.h
@@ -6,14 +6,17 @@
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_VIDEO_FRAME_RESOURCE_PROVIDER_H_
 
 #include "base/memory/weak_ptr.h"
-#include "cc/resources/layer_tree_resource_provider.h"
-#include "cc/resources/video_resource_updater.h"
 #include "cc/trees/layer_tree_settings.h"
-#include "components/viz/common/resources/shared_bitmap_reporter.h"
-#include "media/base/video_frame.h"
+#include "components/viz/client/client_resource_provider.h"
+#include "components/viz/client/shared_bitmap_reporter.h"
 #include "third_party/blink/public/platform/web_video_frame_submitter.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 
+namespace media {
+class VideoFrame;
+class VideoResourceUpdater;
+}  // namespace media
+
 namespace viz {
 class RenderPass;
 }
@@ -54,8 +57,8 @@
 
   WebContextProviderCallback context_provider_callback_;
   viz::ContextProvider* context_provider_;
-  std::unique_ptr<cc::LayerTreeResourceProvider> resource_provider_;
-  std::unique_ptr<cc::VideoResourceUpdater> resource_updater_;
+  std::unique_ptr<viz::ClientResourceProvider> resource_provider_;
+  std::unique_ptr<media::VideoResourceUpdater> resource_updater_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/video_frame_submitter.cc b/third_party/blink/renderer/platform/graphics/video_frame_submitter.cc
index a8afb98..3895015 100644
--- a/third_party/blink/renderer/platform/graphics/video_frame_submitter.cc
+++ b/third_party/blink/renderer/platform/graphics/video_frame_submitter.cc
@@ -8,7 +8,6 @@
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/trace_event/trace_event.h"
 #include "cc/paint/filter_operations.h"
-#include "cc/resources/video_resource_updater.h"
 #include "cc/scheduler/video_frame_controller.h"
 #include "components/viz/common/resources/resource_id.h"
 #include "components/viz/common/resources/returned_resource.h"
diff --git a/third_party/blink/renderer/platform/graphics/video_frame_submitter.h b/third_party/blink/renderer/platform/graphics/video_frame_submitter.h
index 65f71306..3fa15f32 100644
--- a/third_party/blink/renderer/platform/graphics/video_frame_submitter.h
+++ b/third_party/blink/renderer/platform/graphics/video_frame_submitter.h
@@ -7,9 +7,9 @@
 
 #include "base/memory/weak_ptr.h"
 #include "base/threading/thread_checker.h"
+#include "components/viz/client/shared_bitmap_reporter.h"
 #include "components/viz/common/gpu/context_provider.h"
 #include "components/viz/common/quads/shared_bitmap.h"
-#include "components/viz/common/resources/shared_bitmap_reporter.h"
 #include "components/viz/common/surfaces/parent_local_surface_id_allocator.h"
 #include "mojo/public/cpp/bindings/binding.h"
 #include "mojo/public/cpp/system/buffer.h"
diff --git a/third_party/blink/renderer/platform/loader/fetch/raw_resource.cc b/third_party/blink/renderer/platform/loader/fetch/raw_resource.cc
index 309a75c..064c73f 100644
--- a/third_party/blink/renderer/platform/loader/fetch/raw_resource.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/raw_resource.cc
@@ -41,10 +41,11 @@
 namespace blink {
 
 RawResource* RawResource::FetchSynchronously(FetchParameters& params,
-                                             ResourceFetcher* fetcher) {
+                                             ResourceFetcher* fetcher,
+                                             RawResourceClient* client) {
   params.MakeSynchronous();
   return ToRawResource(fetcher->RequestResource(
-      params, RawResourceFactory(Resource::kRaw), nullptr));
+      params, RawResourceFactory(Resource::kRaw), client));
 }
 
 RawResource* RawResource::FetchImport(FetchParameters& params,
diff --git a/third_party/blink/renderer/platform/loader/fetch/raw_resource.h b/third_party/blink/renderer/platform/loader/fetch/raw_resource.h
index 25777998..b2bc32b 100644
--- a/third_party/blink/renderer/platform/loader/fetch/raw_resource.h
+++ b/third_party/blink/renderer/platform/loader/fetch/raw_resource.h
@@ -43,7 +43,9 @@
 
 class PLATFORM_EXPORT RawResource final : public Resource {
  public:
-  static RawResource* FetchSynchronously(FetchParameters&, ResourceFetcher*);
+  static RawResource* FetchSynchronously(FetchParameters&,
+                                         ResourceFetcher*,
+                                         RawResourceClient* = nullptr);
   static RawResource* Fetch(FetchParameters&,
                             ResourceFetcher*,
                             RawResourceClient*);
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
index 8bd77ea..ae7ae0a 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
@@ -558,15 +558,25 @@
 Resource* ResourceFetcher::ResourceForBlockedRequest(
     const FetchParameters& params,
     const ResourceFactory& factory,
-    ResourceRequestBlockedReason blocked_reason) {
+    ResourceRequestBlockedReason blocked_reason,
+    ResourceClient* client) {
   Resource* resource = factory.Create(
       params.GetResourceRequest(), params.Options(), params.DecoderOptions());
+  // Sync requests need to be registered as a client before the fetch begins, so
+  // that they can process any redirects as they are received. Async requests,
+  // on the other hand, need to be registered after the fetch begins, because
+  // if the fetch fails during start, registering the client too early may lead
+  // to unexpected synchronous notifications.
+  if (client && params.Options().synchronous_policy == kRequestSynchronously)
+    client->SetResource(resource, Context().GetLoadingTaskRunner().get());
   resource->SetStatus(ResourceStatus::kPending);
   resource->NotifyStartLoad();
   resource->SetSourceOrigin(GetSourceOrigin(params.Options()));
   resource->FinishAsError(ResourceError::CancelledDueToAccessCheckError(
                               params.Url(), blocked_reason),
                           Context().GetLoadingTaskRunner().get());
+  if (client && params.Options().synchronous_policy == kRequestAsynchronously)
+    client->SetResource(resource, Context().GetLoadingTaskRunner().get());
   return resource;
 }
 
@@ -749,22 +759,6 @@
     const ResourceFactory& factory,
     ResourceClient* client,
     const SubstituteData& substitute_data) {
-  // Only async requests get ResourceClient callbacks, so sync requests
-  // shouldn't provide a client.
-  DCHECK(!client ||
-         params.Options().synchronous_policy == kRequestAsynchronously);
-  Resource* resource =
-      RequestResourceInternal(params, factory, substitute_data);
-  DCHECK(resource);
-  if (client)
-    client->SetResource(resource, Context().GetLoadingTaskRunner().get());
-  return resource;
-}
-
-Resource* ResourceFetcher::RequestResourceInternal(
-    FetchParameters& params,
-    const ResourceFactory& factory,
-    const SubstituteData& substitute_data) {
   unsigned long identifier = CreateUniqueIdentifier();
   ResourceRequest& resource_request = params.MutableResourceRequest();
   network_instrumentation::ScopedResourceLoadTracker
@@ -789,8 +783,10 @@
 
   base::Optional<ResourceRequestBlockedReason> blocked_reason =
       PrepareRequest(params, factory, substitute_data, identifier);
-  if (blocked_reason)
-    return ResourceForBlockedRequest(params, factory, blocked_reason.value());
+  if (blocked_reason) {
+    return ResourceForBlockedRequest(params, factory, blocked_reason.value(),
+                                     client);
+  }
 
   Resource::Type resource_type = factory.GetType();
 
@@ -815,8 +811,8 @@
       // in the case of data URLs which might have resources such as fonts that
       // need to be decoded only on demand. These data URLs are allowed to be
       // processed using the normal ResourceFetcher machinery.
-      return ResourceForBlockedRequest(params, factory,
-                                       ResourceRequestBlockedReason::kOther);
+      return ResourceForBlockedRequest(
+          params, factory, ResourceRequestBlockedReason::kOther, client);
     }
   }
 
@@ -861,6 +857,14 @@
   if (policy != kUse)
     resource->SetIdentifier(identifier);
 
+  // Sync requests need to be registered as a client before the fetch begins, so
+  // that they can process any redirects as they are received. Async requests,
+  // on the other hand, need to be registered after the fetch begins, because
+  // if the fetch fails during start, registering the client too early may lead
+  // to unexpected synchronous notifications.
+  if (client && params.Options().synchronous_policy == kRequestSynchronously)
+    client->SetResource(resource, Context().GetLoadingTaskRunner().get());
+
   // TODO(yoav): It is not clear why preloads are exempt from this check. Can we
   // remove the exemption?
   if (!params.IsSpeculativePreload() || policy != kUse) {
@@ -899,6 +903,9 @@
   if (policy != kUse)
     InsertAsPreloadIfNecessary(resource, params, resource_type);
 
+  if (client && params.Options().synchronous_policy == kRequestAsynchronously)
+    client->SetResource(resource, Context().GetLoadingTaskRunner().get());
+
   return resource;
 }
 
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
index 872bf01..83148ec 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
@@ -207,9 +207,6 @@
           FetchParameters::SpeculativePreloadType::kNotSpeculative,
       bool is_link_preload = false);
 
-  Resource* RequestResourceInternal(FetchParameters&,
-                                    const ResourceFactory&,
-                                    const SubstituteData&);
   base::Optional<ResourceRequestBlockedReason> PrepareRequest(
       FetchParameters&,
       const ResourceFactory&,
@@ -221,7 +218,8 @@
                                   const SubstituteData&);
   Resource* ResourceForBlockedRequest(const FetchParameters&,
                                       const ResourceFactory&,
-                                      ResourceRequestBlockedReason);
+                                      ResourceRequestBlockedReason,
+                                      ResourceClient*);
 
   Resource* MatchPreload(const FetchParameters& params, Resource::Type);
   void InsertAsPreloadIfNecessary(Resource*,
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
index ce117eff..c608209 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
@@ -777,11 +777,9 @@
   if (data_out.size()) {
     data_out.ForEachSegment([this](const char* segment, size_t segment_size,
                                    size_t segment_offset) {
-      Context().DispatchDidReceiveData(resource_->Identifier(), segment,
-                                       segment_size);
+      DidReceiveData(segment, segment_size);
       return true;
     });
-    resource_->SetResourceBuffer(data_out);
   }
 
   if (downloaded_file_length) {
@@ -791,12 +789,9 @@
   if (request.DownloadToBlob()) {
     auto blob = downloaded_blob.GetBlobHandle();
     if (blob) {
-      Context().DispatchDidReceiveData(resource_->Identifier(), nullptr,
-                                       blob->size());
-      resource_->DidDownloadData(blob->size());
+      DidDownloadData(blob->size(), blob->size());
     }
-    Context().DispatchDidDownloadToBlob(resource_->Identifier(), blob.get());
-    resource_->DidDownloadToBlob(blob);
+    FinishedCreatingBlob(blob);
   }
   DidFinishLoading(CurrentTimeTicks(), encoded_data_length, encoded_body_length,
                    decoded_body_length, false);
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index 0aac447..4eaad70 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -396,7 +396,7 @@
       name: "DisableRasterInvalidation",
     },
     {
-      name: "DisplayCutoutViewportFit",
+      name: "DisplayCutoutAPI",
       settable_from_internals: true,
     },
     {
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
index 29da56ae..54651255 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
@@ -116,23 +116,29 @@
                              this,
                              &tracing_controller_,
                              YesNoStateToString),
-      page_frozen_for_tracing_(parent_page_scheduler_->IsFrozen(),
-                               "FrameScheduler.PageFrozen",
-                               this,
-                               &tracing_controller_,
-                               FrozenStateToString),
-      page_visibility_for_tracing_(parent_page_scheduler_->IsPageVisible()
-                                       ? PageVisibilityState::kVisible
-                                       : PageVisibilityState::kHidden,
-                                   "FrameScheduler.PageVisibility",
-                                   this,
-                                   &tracing_controller_,
-                                   PageVisibilityStateToString),
-      page_keep_active_for_tracing_(parent_page_scheduler_->KeepActive(),
-                                    "FrameScheduler.KeepActive",
-                                    this,
-                                    &tracing_controller_,
-                                    KeepActiveStateToString) {}
+      page_frozen_for_tracing_(
+          parent_page_scheduler_ ? parent_page_scheduler_->IsFrozen() : true,
+          "FrameScheduler.PageFrozen",
+          this,
+          &tracing_controller_,
+          FrozenStateToString),
+      page_visibility_for_tracing_(
+          parent_page_scheduler_ && parent_page_scheduler_->IsPageVisible()
+              ? PageVisibilityState::kVisible
+              : PageVisibilityState::kHidden,
+          "FrameScheduler.PageVisibility",
+          this,
+          &tracing_controller_,
+          PageVisibilityStateToString),
+      page_keep_active_for_tracing_(
+          parent_page_scheduler_ ? parent_page_scheduler_->KeepActive() : false,
+          "FrameScheduler.KeepActive",
+          this,
+          &tracing_controller_,
+          KeepActiveStateToString) {}
+
+FrameSchedulerImpl::FrameSchedulerImpl()
+    : FrameSchedulerImpl(nullptr, nullptr, nullptr, FrameType::kSubframe) {}
 
 namespace {
 
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h
index 2a3cc046..ac8df80 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h
@@ -94,6 +94,11 @@
   void SetPageKeepActiveForTracing(bool keep_active);
   void SetPageFrozenForTracing(bool frozen);
 
+ protected:
+  // This will construct a subframe that is not linked to any main thread or
+  // page scheduler. Should be used only for testing purposes.
+  FrameSchedulerImpl();
+
  private:
   friend class PageSchedulerImpl;
   friend class main_thread_scheduler_impl_unittest::MainThreadSchedulerImplTest;
@@ -174,7 +179,6 @@
       page_visibility_for_tracing_;
   TraceableState<bool, kTracingCategoryNameInfo> page_keep_active_for_tracing_;
 
-
   DISALLOW_COPY_AND_ASSIGN(FrameSchedulerImpl);
 };
 
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc
index c31f8cd..7c884075 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc
@@ -82,7 +82,7 @@
                                        start + duration, base::nullopt);
   }
 
-  void RunTask(FrameScheduler* scheduler,
+  void RunTask(FrameSchedulerImpl* scheduler,
                base::TimeTicks start,
                base::TimeDelta duration) {
     DCHECK_LE(clock_.NowTicks(), start);
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
index 382168c..028f814 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
@@ -456,11 +456,6 @@
           main_thread_scheduler_impl,
           &main_thread_scheduler_impl->tracing_controller_,
           YesNoStateToString),
-      frozen_when_backgrounded(false,
-                               "MainThreadScheduler.FrozenWhenBackgrounded",
-                               main_thread_scheduler_impl,
-                               &main_thread_scheduler_impl->tracing_controller_,
-                               YesNoStateToString),
       loading_task_estimated_cost(
           base::TimeDelta(),
           "Scheduler.LoadingTaskEstimatedCostMs",
@@ -1439,22 +1434,21 @@
     new_policy_duration = touchstart_expected_flag_valid_for_duration;
   }
 
-  bool previously_frozen_when_backgrounded =
-      main_thread_only().frozen_when_backgrounded;
+  Policy new_policy;
+
   bool newly_frozen = false;
   if (main_thread_only().renderer_backgrounded &&
       main_thread_only().freezing_when_backgrounded_enabled) {
     base::TimeTicks stop_at = main_thread_only().background_status_changed_at +
                               delay_for_background_tab_freezing_;
 
-    newly_frozen = !main_thread_only().frozen_when_backgrounded;
-    main_thread_only().frozen_when_backgrounded = now >= stop_at;
-    newly_frozen &= main_thread_only().frozen_when_backgrounded;
+    newly_frozen =
+        !main_thread_only().current_policy.frozen_when_backgrounded();
+    new_policy.frozen_when_backgrounded() = now >= stop_at;
+    newly_frozen &= new_policy.frozen_when_backgrounded();
 
-    if (!main_thread_only().frozen_when_backgrounded)
+    if (!new_policy.frozen_when_backgrounded())
       UpdatePolicyDuration(now, stop_at, &new_policy_duration);
-  } else {
-    main_thread_only().frozen_when_backgrounded = false;
   }
 
   if (new_policy_duration > base::TimeDelta()) {
@@ -1474,7 +1468,6 @@
       main_thread_only().compositor_frame_interval *
           kFastCompositingIdleTimeThreshold;
 
-  Policy new_policy;
   ExpensiveTaskPolicy expensive_task_policy = ExpensiveTaskPolicy::kRun;
   new_policy.rail_mode() = v8::PERFORMANCE_ANIMATION;
 
@@ -1592,12 +1585,6 @@
   }
   main_thread_only().expensive_task_policy = expensive_task_policy;
 
-  if (main_thread_only().frozen_when_backgrounded) {
-    // TODO(panicker): Remove this, as it is controlled at
-    // FrameScheduler. This is currently needed to avoid early out.
-    new_policy.timer_queue_policy().is_frozen = true;
-  }
-
   if (main_thread_only().renderer_pause_count != 0) {
     new_policy.loading_queue_policy().is_paused = true;
     new_policy.timer_queue_policy().is_paused = true;
@@ -1649,11 +1636,11 @@
   // TODO(skyostil): send these notifications after releasing the scheduler
   // lock.
   if (main_thread_only().freezing_when_backgrounded_enabled) {
-    if (main_thread_only().frozen_when_backgrounded !=
-        previously_frozen_when_backgrounded) {
-      SetFrozenInBackground(main_thread_only().frozen_when_backgrounded);
+    if (new_policy.frozen_when_backgrounded() !=
+        main_thread_only().current_policy.frozen_when_backgrounded()) {
+      SetFrozenInBackground(new_policy.frozen_when_backgrounded());
       MainThreadMetricsHelper::RecordBackgroundedTransition(
-          main_thread_only().frozen_when_backgrounded
+          new_policy.frozen_when_backgrounded()
               ? BackgroundedRendererTransition::kFrozenAfterDelay
               : BackgroundedRendererTransition::kResumed);
     }
@@ -2136,8 +2123,6 @@
                     main_thread_only().renderer_backgrounded);
   state->SetBoolean("keep_active_fetch_or_worker",
                     main_thread_only().keep_active_fetch_or_worker);
-  state->SetBoolean("frozen_when_backgrounded",
-                    main_thread_only().frozen_when_backgrounded);
   state->SetDouble("now", (optional_now - base::TimeTicks()).InMillisecondsF());
   state->SetDouble(
       "fling_compositor_escalation_deadline",
@@ -2219,10 +2204,6 @@
     return false;
   if (is_blocked && task_queue->CanBeDeferred())
     return false;
-  // TODO(panicker): Remove this, as it is redundant as we stop per-frame
-  // task_queues in WebFrameScheduler
-  if (is_frozen && task_queue->CanBeFrozen())
-    return false;
   return true;
 }
 
@@ -2252,7 +2233,6 @@
   state->SetBoolean("is_paused", is_paused);
   state->SetBoolean("is_throttled", is_throttled);
   state->SetBoolean("is_blocked", is_blocked);
-  state->SetBoolean("is_frozen", is_frozen);
   state->SetBoolean("use_virtual_time", use_virtual_time);
   state->SetString("priority", TaskQueue::PriorityToString(priority));
 }
@@ -2277,6 +2257,7 @@
 
   state->SetString("rail_mode", RAILModeToString(rail_mode()));
   state->SetBoolean("should_disable_throttling", should_disable_throttling());
+  state->SetBoolean("frozen_when_backgrounded", frozen_when_backgrounded());
 }
 
 void MainThreadSchedulerImpl::OnIdlePeriodStarted() {
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h
index 9e20f649..a0f46ed 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h
@@ -373,7 +373,6 @@
           is_paused(false),
           is_throttled(false),
           is_blocked(false),
-          is_frozen(false),
           use_virtual_time(false),
           priority(base::sequence_manager::TaskQueue::kNormalPriority) {}
 
@@ -381,7 +380,6 @@
     bool is_paused;
     bool is_throttled;
     bool is_blocked;
-    bool is_frozen;
     bool use_virtual_time;
     base::sequence_manager::TaskQueue::QueuePriority priority;
 
@@ -395,7 +393,7 @@
     bool operator==(const TaskQueuePolicy& other) const {
       return is_enabled == other.is_enabled && is_paused == other.is_paused &&
              is_throttled == other.is_throttled &&
-             is_blocked == other.is_blocked && is_frozen == other.is_frozen &&
+             is_blocked == other.is_blocked &&
              use_virtual_time == other.use_virtual_time &&
              priority == other.priority;
     }
@@ -407,7 +405,8 @@
    public:
     Policy()
         : rail_mode_(v8::PERFORMANCE_ANIMATION),
-          should_disable_throttling_(false) {}
+          should_disable_throttling_(false),
+          frozen_when_backgrounded_(false) {}
     ~Policy() = default;
 
     TaskQueuePolicy& compositor_queue_policy() {
@@ -459,9 +458,13 @@
       return should_disable_throttling_;
     }
 
+    bool& frozen_when_backgrounded() { return frozen_when_backgrounded_; }
+    bool frozen_when_backgrounded() const { return frozen_when_backgrounded_; }
+
     bool operator==(const Policy& other) const {
       return policies_ == other.policies_ && rail_mode_ == other.rail_mode_ &&
-             should_disable_throttling_ == other.should_disable_throttling_;
+             should_disable_throttling_ == other.should_disable_throttling_ &&
+             frozen_when_backgrounded_ == other.frozen_when_backgrounded_;
     }
 
     void AsValueInto(base::trace_event::TracedValue* state) const;
@@ -469,6 +472,7 @@
    private:
     v8::RAILMode rail_mode_;
     bool should_disable_throttling_;
+    bool frozen_when_backgrounded_;
 
     std::array<TaskQueuePolicy,
                static_cast<size_t>(MainThreadTaskQueue::QueueClass::kCount)>
@@ -736,7 +740,6 @@
         keep_active_fetch_or_worker;
     TraceableState<bool, kTracingCategoryNameInfo>
         freezing_when_backgrounded_enabled;
-    TraceableState<bool, kTracingCategoryNameInfo> frozen_when_backgrounded;
     TraceableCounter<base::TimeDelta, kTracingCategoryNameInfo>
         loading_task_estimated_cost;
     TraceableCounter<base::TimeDelta, kTracingCategoryNameInfo>
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc
index 157df19..77ecbcbf 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc
@@ -721,7 +721,7 @@
                                   &MainThreadSchedulerImpl::UseCaseToString);
   }
 
-  static scoped_refptr<TaskQueue> ThrottableTaskQueue(
+  static scoped_refptr<TaskQueue> ThrottleableTaskQueue(
       FrameSchedulerImpl* scheduler) {
     return scheduler->ThrottleableTaskQueue();
   }
@@ -2519,6 +2519,18 @@
 }
 
 TEST_F(MainThreadSchedulerImplTest, TestRendererBackgroundedTimerSuspension) {
+  std::unique_ptr<PageSchedulerImpl> page_scheduler = base::WrapUnique(
+      new PageSchedulerImpl(nullptr, scheduler_.get(),
+                            false /* disable_background_timer_throttling */));
+  scheduler_->AddPageScheduler(page_scheduler.get());
+
+  std::unique_ptr<FrameSchedulerImpl> frame_scheduler =
+      page_scheduler->CreateFrameSchedulerImpl(
+          nullptr, FrameScheduler::FrameType::kMainFrame);
+
+  // Use the |frame_scheduler|'s timer task queue in PostTestTasks().
+  timer_task_runner_ = ThrottleableTaskQueue(frame_scheduler.get());
+
   scheduler_->SetFreezingWhenBackgroundedEnabled(true);
 
   std::vector<std::string> run_order;
@@ -3587,7 +3599,7 @@
       page_scheduler->CreateFrameSchedulerImpl(
           nullptr, FrameScheduler::FrameType::kSubframe);
 
-  TaskQueue* timer_tq = ThrottableTaskQueue(frame_scheduler.get()).get();
+  TaskQueue* timer_tq = ThrottleableTaskQueue(frame_scheduler.get()).get();
 
   frame_scheduler->SetCrossOrigin(true);
   frame_scheduler->SetFrameVisible(false);
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.cc
index 8f2584c5..a4bf4ca 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.cc
@@ -172,7 +172,7 @@
   frame_scheduler_ = nullptr;
 }
 
-FrameScheduler* MainThreadTaskQueue::GetFrameScheduler() const {
+FrameSchedulerImpl* MainThreadTaskQueue::GetFrameScheduler() const {
   return frame_scheduler_;
 }
 
@@ -181,7 +181,7 @@
 }
 
 void MainThreadTaskQueue::SetFrameSchedulerForTest(
-    FrameScheduler* frame_scheduler) {
+    FrameSchedulerImpl* frame_scheduler) {
   frame_scheduler_ = frame_scheduler;
 }
 
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h
index 99c0747b1..c3f72e9f 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h
@@ -17,9 +17,6 @@
 }  // namespace base
 
 namespace blink {
-
-class FrameScheduler;
-
 namespace scheduler {
 
 class MainThreadSchedulerImpl;
@@ -157,7 +154,7 @@
     base::sequence_manager::TaskQueue::Spec spec;
     base::Optional<base::sequence_manager::TaskQueue::QueuePriority>
         fixed_priority;
-    FrameScheduler* frame_scheduler;
+    FrameSchedulerImpl* frame_scheduler;
     bool can_be_deferred;
     bool can_be_throttled;
     bool can_be_paused;
@@ -202,11 +199,11 @@
   // Override base method to notify MainThreadScheduler about shutdown queue.
   void ShutdownTaskQueue() override;
 
-  FrameScheduler* GetFrameScheduler() const;
+  FrameSchedulerImpl* GetFrameScheduler() const;
   void DetachFromFrameScheduler();
 
  protected:
-  void SetFrameSchedulerForTest(FrameScheduler* frame);
+  void SetFrameSchedulerForTest(FrameSchedulerImpl* frame_scheduler);
 
   MainThreadTaskQueue(
       std::unique_ptr<base::sequence_manager::internal::TaskQueueImpl> impl,
@@ -236,7 +233,7 @@
   // Needed to notify renderer scheduler about completed tasks.
   MainThreadSchedulerImpl* main_thread_scheduler_;  // NOT OWNED
 
-  FrameScheduler* frame_scheduler_;  // NOT OWNED
+  FrameSchedulerImpl* frame_scheduler_;  // NOT OWNED
 
   DISALLOW_COPY_AND_ASSIGN(MainThreadTaskQueue);
 };
diff --git a/third_party/blink/renderer/platform/scheduler/test/fake_frame_scheduler.h b/third_party/blink/renderer/platform/scheduler/test/fake_frame_scheduler.h
index 7725ab2..2ceca2f 100644
--- a/third_party/blink/renderer/platform/scheduler/test/fake_frame_scheduler.h
+++ b/third_party/blink/renderer/platform/scheduler/test/fake_frame_scheduler.h
@@ -28,7 +28,7 @@
 };
 
 // A dummy FrameScheduler for tests.
-class FakeFrameScheduler : public FrameScheduler {
+class FakeFrameScheduler : public FrameSchedulerImpl {
  public:
   FakeFrameScheduler()
       : page_scheduler_(nullptr),
diff --git a/third_party/blink/renderer/platform/testing/paint_test_configurations.h b/third_party/blink/renderer/platform/testing/paint_test_configurations.h
index c32b0eb1..4b9c7d8 100644
--- a/third_party/blink/renderer/platform/testing/paint_test_configurations.h
+++ b/third_party/blink/renderer/platform/testing/paint_test_configurations.h
@@ -37,10 +37,10 @@
   }
 };
 
-#define INSTANTIATE_PAINT_TEST_CASE_P(test_class)                      \
-  INSTANTIATE_TEST_CASE_P(                                             \
-      All, test_class,                                                 \
-      ::testing::Values(0, kSlimmingPaintV175, kBlinkGenPropertyTrees, \
+#define INSTANTIATE_PAINT_TEST_CASE_P(test_class)                   \
+  INSTANTIATE_TEST_CASE_P(                                          \
+      All, test_class,                                              \
+      ::testing::Values(kSlimmingPaintV175, kBlinkGenPropertyTrees, \
                         kSlimmingPaintV2))
 
 #define INSTANTIATE_SPV2_TEST_CASE_P(test_class) \
diff --git a/third_party/inspector_protocol/README.chromium b/third_party/inspector_protocol/README.chromium
index 2276559..ee2a9f1 100644
--- a/third_party/inspector_protocol/README.chromium
+++ b/third_party/inspector_protocol/README.chromium
@@ -2,7 +2,7 @@
 Short Name: inspector_protocol
 URL: https://chromium.googlesource.com/deps/inspector_protocol/
 Version: 0
-Revision: f58d0663990a0d72a276065d0d798d26f2916f3d
+Revision: 7efd53047e3df9993c0c1653bb674f2de9b93053
 License: BSD
 License File: LICENSE
 Security Critical: no
diff --git a/third_party/inspector_protocol/lib/Protocol_cpp.template b/third_party/inspector_protocol/lib/Protocol_cpp.template
index 9016563..1167ed4 100644
--- a/third_party/inspector_protocol/lib/Protocol_cpp.template
+++ b/third_party/inspector_protocol/lib/Protocol_cpp.template
@@ -7,6 +7,6 @@
 #include {{format_include(config.protocol.package, "Protocol")}}
 
 #include <algorithm>
+#include <climits>
 #include <cmath>
-
 #include <cstring>
diff --git a/third_party/libaom/BUILD.gn.cmake b/third_party/libaom/BUILD.gn.cmake
index 39315904..be86c77 100644
--- a/third_party/libaom/BUILD.gn.cmake
+++ b/third_party/libaom/BUILD.gn.cmake
@@ -195,27 +195,18 @@
     }
   }
 
-  if (cpu_arch_full == "arm-neon-cpu-detect") {
+  if (cpu_arch_full == "arm-neon" || cpu_arch_full == "arm-neon-cpu-detect") {
     static_library("libaom_intrinsics_neon") {
       configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
       configs += [ ":libaom_config" ]
       cflags = [ "-mfpu=neon" ]
-      sources = libaom_srcs_arm_neon_cpu_detect_neon
+      sources = aom_av1_common_intrin_neon
+      sources += aom_dsp_common_intrin_neon
     }
-  }
 
-  if (current_cpu == "arm") {
-    if (cpu_arch_full == "arm-neon") {
-      arm_assembly_sources = aom_dsp_common_asm_neon
-    } else if (cpu_arch_full == "arm-neon-cpu-detect") {
-      arm_assembly_sources = libaom_srcs_arm_neon_cpu_detect_assembly
-    } else {
-      arm_assembly_sources = libaom_srcs_arm_assembly
-    }
-  }
+    arm_assembly_sources = aom_dsp_common_asm_neon
 
-  # Converts ARM assembly files to GAS style.
-  if (current_cpu == "arm" && arm_assembly_sources != []) {
+    # Converts ARM assembly files to GAS style.
     action_foreach("convert_arm_assembly") {
       script = "//third_party/libvpx/run_perl.py"
       sources = arm_assembly_sources
@@ -288,23 +279,15 @@
     } else if (current_cpu == "mipsel" || current_cpu == "mips64el") {
       sources = libaom_srcs_mips
     } else if (current_cpu == "arm") {
-      if (arm_use_neon) {
-        sources = aom_av1_common_sources
-        sources += aom_av1_decoder_sources
-        sources += aom_dsp_common_sources
-        sources += aom_dsp_decoder_sources
-        sources += aom_mem_sources
-        sources += aom_rtcd_sources
-        sources += aom_scale_sources
-        sources += aom_sources
-        sources += aom_util_sources
-        sources += aom_av1_common_intrin_neon
-        sources += aom_dsp_common_intrin_neon
-      } else if (is_android) {
-        sources = libaom_srcs_arm_neon_cpu_detect
-      } else {
-        sources = libaom_srcs_arm
-      }
+      sources = aom_av1_common_sources
+      sources += aom_av1_decoder_sources
+      sources += aom_dsp_common_sources
+      sources += aom_dsp_decoder_sources
+      sources += aom_mem_sources
+      sources += aom_rtcd_sources
+      sources += aom_scale_sources
+      sources += aom_sources
+      sources += aom_util_sources
     } else if (current_cpu == "arm64") {
       sources = libaom_srcs_arm64
     }
@@ -324,15 +307,15 @@
         ":libaom_yasm",
       ]
     }
-    if (cpu_arch_full == "arm-neon-cpu-detect") {
-      deps += [ ":libaom_intrinsics_neon" ]
+    if (cpu_arch_full == "arm-neon" || cpu_arch_full == "arm-neon-cpu-detect") {
+      deps += [
+        ":libaom_intrinsics_neon",
+        ":libaom_assembly_arm",
+      ]
     }
     if (is_android) {
       deps += [ "//third_party/android_tools:cpu_features" ]
     }
-    if (current_cpu == "arm" && arm_assembly_sources != []) {
-      deps += [ ":libaom_assembly_arm" ]
-    }
 
     public_configs = [ ":libaom_external_config" ]
   }
diff --git a/third_party/libaom/cmake_update.sh b/third_party/libaom/cmake_update.sh
index 9bf961c..8ba3792 100755
--- a/third_party/libaom/cmake_update.sh
+++ b/third_party/libaom/cmake_update.sh
@@ -35,6 +35,18 @@
   rm -rf "${TMP}"
 }
 
+# Create empty temp and config directories.
+# $1 - Header file directory.
+function reset_dirs {
+  cd ..
+  rm -rf "${TMP}"
+  mkdir "${TMP}"
+  cd "${TMP}"
+
+  rm -fr "${CFG}/${1}"
+  mkdir -p "${CFG}/${1}/config"
+}
+
 if [ $# -ne 0 ]; then
   echo "Unknown option(s): ${@}"
   exit 1
@@ -47,7 +59,7 @@
 # Generate libaom.config file for rtcd.pl.
 # $1 - platform/arch
 function print_config {
-  combined_config="$(cat ${CFG}/${1}/aom_config.h | grep -E ' +[01] *$')"
+  combined_config="$(cat ${CFG}/${1}/config/aom_config.h | grep -E ' +[01] *$')"
   combined_config="$(echo "$combined_config" | grep -v DO1STROUNDING)"
   combined_config="$(echo "$combined_config" | sed 's/[ \t]//g')"
   combined_config="$(echo "$combined_config" | sed 's/.*define//')"
@@ -70,27 +82,27 @@
     --sym=av1_rtcd ${3} \
     --config=libaom.config \
     "${SRC}/av1/common/av1_rtcd_defs.pl" \
-    > "${CFG}/${1}/av1_rtcd.h"
+    > "${CFG}/${1}/config/av1_rtcd.h"
 
-  clang-format -i "${CFG}/${1}/av1_rtcd.h"
+  clang-format -i "${CFG}/${1}/config/av1_rtcd.h"
 
   ${SRC}/build/make/rtcd.pl \
     --arch=${2} \
     --sym=aom_scale_rtcd ${3} \
     --config=libaom.config \
     "${SRC}/aom_scale/aom_scale_rtcd.pl" \
-    > "${CFG}/${1}/aom_scale_rtcd.h"
+    > "${CFG}/${1}/config/aom_scale_rtcd.h"
 
-  clang-format -i "${CFG}/${1}/aom_scale_rtcd.h"
+  clang-format -i "${CFG}/${1}/config/aom_scale_rtcd.h"
 
   ${SRC}/build/make/rtcd.pl \
     --arch=${2} \
     --sym=aom_dsp_rtcd ${3} \
     --config=libaom.config \
     "${SRC}/aom_dsp/aom_dsp_rtcd_defs.pl" \
-    > "${CFG}/${1}/aom_dsp_rtcd.h"
+    > "${CFG}/${1}/config/aom_dsp_rtcd.h"
 
-  clang-format -i "${CFG}/${1}/aom_dsp_rtcd.h"
+  clang-format -i "${CFG}/${1}/config/aom_dsp_rtcd.h"
 }
 
 # Generate Config files.
@@ -112,14 +124,16 @@
     *mips*) ;;
     nacl) ;;
     *x64*|*ia32*)
-      egrep "#define [A-Z0-9_]+ [01]" aom_config.h | \
-        awk '{print "%define " $2 " " $3}' > aom_config.asm
+      egrep "#define [A-Z0-9_]+ [01]" config/aom_config.h | \
+        awk '{print "%define " $2 " " $3}' > config/aom_config.asm
       ;;
     *)
-      egrep "#define [A-Z0-9_]+ [01]" aom_config.h | \
+      egrep "#define [A-Z0-9_]+ [01]" config/aom_config.h | \
         awk '{print $2 " EQU " $3}' | \
-        perl "${SRC}/build/make/${ASM_CONV}" > aom_config.asm
+        perl "${SRC}/build/make/${ASM_CONV}" > config/aom_config.asm
   esac
+
+  cp config/aom_config.{h,c,asm} "${CFG}/${1}/config/"
 }
 
 function update_readme {
@@ -153,53 +167,51 @@
 toolchain="-DCMAKE_TOOLCHAIN_FILE=${SRC}/build/cmake/toolchains"
 
 echo "Generate linux/ia32 config files."
+reset_dirs linux/ia32
 gen_config_files linux/ia32 "${toolchain}/x86-linux.cmake ${all_platforms}"
 # libaom_srcs.gni and aom_version.h are shared.
 cp libaom_srcs.gni "${BASE}"
-cp aom_version.h "${CFG}"
-rm -f "${CFG}/linux/ia32"/*
-cp aom_config.h aom_config.c aom_config.asm "${CFG}/linux/ia32/"
+rm -f "${CFG}/aom_version.h"
+cp config/aom_version.h "${CFG}/config"
 gen_rtcd_header linux/ia32 x86 #--disable-avx2
 
-cd ..
-rm -rf "${TMP}"
-mkdir "${TMP}"
-cd "${TMP}"
-
 echo "Generate linux/x64 config files."
+reset_dirs linux/x64
 gen_config_files linux/x64 "${all_platforms}"
-rm -f "${CFG}/linux/x64"/*
-cp aom_config.h aom_config.c aom_config.asm "${CFG}/linux/x64/"
 gen_rtcd_header linux/x64 x86_64 #--disable-avx2
 
 # Windows looks like linux but with some minor tweaks. Cmake doesn't generate VS
 # project files on linux otherwise we would not resort to these hacks.
 
 echo "Generate win/x64 config files"
-rm -f "${CFG}/win/x64"/*
-cp "${CFG}/linux/x64"/* "${CFG}/win/x64/"
+reset_dirs win/x64
+cp "${CFG}/linux/x64/config"/* "${CFG}/win/x64/config/"
 sed -i.bak \
   -e 's/\(#define[[:space:]]INLINE[[:space:]]*\)inline/#define INLINE __inline/' \
   -e 's/\(#define[[:space:]]HAVE_PTHREAD_H[[:space:]]*\)1/#define HAVE_PTHREAD_H 0/' \
   -e 's/\(#define[[:space:]]HAVE_UNISTD_H[[:space:]]*\)1/#define HAVE_UNISTD_H 0/' \
   -e 's/\(#define[[:space:]]CONFIG_GCC[[:space:]]*\)1/#define CONFIG_GCC 0/' \
   -e 's/\(#define[[:space:]]CONFIG_MSVS[[:space:]]*\)0/#define CONFIG_MSVS 1/' \
-  "${CFG}/win/x64/aom_config.h"
-rm "${CFG}/win/x64/aom_config.h.bak"
-egrep "#define [A-Z0-9_]+ [01]" "${CFG}/win/x64/aom_config.h" \
-  | awk '{print "%define " $2 " " $3}' > "${CFG}/win/x64/aom_config.asm"
+  "${CFG}/win/x64/config/aom_config.h"
+rm "${CFG}/win/x64/config/aom_config.h.bak"
+egrep "#define [A-Z0-9_]+ [01]" "${CFG}/win/x64/config/aom_config.h" \
+  | awk '{print "%define " $2 " " $3}' > "${CFG}/win/x64/config/aom_config.asm"
 
-cd ..
-rm -rf "${TMP}"
-mkdir "${TMP}"
-cd "${TMP}"
+echo "Generate linux/arm config files."
+reset_dirs linux/arm
+gen_config_files linux/arm \
+  "${toolchain}/armv7-linux-gcc.cmake -DENABLE_NEON=0 -DENABLE_NEON_ASM=0 ${all_platforms}"
+gen_rtcd_header linux/arm armv7 --disable-neon
 
 echo "Generate linux/arm-neon config files."
+reset_dirs linux/arm-neon
 gen_config_files linux/arm-neon "${toolchain}/armv7-linux-gcc.cmake ${all_platforms}"
-rm -f "${CFG}/linux/arm-neon"/*
-# mkdir required only for initial commit
-mkdir -p "${CFG}/linux/arm-neon"
-cp aom_config.h aom_config.c aom_config.asm "${CFG}/linux/arm-neon/"
 gen_rtcd_header linux/arm-neon armv7
 
+echo "Generate linux/arm-neon-cpu-detect config files."
+reset_dirs linux/arm-neon-cpu-detect
+gen_config_files linux/arm-neon-cpu-detect \
+  "${toolchain}/armv7-linux-gcc.cmake -DCONFIG_RUNTIME_CPU_DETECT=1 ${all_platforms}"
+gen_rtcd_header linux/arm-neon-cpu-detect armv7
+
 clean
diff --git a/third_party/libvpx/README.chromium b/third_party/libvpx/README.chromium
index b2a3e02..bb26a9d2 100644
--- a/third_party/libvpx/README.chromium
+++ b/third_party/libvpx/README.chromium
@@ -5,9 +5,9 @@
 License File: source/libvpx/LICENSE
 Security Critical: yes
 
-Date: Friday May 25 2018
+Date: Monday May 28 2018
 Branch: master
-Commit: 36825590ba676d54765c6c31482cacb4fe661b43
+Commit: 2b08f89076d1e93339fbbcc10e3298a0eec66bd6
 
 Description:
 Contains the sources used to compile libvpx binaries used by Google Chrome and
diff --git a/third_party/libvpx/source/config/vpx_version.h b/third_party/libvpx/source/config/vpx_version.h
index 077ec82c..abdf59c 100644
--- a/third_party/libvpx/source/config/vpx_version.h
+++ b/third_party/libvpx/source/config/vpx_version.h
@@ -2,7 +2,7 @@
 #define VERSION_MAJOR  1
 #define VERSION_MINOR  7
 #define VERSION_PATCH  0
-#define VERSION_EXTRA  "400-g36825590b"
+#define VERSION_EXTRA  "404-g2b08f8907"
 #define VERSION_PACKED ((VERSION_MAJOR<<16)|(VERSION_MINOR<<8)|(VERSION_PATCH))
-#define VERSION_STRING_NOSP "v1.7.0-400-g36825590b"
-#define VERSION_STRING      " v1.7.0-400-g36825590b"
+#define VERSION_STRING_NOSP "v1.7.0-404-g2b08f8907"
+#define VERSION_STRING      " v1.7.0-404-g2b08f8907"
diff --git a/third_party/unrar/README.chromium b/third_party/unrar/README.chromium
index d3d73dc..2579342 100644
--- a/third_party/unrar/README.chromium
+++ b/third_party/unrar/README.chromium
@@ -17,3 +17,11 @@
 process in which this library is running, when it encounters some error
 conditions. This is acceptable for Chromium because the library executes inside
 a sandbox, but may not apply more broadly.
+
+Notable changes from upstream:
+- Use CHROMIUM_UNRAR macro to guard Chromium-specific changes.
+- Rewrite WinNT() in isnt.cpp to use the new Windows APIs.
+- Explicit use of parentheses to fix linter errors.
+- Replace exceptions with terminating the current process. Guarded with the
+  macro UNRAR_NO_EXCEPTIONS.
+
diff --git a/tools/binary_size/BUILD.gn b/tools/binary_size/BUILD.gn
index fb3ded94..55e574ac 100644
--- a/tools/binary_size/BUILD.gn
+++ b/tools/binary_size/BUILD.gn
@@ -10,5 +10,6 @@
   pydeps_file = "supersize.pydeps"
   data = [
     "diagnose_bloat.py",
+    "trybot_commit_size_checker.py",
   ]
 }
diff --git a/tools/binary_size/diagnose_bloat.py b/tools/binary_size/diagnose_bloat.py
index ff201f3..1b50c90 100755
--- a/tools/binary_size/diagnose_bloat.py
+++ b/tools/binary_size/diagnose_bloat.py
@@ -62,7 +62,8 @@
 
   @property
   def summary_stat(self):
-    return None
+    """Returns a tuple of (name, value, units) for the most important metric."""
+    raise NotImplementedError()
 
   def Summary(self):
     """A short description that summarizes the source of binary size bloat."""
@@ -85,7 +86,7 @@
 class NativeDiff(BaseDiff):
   # E.g.: Section Sizes (Total=1.2 kb (1222 bytes)):
   _RE_SUMMARY_STAT = re.compile(
-      r'Section Sizes \(Total=(?P<value>\d+) ?(?P<units>\w+)')
+      r'Section Sizes \(Total=(?P<value>-?[0-9\.]+) ?(?P<units>\w+)')
   _SUMMARY_STAT_NAME = 'Native Library Delta'
 
   def __init__(self, size_name, supersize_path):
@@ -100,7 +101,7 @@
     if m:
       return _DiffResult(
           NativeDiff._SUMMARY_STAT_NAME, m.group('value'), m.group('units'))
-    return None
+    raise Exception('Could not extract total from:\n' + self._diff)
 
   def DetailedResults(self):
     return self._diff.splitlines()
@@ -135,7 +136,7 @@
         if 'normalized' in subsection_name:
           full_name = '{} {}'.format(section_name, subsection_name)
           return _DiffResult(full_name, value, units)
-    return None
+    raise Exception('Could not find "normalized" in: ' + repr(self._diff))
 
   def DetailedResults(self):
     return self._ResultLines()
@@ -833,17 +834,13 @@
     supersize_path = os.path.join(_BINARY_SIZE_DIR, 'supersize')
     diff = NativeDiff(args.apk_name + '.size', supersize_path)
   else:
-    diff = ResourceSizesDiff(args.apk_name, args.apk_name + '.json')
+    diff = ResourceSizesDiff(args.apk_name)
 
   diff.ProduceDiff(args.before_dir, args.after_dir)
   with open(args.diff_output, 'w') as f:
     f.writelines(l + '\n' for l in diff.DetailedResults())
-
-  stat = diff.summary_stat
-  if stat:
-    print 'Summary: {} {} {}'.format(*stat)
-  else:
-    print 'Missing Summary!'
+    stat = diff.summary_stat
+    f.write('{}={}\n'.format(*stat[:2]))
 
 
 def main():
diff --git a/tools/binary_size/trybot_commit_size_checker.py b/tools/binary_size/trybot_commit_size_checker.py
new file mode 100755
index 0000000..76f2092
--- /dev/null
+++ b/tools/binary_size/trybot_commit_size_checker.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+# Copyright 2018 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Fails if a try job increases binary size unexpectedly."""
+
+import argparse
+import sys
+
+
+_MAX_UNNOTICED_INCREASE = 16 * 1024
+
+
+def main():
+  parser = argparse.ArgumentParser()
+  parser.add_argument('--author', help='CL author')
+  parser.add_argument('--resource-sizes-diff',
+                      help='Path to resource sizes diff produced by '
+                           '"diagnose_bloat.py diff sizes".')
+  args = parser.parse_args()
+
+  # Last line looks like:
+  # MonochromePublic.apk_Specifics normalized apk size=1234
+  with open(args.resource_sizes_diff) as f:
+    last_line = f.readlines()[-1]
+    size_delta = int(last_line.partition('=')[2])
+
+  is_roller = '-autoroll' in args.author
+
+  # Useful for bot debugging to have these printed out:
+  print 'Is Roller:', is_roller
+  print 'Increase:', size_delta
+
+  if size_delta > _MAX_UNNOTICED_INCREASE and not is_roller:
+    failure_message = """
+Binary size increase is non-trivial (where "non-trivial" means the normalized \
+size increased by more than {} bytes).
+
+Please look at the symbol diffs from the "Show Resource Sizes Diff" and the \
+"Show Supersize Diff" bot steps. Try and understand the growth and see if it \
+can be mitigated. There is guidance at:
+
+https://chromium.googlesource.com/chromium/src/+/master/docs/speed/apk_size_regressions.md#Debugging-Apk-Size-Increase
+
+If the growth is expected / justified, then you can bypass this bot failure by \
+adding "Binary-Size: $JUSTIFICATION" to your commit description. Here are some \
+examples:
+
+Binary-Size: Increase is due to translations and so cannot be avoided.
+Binary-Size: Increase is due to new images, which are already optimally encoded.
+Binary-Size: Increase is temporary due to a "new way" / "old way" refactoring.
+    It should go away once the "old way" is removed.
+Binary-Size: Increase is temporary and will be reverted before next branch cut.
+Binary-Size: Increase needed to reduce RAM of a common user flow.
+Binary-Size: Increase needed to reduce runtime of a common user flow.
+Binary-Size: Increase needed to implement a feature, and I've already spent a
+    non-trivial amount of time trying to reduce its size.
+""".format(_MAX_UNNOTICED_INCREASE)
+    sys.exit(failure_message)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/tools/code_coverage/test_suite.txt b/tools/code_coverage/test_suite.txt
index 9e62e17..b2da0a9c 100644
--- a/tools/code_coverage/test_suite.txt
+++ b/tools/code_coverage/test_suite.txt
@@ -23,6 +23,9 @@
 content_browsertests
 content_unittests
 courgette_unittests
+crashpad_tests
+cronet_tests
+cronet_unittests
 crypto_unittests
 dbus_unittests
 device_unittests
@@ -44,13 +47,17 @@
 ipc_tests
 jingle_unittests
 keyboard_unittests
+latency_unittests
 leveldb_service_unittests
 libjingle_xmpp_unittests
 media_blink_unittests
 media_mojo_unittests
 media_service_unittests
 media_unittests
+message_center_unittests
 midi_unittests
+mojo_unittests
+nacl_helper_nonsfi_unittests
 nacl_loader_unittests
 native_theme_unittests
 net_unittests
diff --git a/tools/metrics/actions/README.md b/tools/metrics/actions/README.md
index 6b0a82c0..1cfb2840 100644
--- a/tools/metrics/actions/README.md
+++ b/tools/metrics/actions/README.md
@@ -155,7 +155,7 @@
 feature should be used rarely.  If you think you want to annotate your action
 thusly, please re-review the best practices above.
 
-### Deleting User Action Entries
+## Deleting User Action Entries
 
 Do not delete actions from actions.xml.  Instead, mark unused user actions as
 obsolete, annotating them with the associated date or milestone in the obsolete
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml
index 57f246d2..0932e6cc 100644
--- a/tools/metrics/actions/actions.xml
+++ b/tools/metrics/actions/actions.xml
@@ -12493,6 +12493,11 @@
   <description>Please enter the description of this user action.</description>
 </action>
 
+<action name="MobileTabStripShowTabGridMenu">
+  <owner>justincohen@chromium.org</owner>
+  <description>User long-pressed on the tab strip tab grid button.</description>
+</action>
+
 <action name="MobileTabSwitched">
   <owner>Please list the metric's owners. Add more owner tags as needed.</owner>
   <description>Please enter the description of this user action.</description>
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 94c4f28..5bd7b0b 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -3921,6 +3921,11 @@
   <int value="1" label="WebView-based flow"/>
 </enum>
 
+<enum name="BooleanGeneratedPasswordWasEdited">
+  <int value="0" label="User saved the original password generated by Chrome"/>
+  <int value="1" label="User edited the generated password"/>
+</enum>
+
 <enum name="BooleanHadAddress">
   <int value="0" label="Did not have address."/>
   <int value="1" label="Had address."/>
@@ -26885,6 +26890,7 @@
       label="DisplayPersistenceToggleInPermissionPrompts:disabled"/>
   <int value="-1536293422" label="SharedArrayBuffer:enabled"/>
   <int value="-1536242739" label="security-chip"/>
+  <int value="-1535758690" label="AutoplayIgnoreWebAudio:disabled"/>
   <int value="-1532035450" label="DragTabsInTabletMode:disabled"/>
   <int value="-1532014193" label="disable-encryption-migration"/>
   <int value="-1520855274" label="PWAFullCodeCache:disabled"/>
@@ -28003,6 +28009,7 @@
   <int value="1004909189"
       label="ContentSuggestionsThumbnailDominantColor:disabled"/>
   <int value="1005684777" label="PictureInPicture:disabled"/>
+  <int value="1006092877" label="UiFood:enabled"/>
   <int value="1007444341" label="enable-prefixed-encrypted-media"/>
   <int value="1012942422" label="HorizontalTabSwitcherAndroid:disabled"/>
   <int value="1015895665" label="drop-sync-credential:enabled"/>
@@ -28012,6 +28019,7 @@
   <int value="1019857902"
       label="disable-hide-inactive-stacked-tab-close-buttons"/>
   <int value="1022992701" label="enable-origin-chip-always"/>
+  <int value="1028808876" label="UiFood:disabled"/>
   <int value="1033148287" label="NTPShortcuts:disabled"/>
   <int value="1033412163" label="OmniboxDisplayTitleForCurrentUrl:enabled"/>
   <int value="1033597574" label="disable-layer-squashing"/>
@@ -28172,6 +28180,7 @@
   <int value="1361047396" label="disable-click-delay"/>
   <int value="1361073386" label="ContentSuggestionsNotifications:enabled"/>
   <int value="1363136936" label="VrCustomTabBrowsing:enabled"/>
+  <int value="1367467733" label="AutoplayIgnoreWebAudio:enabled"/>
   <int value="1367529437" label="NTPAssetDownloadSuggestions:enabled"/>
   <int value="1367671275" label="enable-proximity-auth-proximity-detection"/>
   <int value="1369449914" label="SysInternals:disabled"/>
@@ -45883,6 +45892,11 @@
   <int value="4" label="Reboot Pending"/>
 </enum>
 
+<enum name="UpdateEngineChromeOsVersionPrefix">
+  <int value="-1" label="Invalid"/>
+  <int value="0" label="Not set"/>
+</enum>
+
 <enum name="UpdateEngineConnectionType">
   <int value="0" label="Unknown"/>
   <int value="1" label="Ethernet"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 78644f63..041fb77 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -1321,9 +1321,11 @@
     The duration of each failed ActivityManager.getMyMemoryState() call made by
     MemoryPressureMonitor.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -1334,9 +1336,11 @@
     The duration of each successful ActivityManager.getMyMemoryState() call made
     by MemoryPressureMonitor.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -7303,8 +7307,11 @@
     Time spent to create a v8::Context instance during a page loading in the
     main-frame window.
 
-    Note: this histogram is emitted for all clients, both ones which have
-    high-resolution timer available and those which don't.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -7315,8 +7322,11 @@
     Time spent to create a v8::Context instance during a page loading in a
     non-main-frame window, e.g. iframe.
 
-    Note: this histogram is emitted for all clients, both ones which have
-    high-resolution timer available and those which don't.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -7327,8 +7337,11 @@
     Time spent initializing LocalWindowProxy during a page loading in main
     windows.
 
-    Note: this histogram is emitted for all clients, both ones which have
-    high-resolution timer available and those which don't.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -7339,8 +7352,11 @@
     Time spent initializing RemoteWindowProxy during a page loading in main
     frame of OOPIF.
 
-    Note: this histogram is emitted for all clients, both ones which have
-    high-resolution timer available and those which don't.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -7362,8 +7378,11 @@
     Time spent initializing LocalWindowProxy during a page loading in non-main
     windows, e.g. iframe.
 
-    Note: this histogram is emitted for all clients, both ones which have
-    high-resolution timer available and those which don't.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -7373,8 +7392,11 @@
   <summary>
     Time spent initializing RemoteWindowProxy during a page loading in OOPIF.
 
-    Note: this histogram is emitted for all clients, both ones which have
-    high-resolution timer available and those which don't.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -7424,23 +7446,55 @@
 
 <histogram name="Blink.Canvas.DrawImage" units="microseconds">
   <owner>junov@chromium.org</owner>
-  <summary>Time spent on 2D canvas drawImage API call.</summary>
+  <summary>
+    Time spent on 2D canvas drawImage API call.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="Blink.Canvas.GetImageData" units="microseconds">
   <owner>junov@chromium.org</owner>
-  <summary>Time spent on 2D canvas getImageData API call.</summary>
+  <summary>
+    Time spent on 2D canvas getImageData API call.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="Blink.Canvas.OffscreenCommitTimer" units="microseconds">
   <owner>junov@chromium.org</owner>
   <owner>xidachen@chromium.org</owner>
-  <summary>Wall clock durations of OffscreenCanvas.commit() calls.</summary>
+  <summary>
+    Wall clock durations of OffscreenCanvas.commit() calls.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="Blink.Canvas.PutImageData" units="microseconds">
   <owner>junov@chromium.org</owner>
-  <summary>Time spent on 2D canvas putImageData API call.</summary>
+  <summary>
+    Time spent on 2D canvas putImageData API call.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="Blink.Canvas.ToBlob.CompleteEncodingDelay"
@@ -7464,6 +7518,12 @@
     also gathered into this histogram, because the logic flow is exactly the
     same as canvas.toBlob. It's worth to note that the values can come from idle
     tasks on either main or worker thread.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -7512,6 +7572,12 @@
     also gathered into this histogram, because the logic flow is exactly the
     same as canvas.toBlob. It's worth to note that the values can come from idle
     tasks on either main or worker thread.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -7525,12 +7591,26 @@
     also gathered into this histogram, because the logic flow is exactly the
     same as canvas.toBlob. It's worth to note that the values can come from idle
     tasks on either main or worker thread.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
 <histogram name="Blink.Canvas.ToDataURL" units="microseconds">
   <owner>junov@chromium.org</owner>
-  <summary>Time spent on 2D canvas toDataURL API call.</summary>
+  <summary>
+    Time spent on 2D canvas toDataURL API call.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="Blink.CheckerableImageCount" enum="CheckerableImageType">
@@ -7696,22 +7776,40 @@
   <summary>
     Time spent updating compositing in the Blink document lifecycle.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
 <histogram name="Blink.CookieJar.SyncCookiesSetTime" units="microseconds">
   <owner>kinuko@chromium.org</owner>
   <owner>dcheng@chromium.org</owner>
-  <summary>Microseconds per sync IPC call to set cookies.</summary>
+  <summary>
+    Microseconds per sync IPC call to set cookies.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="Blink.CookieJar.SyncCookiesTime" units="microseconds">
   <owner>kinuko@chromium.org</owner>
   <owner>dcheng@chromium.org</owner>
-  <summary>Microseconds per sync IPC call to fetch cookies.</summary>
+  <summary>
+    Microseconds per sync IPC call to fetch cookies.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="Blink.DecodedImage.CanvasExpanded"
@@ -7795,9 +7893,11 @@
   <summary>
     The total microseconds spent in ResourceFetcher::requestResource.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -7845,9 +7945,11 @@
     Time spent computing IntersectionObserver observations in the Blink document
     lifecycle.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -7913,7 +8015,15 @@
 
 <histogram name="Blink.Paint.UpdateTime" units="microseconds">
   <owner>paint-dev@chromium.org</owner>
-  <summary>Time spent updating paint in the Blink document lifecycle.</summary>
+  <summary>
+    Time spent updating paint in the Blink document lifecycle.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="Blink.PaintInvalidation.UpdateTime" units="microseconds">
@@ -7935,9 +8045,11 @@
     document lifecycle. Available when SlimmingPaintInvalidation or
     SlimmingPaintV2 is enabled.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -8124,9 +8236,11 @@
     regions, touch event rects, and main thread scrolling reasons). These values
     are calculated during the main-thread blink lifecycle.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -8159,9 +8273,11 @@
   <summary>
     Time spent updating style and layout in the Blink document lifecycle.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -11007,9 +11123,11 @@
   <summary>
     Input event delivery latency from the browser to the plugin.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -11559,6 +11677,12 @@
     do hit testing on LayerTreeImpl (in a browser process).
 
     Team: animations-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -11568,9 +11692,11 @@
     Time spent updating layers, in microseconds. Recorded when layers are
     updated (in a browser process).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -11581,9 +11707,11 @@
     Time spent updating layer draw properties, in microseconds. Recorded when a
     LayerTreeImpl's draw properties are updated (in a browser process).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -11636,9 +11764,11 @@
     Time spent updating (i.e. recording) a picture pile, in microseconds.
     Recorded when picture pile is updated (in a browser process).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -11672,9 +11802,11 @@
     Time spent completing a compositor rasterization task, in microseconds.
     Recorded after the task finishes (in a browser process).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -11729,9 +11861,11 @@
     Time spent drawing of composited layers by GLRenderer, in microseconds. This
     is logged once per frame, when a frame should be drawn.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -11742,9 +11876,11 @@
     Time spent drawing of composited layers by SoftwareRenderer, in
     microseconds. This is logged once per frame, when a frame should be drawn.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -11754,9 +11890,11 @@
   <summary>
     Time spent to remove invisible quads from the quad_list in CompositorFrame.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -12026,6 +12164,12 @@
     do hit testing on LayerTreeImpl (in a renderer process).
 
     Team: animations-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -12035,9 +12179,11 @@
     Time spent updating layers, in microseconds. Recorded when layers are
     updated (in a renderer process).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -12048,9 +12194,11 @@
     Time spent updating layer draw properties, in microseconds. Recorded when a
     LayerTreeImpl's draw properties are updated (in a renderer process).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -12104,9 +12252,11 @@
     Time spent updating (i.e. recording) a picture pile, in microseconds.
     Recorded when picture pile is updated (in a renderer process).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -12140,9 +12290,11 @@
     Time spent completing a compositor rasterization task, in microseconds.
     Recorded after the task finishes (in a renderer process).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -12222,9 +12374,11 @@
     Time spent aggregating compositor frames from different surfaces in
     microseconds. This is logged once per frame.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -13568,9 +13722,11 @@
     metadata. The metadata would be used to feed Icing for CopylessPaste feature
     on Android. This only counts pages with failed or empty JSON extraction.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -13586,9 +13742,11 @@
     metadata. The metadata would be used to feed Icing for CopylessPaste feature
     on Android. This only counts pages with successful JSON extraction.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -18283,35 +18441,83 @@
 
 <histogram name="DocumentEventTiming.BeforeUnloadDuration" units="microseconds">
   <owner>panicker@chromium.org</owner>
-  <summary>Microseconds spent in beforeunload.</summary>
+  <summary>
+    Microseconds spent in beforeunload.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="DocumentEventTiming.FreezeDuration" units="microseconds">
   <owner>panicker@chromium.org</owner>
   <owner>fmeawad@chromium.org</owner>
-  <summary>Microseconds spent in onfreeze.</summary>
+  <summary>
+    Microseconds spent in onfreeze.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="DocumentEventTiming.PageHideDuration" units="microseconds">
   <owner>panicker@chromium.org</owner>
-  <summary>Microseconds spent in pagehide.</summary>
+  <summary>
+    Microseconds spent in pagehide.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="DocumentEventTiming.PageVibilityHiddenDuration"
     units="microseconds">
   <owner>panicker@chromium.org</owner>
-  <summary>Microseconds spent in vibilitychange (hidden).</summary>
+  <summary>
+    Microseconds spent in vibilitychange (hidden).
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="DocumentEventTiming.ResumeDuration" units="microseconds">
   <owner>panicker@chromium.org</owner>
   <owner>fmeawad@chromium.org</owner>
-  <summary>Microseconds spent in onresume.</summary>
+  <summary>
+    Microseconds spent in onresume.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="DocumentEventTiming.UnloadDuration" units="microseconds">
   <owner>panicker@chromium.org</owner>
-  <summary>Microseconds spent in unload.</summary>
+  <summary>
+    Microseconds spent in unload.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="DocumentScan.ConverterResult" enum="BooleanSuccess">
@@ -18461,6 +18667,46 @@
   </summary>
 </histogram>
 
+<histogram name="DomainMixing.OneDay">
+  <owner>qfiard@google.com</owner>
+  <summary>
+    The distribution over daily active users of Google Search of the ratio of
+    Google searches in the past day that were issued by the user on a Google
+    domain that is not the primary one used by the user over the same time
+    period.
+  </summary>
+</histogram>
+
+<histogram name="DomainMixing.OneMonth">
+  <owner>qfiard@google.com</owner>
+  <summary>
+    The distribution over daily active users of Google Search of the ratio of
+    Google searches in the past 30 days that were issued by the user on a Google
+    domain that is not the primary one used by the user over the same time
+    period.
+  </summary>
+</histogram>
+
+<histogram name="DomainMixing.OneWeek">
+  <owner>qfiard@google.com</owner>
+  <summary>
+    The distribution over daily active users of Google Search of the ratio of
+    Google searches in the past week that were issued by the user on a Google
+    domain that is not the primary one used by the user over the same time
+    period.
+  </summary>
+</histogram>
+
+<histogram name="DomainMixing.TwoWeeks">
+  <owner>qfiard@google.com</owner>
+  <summary>
+    The distribution over daily active users of Google Search of the ratio of
+    Google searches in the past two weeks that were issued by the user on a
+    Google domain that is not the primary one used by the user over the same
+    time period.
+  </summary>
+</histogram>
+
 <histogram name="DomainReliability.BeaconInterval" units="ms">
   <obsolete>
     Removed November 2017.
@@ -20496,9 +20742,11 @@
     incremental searches are performed for &quot;f&quot;, &quot;fa&quot;, and
     &quot;faq&quot; respectively.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -21872,6 +22120,12 @@
     starting to process it.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -21982,6 +22236,12 @@
     compositor thread.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -21994,6 +22254,12 @@
     compositor thread.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -22006,6 +22272,12 @@
     on the compositor thread.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -22824,9 +23096,11 @@
     swap. If no swap was induced by the event, no recording is made. Only
     recorded for key presses.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -22836,9 +23110,11 @@
     Time between the OS receiving a mouse event and the resulting GPU frame
     swap. If no swap was induced by the event, no recording is made.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -22850,6 +23126,12 @@
     Event.Latency.HitTestRecusrive.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -22860,13 +23142,27 @@
     the AllowChildFrameContent flag is set. See also Event.Latency.HitTest.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
 <histogram name="Event.Latency.OS" units="microseconds">
   <owner>tdresser@chromium.org</owner>
   Team: input-dev@chromium.org.
-  <summary>Time between input event received by OS and sent to Chrome.</summary>
+  <summary>
+    Time between input event received by OS and sent to Chrome.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="Event.Latency.QueueingTime.KeyPressDefaultAllowed" units="ms">
@@ -23048,6 +23344,12 @@
     this metric includes the first GSU of every scrolling sequence as well.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23062,6 +23364,12 @@
     includes the first GSU of every scrolling sequence as well.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23100,6 +23408,12 @@
     swap finishes.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23112,6 +23426,12 @@
     by suffix) and before renderer starts to swap.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23138,6 +23458,12 @@
     the ScrollUpdate gesture event, no recording is made.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23151,6 +23477,12 @@
     sequence. If no swap was induced by the event, no recording is made.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23175,6 +23507,12 @@
     swap finishes.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23187,6 +23525,12 @@
     by suffix) and before renderer starts to swap.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23213,6 +23557,12 @@
     the ScrollBegin gesture event, no recording is made.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23226,6 +23576,12 @@
     sequence. If no swap was induced by the event, no recording is made.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23393,6 +23749,12 @@
     source induced frame and the swap finishes.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23404,6 +23766,12 @@
     main/impl thread (specified by suffix) and before renderer starts to swap.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23450,6 +23818,12 @@
     recording is made.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23463,6 +23837,12 @@
     scrolling sequence is excluded from this metric.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23501,6 +23881,12 @@
     source induced frame and the swap finishes.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23512,6 +23898,12 @@
     main/impl thread (specified by suffix) and before renderer starts to swap.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23559,6 +23951,12 @@
     from this metric.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23572,6 +23970,12 @@
     scrolling sequence is excluded from this metric.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23808,6 +24212,12 @@
     forcing events non-blocking during fling.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -23837,6 +24247,12 @@
     potential benefit of using passive events listeners.
 
     Team: input-dev@chromium.org.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -24792,9 +25208,11 @@
     The time taken in computation (hashing actual bytes read and comparing
     against expected computed hashes values) during an extension resource load.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -25030,9 +25448,11 @@
     the binding.js module. This is a strict subset of
     Extensions.ApiBindingGenerationTime, which includes this work and more.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -25197,9 +25617,11 @@
     The elapsed time to create a new full instance of an extension API's
     bindings using native bindings.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -25210,9 +25632,11 @@
     The elapsed time to update the bindings for a new or existing v8::Context.
     The suffix indicates which type of context the bindings are for.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -26015,9 +26439,11 @@
     parsing all the different extension manifest keys and initializating the
     associated manifest data.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -30016,13 +30442,29 @@
 <histogram name="GPU.ANGLE.ProgramCache.BinaryCacheHitTimeUS"
     units="microseconds">
   <owner>jmadill@chromium.org</owner>
-  <summary>The time to load a gpu program from the program cache.</summary>
+  <summary>
+    The time to load a gpu program from the program cache.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="GPU.ANGLE.ProgramCache.BinaryCacheMissTimeUS"
     units="microseconds">
   <owner>jmadill@chromium.org</owner>
-  <summary>The time to link a gpu program.</summary>
+  <summary>
+    The time to link a gpu program.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="GPU.ANGLE.ProgramCache.CacheResult"
@@ -30205,9 +30647,11 @@
     The time that the GPU process spends collecting driver information during
     startup.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -30230,9 +30674,11 @@
     point of view. One of these is created for each top-level window (browser
     frame, menus, etc.).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -30595,12 +31041,28 @@
 
 <histogram name="GPU.ProgramCache.BinaryCacheHitTime" units="microseconds">
   <owner>vmiura@chromium.org</owner>
-  <summary>The time to load a gpu program from the program cache.</summary>
+  <summary>
+    The time to load a gpu program from the program cache.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="GPU.ProgramCache.BinaryCacheMissTime" units="microseconds">
   <owner>vmiura@chromium.org</owner>
-  <summary>The time to link a gpu program.</summary>
+  <summary>
+    The time to link a gpu program.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="GPU.ProgramCache.CacheHit" enum="BooleanSuccess">
@@ -30616,16 +31078,26 @@
   <summary>
     The time to check the program cache that we've already compiled the shader.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
 <histogram name="GPU.ProgramCache.CompilationCacheMissTime"
     units="microseconds">
   <owner>vmiura@chromium.org</owner>
-  <summary>The time to compile a shader.</summary>
+  <summary>
+    The time to compile a shader.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="GPU.ProgramCache.CompressDataSuccess" units="BooleanSuccess">
@@ -30642,9 +31114,11 @@
     The time to compress a program's binary data during insertion into the
     program cache.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -30669,9 +31143,11 @@
     The time to decompress a program's binary data during retrieval from the
     program cache.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -30955,9 +31431,11 @@
     The amount of time it takes to read the WinSAT results. This is collected
     each time Chrome is launched.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -35011,9 +35489,11 @@
     complex text fragments, the average number of microseconds spent laying out
     each node.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -35023,9 +35503,11 @@
     For layouts that considered at least 100 nodes, at least half of which were
     floats, the average number of microseconds spent laying out each node.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -35035,9 +35517,11 @@
     For layouts that considered at least 100 nodes, the average number of
     microseconds spent laying out each node.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -35048,9 +35532,11 @@
     fixed or absolute positioned, the average number of microseconds spent
     laying out each node.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -35061,9 +35547,11 @@
     simple text fragments, the average number of microseconds spent laying out
     each node.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -35073,9 +35561,11 @@
     For layouts that considered at least 100 nodes, at least half of which were
     table cells, the average number of microseconds spent laying out each node.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -35117,15 +35607,25 @@
   <summary>
     The time it took to compute the selector of a serialized anchor element.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
 <histogram name="Layout.ScrollAnchor.TimeToFindAnchor" units="microseconds">
   <owner>ymalik@chromium.org</owner>
-  <summary>The time it took to find a suitable anchor element.</summary>
+  <summary>
+    The time it took to find a suitable anchor element.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="Layout.ScrollAnchor.TimeToRestoreAnchor" units="microseconds">
@@ -35134,9 +35634,11 @@
     The time it took to restore the scroll anchor using the serialized anchor
     element.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -35421,9 +35923,11 @@
     RTT between Chrome and the X11 server.  Tracked in X11EventSource by
     measuring the latency to receive a property event after changing a property.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -36723,9 +37227,11 @@
     spent in WebRtcAudioRenderer::SourceCallback. Logged every function call,
     which is every 10 ms.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -36737,9 +37243,11 @@
     For WebRTC, it's the time spent in WebRtcAudioRenderer::SourceCallback. A
     session is between Start() and Stop() of WebRtcAudioRenderer.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -44162,9 +44670,11 @@
     The microseconds it takes for the InterceptNavigationThrottle to determine
     if the navigation should be ignored, at WillStartRequest time.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -51448,9 +51958,11 @@
     Time from the start to the end of receiving a response body. Recorded for
     each resource load.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -64652,9 +65164,11 @@
   <summary>
     Time taken to encode into MTHML the fully serialized contents of a frame.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -64765,9 +65279,11 @@
     Time spent serializing a CSS element (including embedded &quot;sub&quot;-CSS
     and images).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -64777,16 +65293,26 @@
     Time taken to generate HTML data from a frame's DOM and serialize it
     (without sub-resources like CSS and images).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
 <histogram name="PageSerialization.SerializationTime.ImageElement"
     units="microseconds">
   <owner>carlosk@chromium.org</owner>
-  <summary>Time spent serializing an image element.</summary>
+  <summary>
+    Time spent serializing an image element.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="Parser.AppendBytesDelay" units="ms">
@@ -64980,6 +65506,15 @@
   </summary>
 </histogram>
 
+<histogram name="PasswordGeneration.GeneratedPasswordWasEdited"
+    enum="BooleanGeneratedPasswordWasEdited">
+  <owner>kolos@chromium.org</owner>
+  <summary>
+    Measures the frequency of user editing of generated passwords. Uploaded once
+    per generated password save. Applicable to automatic and manual generations.
+  </summary>
+</histogram>
+
 <histogram name="PasswordGeneration.SubmissionAvailableEvent"
     enum="PasswordSubmissionEvent">
   <owner>gcasto@chromium.org</owner>
@@ -72312,9 +72847,11 @@
   <summary>
     Microseconds it took to scan the first chunk of external CSS for preloads.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -76215,9 +76752,11 @@
     the compositor. It is recorded every time we decode an image. It is suffixed
     by the type of rasterization we're in (either Gpu or Software).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -76230,9 +76769,11 @@
     in the compositor. It is recorded every time we decode an image. It is
     suffixed by the type of rasterization we're in (either Gpu or Software).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -76526,9 +77067,11 @@
     Time between the issue of a texture copy operation and detecting that it has
     completed as measured by the GPU process.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -76775,10 +77318,6 @@
     The estimated queueing duration which would be observed for additional high
     priority tasks posted to the RendererScheduler, in microseconds. Recorded
     for each 1000 ms window.
-
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
   </summary>
 </histogram>
 
@@ -76790,6 +77329,12 @@
     The estimated queueing duration which would be observed for additional high
     priority tasks posted to the RendererScheduler, in microseconds. Recorded
     for each 1000 ms window.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -77184,6 +77729,12 @@
 
     Note that this metric discards tasks longer than 30 seconds because they are
     considered to be a result of measurement glitch.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -79463,9 +80014,11 @@
     dominated by the time to perform checks for CheckBrowseUrl. Note that this
     metric is recorded even for users with low resolution clocks.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -80790,9 +81343,11 @@
     extra work. Note that this does include task queue time to respond to the
     IPC (and that queue time is often non-trivial).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -80804,9 +81359,11 @@
     Java_SafeBrowsingApiBridge_startUriLookup. Logged at every Safe Browsing
     check on Android.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82200,10 +82757,6 @@
   <summary>
     How long it takes for the compositor to simply activate the pending tree.
     Does not include any PrepareTiles or raster time.
-
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
   </summary>
 </histogram>
 
@@ -82212,6 +82765,12 @@
   <summary>
     How long it takes for the compositor to simply activate the pending tree.
     Does not include any PrepareTiles or raster time.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82221,9 +82780,11 @@
     The time from v-sync to when the main side actually starts the
     BeginImplFrame.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82256,6 +82817,12 @@
     The interval is only recorded when the BeginMainFrames are running
     continuously; sepcifically when another BeginMainFrame is requested by the
     next BeginImplFrame after a) an abort or b) activation.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82288,6 +82855,12 @@
     The interval is only recorded when the BeginMainFrames are running
     continuously; sepcifically when another BeginMainFrame is requested by the
     next BeginImplFrame after a) an abort or b) activation.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82302,10 +82875,6 @@
     How long it takes for the main side to start the BeginMainFrame in response
     to the compositor's SendBeginMainFrame when the on_critical_path flag is
     set.
-
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
   </summary>
 </histogram>
 
@@ -82316,6 +82885,12 @@
     How long it takes for the main side to start the BeginMainFrame in response
     to the compositor's SendBeginMainFrame when the on_critical_path flag is
     set.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82330,10 +82905,6 @@
     How long it takes for the main side to start the BeginMainFrame in response
     to the compositor's SendBeginMainFrame when the on_critical_path flag is not
     set.
-
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
   </summary>
 </histogram>
 
@@ -82344,6 +82915,12 @@
     How long it takes for the main side to start the BeginMainFrame in response
     to the compositor's SendBeginMainFrame when the on_critical_path flag is not
     set.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82357,10 +82934,6 @@
   <summary>
     The time from when the main side actually starts the BeginMainFrame to when
     the commit completes on the impl side.
-
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
   </summary>
 </histogram>
 
@@ -82370,6 +82943,12 @@
   <summary>
     The time from when the main side actually starts the BeginMainFrame to when
     the commit completes on the impl side.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82437,6 +83016,12 @@
     The interval is only recorded when the BeginMainFrames are running and
     committing continuously, where continuously means when another
     BeginMainFrame is requested by the next BeginImplFrame after activation.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82450,10 +83035,6 @@
   <summary>
     How long it takes for the compositor to rasterize pending tree content after
     a commit before it is ready for activation.
-
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
   </summary>
 </histogram>
 
@@ -82463,6 +83044,12 @@
   <summary>
     How long it takes for the compositor to rasterize pending tree content after
     a commit before it is ready for activation.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82476,7 +83063,15 @@
 
 <histogram name="Scheduling.DrawDuration2" units="microseconds">
   <owner>brianderson@chromium.org</owner>
-  <summary>How long it takes the compositor to draw a frame.</summary>
+  <summary>
+    How long it takes the compositor to draw a frame.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="Scheduling.DrawInterval" units="microseconds">
@@ -82499,6 +83094,12 @@
     regardless of whether or not they result in a swap.
 
     The interval is only recorded when every BeginImplFrame wants to draw.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82511,6 +83112,12 @@
     one composited animation.
 
     The interval is only recorded when every BeginImplFrame wants to draw.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82523,6 +83130,12 @@
     there is at least one main thread animation.
 
     The interval is only recorded when every BeginImplFrame wants to draw.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82564,9 +83177,11 @@
     How long it takes for the compositor to rasterize pending tree content after
     an impl-side invalidation before it is ready for activation.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82582,10 +83197,6 @@
     main-side updates are compared to the impl-side updates. If there are no
     mid-frame updates, this metric is a good proxy for how well the main and
     impl threads are synchronized.
-
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
   </summary>
 </histogram>
 
@@ -82598,6 +83209,12 @@
     main-side updates are compared to the impl-side updates. If there are no
     mid-frame updates, this metric is a good proxy for how well the main and
     impl threads are synchronized.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82609,6 +83226,12 @@
     the pending tree, not just the time to activate it.
 
     The interval is recorded each time a pending tree is activated.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82623,6 +83246,12 @@
 
     The interval is recorded each time we are notifed that a pending tree is
     ready for activation.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82634,10 +83263,6 @@
   <summary>
     How long it takes the compositor to PreapreTiles, which determines what
     rasterization work to do.
-
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
   </summary>
 </histogram>
 
@@ -82646,6 +83271,12 @@
   <summary>
     How long it takes the compositor to PreapreTiles, which determines what
     rasterization work to do.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82656,9 +83287,11 @@
     How long does the pending tree wait after it is ready to be activated and
     before it is activated.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -82681,7 +83314,15 @@
 
 <histogram name="Scheduling.SwapToAckLatency2" units="microseconds">
   <owner>brianderson@chromium.org</owner>
-  <summary>How long it takes the swap ack to return after a swap.</summary>
+  <summary>
+    How long it takes the swap ack to return after a swap.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="ScreenLocker.AuthenticationFailure" enum="UnlockType">
@@ -93149,9 +93790,11 @@
   <summary>
     Microseconds spent in StyleSheetContents::parseAuthorStyleSheet.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -93184,7 +93827,15 @@
 
 <histogram name="Style.UpdateTime" units="microseconds">
   <owner>csharrison@chromium.org</owner>
-  <summary>Microseconds spent in Document::updateStyle.</summary>
+  <summary>
+    Microseconds spent in Document::updateStyle.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="SubresourceFilter.Actions" enum="SubresourceFilterActions">
@@ -93251,8 +93902,11 @@
     Records how much thread CPU time it takes to decide whether subresource
     filtering should be activated for a main frame or subframe.
 
-    Note: this histogram is emitted for all clients, both ones which have
-    high-resolution timer available and those which don't.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -93263,8 +93917,11 @@
     Records how long it takes to decide whether subresource filtering should be
     activated for a main frame or subframe.
 
-    Note: this histogram is emitted for all clients, both ones which have
-    high-resolution timer available and those which don't.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -93275,9 +93932,11 @@
     Records the total time the activation state navigation throttle within a
     document is delayed while calculating activation. Recorded at resume time.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -93363,9 +94022,11 @@
     whether it should be disallowed or not. Logged for all navigations that were
     allowed.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -93469,9 +94130,11 @@
     Records how much thread CPU time it takes to decide whether subresource
     filtering should be activated for a main frame.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -93482,9 +94145,11 @@
     Records how long it takes to decide whether subresource filtering should be
     activated for a main frame.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -93738,8 +94403,11 @@
     records the thread CPU time spent on calculating whether it should be
     allowed to load.
 
-    Note: this histogram is emitted for all clients, both ones which have
-    high-resolution timer available and those which don't.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -93751,8 +94419,11 @@
     records how much time was spent on calculating whether it should be allowed
     to load.
 
-    Note: this histogram is emitted for all clients, both ones which have
-    high-resolution timer available and those which don't.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -98067,6 +98738,12 @@
     report and other work in the system. See
     TaskScheduler.TaskLatencyMicroseconds.* for a metric that is closer to the
     real workload.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -100779,6 +101456,42 @@
   </summary>
 </histogram>
 
+<histogram name="UpdateEngine.Check.RollbackTargetVersion"
+    enum="UpdateEngineChromeOsVersionPrefix">
+  <owner>hunyadym@chromium.org</owner>
+  <summary>
+    First section of the Chrome OS target version set by device policy and sent
+    to Omaha if rollback is also allowed. This is a sparse histogram, since the
+    possible valid values are stable Chrome OS version prefixes (usually one per
+    milestone).
+
+    Example value: 10323 (meaning M65 stable).
+
+    This is reported on every update check if the TargetVersionPrefix device
+    policy is set and the value of the RollbackToTargetVersion device policy is
+    one of the values allowing rollback.
+
+    This metric is specific to Chrome OS.
+  </summary>
+</histogram>
+
+<histogram name="UpdateEngine.Check.TargetVersion"
+    enum="UpdateEngineChromeOsVersionPrefix">
+  <owner>hunyadym@chromium.org</owner>
+  <summary>
+    First section of the Chrome OS target version set by device policy and sent
+    to Omaha. This is a sparse histogram, since the possible valid values are
+    stable Chrome OS version prefixes (usually one per milestone).
+
+    Example value: 10323 (meaning M65 stable).
+
+    This is reported on every update check if the TargetVersionPrefix device
+    policy is set.
+
+    This metric is specific to Chrome OS.
+  </summary>
+</histogram>
+
 <histogram name="UpdateEngine.Check.TimeSinceLastCheckMinutes" units="minutes">
   <owner>zeuthen@chromium.org</owner>
   <summary>
@@ -100815,6 +101528,40 @@
   </summary>
 </histogram>
 
+<histogram name="UpdateEngine.EnterpriseRollback.Failure"
+    enum="UpdateEngineChromeOsVersionPrefix">
+  <owner>hunyadym@chromium.org</owner>
+  <summary>
+    First section of the Chrome OS version to which an enterprise rollback
+    (rollback initiated by the admin of the device) has failed. This is a sparse
+    histogram, since the possible valid values are stable Chrome OS version
+    prefixes (usually one per milestone).
+
+    Example value: 10323 (meaning M65 stable).
+
+    This is reported after a rollback image has failed installing.
+
+    This metric is specific to Chrome OS.
+  </summary>
+</histogram>
+
+<histogram name="UpdateEngine.EnterpriseRollback.Success"
+    enum="UpdateEngineChromeOsVersionPrefix">
+  <owner>hunyadym@chromium.org</owner>
+  <summary>
+    First section of the Chrome OS version to which an enterprise rollback
+    (rollback initiated by the admin of the device) has succeeded. This is a
+    sparse histogram, since the possible valid values are stable Chrome OS
+    version prefixes (usually one per milestone).
+
+    Example value: 10323 (meaning M65 stable).
+
+    This is reported after a rollback image has been successfully installed.
+
+    This metric is specific to Chrome OS.
+  </summary>
+</histogram>
+
 <histogram name="UpdateEngine.FailedUpdateCount" units="count">
   <owner>zeuthen@chromium.org</owner>
   <summary>
@@ -101297,7 +102044,15 @@
   <owner>bradnelson@chromium.org</owner>
   <owner>titzer@chromium.org</owner>
   <owner>aseemgarg@chromium.org</owner>
-  <summary>Time to convert asm.js code to WebAssembly.</summary>
+  <summary>
+    Time to convert asm.js code to WebAssembly.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="V8.AsmWasmTranslationThroughput" units="MB/s">
@@ -101371,9 +102126,11 @@
   <summary>
     Time spent compiling a script that may be subject to caching.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -101387,7 +102144,15 @@
 
 <histogram name="V8.CompileDeserializeMicroSeconds" units="microseconds">
   <owner>vogelheim@chromium.org</owner>
-  <summary>Time spent deseriailzing code, used by V8 code caching.</summary>
+  <summary>
+    Time spent deseriailzing code, used by V8 code caching.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="V8.CompileEval" units="ms">
@@ -101400,7 +102165,15 @@
 
 <histogram name="V8.CompileEvalMicroSeconds" units="microseconds">
   <owner>yangguo@chromium.org</owner>
-  <summary>Time spent in V8 compiler (full codegen) for eval.</summary>
+  <summary>
+    Time spent in V8 compiler (full codegen) for eval.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="V8.CompileHeuristicsDecision" enum="CompileHeuristicsDecision">
@@ -101438,15 +102211,25 @@
     Aggregated time spent compiling functions lazily during a single script
     execution.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
 <histogram name="V8.CompileMicroSeconds" units="microseconds">
   <owner>yangguo@chromium.org</owner>
-  <summary>Time spent in V8 compiler (full codegen) excluding parser.</summary>
+  <summary>
+    Time spent in V8 compiler (full codegen) excluding parser.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="V8.CompileNoncacheableMicroSeconds" units="microseconds">
@@ -101468,9 +102251,11 @@
   <summary>
     Total time spent in compiling a script (incl. parsing/caching).
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -101487,6 +102272,12 @@
   <owner>yangguo@chromium.org</owner>
   <summary>
     Total time spent in compiling a script (incl. parsing/caching).
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -101497,9 +102288,11 @@
     Total time spent in compiling a script (incl. parsing) on a background
     thread.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -101510,9 +102303,11 @@
     Total time spent in compiling a script when the 'compilation' is
     deserializing it from the code cache.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -101523,9 +102318,11 @@
     Total time spent in compiling a script  (incl. parsing/caching) when the
     compilation tried to deserialize it from the code cache, but failed.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -101536,9 +102333,11 @@
     Total time spent in compiling a script (incl. parsing/caching) in the case
     where the V8 isolate's compilation cache is hit.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -101549,9 +102348,11 @@
     Total time spent in compiling a script (incl. parsing) when the cache is too
     cold to use.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -101562,9 +102363,11 @@
     Total time spent in compiling a script (incl. parsing) when the script is an
     inline script.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -101575,9 +102378,11 @@
     Total time spent in compiling a script (incl. parsing) when we do not want
     to cache it.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -101588,9 +102393,11 @@
     Total time spent in compiling a script (incl. parsing) when the script is
     too small to be cached.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -101601,9 +102408,11 @@
     Total time spent in compiling a script (incl. parsing) and serializing it
     for the code cache.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -101617,7 +102426,15 @@
 
 <histogram name="V8.CompileSerializeMicroSeconds" units="microseconds">
   <owner>vogelheim@chromium.org</owner>
-  <summary>Time spent serializing code, used by V8 code caching.</summary>
+  <summary>
+    Time spent serializing code, used by V8 code caching.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="V8.DebugFeatureUsage" enum="V8DebugFeature">
@@ -101677,9 +102494,11 @@
     Latency (post-to-schedule) of each parallel task posted during V8 garbage
     collection.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -102229,7 +103048,15 @@
 <histogram name="V8.WasmCompileFunctionMicroSeconds" units="microseconds">
   <owner>bradnelson@chromium.org</owner>
   <owner>titzer@chromium.org</owner>
-  <summary>Time to compile a WebAssembly function.</summary>
+  <summary>
+    Time to compile a WebAssembly function.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="V8.WasmCompileFunctionPeakMemoryBytes" units="bytes">
@@ -102241,19 +103068,43 @@
 <histogram name="V8.WasmCompileModuleMicroSeconds" units="microseconds">
   <owner>bradnelson@chromium.org</owner>
   <owner>titzer@chromium.org</owner>
-  <summary>Time to compile a WebAssembly module.</summary>
+  <summary>
+    Time to compile a WebAssembly module.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="V8.WasmDecodeFunctionMicroSeconds" units="microseconds">
   <owner>bradnelson@chromium.org</owner>
   <owner>titzer@chromium.org</owner>
-  <summary>Time to decode a WebAssembly function.</summary>
+  <summary>
+    Time to decode a WebAssembly function.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="V8.WasmDecodeModuleMicroSeconds" units="microseconds">
   <owner>bradnelson@chromium.org</owner>
   <owner>titzer@chromium.org</owner>
-  <summary>Time to decode a WebAssembly module.</summary>
+  <summary>
+    Time to decode a WebAssembly module.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="V8.WasmDecodeModulePeakMemoryBytes" units="bytes">
@@ -102267,7 +103118,15 @@
   <owner>titzer@chromium.org</owner>
   <owner>eholk@chromium.org</owner>
   <owner>kschimpf@chromium.org</owner>
-  <summary>Time spent executing WebAssembly.</summary>
+  <summary>
+    Time spent executing WebAssembly.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="V8.WasmFunctionSizeBytes" units="bytes">
@@ -102285,7 +103144,15 @@
 <histogram name="V8.WasmInstantiateModuleMicroSeconds" units="microseconds">
   <owner>bradnelson@chromium.org</owner>
   <owner>titzer@chromium.org</owner>
-  <summary>Time to instantiate a WebAssembly module.</summary>
+  <summary>
+    Time to instantiate a WebAssembly module.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="V8.WasmLazyCompilationMicroSeconds" units="microseconds">
@@ -102296,9 +103163,11 @@
     Time for lazy compilation of WebAssembly functions. This is recorded per
     function for the functions that are lazily compiled.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -102469,7 +103338,15 @@
 
 <histogram name="Variations.HeaderConstructionTime" units="microseconds">
   <owner>asvitkine@chromium.org</owner>
-  <summary>How long it took to create the X-Client-Data header.</summary>
+  <summary>
+    How long it took to create the X-Client-Data header.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
+  </summary>
 </histogram>
 
 <histogram name="Variations.Headers.ExperimentCount">
@@ -104424,9 +105301,11 @@
     frame. These statistics would be used as features to classify whether the
     page is suitable for DOM distiller.
 
-    Warning: This high-resolution (microseconds) metric includes report from
-    clients with low-resolution clocks on Windows, see
-    UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for a solution.
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
+    the solution.
   </summary>
 </histogram>
 
@@ -109606,10 +110485,8 @@
   <suffix name="Tabbed"
       label="Chrome starts up with intent to ChromeTabbedActivity"/>
   <suffix name="WebApk" label="Chrome starts up with intent to WebApkActivity"/>
-  <affected-histogram
-      name="Startup.Android.Experimental.Cold.TimeToFirstContentfulPaint"/>
-  <affected-histogram
-      name="Startup.Android.Experimental.Cold.TimeToFirstNavigationCommit"/>
+  <affected-histogram name="Startup.Android.Cold.TimeToFirstContentfulPaint"/>
+  <affected-histogram name="Startup.Android.Cold.TimeToFirstNavigationCommit"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="AdsPageLoadMetrics" separator="." ordering="prefix">
@@ -109822,13 +110699,13 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="AttemptResultCode" separator="_">
+  <obsolete>
+    Deprecated 2016/03. The async set-as-default experiments are finished.
+  </obsolete>
   <suffix name="Abandoned"/>
   <suffix name="Failure"/>
   <suffix name="NoErrorsNotDefault"/>
   <suffix name="Retry"/>
-  <obsolete>
-    Deprecated 2016/03. The async set-as-default experiments are finished.
-  </obsolete>
   <suffix name="Success"/>
   <affected-histogram name="DefaultBrowser.AsyncSetAsDefault.Duration"/>
   <affected-histogram name="DefaultBrowser.SetDefaultAsyncDuration"/>
@@ -109947,6 +110824,13 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="AutofillServerExperiments" separator="_">
+  <obsolete>
+    Deprecated as of at least 2013. Current autofill experiments rely on Finch
+    rather than a custom experimentation setup.
+  </obsolete>
+  <suffix name="ar1" label="Acceptance ratio: 1.0"/>
+  <suffix name="ar2" label="Acceptance ratio: 2.0"/>
+  <suffix name="ar4" label="Acceptance ratio: 4.0"/>
   <suffix name="ar04wr3fs4"
       label="Acceptance ratio: 0.4; winner lead ratio: 3.0; min form score: 4"/>
   <suffix name="ar05wlr15"
@@ -109955,15 +110839,7 @@
       label="Acceptance ratio: 0.5; winner lead ratio: 2.5"/>
   <suffix name="ar05wr15fs5"
       label="Acceptance ratio: 0.5; winner lead ratio: 1.5; min form score: 5"/>
-  <obsolete>
-    Deprecated as of at least 2013. Current autofill experiments rely on Finch
-    rather than a custom experimentation setup.
-  </obsolete>
   <suffix name="ar06" label="Acceptance ratio: 0.6"/>
-  <suffix name="ar1" label="Acceptance ratio: 1.0"/>
-  <suffix name="ar2" label="Acceptance ratio: 2.0"/>
-  <suffix name="ar4" label="Acceptance ratio: 4.0"/>
-  <suffix name="fp025" label="Probability picker algorithm, p=0.25"/>
   <suffix name="fp05" label="Probability picker algorithm, p=0.5"/>
   <suffix name="fp05cc03"
       label="Probability picker algorithm, p=0.5; p_ccname=0.3"/>
@@ -109978,6 +110854,7 @@
       label="Probability picker algorithm, p=0.5;
              p_ccname_given_other_cc_fields=0.3; with fallback to the default
              algorithm"/>
+  <suffix name="fp025" label="Probability picker algorithm, p=0.25"/>
   <suffix name="tbar1" label="Use only Toolbar upload data"/>
   <affected-histogram name="Autofill.Quality"/>
   <affected-histogram name="AutoFill.Quality"/>
@@ -110047,21 +110924,21 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="BatchStunPingParameters" separator=".">
-  <suffix name="10ms.1" label="10ms gap, 1st batch"/>
-  <suffix name="10ms.2" label="10ms gap, 2nd batch"/>
-  <suffix name="10ms.3" label="10ms gap, 3rd batch"/>
   <suffix name="1ms.1" label="1ms gap, 1st batch"/>
   <suffix name="1ms.2" label="1ms gap, 2nd batch"/>
   <suffix name="1ms.3" label="1ms gap, 3rd batch"/>
+  <suffix name="5ms.1" label="5ms gap, 1st batch"/>
+  <suffix name="5ms.2" label="5ms gap, 2nd batch"/>
+  <suffix name="5ms.3" label="5ms gap, 3rd batch"/>
+  <suffix name="10ms.1" label="10ms gap, 1st batch"/>
+  <suffix name="10ms.2" label="10ms gap, 2nd batch"/>
+  <suffix name="10ms.3" label="10ms gap, 3rd batch"/>
   <suffix name="25ms.1" label="25ms gap, 1st batch"/>
   <suffix name="25ms.2" label="25ms gap, 2nd batch"/>
   <suffix name="25ms.3" label="25ms gap, 3rd batch"/>
   <suffix name="50ms.1" label="50ms gap, 1st batch"/>
   <suffix name="50ms.2" label="50ms gap, 2nd batch"/>
   <suffix name="50ms.3" label="50ms gap, 3rd batch"/>
-  <suffix name="5ms.1" label="5ms gap, 1st batch"/>
-  <suffix name="5ms.2" label="5ms gap, 2nd batch"/>
-  <suffix name="5ms.3" label="5ms gap, 3rd batch"/>
   <affected-histogram name="WebRTC.Stun.BatchSuccessPercent.NoNAT"/>
   <affected-histogram name="WebRTC.Stun.BatchSuccessPercent.NonSymNAT"/>
   <affected-histogram name="WebRTC.Stun.BatchSuccessPercent.SymNAT"/>
@@ -110346,6 +111223,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="CacheSensitivityAnalysis" separator="_">
+  <obsolete>
+    Experiments no longer active.
+  </obsolete>
   <suffix name="100" label="100% slowdown"/>
   <suffix name="100A" label="100% slowdown, Group A"/>
   <suffix name="100B" label="100% slowdown, Group B"/>
@@ -110356,9 +111236,6 @@
   <suffix name="Control" label="Control group"/>
   <suffix name="ControlA" label="Control, Group A"/>
   <suffix name="ControlB" label="Control, Group B"/>
-  <obsolete>
-    Experiments no longer active.
-  </obsolete>
   <suffix name="No" label="Turned off"/>
   <affected-histogram name="Net.HttpJob.TotalTime"/>
   <affected-histogram name="Net.HttpJob.TotalTimeCached"/>
@@ -110486,12 +111363,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="CertIo" separator="">
-  <suffix name="ReadFailure"
-      label="failure rate of reading a certificate from the disk cache"/>
   <obsolete>
     Deprecated as of 01/2016. CertCacheTrial has been removed.
     https://crbug.com/522312
   </obsolete>
+  <suffix name="ReadFailure"
+      label="failure rate of reading a certificate from the disk cache"/>
   <suffix name="ReadSuccess"
       label="success rate of reading a certificate from the disk cache"/>
   <suffix name="WriteFailure"
@@ -110723,13 +111600,13 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ConnCountImpact" separator="_">
-  <suffix name="conn_count_16" label="with 16 persistent connections per host"/>
   <suffix name="conn_count_4" label="with 4 persistent connections per host"/>
   <suffix name="conn_count_5" label="with 5 persistent connections per host"/>
   <suffix name="conn_count_6" label="with 6 persistent connections per host"/>
   <suffix name="conn_count_7" label="with 7 persistent connections per host"/>
   <suffix name="conn_count_8" label="with 8 persistent connections per host"/>
   <suffix name="conn_count_9" label="with 9 persistent connections per host"/>
+  <suffix name="conn_count_16" label="with 16 persistent connections per host"/>
   <affected-histogram name="Net.Transaction_Connected_New"/>
   <affected-histogram name="PLT.Abandoned"/>
   <affected-histogram name="PLT.BeginToFinish_LinkLoadNormal"/>
@@ -110758,8 +111635,6 @@
 <histogram_suffixes name="ConnectivityDiagnostics" separator=".">
   <suffix name="0" label="INTERNET_DISCONNECTED"/>
   <suffix name="1" label="CHROME_VERSION"/>
-  <suffix name="10" label="NIC_SIGNAL_STRENGTH"/>
-  <suffix name="11" label="PING_GATEWAY"/>
   <suffix name="2" label="CHROMEOS_VERSION"/>
   <suffix name="3" label="DNS_RESOLVER_PRESENT"/>
   <suffix name="4" label="CAPTIVE_PORTAL_DNS"/>
@@ -110768,6 +111643,8 @@
   <suffix name="7" label="FIREWALL_443"/>
   <suffix name="8" label="RESOLVER_LATENCY"/>
   <suffix name="9" label="HTTP_LATENCY"/>
+  <suffix name="10" label="NIC_SIGNAL_STRENGTH"/>
+  <suffix name="11" label="PING_GATEWAY"/>
   <affected-histogram name="ConnectivityDiagnostics.TestVerdict"/>
   <affected-histogram name="ConnectivityDiagnostics.TimeTaken"/>
 </histogram_suffixes>
@@ -111099,12 +111976,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="DataReductionProxy_AutoLoFi" separator="_">
-  <suffix name="DataReductionProxy_AutoLoFiOff"
-      label="Only page loads through the data reduction proxy with auto LoFi
-             disabled are considered."/>
   <obsolete>
     Deprecated 09/2016.
   </obsolete>
+  <suffix name="DataReductionProxy_AutoLoFiOff"
+      label="Only page loads through the data reduction proxy with auto LoFi
+             disabled are considered."/>
   <suffix name="DataReductionProxy_AutoLoFiOn"
       label="Only page loads through the data reduction proxy with auto LoFi
              enabled are considered."/>
@@ -111132,12 +112009,12 @@
   <suffix name="CompressionRatio_Image_0_10KB"
       label="the histogram of compression ratio of images whose sizes are in
              the range of 0-10KB"/>
-  <suffix name="CompressionRatio_Image_100_500KB"
-      label="the histogram of compression ratio of images whose sizes are in
-             the range of 100-500KB"/>
   <suffix name="CompressionRatio_Image_10_100KB"
       label="the histogram of compression ratio of images whose sizes are in
              the range of 10-100KB"/>
+  <suffix name="CompressionRatio_Image_100_500KB"
+      label="the histogram of compression ratio of images whose sizes are in
+             the range of 100-500KB"/>
   <suffix name="CompressionRatio_Image_500KB"
       label="the histogram of compression ratio of images whose sizes are
              larger than 500KB"/>
@@ -111281,8 +112158,8 @@
   <suffix name="CSS" label="CSS count"/>
   <suffix name="Image" label="image count"/>
   <suffix name="Image_0_10KB" label="image counts of 0-10KB"/>
-  <suffix name="Image_100_500KB" label="image counts of 100-500KB"/>
   <suffix name="Image_10_100KB" label="image counts of 10-100KB"/>
+  <suffix name="Image_100_500KB" label="image counts of 100-500KB"/>
   <suffix name="Image_500KB" label="image counts of more than 500KB"/>
   <suffix name="Image_GIF" label="GIF image count"/>
   <suffix name="Image_JPG" label="JPG image count"/>
@@ -111600,11 +112477,11 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="DefaultPinnedApps" separator="_">
-  <suffix name="Alternate"/>
-  <suffix name="Control"/>
   <obsolete>
     Deprecated as of 12/2013. Default pinned apps trial is finished.
   </obsolete>
+  <suffix name="Alternate"/>
+  <suffix name="Control"/>
   <suffix name="Existing"/>
   <affected-histogram name="Cros.ClickOnShelf"/>
 </histogram_suffixes>
@@ -111996,12 +112873,6 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="DnsParallelism" separator="_">
-  <suffix name="parallel_10"
-      label="with only 10 concurrent resolutions done in parallel"/>
-  <suffix name="parallel_14"
-      label="with only 14 concurrent resolutions done in parallel"/>
-  <suffix name="parallel_20"
-      label="with only 20 concurrent resolutions done in parallel"/>
   <suffix name="parallel_6"
       label="with only 6 concurrent resolutions done in parallel"/>
   <suffix name="parallel_7"
@@ -112010,6 +112881,12 @@
       label="with only 8 concurrent resolutions done in parallel"/>
   <suffix name="parallel_9"
       label="with only 9 concurrent resolutions done in parallel"/>
+  <suffix name="parallel_10"
+      label="with only 10 concurrent resolutions done in parallel"/>
+  <suffix name="parallel_14"
+      label="with only 14 concurrent resolutions done in parallel"/>
+  <suffix name="parallel_20"
+      label="with only 20 concurrent resolutions done in parallel"/>
   <suffix name="parallel_default"
       label="with the default number of concurrent resolutions done in
              parallel"/>
@@ -112250,7 +113127,6 @@
   <owner>calamity@chromium.org</owner>
   <suffix name="0"/>
   <suffix name="10"/>
-  <suffix name="100"/>
   <suffix name="20"/>
   <suffix name="30"/>
   <suffix name="40"/>
@@ -112259,6 +113135,7 @@
   <suffix name="70"/>
   <suffix name="80"/>
   <suffix name="90"/>
+  <suffix name="100"/>
   <affected-histogram name="SiteEngagementService.EngagementScoreBucket"/>
 </histogram_suffixes>
 
@@ -112729,6 +113606,38 @@
       label="Only page loads that are a result of a navigation from a web
              search under a specific web search/Chrome joint experiment.
              Unused at this moment."/>
+  <suffix name="Experiment2"
+      label="Only page loads that are a result of a navigation from a web
+             search under a specific web search/Chrome joint experiment.
+             Unused at this moment."/>
+  <suffix name="Experiment3"
+      label="Only page loads that are a result of a navigation from a web
+             search under a specific web search/Chrome joint experiment.
+             Unused at this moment."/>
+  <suffix name="Experiment4"
+      label="Only page loads that are a result of a navigation from a web
+             search under a specific web search/Chrome joint experiment.
+             Unused at this moment."/>
+  <suffix name="Experiment5"
+      label="Only page loads that are a result of a navigation from a web
+             search under a specific web search/Chrome joint experiment.
+             Unused at this moment."/>
+  <suffix name="Experiment6"
+      label="Only page loads that are a result of a navigation from a web
+             search under a specific web search/Chrome joint experiment.
+             Unused at this moment."/>
+  <suffix name="Experiment7"
+      label="Only page loads that are a result of a navigation from a web
+             search under a specific web search/Chrome joint experiment.
+             Unused at this moment."/>
+  <suffix name="Experiment8"
+      label="Only page loads that are a result of a navigation from a web
+             search under a specific web search/Chrome joint experiment.
+             Unused at this moment."/>
+  <suffix name="Experiment9"
+      label="Only page loads that are a result of a navigation from a web
+             search under a specific web search/Chrome joint experiment.
+             Unused at this moment."/>
   <suffix name="Experiment10"
       label="Only page loads that are a result of a navigation from a web
              search under a specific web search/Chrome joint experiment.
@@ -112769,42 +113678,10 @@
       label="Only page loads that are a result of a navigation from a web
              search under a specific web search/Chrome joint experiment.
              Unused at this moment."/>
-  <suffix name="Experiment2"
-      label="Only page loads that are a result of a navigation from a web
-             search under a specific web search/Chrome joint experiment.
-             Unused at this moment."/>
   <suffix name="Experiment20"
       label="Only page loads that are a result of a navigation from a web
              search under a specific web search/Chrome joint experiment.
              Unused at this moment."/>
-  <suffix name="Experiment3"
-      label="Only page loads that are a result of a navigation from a web
-             search under a specific web search/Chrome joint experiment.
-             Unused at this moment."/>
-  <suffix name="Experiment4"
-      label="Only page loads that are a result of a navigation from a web
-             search under a specific web search/Chrome joint experiment.
-             Unused at this moment."/>
-  <suffix name="Experiment5"
-      label="Only page loads that are a result of a navigation from a web
-             search under a specific web search/Chrome joint experiment.
-             Unused at this moment."/>
-  <suffix name="Experiment6"
-      label="Only page loads that are a result of a navigation from a web
-             search under a specific web search/Chrome joint experiment.
-             Unused at this moment."/>
-  <suffix name="Experiment7"
-      label="Only page loads that are a result of a navigation from a web
-             search under a specific web search/Chrome joint experiment.
-             Unused at this moment."/>
-  <suffix name="Experiment8"
-      label="Only page loads that are a result of a navigation from a web
-             search under a specific web search/Chrome joint experiment.
-             Unused at this moment."/>
-  <suffix name="Experiment9"
-      label="Only page loads that are a result of a navigation from a web
-             search under a specific web search/Chrome joint experiment.
-             Unused at this moment."/>
   <affected-histogram name="PLT.BeginToFinish_FromGWS"/>
   <affected-histogram name="PLT.BeginToFinish_NoPreview"/>
   <affected-histogram name="PLT.BeginToFinish_Preview"/>
@@ -112955,12 +113832,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="IdleSktToImpact" separator="_">
+  <suffix name="idle_timeout_5"
+      label="with 5-second unused idle socket timeout"/>
   <suffix name="idle_timeout_10"
       label="with 10-second unused idle socket timeout"/>
   <suffix name="idle_timeout_20"
       label="with 20-second unused idle socket timeout"/>
-  <suffix name="idle_timeout_5"
-      label="with 5-second unused idle socket timeout"/>
   <suffix name="idle_timeout_60"
       label="with 60-second unused idle socket timeout"/>
   <affected-histogram name="PLT.Abandoned"/>
@@ -113088,13 +113965,13 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="InstantExtended_QuerytoQuery" separator="_">
-  <suffix name="1200" label="Omnibox width &lt; 1200"/>
   <obsolete>
     All relevant histograms have been marked as obsolete as of Sep 2016.
   </obsolete>
   <owner>macourteau@chromium.org</owner>
   <suffix name="400" label="Omnibox width &lt; 400"/>
   <suffix name="700" label="Omnibox width &lt; 700"/>
+  <suffix name="1200" label="Omnibox width &lt; 1200"/>
   <suffix name="large" label="Omnibox width &gt;= 1200"/>
   <affected-histogram name="InstantExtended.PercentageMatchV2_QuerytoQuery"/>
   <affected-histogram name="InstantExtended.PercentageMatchV2_QuerytoURL"/>
@@ -113103,6 +113980,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="InstantSearchClicks" separator="_">
+  <obsolete>
+    Deprecated as of 7/2015.
+  </obsolete>
   <suffix name="NoPreview"
       label="Only page loads through data reduction proxy that are result of
              navigation from web search and preview version of the page shown
@@ -113111,9 +113991,6 @@
       label="Only page loads through data reduction proxy that are result of
              navigation from web search and preview version of the page shown
              are considered."/>
-  <obsolete>
-    Deprecated as of 7/2015.
-  </obsolete>
   <suffix name="WithPreview"
       label="Only page loads through data reduction proxy that are result of
              navigation from web search and preview version of the page shown
@@ -113176,10 +114053,10 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="Interval_lt_gt_20ms" separator="_">
-  <suffix name="GreaterThan_20ms" label="greater than 20ms."/>
   <obsolete>
     Removed 11/2016.
   </obsolete>
+  <suffix name="GreaterThan_20ms" label="greater than 20ms."/>
   <suffix name="LessThanOrEqual_10ms" label="less than or equal to 10ms."/>
   <suffix name="LessThanOrEqual_20ms"
       label="more than 10ms, and less than or equal to 20ms."/>
@@ -113315,11 +114192,11 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="JSDialogs.EngagementList" separator=".">
-  <suffix name="EngagementHigher" label="site engagement &gt;= 5"/>
-  <suffix name="EngagementLessThanOne" label="site engagement &lt; 1"/>
   <obsolete>
     Deprecated 2017-10.
   </obsolete>
+  <suffix name="EngagementHigher" label="site engagement &gt;= 5"/>
+  <suffix name="EngagementLessThanOne" label="site engagement &lt; 1"/>
   <suffix name="EngagementNone" label="site engagement = 0"/>
   <suffix name="EngagementOneToFive" label="site engagement &gt;= 1, &lt; 5"/>
   <affected-histogram name="JSDialogs.CharacterCount"/>
@@ -113438,12 +114315,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="LevelDBEnvMaxFDs" separator=".">
-  <suffix name="OtherError"
-      label="This histogram shows the limit when open failed for reasons
-             other than exceeding the limit."/>
   <obsolete>
     Deprecated as of September 20, 2017.
   </obsolete>
+  <suffix name="OtherError"
+      label="This histogram shows the limit when open failed for reasons
+             other than exceeding the limit."/>
   <suffix name="Success"
       label="This histogram shows the limit when open succeeded."/>
   <suffix name="TooManyOpened"
@@ -113481,10 +114358,10 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="LevelDBEnvRetryTimes" separator="">
-  <suffix name="LockFile" label="LockFile"/>
   <obsolete>
     Deprecated 2013-04 in favor of LevelDBEnvRetry.
   </obsolete>
+  <suffix name="LockFile" label="LockFile"/>
   <suffix name="Rename" label="RenameFile"/>
   <affected-histogram name="LevelDBEnv.IDB.TimeTo"/>
   <affected-histogram name="LevelDBEnv.TimeTo"/>
@@ -113622,8 +114499,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="LocalStorageSizes" separator="">
-  <suffix name="100KBTo1MB" label="DB size between 100KB and 1MB"/>
   <suffix name="1MBTo5MB" label="DB size between 1MB and 5MB"/>
+  <suffix name="100KBTo1MB" label="DB size between 100KB and 1MB"/>
   <suffix name="Under100KB" label="DB size under 100KB"/>
   <affected-histogram name="LocalStorage.BrowserTimeToPrimeLocalStorage"/>
   <affected-histogram name="LocalStorage.MojoTimeToPrimeFor"/>
@@ -113683,14 +114560,14 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="LowMemoryMargin" separator="_">
-  <suffix name="0mb" label="Low memory margin set to 0MB"/>
-  <suffix name="100mb" label="Low memory margin set to 100MB"/>
-  <suffix name="200mb" label="Low memory margin set to 200MB"/>
-  <suffix name="25mb" label="Low memory margin set to 25MB"/>
-  <suffix name="50mb" label="Low memory margin set to 50MB"/>
   <obsolete>
     Deprecated 12/2017. The low memory margin is a per-platform constant.
   </obsolete>
+  <suffix name="0mb" label="Low memory margin set to 0MB"/>
+  <suffix name="25mb" label="Low memory margin set to 25MB"/>
+  <suffix name="50mb" label="Low memory margin set to 50MB"/>
+  <suffix name="100mb" label="Low memory margin set to 100MB"/>
+  <suffix name="200mb" label="Low memory margin set to 200MB"/>
   <suffix name="default" label="Low memory margin set to the system default"/>
   <suffix name="off" label="Low memory notification disabled"/>
   <affected-histogram name="Tabs.Discard.DiscardCount"/>
@@ -113860,12 +114737,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="MediaTimelineWidths" separator=".">
-  <suffix name="128_255"/>
-  <suffix name="256_511"/>
   <suffix name="32_47"/>
   <suffix name="48_79"/>
-  <suffix name="512_inf"/>
   <suffix name="80_127"/>
+  <suffix name="128_255"/>
+  <suffix name="256_511"/>
+  <suffix name="512_inf"/>
   <affected-histogram name="Media.Timeline.DragGestureDuration"/>
   <affected-histogram name="Media.Timeline.DragPercent"/>
   <affected-histogram name="Media.Timeline.DragSumAbsTimeDelta"/>
@@ -114133,11 +115010,11 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="MobileFreSignInChoiceNumberOfAccounts" separator=".">
-  <suffix name="ManyAccounts" label="Two or more accounts"/>
-  <suffix name="OneAccount" label="One account"/>
   <obsolete>
     Removed from code as of 08/2016.
   </obsolete>
+  <suffix name="ManyAccounts" label="Two or more accounts"/>
+  <suffix name="OneAccount" label="One account"/>
   <suffix name="ZeroAccounts" label="Zero accounts"/>
   <affected-histogram name="MobileFre.SignInChoice.MainIntent"/>
   <affected-histogram name="MobileFre.SignInChoice.ViewIntent"/>
@@ -114239,12 +115116,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NavigationPreloadOrWorkerFirst" separator="_">
-  <suffix name="NavPreloadFirst"
-      label="The navigation preload response arrived before the service
-             worker finished preparing."/>
   <obsolete>
     Deprecated as of June 2017.
   </obsolete>
+  <suffix name="NavPreloadFirst"
+      label="The navigation preload response arrived before the service
+             worker finished preparing."/>
   <suffix name="SWStartFirst"
       label="The service worker finished preparing before the navigation
              preload response arrived."/>
@@ -114454,6 +115331,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NetConnectivity" separator=".">
+  <suffix name="53.1K" label="1K bytes of data on port 53."/>
+  <suffix name="53.1K.NoProxy"
+      label="1K bytes of data on port 53 with no proxy."/>
+  <suffix name="53.1K.RTT" label="1K bytes of data on port 53 successfully."/>
+  <suffix name="53.1K.RTT.NoProxy"
+      label="1K bytes of data on port 53 successfully with no proxy."/>
   <suffix name="53.100B" label="100 bytes of data on port 53."/>
   <suffix name="53.100B.NoProxy"
       label="100 bytes of data on port 53 with no proxy."/>
@@ -114461,39 +115344,12 @@
       label="100 bytes of data on port 53 successfully."/>
   <suffix name="53.100B.RTT.NoProxy"
       label="100 bytes of data on port 53 successfully with no proxy."/>
-  <suffix name="53.1K" label="1K bytes of data on port 53."/>
-  <suffix name="53.1K.NoProxy"
-      label="1K bytes of data on port 53 with no proxy."/>
-  <suffix name="53.1K.RTT" label="1K bytes of data on port 53 successfully."/>
-  <suffix name="53.1K.RTT.NoProxy"
-      label="1K bytes of data on port 53 successfully with no proxy."/>
-  <suffix name="587.100B" label="100 bytes of data on port 587."/>
-  <suffix name="587.100B.NoProxy"
-      label="100 bytes of data on port 587 with no proxy."/>
-  <suffix name="587.100B.RTT"
-      label="100 bytes of data on port 587 successfully."/>
-  <suffix name="587.100B.RTT.NoProxy"
-      label="100 bytes of data on port 587 successfully with no proxy."/>
-  <suffix name="587.1K" label="1K bytes of data on port 587."/>
-  <suffix name="587.1K.NoProxy"
-      label="1K bytes of data on port 587 with no proxy."/>
-  <suffix name="587.1K.RTT" label="1K bytes of data on port 587 successfully."/>
-  <suffix name="587.1K.RTT.NoProxy"
-      label="1K bytes of data on port 587 successfully with no proxy."/>
-  <suffix name="6121.100B" label="100 bytes of data on port 6121."/>
-  <suffix name="6121.100B.NoProxy"
-      label="100 bytes of data on port 6121 with no proxy."/>
-  <suffix name="6121.100B.RTT"
-      label="100 bytes of data on port 6121 successfully."/>
-  <suffix name="6121.100B.RTT.NoProxy"
-      label="100 bytes of data on port 6121 successfully with no proxy."/>
-  <suffix name="6121.1K" label="1K bytes of data on port 6121."/>
-  <suffix name="6121.1K.NoProxy"
-      label="1K bytes of data on port 6121 with no proxy."/>
-  <suffix name="6121.1K.RTT"
-      label="1K bytes of data on port 6121 successfully."/>
-  <suffix name="6121.1K.RTT.NoProxy"
-      label="1K bytes of data on port 6121 successfully with no proxy."/>
+  <suffix name="80.1K" label="1K bytes of data on port 80."/>
+  <suffix name="80.1K.NoProxy"
+      label="1K bytes of data on port 80 with no proxy."/>
+  <suffix name="80.1K.RTT" label="1K bytes of data on port 80 successfully."/>
+  <suffix name="80.1K.RTT.NoProxy"
+      label="1K bytes of data on port 80 successfully with no proxy."/>
   <suffix name="80.100B" label="100 bytes of data on port 80."/>
   <suffix name="80.100B.NoProxy"
       label="100 bytes of data on port 80 with no proxy."/>
@@ -114501,19 +115357,33 @@
       label="100 bytes of data on port 80 successfully."/>
   <suffix name="80.100B.RTT.NoProxy"
       label="100 bytes of data on port 80 successfully with no proxy."/>
-  <suffix name="80.1K" label="1K bytes of data on port 80."/>
-  <suffix name="80.1K.NoProxy"
-      label="1K bytes of data on port 80 with no proxy."/>
-  <suffix name="80.1K.RTT" label="1K bytes of data on port 80 successfully."/>
-  <suffix name="80.1K.RTT.NoProxy"
-      label="1K bytes of data on port 80 successfully with no proxy."/>
-  <suffix name="8080.100B" label="100 bytes of data on port 8080."/>
-  <suffix name="8080.100B.NoProxy"
-      label="100 bytes of data on port 8080 with no proxy."/>
-  <suffix name="8080.100B.RTT"
-      label="100 bytes of data on port 8080 successfully."/>
-  <suffix name="8080.100B.RTT.NoProxy"
-      label="100 bytes of data on port 8080 successfully with no proxy."/>
+  <suffix name="587.1K" label="1K bytes of data on port 587."/>
+  <suffix name="587.1K.NoProxy"
+      label="1K bytes of data on port 587 with no proxy."/>
+  <suffix name="587.1K.RTT" label="1K bytes of data on port 587 successfully."/>
+  <suffix name="587.1K.RTT.NoProxy"
+      label="1K bytes of data on port 587 successfully with no proxy."/>
+  <suffix name="587.100B" label="100 bytes of data on port 587."/>
+  <suffix name="587.100B.NoProxy"
+      label="100 bytes of data on port 587 with no proxy."/>
+  <suffix name="587.100B.RTT"
+      label="100 bytes of data on port 587 successfully."/>
+  <suffix name="587.100B.RTT.NoProxy"
+      label="100 bytes of data on port 587 successfully with no proxy."/>
+  <suffix name="6121.1K" label="1K bytes of data on port 6121."/>
+  <suffix name="6121.1K.NoProxy"
+      label="1K bytes of data on port 6121 with no proxy."/>
+  <suffix name="6121.1K.RTT"
+      label="1K bytes of data on port 6121 successfully."/>
+  <suffix name="6121.1K.RTT.NoProxy"
+      label="1K bytes of data on port 6121 successfully with no proxy."/>
+  <suffix name="6121.100B" label="100 bytes of data on port 6121."/>
+  <suffix name="6121.100B.NoProxy"
+      label="100 bytes of data on port 6121 with no proxy."/>
+  <suffix name="6121.100B.RTT"
+      label="100 bytes of data on port 6121 successfully."/>
+  <suffix name="6121.100B.RTT.NoProxy"
+      label="100 bytes of data on port 6121 successfully with no proxy."/>
   <suffix name="8080.1K" label="1K bytes of data on port 8080."/>
   <suffix name="8080.1K.NoProxy"
       label="1K bytes of data on port 8080 with no proxy."/>
@@ -114521,6 +115391,13 @@
       label="1K bytes of data on port 8080 successfully."/>
   <suffix name="8080.1K.RTT.NoProxy"
       label="1K bytes of data on port 8080 successfully with no proxy."/>
+  <suffix name="8080.100B" label="100 bytes of data on port 8080."/>
+  <suffix name="8080.100B.NoProxy"
+      label="100 bytes of data on port 8080 with no proxy."/>
+  <suffix name="8080.100B.RTT"
+      label="100 bytes of data on port 8080 successfully."/>
+  <suffix name="8080.100B.RTT.NoProxy"
+      label="100 bytes of data on port 8080 successfully with no proxy."/>
   <affected-histogram name="NetConnectivity.TCP.Status"/>
   <affected-histogram name="NetConnectivity.TCP.Success"/>
   <affected-histogram name="NetConnectivity.UDP.PacketLoss"/>
@@ -114530,6 +115407,14 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NetConnectivity2" separator=".">
+  <suffix name="AcksReceivedFromFirst2Packets" label="2 packets."/>
+  <suffix name="AcksReceivedFromFirst3Packets" label="3 packets."/>
+  <suffix name="AcksReceivedFromFirst4Packets" label="4 packets."/>
+  <suffix name="AcksReceivedFromFirst5Packets" label="5 packets."/>
+  <suffix name="AcksReceivedFromFirst6Packets" label="6 packets."/>
+  <suffix name="AcksReceivedFromFirst7Packets" label="7 packets."/>
+  <suffix name="AcksReceivedFromFirst8Packets" label="8 packets."/>
+  <suffix name="AcksReceivedFromFirst9Packets" label="9 packets."/>
   <suffix name="AcksReceivedFromFirst10Packets" label="10 packets."/>
   <suffix name="AcksReceivedFromFirst11Packets" label="11 packets."/>
   <suffix name="AcksReceivedFromFirst12Packets" label="12 packets."/>
@@ -114542,20 +115427,12 @@
   <suffix name="AcksReceivedFromFirst19Packets" label="19 packets."/>
   <suffix name="AcksReceivedFromFirst20Packets" label="20 packets."/>
   <suffix name="AcksReceivedFromFirst21Packets" label="21 packets."/>
-  <suffix name="AcksReceivedFromFirst2Packets" label="2 packets."/>
-  <suffix name="AcksReceivedFromFirst3Packets" label="3 packets."/>
-  <suffix name="AcksReceivedFromFirst4Packets" label="4 packets."/>
-  <suffix name="AcksReceivedFromFirst5Packets" label="5 packets."/>
-  <suffix name="AcksReceivedFromFirst6Packets" label="6 packets."/>
-  <suffix name="AcksReceivedFromFirst7Packets" label="7 packets."/>
-  <suffix name="AcksReceivedFromFirst8Packets" label="8 packets."/>
-  <suffix name="AcksReceivedFromFirst9Packets" label="9 packets."/>
   <affected-histogram name="NetConnectivity.Sent21"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="NetConnectivity2a" separator=".">
-  <suffix name="6121.100B" label="100 bytes of data is sent on port 6121."/>
   <suffix name="6121.1K" label="1K bytes of data is sent on port 6121."/>
+  <suffix name="6121.100B" label="100 bytes of data is sent on port 6121."/>
   <suffix name="6121.500B" label="500 bytes of data is sent on port 6121."/>
   <affected-histogram name="NetConnectivity2.Sent21.AckReceivedForNthPacket"/>
   <affected-histogram name="NetConnectivity2.Sent21.GotAnAck"/>
@@ -114563,6 +115440,22 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NetConnectivity2b" separator=".">
+  <suffix name="AcksReceivedFromFirst2Packets.6121.100B"
+      label="2 packets. 100 bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst3Packets.6121.100B"
+      label="3 packets. 100 bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst4Packets.6121.100B"
+      label="4 packets. 100 bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst5Packets.6121.100B"
+      label="5 packets. 100 bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst6Packets.6121.100B"
+      label="6 packets. 100 bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst7Packets.6121.100B"
+      label="7 packets. 100 bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst8Packets.6121.100B"
+      label="8 packets. 100 bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst9Packets.6121.100B"
+      label="9 packets. 100 bytes of data is sent on port 6121."/>
   <suffix name="AcksReceivedFromFirst10Packets.6121.100B"
       label="10 packets. 100 bytes of data is sent on port 6121."/>
   <suffix name="AcksReceivedFromFirst11Packets.6121.100B"
@@ -114587,32 +115480,16 @@
       label="20 packets. 100 bytes of data is sent on port 6121."/>
   <suffix name="AcksReceivedFromFirst21Packets.6121.100B"
       label="21 packets. 100 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst2Packets.6121.100B"
-      label="2 packets. 100 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst3Packets.6121.100B"
-      label="3 packets. 100 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst4Packets.6121.100B"
-      label="4 packets. 100 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst5Packets.6121.100B"
-      label="5 packets. 100 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst6Packets.6121.100B"
-      label="6 packets. 100 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst7Packets.6121.100B"
-      label="7 packets. 100 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst8Packets.6121.100B"
-      label="8 packets. 100 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst9Packets.6121.100B"
-      label="9 packets. 100 bytes of data is sent on port 6121."/>
   <affected-histogram name="NetConnectivity2.Sent21"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="NetConnectivity2c" separator=".">
-  <suffix name="6121.100B" label="100 bytes of data is sent on port 6121."/>
-  <suffix name="6121.100B.NoProxy"
-      label="100 bytes of data is sent on port 6121 with no proxy."/>
   <suffix name="6121.1K" label="1K bytes of data is sent on port 6121."/>
   <suffix name="6121.1K.NoProxy"
       label="1K bytes of data is sent on port 6121 with no proxy."/>
+  <suffix name="6121.100B" label="100 bytes of data is sent on port 6121."/>
+  <suffix name="6121.100B.NoProxy"
+      label="100 bytes of data is sent on port 6121 with no proxy."/>
   <suffix name="6121.500B" label="500 bytes of data is sent on port 6121."/>
   <suffix name="6121.500B.NoProxy"
       label="500 bytes of data is sent on port 6121 with no proxy."/>
@@ -114621,6 +115498,22 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NetConnectivity2d" separator=".">
+  <suffix name="AcksReceivedFromFirst2Packets.6121.500B"
+      label="2 packets. 500 bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst3Packets.6121.500B"
+      label="3 packets. 500 bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst4Packets.6121.500B"
+      label="4 packets. 500 bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst5Packets.6121.500B"
+      label="5 packets. 500 bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst6Packets.6121.500B"
+      label="6 packets. 500 bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst7Packets.6121.500B"
+      label="7 packets. 500 bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst8Packets.6121.500B"
+      label="8 packets. 500 bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst9Packets.6121.500B"
+      label="9 packets. 500 bytes of data is sent on port 6121."/>
   <suffix name="AcksReceivedFromFirst10Packets.6121.500B"
       label="10 packets. 500 bytes of data is sent on port 6121."/>
   <suffix name="AcksReceivedFromFirst11Packets.6121.500B"
@@ -114645,26 +115538,26 @@
       label="20 packets. 500 bytes of data is sent on port 6121."/>
   <suffix name="AcksReceivedFromFirst21Packets.6121.500B"
       label="21 packets. 500 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst2Packets.6121.500B"
-      label="2 packets. 500 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst3Packets.6121.500B"
-      label="3 packets. 500 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst4Packets.6121.500B"
-      label="4 packets. 500 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst5Packets.6121.500B"
-      label="5 packets. 500 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst6Packets.6121.500B"
-      label="6 packets. 500 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst7Packets.6121.500B"
-      label="7 packets. 500 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst8Packets.6121.500B"
-      label="8 packets. 500 bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst9Packets.6121.500B"
-      label="9 packets. 500 bytes of data is sent on port 6121."/>
   <affected-histogram name="NetConnectivity2.Sent21"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="NetConnectivity2e" separator=".">
+  <suffix name="AcksReceivedFromFirst2Packets.6121.1K"
+      label="2 packets. 1K bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst3Packets.6121.1K"
+      label="3 packets. 1K bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst4Packets.6121.1K"
+      label="4 packets. 1K bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst5Packets.6121.1K"
+      label="5 packets. 1K bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst6Packets.6121.1K"
+      label="6 packets. 1K bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst7Packets.6121.1K"
+      label="7 packets. 1K bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst8Packets.6121.1K"
+      label="8 packets. 1K bytes of data is sent on port 6121."/>
+  <suffix name="AcksReceivedFromFirst9Packets.6121.1K"
+      label="9 packets. 1K bytes of data is sent on port 6121."/>
   <suffix name="AcksReceivedFromFirst10Packets.6121.1K"
       label="10 packets. 1K bytes of data is sent on port 6121."/>
   <suffix name="AcksReceivedFromFirst11Packets.6121.1K"
@@ -114689,22 +115582,6 @@
       label="20 packets. 1K bytes of data is sent on port 6121."/>
   <suffix name="AcksReceivedFromFirst21Packets.6121.1K"
       label="21 packets. 1K bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst2Packets.6121.1K"
-      label="2 packets. 1K bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst3Packets.6121.1K"
-      label="3 packets. 1K bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst4Packets.6121.1K"
-      label="4 packets. 1K bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst5Packets.6121.1K"
-      label="5 packets. 1K bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst6Packets.6121.1K"
-      label="6 packets. 1K bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst7Packets.6121.1K"
-      label="7 packets. 1K bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst8Packets.6121.1K"
-      label="8 packets. 1K bytes of data is sent on port 6121."/>
-  <suffix name="AcksReceivedFromFirst9Packets.6121.1K"
-      label="9 packets. 1K bytes of data is sent on port 6121."/>
   <affected-histogram name="NetConnectivity2.Sent21"/>
 </histogram_suffixes>
 
@@ -114799,16 +115676,16 @@
 <histogram_suffixes name="NetConnectivity3PacketDelay2" separator=".">
   <suffix name="443.100B.PacketDelay"
       label="100 bytes of data is sent on port 443."/>
-  <suffix name="443.1200B.PacketDelay"
-      label="1200 bytes of data is sent on port 443."/>
   <suffix name="443.500B.PacketDelay"
       label="500 bytes of data is sent on port 443."/>
+  <suffix name="443.1200B.PacketDelay"
+      label="1200 bytes of data is sent on port 443."/>
   <suffix name="6121.100B.PacketDelay"
       label="100 bytes of data is sent on port 6121."/>
-  <suffix name="6121.1200B.PacketDelay"
-      label="1200 bytes of data is sent on port 6121."/>
   <suffix name="6121.500B.PacketDelay"
       label="500 bytes of data is sent on port 6121."/>
+  <suffix name="6121.1200B.PacketDelay"
+      label="1200 bytes of data is sent on port 6121."/>
   <affected-histogram name="NetConnectivity3.NonPacedPacket.Sent21"/>
   <affected-histogram name="NetConnectivity3.PacedPacket.Sent21"/>
   <affected-histogram name="NetConnectivity3.StartPacket.Sent21"/>
@@ -114852,11 +115729,11 @@
 
 <histogram_suffixes name="NetConnectivity3PacketsSentBytes" separator=".">
   <suffix name="443.100B" label="100 bytes of data is sent on port 443."/>
-  <suffix name="443.1200B" label="1200 bytes of data is sent on port 443."/>
   <suffix name="443.500B" label="500 bytes of data is sent on port 443."/>
+  <suffix name="443.1200B" label="1200 bytes of data is sent on port 443."/>
   <suffix name="6121.100B" label="100 bytes of data is sent on port 6121."/>
-  <suffix name="6121.1200B" label="1200 bytes of data is sent on port 6121."/>
   <suffix name="6121.500B" label="500 bytes of data is sent on port 6121."/>
+  <suffix name="6121.1200B" label="1200 bytes of data is sent on port 6121."/>
   <affected-histogram
       name="NetConnectivity3.NonPacedPacket.Sent21.AckReceivedForNthPacket"/>
   <affected-histogram
@@ -115026,21 +115903,21 @@
   <suffix name="443.100B" label="100 bytes of data is sent on port 443."/>
   <suffix name="443.100B.NoProxy"
       label="100 bytes of data is sent on port 443 with no proxy."/>
-  <suffix name="443.1200B" label="1200 bytes of data is sent on port 443."/>
-  <suffix name="443.1200B.NoProxy"
-      label="1200 bytes of data is sent on port 443 with no proxy."/>
   <suffix name="443.500B" label="500 bytes of data is sent on port 443."/>
   <suffix name="443.500B.NoProxy"
       label="500 bytes of data is sent on port 443 with no proxy."/>
+  <suffix name="443.1200B" label="1200 bytes of data is sent on port 443."/>
+  <suffix name="443.1200B.NoProxy"
+      label="1200 bytes of data is sent on port 443 with no proxy."/>
   <suffix name="6121.100B" label="100 bytes of data is sent on port 6121."/>
   <suffix name="6121.100B.NoProxy"
       label="100 bytes of data is sent on port 6121 with no proxy."/>
-  <suffix name="6121.1200B" label="1200 bytes of data is sent on port 6121."/>
-  <suffix name="6121.1200B.NoProxy"
-      label="1200 bytes of data is sent on port 6121 with no proxy."/>
   <suffix name="6121.500B" label="500 bytes of data is sent on port 6121."/>
   <suffix name="6121.500B.NoProxy"
       label="500 bytes of data is sent on port 6121 with no proxy."/>
+  <suffix name="6121.1200B" label="1200 bytes of data is sent on port 6121."/>
+  <suffix name="6121.1200B.NoProxy"
+      label="1200 bytes of data is sent on port 6121 with no proxy."/>
   <affected-histogram name="NetConnectivity3.NonPacedPacket.Send6.SeriesAcked"/>
   <affected-histogram name="NetConnectivity3.PacedPacket.Send6.SeriesAcked"/>
   <affected-histogram name="NetConnectivity3.StartPacket.Send6.PacketsSent"/>
@@ -115198,12 +116075,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NetConnectivity4PacketsAll" separator=".">
-  <suffix name="443.100B" label="100 bytes of data is sent on port 443."/>
-  <suffix name="443.1200B" label="1200 bytes of data is sent on port 443."/>
-  <suffix name="443.500B" label="500 bytes of data is sent on port 443."/>
   <suffix name="80.100B" label="100 bytes of data is sent on port 80."/>
-  <suffix name="80.1200B" label="1200 bytes of data is sent on port 80."/>
   <suffix name="80.500B" label="500 bytes of data is sent on port 80."/>
+  <suffix name="80.1200B" label="1200 bytes of data is sent on port 80."/>
+  <suffix name="443.100B" label="100 bytes of data is sent on port 443."/>
+  <suffix name="443.500B" label="500 bytes of data is sent on port 443."/>
+  <suffix name="443.1200B" label="1200 bytes of data is sent on port 443."/>
   <affected-histogram name="NetConnectivity4.NATBind.Sent2.Bind.Failure"/>
   <affected-histogram name="NetConnectivity4.NATBind.Sent2.Bind.Success"/>
   <affected-histogram
@@ -115588,8 +116465,8 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NetConnectivity4PacketSizeTestPort" separator=".">
-  <suffix name="443" label="Packet is sent on port 443."/>
   <suffix name="80" label="Packet is sent on port 80."/>
+  <suffix name="443" label="Packet is sent on port 443."/>
   <affected-histogram
       name="NetConnectivity4.PacketSizeTest.Connectivity.Failure"/>
   <affected-histogram
@@ -115601,24 +116478,24 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NetConnectivity4SeriesRecv" separator=".">
-  <suffix name="443.100B" label="100 bytes of data is sent on port 443."/>
-  <suffix name="443.100B.NoProxy"
-      label="100 bytes of data is sent on port 443 with no proxy."/>
-  <suffix name="443.1200B" label="1200 bytes of data is sent on port 443."/>
-  <suffix name="443.1200B.NoProxy"
-      label="1200 bytes of data is sent on port 443 with no proxy."/>
-  <suffix name="443.500B" label="500 bytes of data is sent on port 443."/>
-  <suffix name="443.500B.NoProxy"
-      label="500 bytes of data is sent on port 443 with no proxy."/>
   <suffix name="80.100B" label="100 bytes of data is sent on port 80."/>
   <suffix name="80.100B.NoProxy"
       label="100 bytes of data is sent on port 80 with no proxy."/>
-  <suffix name="80.1200B" label="1200 bytes of data is sent on port 80."/>
-  <suffix name="80.1200B.NoProxy"
-      label="1200 bytes of data is sent on port 80 with no proxy."/>
   <suffix name="80.500B" label="500 bytes of data is sent on port 80."/>
   <suffix name="80.500B.NoProxy"
       label="500 bytes of data is sent on port 80 with no proxy."/>
+  <suffix name="80.1200B" label="1200 bytes of data is sent on port 80."/>
+  <suffix name="80.1200B.NoProxy"
+      label="1200 bytes of data is sent on port 80 with no proxy."/>
+  <suffix name="443.100B" label="100 bytes of data is sent on port 443."/>
+  <suffix name="443.100B.NoProxy"
+      label="100 bytes of data is sent on port 443 with no proxy."/>
+  <suffix name="443.500B" label="500 bytes of data is sent on port 443."/>
+  <suffix name="443.500B.NoProxy"
+      label="500 bytes of data is sent on port 443 with no proxy."/>
+  <suffix name="443.1200B" label="1200 bytes of data is sent on port 443."/>
+  <suffix name="443.1200B.NoProxy"
+      label="1200 bytes of data is sent on port 443 with no proxy."/>
   <affected-histogram name="NetConnectivity4.NonPacedPacket.First6.SeriesRecv"/>
   <affected-histogram name="NetConnectivity4.PacedPacket.First6.SeriesRecv"/>
   <affected-histogram name="NetConnectivity4.StartPacket.First6.SeriesRecv"/>
@@ -115721,10 +116598,10 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NetProxyResolverExecutionTime" separator="_">
-  <suffix name="UrlOver128K" label="URL length was over 128K"/>
   <suffix name="UrlOver2K" label="URL length was over 2K"/>
   <suffix name="UrlOver4K" label="URL length was over 4K"/>
   <suffix name="UrlOver8K" label="URL length was over 8K"/>
+  <suffix name="UrlOver128K" label="URL length was over 128K"/>
   <affected-histogram name="Net.ProxyResolver.ExecutionTime"/>
 </histogram_suffixes>
 
@@ -115825,16 +116702,6 @@
       Hasn't been used for a while, as of 2016-07.
     </obsolete>
   </suffix>
-  <suffix name="server10">
-    <obsolete>
-      Has never been used.
-    </obsolete>
-  </suffix>
-  <suffix name="server11">
-    <obsolete>
-      Has never been used.
-    </obsolete>
-  </suffix>
   <suffix name="server8">
     <obsolete>
       Not used anymore as of 2016-07.
@@ -115845,6 +116712,16 @@
       Has never been used.
     </obsolete>
   </suffix>
+  <suffix name="server10">
+    <obsolete>
+      Has never been used.
+    </obsolete>
+  </suffix>
+  <suffix name="server11">
+    <obsolete>
+      Has never been used.
+    </obsolete>
+  </suffix>
   <suffix name="whitelist"
       label="Installed whitelist entry point suggestions."/>
   <affected-histogram name="NewTabPage.MostVisited"/>
@@ -116027,22 +116904,22 @@
 <histogram_suffixes name="NQE.Accuracy.RTT.ObservedIntervals" separator=".">
   <suffix name="0_20"
       label="Observed metric was between 0 and 20 (inclusive) units"/>
-  <suffix name="1260_2540"
-      label="Observed metric was between 1260 and 2540 (inclusive) units"/>
-  <suffix name="140_300"
-      label="Observed metric was between 140 and 300 (inclusive) units"/>
   <suffix name="20_60"
       label="Observed metric was between 20 and 60 (inclusive) units"/>
-  <suffix name="2540_5100"
-      label="Observed metric was between 2540 and 51000 (inclusive) units"/>
-  <suffix name="300_620"
-      label="Observed metric was between 300 and 620 (inclusive) units"/>
-  <suffix name="5100_Infinity"
-      label="Observed metric was greater than 5100 (inclusive) units"/>
   <suffix name="60_140"
       label="Observed metric was between 60 and 140 (inclusive) units"/>
+  <suffix name="140_300"
+      label="Observed metric was between 140 and 300 (inclusive) units"/>
+  <suffix name="300_620"
+      label="Observed metric was between 300 and 620 (inclusive) units"/>
   <suffix name="620_1260"
       label="Observed metric was between 620 and 1260 (inclusive) units"/>
+  <suffix name="1260_2540"
+      label="Observed metric was between 1260 and 2540 (inclusive) units"/>
+  <suffix name="2540_5100"
+      label="Observed metric was between 2540 and 51000 (inclusive) units"/>
+  <suffix name="5100_Infinity"
+      label="Observed metric was greater than 5100 (inclusive) units"/>
   <affected-histogram
       name="NQE.Accuracy.DownstreamThroughputKbps.EstimatedObservedDiff.Negative.15"/>
   <affected-histogram
@@ -116166,16 +117043,16 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NQE.DifferentPercentiles" separator=".">
-  <suffix name="Percentile0" label="0th percentile"/>
-  <suffix name="Percentile10" label="10th percentile"/>
-  <suffix name="Percentile100" label="100th percentile"/>
-  <suffix name="Percentile50" label="50th percentile"/>
-  <suffix name="Percentile90" label="90th percentile"/>
-  <affected-histogram name="NQE.RTT"/>
-  <affected-histogram name="NQE.TransportRTT"/>
   <obsolete>
     Deprecated 01/2018.
   </obsolete>
+  <suffix name="Percentile0" label="0th percentile"/>
+  <suffix name="Percentile10" label="10th percentile"/>
+  <suffix name="Percentile50" label="50th percentile"/>
+  <suffix name="Percentile90" label="90th percentile"/>
+  <suffix name="Percentile100" label="100th percentile"/>
+  <affected-histogram name="NQE.RTT"/>
+  <affected-histogram name="NQE.TransportRTT"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="NQE.DifferentPercentiles" separator=".">
@@ -117035,12 +117912,12 @@
       Renamed to Clients.Protocol.H11
     </obsolete>
   </suffix>
-  <suffix name="Clients.Protocol.H11"
-      label="PageLoadMetrics that are a result of a navigation to main
-             resource over HTTP/1.1"/>
   <suffix name="Clients.Protocol.H2"
       label="PageLoadMetrics that are a result of a navigation to main
              resource over HTTP/2"/>
+  <suffix name="Clients.Protocol.H11"
+      label="PageLoadMetrics that are a result of a navigation to main
+             resource over HTTP/1.1"/>
   <suffix name="Clients.Protocol.QUIC"
       label="PageLoadMetrics that are a result of a navigation to main
              resource over QUIC"/>
@@ -117474,11 +118351,19 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="PasswordManagerMonitor" separator="_">
-  <suffix name="" label=""/>
   <obsolete>
     Deprecated as of 03/2016.
   </obsolete>
+  <suffix name="" label=""/>
   <suffix name="group_1" label="group 1"/>
+  <suffix name="group_2" label="group 2"/>
+  <suffix name="group_3" label="group 3"/>
+  <suffix name="group_4" label="group 4"/>
+  <suffix name="group_5" label="group 5"/>
+  <suffix name="group_6" label="group 6"/>
+  <suffix name="group_7" label="group 7"/>
+  <suffix name="group_8" label="group 8"/>
+  <suffix name="group_9" label="group 9"/>
   <suffix name="group_10" label="group 10"/>
   <suffix name="group_11" label="group 11"/>
   <suffix name="group_12" label="group 12"/>
@@ -117489,15 +118374,7 @@
   <suffix name="group_17" label="group 17"/>
   <suffix name="group_18" label="group 18"/>
   <suffix name="group_19" label="group 19"/>
-  <suffix name="group_2" label="group 2"/>
   <suffix name="group_20" label="group 20"/>
-  <suffix name="group_3" label="group 3"/>
-  <suffix name="group_4" label="group 4"/>
-  <suffix name="group_5" label="group 5"/>
-  <suffix name="group_6" label="group 6"/>
-  <suffix name="group_7" label="group 7"/>
-  <suffix name="group_8" label="group 8"/>
-  <suffix name="group_9" label="group 9"/>
   <affected-histogram name="PasswordManager.LinuxBackendStatistics"/>
   <affected-histogram name="PasswordManager.ProvisionalSaveFailure"/>
   <affected-histogram
@@ -117974,12 +118851,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="Prerender" separator="_">
-  <suffix name="Prerender5minTTL"
-      label="prerender is enabled, and the TTL is extended to 5 minutes."/>
-  <suffix name="PrerenderControl" label="prerender is disabled."/>
   <obsolete>
     Deprecated August 2016
   </obsolete>
+  <suffix name="Prerender5minTTL"
+      label="prerender is enabled, and the TTL is extended to 5 minutes."/>
+  <suffix name="PrerenderControl" label="prerender is disabled."/>
   <suffix name="PrerenderEnabled" label="prerender is enabled."/>
   <suffix name="PrerenderMatchComplete"
       label="prerender is enabled, and match complete replacements are used
@@ -118026,35 +118903,35 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="PrerenderHoverType" separator="_" ordering="prefix">
-  <suffix name="HoverStats_100" label="Hover stats @ threshold 100 ms."/>
-  <suffix name="HoverStats_1000" label="Hover stats @ threshold 1000 ms."/>
-  <suffix name="HoverStats_150" label="Hover stats @ threshold 150 ms."/>
-  <suffix name="HoverStats_1500" label="Hover stats @ threshold 1500 ms."/>
-  <suffix name="HoverStats_200" label="Hover stats @ threshold 200 ms."/>
-  <suffix name="HoverStats_2000" label="Hover stats @ threshold 2000 ms."/>
-  <suffix name="HoverStats_250" label="Hover stats @ threshold 250 ms."/>
-  <suffix name="HoverStats_300" label="Hover stats @ threshold 300 ms."/>
-  <suffix name="HoverStats_3000" label="Hover stats @ threshold 3000 ms."/>
-  <suffix name="HoverStats_400" label="Hover stats @ threshold 400 ms."/>
-  <suffix name="HoverStats_4000" label="Hover stats @ threshold 4000 ms."/>
   <obsolete>
     deprecated May 10 2012
   </obsolete>
   <suffix name="HoverStats_50" label="Hover stats @ threshold 50 ms."/>
-  <suffix name="HoverStats_500" label="Hover stats @ threshold 500 ms."/>
-  <suffix name="HoverStats_5000" label="Hover stats @ threshold 5000 ms."/>
   <suffix name="HoverStats_75" label="Hover stats @ threshold 75 ms."/>
+  <suffix name="HoverStats_100" label="Hover stats @ threshold 100 ms."/>
+  <suffix name="HoverStats_150" label="Hover stats @ threshold 150 ms."/>
+  <suffix name="HoverStats_200" label="Hover stats @ threshold 200 ms."/>
+  <suffix name="HoverStats_250" label="Hover stats @ threshold 250 ms."/>
+  <suffix name="HoverStats_300" label="Hover stats @ threshold 300 ms."/>
+  <suffix name="HoverStats_400" label="Hover stats @ threshold 400 ms."/>
+  <suffix name="HoverStats_500" label="Hover stats @ threshold 500 ms."/>
   <suffix name="HoverStats_750" label="Hover stats @ threshold 750 ms."/>
+  <suffix name="HoverStats_1000" label="Hover stats @ threshold 1000 ms."/>
+  <suffix name="HoverStats_1500" label="Hover stats @ threshold 1500 ms."/>
+  <suffix name="HoverStats_2000" label="Hover stats @ threshold 2000 ms."/>
+  <suffix name="HoverStats_3000" label="Hover stats @ threshold 3000 ms."/>
+  <suffix name="HoverStats_4000" label="Hover stats @ threshold 4000 ms."/>
+  <suffix name="HoverStats_5000" label="Hover stats @ threshold 5000 ms."/>
   <affected-histogram name="Prerender.Events"/>
   <affected-histogram name="Prerender.TimeToClick"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="PrerenderModeType" separator="_">
-  <suffix name="_15MinTTL" label="PRERENDER_MODE_EXPERIMENT_15MIN_TTL_GROUP"/>
-  <suffix name="_Control" label="PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP"/>
   <obsolete>
     Deprecated August 2016
   </obsolete>
+  <suffix name="_15MinTTL" label="PRERENDER_MODE_EXPERIMENT_15MIN_TTL_GROUP"/>
+  <suffix name="_Control" label="PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP"/>
   <suffix name="_Disabled" label="PRERENDER_MODE_DISABLED"/>
   <suffix name="_Enabled" label="PRERENDER_MODE_EXPERIMENT_PRERENDER_GROUP"/>
   <suffix name="_Multi"
@@ -118344,6 +119221,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ProgressiveScan" separator="_">
+  <suffix name="33Percent_4MinMax"
+      label="Progressive scan @ 33%, 4 frequency bins."/>
+  <suffix name="50Percent_4MinMax"
+      label="Progressive scan @ 50%, 4 frequency bins."/>
+  <suffix name="50Percent_8MinMax"
+      label="Progressive scan @ 50%, 8 frequency bins."/>
   <suffix name="100Percent_1Min_4Max"
       label="Progressive scan @ 100%, minimum 1/maximum 4 frequencies."/>
   <suffix name="100Percent_1MinSeen_A"
@@ -118352,12 +119235,6 @@
       label="Progressive scan @ all previously seen frequencies (B)."/>
   <suffix name="100Percent_8MinMax"
       label="Progressive scan @ 100%, 8 frequency bins."/>
-  <suffix name="33Percent_4MinMax"
-      label="Progressive scan @ 33%, 4 frequency bins."/>
-  <suffix name="50Percent_4MinMax"
-      label="Progressive scan @ 50%, 4 frequency bins."/>
-  <suffix name="50Percent_8MinMax"
-      label="Progressive scan @ 50%, 8 frequency bins."/>
   <suffix name="FullScan" label="Using WPA_supplicant to scan."/>
   <affected-histogram name="Network.Shill.TimeToDrop"/>
   <affected-histogram name="Network.Shill.WiFi.ScanResult"/>
@@ -118386,14 +119263,14 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="ProxyConnectionImpact" separator="_">
+  <suffix name="proxy_connections_8"
+      label="with 8 connections per proxy server"/>
   <suffix name="proxy_connections_16"
       label="with 16 connections per proxy server"/>
   <suffix name="proxy_connections_32"
       label="with 32 connections per proxy server"/>
   <suffix name="proxy_connections_64"
       label="with 64 connections per proxy server"/>
-  <suffix name="proxy_connections_8"
-      label="with 8 connections per proxy server"/>
   <affected-histogram name="Net.HttpProxySocketRequestTime"/>
   <affected-histogram name="Net.SocksSocketRequestTime"/>
   <affected-histogram name="PLT.Abandoned"/>
@@ -118577,16 +119454,16 @@
 <histogram_suffixes name="RemotingSessionDuration" separator=".">
   <suffix name="Duration0To100MilliSec"
       label="remoting sessions have duration in (0, 0.1] seconds"/>
-  <suffix name="Duration100MilliSecTo1Sec"
-      label="remoting sessions have duration in (0.1, 1] seconds"/>
-  <suffix name="Duration10To15Sec"
-      label="remoting sessions have duration in (10, 15] seconds"/>
   <suffix name="Duration1To3Sec"
       label="remoting sessions have duration in (1, 3] seconds"/>
   <suffix name="Duration3To5Sec"
       label="remoting sessions have duration in (3, 5] seconds"/>
   <suffix name="Duration5To10Sec"
       label="remoting sessions have duration in (5, 10] seconds"/>
+  <suffix name="Duration10To15Sec"
+      label="remoting sessions have duration in (10, 15] seconds"/>
+  <suffix name="Duration100MilliSecTo1Sec"
+      label="remoting sessions have duration in (0.1, 1] seconds"/>
   <affected-histogram name="Media.Remoting.SessionStopTrigger"/>
 </histogram_suffixes>
 
@@ -118715,12 +119592,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="RendererMemoryTiming" separator=".">
+  <suffix name="AfterBackgrounded.5min"
+      label="Recorded 5 minutes after backgrounded."/>
   <suffix name="AfterBackgrounded.10min"
       label="Recorded 10 minutes after backgrounded."/>
   <suffix name="AfterBackgrounded.15min"
       label="Recorded 15 minutes after backgrounded."/>
-  <suffix name="AfterBackgrounded.5min"
-      label="Recorded 5 minutes after backgrounded."/>
   <suffix name="DidFinishLoad"
       label="Recorded each time DidFinishLoad is called for *any* frame
              within the page."/>
@@ -118851,11 +119728,11 @@
 
 <histogram_suffixes name="RendererScheduler.TaskCountPerTaskLength"
     separator=".">
+  <suffix name="LongerThan1s"/>
+  <suffix name="LongerThan16ms"/>
+  <suffix name="LongerThan50ms"/>
   <suffix name="LongerThan100ms"/>
   <suffix name="LongerThan150ms"/>
-  <suffix name="LongerThan16ms"/>
-  <suffix name="LongerThan1s"/>
-  <suffix name="LongerThan50ms"/>
   <affected-histogram name="RendererScheduler.TaskCountPerFrameType"/>
   <affected-histogram name="RendererScheduler.TaskCountPerQueueType"/>
 </histogram_suffixes>
@@ -119137,12 +120014,12 @@
     Deprecated 1/2016
   </obsolete>
   <suffix name="1Client" label="One Client in the ResourceScheduler."/>
+  <suffix name="Max5Clients"
+      label="Two to five Clients in the ResourceScheduler."/>
   <suffix name="Max15Clients"
       label="Six to fifteen Clients in the ResourceScheduler."/>
   <suffix name="Max30Clients"
       label="Sixteen to thirty Clients in the ResourceScheduler."/>
-  <suffix name="Max5Clients"
-      label="Two to five Clients in the ResourceScheduler."/>
   <suffix name="Over30Clients"
       label="Over thirty Clients in the ResourceScheduler."/>
   <affected-histogram name="ResourceScheduler.ClientLoadedTime.Active"/>
@@ -119854,6 +120731,14 @@
 
 <histogram_suffixes name="SessionRestoreTabCounts" separator="_">
   <suffix name="1" label="1 tab present"/>
+  <suffix name="2" label="2 tabs present"/>
+  <suffix name="3" label="3 tabs present"/>
+  <suffix name="4" label="4 tabs present"/>
+  <suffix name="5" label="5 tabs present"/>
+  <suffix name="6" label="6 tabs present"/>
+  <suffix name="7" label="7 tabs present"/>
+  <suffix name="8" label="8 tabs present"/>
+  <suffix name="9" label="9 tabs present"/>
   <suffix name="10" label="10 tabs present"/>
   <suffix name="11" label="11 tab present"/>
   <suffix name="12" label="12 tabs present"/>
@@ -119864,15 +120749,7 @@
   <suffix name="17" label="17 tabs present"/>
   <suffix name="18" label="18 tabs present"/>
   <suffix name="19" label="19 tabs present"/>
-  <suffix name="2" label="2 tabs present"/>
   <suffix name="20" label="20 tabs present"/>
-  <suffix name="3" label="3 tabs present"/>
-  <suffix name="4" label="4 tabs present"/>
-  <suffix name="5" label="5 tabs present"/>
-  <suffix name="6" label="6 tabs present"/>
-  <suffix name="7" label="7 tabs present"/>
-  <suffix name="8" label="8 tabs present"/>
-  <suffix name="9" label="9 tabs present"/>
   <affected-histogram name="SessionRestore.AllTabsLoaded"/>
   <affected-histogram name="SessionRestore.FirstTabPainted"/>
   <affected-histogram name="SessionRestore.ForegroundTabFirstLoaded"/>
@@ -120090,11 +120967,11 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="SpdyCwnd" separator="_">
-  <suffix name="cwnd10" label="using cwnd policy static 10"/>
-  <suffix name="cwnd16" label="using cwnd policy static 16"/>
   <obsolete>
     Deprecated as of 07/2014.
   </obsolete>
+  <suffix name="cwnd10" label="using cwnd policy static 10"/>
+  <suffix name="cwnd16" label="using cwnd policy static 16"/>
   <owner>willchan@chromium.org</owner>
   <suffix name="cwnd32" label="using cwnd policy static 32"/>
   <suffix name="cwndDynamic" label="using dynamic cwnd policy"/>
@@ -120126,10 +121003,10 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="SpdySettingsCwnd" separator="">
-  <suffix name="100K" label="where at least 100KB was transferred."/>
   <suffix name="10K" label="where at least 10KB was transferred."/>
   <suffix name="25K" label="where at least 25KB was transferred."/>
   <suffix name="50K" label="where at least 50KB was transferred."/>
+  <suffix name="100K" label="where at least 100KB was transferred."/>
   <affected-histogram name="Net.SpdySettingsCwnd"/>
 </histogram_suffixes>
 
@@ -120192,10 +121069,10 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="SSLFalseStart" separator="_">
-  <suffix name="FalseStart_disabled"/>
   <obsolete>
     Removed 2011-06-01.
   </obsolete>
+  <suffix name="FalseStart_disabled"/>
   <suffix name="FalseStart_enabled"/>
   <affected-histogram name="Net.SSL_Connection_Latency"/>
   <affected-histogram name="Net.SSL_Connection_Latency_2"/>
@@ -120339,7 +121216,7 @@
 
 <histogram_suffixes name="StunPingInternal" separator=".">
   <suffix name="0ms" label="0ms between requests"/>
-  <suffix name="100ms" label="100ms between requests"/>
+  <suffix name="5ms" label="5ms between requests"/>
   <suffix name="10ms" label="10ms between requests"/>
   <suffix name="15ms" label="15ms between requests"/>
   <suffix name="20ms" label="20ms between requests"/>
@@ -120349,7 +121226,7 @@
   <suffix name="40ms" label="40ms between requests"/>
   <suffix name="45ms" label="45ms between requests"/>
   <suffix name="50ms" label="50ms between requests"/>
-  <suffix name="5ms" label="5ms between requests"/>
+  <suffix name="100ms" label="100ms between requests"/>
   <affected-histogram name="WebRTC.Stun.ResponseLatency.NoNAT"/>
   <affected-histogram name="WebRTC.Stun.ResponseLatency.NonSymNAT"/>
   <affected-histogram name="WebRTC.Stun.ResponseLatency.SymNAT"/>
@@ -120451,9 +121328,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="SyzygyStartupTime" separator="_">
+  <obsolete>
+    No longer logged.
+  </obsolete>
   <suffix name="PreRead_0"/>
+  <suffix name="PreRead_5"/>
   <suffix name="PreRead_10"/>
-  <suffix name="PreRead_100"/>
   <suffix name="PreRead_15"/>
   <suffix name="PreRead_20"/>
   <suffix name="PreRead_25"/>
@@ -120461,7 +121341,6 @@
   <suffix name="PreRead_35"/>
   <suffix name="PreRead_40"/>
   <suffix name="PreRead_45"/>
-  <suffix name="PreRead_5"/>
   <suffix name="PreRead_50"/>
   <suffix name="PreRead_55"/>
   <suffix name="PreRead_60"/>
@@ -120472,14 +121351,12 @@
   <suffix name="PreRead_85"/>
   <suffix name="PreRead_90"/>
   <suffix name="PreRead_95"/>
+  <suffix name="PreRead_100"/>
   <suffix name="PreReadDisabled"/>
-  <obsolete>
-    No longer logged.
-  </obsolete>
   <suffix name="PreReadEnabled"/>
   <suffix name="XP_PreRead_0"/>
+  <suffix name="XP_PreRead_5"/>
   <suffix name="XP_PreRead_10"/>
-  <suffix name="XP_PreRead_100"/>
   <suffix name="XP_PreRead_15"/>
   <suffix name="XP_PreRead_20"/>
   <suffix name="XP_PreRead_25"/>
@@ -120487,7 +121364,6 @@
   <suffix name="XP_PreRead_35"/>
   <suffix name="XP_PreRead_40"/>
   <suffix name="XP_PreRead_45"/>
-  <suffix name="XP_PreRead_5"/>
   <suffix name="XP_PreRead_50"/>
   <suffix name="XP_PreRead_55"/>
   <suffix name="XP_PreRead_60"/>
@@ -120498,6 +121374,7 @@
   <suffix name="XP_PreRead_85"/>
   <suffix name="XP_PreRead_90"/>
   <suffix name="XP_PreRead_95"/>
+  <suffix name="XP_PreRead_100"/>
   <suffix name="XP_PreReadDisabled"/>
   <suffix name="XP_PreReadEnabled"/>
   <affected-histogram name="Startup.BrowserMessageLoopStartTime"/>
@@ -120540,12 +121417,12 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="Tabs.TabUsageIntervalLength" separator="_">
-  <suffix name="18000" label="5 hours"/>
   <suffix name="30" label="30 seconds"/>
-  <suffix name="3600" label="1 hour"/>
-  <suffix name="43200" label="12 hours"/>
   <suffix name="60" label="1 minute"/>
   <suffix name="600" label="10 minutes"/>
+  <suffix name="3600" label="1 hour"/>
+  <suffix name="18000" label="5 hours"/>
+  <suffix name="43200" label="12 hours"/>
   <affected-histogram name="Tabs.UnusedAndClosedInInterval.Count"/>
   <affected-histogram name="Tabs.UnusedInInterval.Count"/>
   <affected-histogram name="Tabs.UsedAndClosedInInterval.Count"/>
@@ -120831,11 +121708,11 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="UnackedPackets" separator=".">
-  <suffix name="NoUnackedPackets"
-      label="The session had no outstanding unacked packets."/>
   <obsolete>
     Deprecated as of 08/2016.
   </obsolete>
+  <suffix name="NoUnackedPackets"
+      label="The session had no outstanding unacked packets."/>
   <suffix name="UnackedPackets"
       label="The session had outstanding unacked packets."/>
   <affected-histogram
diff --git a/tools/metrics/histograms/print_style.py b/tools/metrics/histograms/print_style.py
index f115758..5a44248 100644
--- a/tools/metrics/histograms/print_style.py
+++ b/tools/metrics/histograms/print_style.py
@@ -5,6 +5,7 @@
 """Holds the constants for pretty printing histograms.xml."""
 
 import os
+import re
 import sys
 
 # Import the metrics/common module for pretty print xml.
@@ -66,6 +67,15 @@
 
 LOWERCASE_NAME_FN = lambda n: n.attributes['name'].value.lower()
 
+
+def _NaturalSortByName(node):
+  """Sort by name, ordering numbers in the way humans expect."""
+  # See: https://blog.codinghorror.com/sorting-for-humans-natural-sort-order/
+  name = node.attributes['name'].value.lower()
+  convert = lambda text: int(text) if text.isdigit() else text
+  return [convert(c) for c in re.split('([0-9]+)', name)]
+
+
 # Tags whose children we want to alphabetize. The key is the parent tag name,
 # and the value is a list of pairs of tag name and key functions that maps each
 # child node to the desired sort key.
@@ -75,7 +85,8 @@
     'enum': [('int', lambda n: int(n.attributes['value'].value))],
     'histogram_suffixes_list': [('histogram_suffixes', LOWERCASE_NAME_FN)],
     'histogram_suffixes': [
-        ('suffix', LOWERCASE_NAME_FN),
+        ('obsolete', lambda n: None),
+        ('suffix', _NaturalSortByName),
         ('affected-histogram', LOWERCASE_NAME_FN),
     ],
 }
diff --git a/tools/perf/benchmarks/rendering.py b/tools/perf/benchmarks/rendering.py
index 40e40f2..a152178 100644
--- a/tools/perf/benchmarks/rendering.py
+++ b/tools/perf/benchmarks/rendering.py
@@ -34,7 +34,6 @@
 class RenderingMobile(perf_benchmark.PerfBenchmark):
 
   test = rendering.Rendering
-  page_set = page_sets.RenderingMobilePageSet
   SUPPORTED_PLATFORMS = [story_module.expectations.ALL_MOBILE]
 
   @classmethod
@@ -47,3 +46,6 @@
                       help='If set, continuously scroll up and down forever. '
                            'This is useful for analysing scrolling behaviour '
                            'with tools such as perf.')
+
+  def CreateStorySet(self, options):
+    return page_sets.RenderingStorySet(platform='mobile')
diff --git a/tools/perf/core/perf_data_generator.py b/tools/perf/core/perf_data_generator.py
index e39cd08..ceb74a6 100755
--- a/tools/perf/core/perf_data_generator.py
+++ b/tools/perf/core/perf_data_generator.py
@@ -62,7 +62,8 @@
 
 
 _VALID_SWARMING_DIMENSIONS = {
-    'gpu', 'device_ids', 'os', 'pool', 'perf_tests', 'perf_tests_with_args'}
+    'gpu', 'device_ids', 'os', 'pool', 'perf_tests', 'perf_tests_with_args',
+    'device_os', 'device_type', 'device_os_flavor'}
 _VALID_PERF_POOLS = {
     'Chrome-perf', 'chrome.tests.perf', 'chrome.tests.perf-webview'}
 
@@ -75,6 +76,12 @@
             tester_name, k))
       if k == 'pool' and v not in _VALID_PERF_POOLS:
         raise ValueError('Invalid perf pool %s in %s' % (v, tester_name))
+      if k == 'os' and v == 'Android':
+        if (not 'device_type' in dimension.keys() or
+            not 'device_os' in dimension.keys() or
+            not 'device_os_flavor' in dimension.keys()):
+          raise ValueError(
+              'Invalid android dimensions %s in %s' % (v, tester_name))
 
 
 def add_tester(waterfall, name, perf_id, platform, target_bits=64,
@@ -138,6 +145,9 @@
       {
        'os': 'Android',
        'pool': 'Chrome-perf',
+       'device_os': 'MMB29Q',
+       'device_type': 'bullhead',
+       'device_os_flavor': 'google',
        'device_ids': [
            'build73-b1--device1', 'build73-b1--device2', 'build73-b1--device3',
            'build73-b1--device4', 'build73-b1--device5', 'build73-b1--device6',
@@ -167,6 +177,9 @@
       {
        'os': 'Android',
        'pool': 'chrome.tests.perf',
+       'device_os': 'KOT49H0',
+       'device_type': 'hammerhead',
+       'device_os_flavor': 'google',
        'device_ids': [
            'build199-b7--device1', 'build199-b7--device2',
            'build199-b7--device3', 'build199-b7--device4',
@@ -199,6 +212,9 @@
       {
        'os': 'Android',
        'pool': 'chrome.tests.perf',
+       'device_os': 'LMY47W',
+       'device_type': 'sprout',
+       'device_os_flavor': 'google',
        'device_ids': [
            'build191-b7--device1', 'build191-b7--device2',
            'build191-b7--device3', 'build191-b7--device4',
@@ -226,6 +242,9 @@
       {
        'os': 'Android',
        'pool': 'chrome.tests.perf-webview',
+       'device_os': 'MOB30K',
+       'device_type': 'bullhead',
+       'device_os_flavor': 'aosp',
        'device_ids': [
            'build188-b7--device1', 'build188-b7--device2',
            'build188-b7--device3', 'build188-b7--device4',
@@ -249,6 +268,9 @@
       {
        'os': 'Android',
        'pool': 'chrome.tests.perf-webview',
+       'device_os': 'MOB30K',
+       'device_type': 'shamu',
+       'device_os_flavor': 'aosp',
        'device_ids': [
            'build202-b7--device1', 'build202-b7--device2',
            'build202-b7--device3', 'build202-b7--device4',
@@ -428,79 +450,6 @@
   return result
 
 
-BENCHMARKS_TO_OUTPUT_HISTOGRAMS = [
-    'dummy_benchmark.noisy_benchmark_1',
-    'dummy_benchmark.stable_benchmark_1',
-    'blink_perf.bindings',
-    'blink_perf.canvas',
-    'blink_perf.css',
-    'blink_perf.dom',
-    'blink_perf.events',
-    'blink_perf.image_decoder',
-    'blink_perf.layout',
-    'blink_perf.owp_storage',
-    'blink_perf.paint',
-    'blink_perf.parser',
-    'blink_perf.shadow_dom',
-    'blink_perf.svg',
-    'memory.top_10_mobile',
-    'system_health.common_desktop',
-    'system_health.common_mobile',
-    'system_health.memory_desktop',
-    'system_health.memory_mobile',
-    'system_health.webview_startup',
-    'smoothness.gpu_rasterization.tough_filters_cases',
-    'smoothness.gpu_rasterization.tough_path_rendering_cases',
-    'smoothness.gpu_rasterization.tough_scrolling_cases',
-    'smoothness.gpu_rasterization_and_decoding.image_decoding_cases',
-    'smoothness.image_decoding_cases',
-    'smoothness.key_desktop_move_cases',
-    'smoothness.maps',
-    'smoothness.oop_rasterization.top_25_smooth',
-    'smoothness.top_25_smooth',
-    'smoothness.tough_ad_cases',
-    'smoothness.tough_animation_cases',
-    'smoothness.tough_canvas_cases',
-    'smoothness.tough_filters_cases',
-    'smoothness.tough_image_decode_cases',
-    'smoothness.tough_path_rendering_cases',
-    'smoothness.tough_scrolling_cases',
-    'smoothness.tough_texture_upload_cases',
-    'smoothness.tough_webgl_ad_cases',
-    'smoothness.tough_webgl_cases',
-    'dromaeo',
-    'jetstream',
-    'kraken',
-    'octane',
-    'speedometer',
-    'speedometer-future',
-    'speedometer2',
-    'speedometer2-future',
-    'wasm',
-    'battor.steady_state',
-    'battor.trivial_pages',
-    'rasterize_and_record_micro.partial_invalidation',
-    'rasterize_and_record_micro.top_25',
-    'scheduler.tough_scheduling_cases',
-    'tab_switching.typical_25',
-    'thread_times.key_hit_test_cases',
-    'thread_times.key_idle_power_cases',
-    'thread_times.key_mobile_sites_smooth',
-    'thread_times.key_noop_cases',
-    'thread_times.key_silk_cases',
-    'thread_times.simple_mobile_sites',
-    'thread_times.oop_rasterization.key_mobile',
-    'thread_times.tough_compositor_cases',
-    'thread_times.tough_scrolling_cases',
-    'tracing.tracing_with_background_memory_infra',
-    'tracing.tracing_with_debug_overhead',
-    'v8.browsing_desktop',
-    'v8.browsing_mobile',
-    'v8.browsing_desktop-future',
-    'v8.browsing_mobile-future',
-]
-
-
 def generate_telemetry_test(swarming_dimensions, benchmark_name, browser):
   # The step name must end in 'test' or 'tests' in order for the
   # results to automatically show up on the flakiness dashboard.
@@ -511,16 +460,12 @@
     benchmark_name,
     '-v',
     '--upload-results',
-    '--browser=%s' % browser
+    '--browser=%s' % browser,
+    '--output-format=histograms',
   ]
   # When this is enabled on more than just windows machines we will need
   # --device=android
 
-  if benchmark_name in BENCHMARKS_TO_OUTPUT_HISTOGRAMS:
-    test_args.append('--output-format=histograms')
-  else:
-    test_args.append('--output-format=chartjson')
-
   ignore_task_failure = False
   step_name = benchmark_name
   if browser == 'reference':
@@ -566,6 +511,12 @@
   }
   if 'gpu' in dimension:
     complete_dimension['gpu'] = dimension['gpu']
+  if 'device_os' in dimension:
+    complete_dimension['device_os'] = dimension['device_os']
+  if 'device_type' in dimension:
+    complete_dimension['device_type'] = dimension['device_type']
+  if 'device_os_flavor' in dimension:
+    complete_dimension['device_os_flavor'] = dimension['device_os_flavor']
   return complete_dimension
 
 
@@ -1088,6 +1039,7 @@
       'dimension': {
         'device_os': 'O',
         'device_type': 'gobo',
+        'device_os_flavor': 'google',
         'pool': 'chrome.tests.perf-fyi',
         'os': 'Android',
       },
@@ -1109,7 +1061,8 @@
         'pool': 'chrome.tests.perf-webview-fyi',
         'os': 'Android',
         'device_type': 'walleye',
-        'device_os': 'O'
+        'device_os': 'O',
+        'device_os_flavor': 'google',
       },
       'device_ids': [
       ],
@@ -1130,7 +1083,8 @@
         'pool': 'chrome.tests.perf-fyi',
         'os': 'Android',
         'device_type': 'walleye',
-        'device_os': 'O'
+        'device_os': 'O',
+        'device_os_flavor': 'google',
       },
       'device_ids': [
       ],
diff --git a/tools/perf/core/perf_data_generator_unittest.py b/tools/perf/core/perf_data_generator_unittest.py
index 5d32de256..6cecc5e 100644
--- a/tools/perf/core/perf_data_generator_unittest.py
+++ b/tools/perf/core/perf_data_generator_unittest.py
@@ -145,7 +145,7 @@
     test = tests[0]
     self.assertEquals(test['args'], [
         'regular', '-v', '--upload-results',
-        '--browser=android-webview', '--output-format=chartjson',
+        '--browser=android-webview', '--output-format=histograms',
         '--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk'])
     self.assertEquals(test['isolate_name'], 'telemetry_perf_webview_tests')
 
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config
index c031bc5..6c08fd5 100644
--- a/tools/perf/expectations.config
+++ b/tools/perf/expectations.config
@@ -128,22 +128,22 @@
 crbug.com/770904 [ Mac ] rendering.desktop/gmail_move [ Skip ]
 
 # Benchmark: rendering.mobile
-crbug.com/667432 [ All ] rendering.mobile/amazon_desktop [ Skip ]
+crbug.com/667432 [ All ] rendering.mobile/amazon [ Skip ]
 crbug.com/667432 [ All ] rendering.mobile/amazon_desktop_gpu_raster [ Skip ]
-crbug.com/528474 [ All ] rendering.mobile/cnn_desktop [ Skip ]
+crbug.com/528474 [ All ] rendering.mobile/cnn [ Skip ]
 crbug.com/528474 [ All ] rendering.mobile/cnn_desktop_gpu_raster [ Skip ]
 crbug.com/667432 [ All ] rendering.mobile/pinterest_desktop_gpu_raster [ Skip ]
 crbug.com/803869 [ Nexus_5X ] rendering.mobile/youtube_desktop_gpu_raster [ Skip ]
-crbug.com/756119 [ All ] rendering.mobile/digg [ Skip ]
-crbug.com/756119 [ All ] rendering.mobile/digg_sync_scroll [ Skip ]
-crbug.com/667432 [ All ] rendering.mobile/amazon [ Skip ]
-crbug.com/667432 [ All ] rendering.mobile/amazon_sync_scroll [ Skip ]
-crbug.com/169980 [ All ] rendering.mobile/twitter [ Skip ]
-crbug.com/169980 [ All ] rendering.mobile/twitter_sync_scroll [ Skip ]
-crbug.com/249722 [ All ] rendering.mobile/espn [ Skip ]
-crbug.com/249722 [ All ] rendering.mobile/espn_sync_scroll [ Skip ]
-crbug.com/249736 [ All ] rendering.mobile/forecast.io [ Skip ]
-crbug.com/249736 [ All ] rendering.mobile/forecast.io_sync_scroll [ Skip ]
+crbug.com/756119 [ All ] rendering.mobile/digg_mobile [ Skip ]
+crbug.com/756119 [ All ] rendering.mobile/digg_mobile_sync_scroll [ Skip ]
+crbug.com/667432 [ All ] rendering.mobile/amazon_mobile [ Skip ]
+crbug.com/667432 [ All ] rendering.mobile/amazon_mobile_sync_scroll [ Skip ]
+crbug.com/169980 [ All ] rendering.mobile/twitter_mobile [ Skip ]
+crbug.com/169980 [ All ] rendering.mobile/twitter_mobile_sync_scroll [ Skip ]
+crbug.com/249722 [ All ] rendering.mobile/espn_mobile [ Skip ]
+crbug.com/249722 [ All ] rendering.mobile/espn_mobile_sync_scroll [ Skip ]
+crbug.com/249736 [ All ] rendering.mobile/forecast.io_mobile [ Skip ]
+crbug.com/249736 [ All ] rendering.mobile/forecast.io_mobile_sync_scroll [ Skip ]
 
 # Benchmark: smoothness.gpu_rasterization.polymer
 [ All ] smoothness.gpu_rasterization.polymer/* [ Skip ] # Test needs to be modernized.
@@ -220,7 +220,6 @@
 crbug.com/755556 [ Mac ] smoothness.tough_animation_cases/mix_blend_mode_animation_hue.html [ Skip ]
 crbug.com/829499 [ Android_One ] smoothness.tough_animation_cases/css_animations_many_keyframes.html?N=0316 [ Skip ]
 crbug.com/829499 [ Android_One ] smoothness.tough_animation_cases/web_animations_many_keyframes.html?N=0316 [ Skip ]
-crbug.com/840964 [ Nexus_5X ] smoothness.tough_animation_cases/web_animations_many_keyframes.html?N=0316 [ Skip ]
 
 # Benchmark: smoothness.tough_canvas_cases
 crbug.com/785485 [ Android_Webview ] smoothness.tough_canvas_cases/http://www.kevs3d.co.uk/dev/canvask3d/k3d_test.html [ Skip ]
@@ -433,8 +432,6 @@
 [ Android_One ] wasm/WasmSpaceBuggy [ Skip ]
 crbug.com/814012 [ Mac ] wasm/AsmJsZenGarden [ Skip ]
 crbug.com/814012 [ Win ] wasm/AsmJsZenGarden [ Skip ]
-crbug.com/842729 [ Mac ] wasm/WasmZenGarden [ Skip ]
-crbug.com/842729 [ Win ] wasm/WasmZenGarden [ Skip ]
 
 ##### Perf FYI benchmarks go after here #####
 # Benchmark: loading.desktop.network_service
diff --git a/tools/perf/page_sets/data/rendering_desktop.json b/tools/perf/page_sets/data/rendering_desktop.json
index 904407436..51420dd0 100644
--- a/tools/perf/page_sets/data/rendering_desktop.json
+++ b/tools/perf/page_sets/data/rendering_desktop.json
@@ -83,6 +83,18 @@
         },
         "gmail_move": {
             "DEFAULT": "key_desktop_move_cases_002.wprgo"
+        },
+	"filter_terrain_svg": {
+            "DEFAULT": "tough_filters_cases_002.wprgo"
+        },
+        "motion_mark_focus": {
+            "DEFAULT": "tough_filters_cases_002.wprgo"
+        },
+        "analog_clock_svg": {
+            "DEFAULT": "tough_filters_cases_002.wprgo"
+        },
+        "ie_pirate_mark": {
+            "DEFAULT": "tough_filters_cases_002.wprgo"
         }
     },
     "description": "Describes the Web Page Replay archives for a story set. Don't edit by hand! Use record_wpr for updating.",
diff --git a/tools/perf/page_sets/data/rendering_mobile.json b/tools/perf/page_sets/data/rendering_mobile.json
index 2e015a36..5e680ab2 100644
--- a/tools/perf/page_sets/data/rendering_mobile.json
+++ b/tools/perf/page_sets/data/rendering_mobile.json
@@ -1,21 +1,21 @@
 {
     "archives": {
-        "espn": {
+        "espn_mobile": {
             "DEFAULT": "key_mobile_sites_012.wprgo"
         },
-        "espn_sync_scroll": {
+        "espn_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_012.wprgo"
         },
-        "twitter": {
+        "twitter_mobile": {
             "DEFAULT": "key_mobile_sites_011.wprgo"
         },
-        "twitter_sync_scroll": {
+        "twitter_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_011.wprgo"
         },
-        "wikipedia": {
+        "wikipedia_mobile": {
             "DEFAULT": "key_mobile_sites_009.wprgo"
         },
-        "wikipedia_sync_scroll": {
+        "wikipedia_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_009.wprgo"
         },
         "wikipedia_delayed_scroll_start": {
@@ -24,413 +24,425 @@
         "wikipedia_delayed_scroll_start_sync_scroll": {
             "DEFAULT": "key_mobile_sites_009.wprgo"
         },
-        "yahoo_answers": {
+        "yahoo_answers_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "yahoo_answers_sync_scroll": {
+        "yahoo_answers_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "cuteoverload": {
+        "cuteoverload_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "cuteoverload_sync_scroll": {
+        "cuteoverload_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "digg": {
+        "digg_mobile": {
             "DEFAULT": "key_mobile_sites_014.wprgo"
         },
-        "digg_sync_scroll": {
+        "digg_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_014.wprgo"
         },
-        "wordpress": {
+        "wordpress_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "wordpress_sync_scroll": {
+        "wordpress_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "forecast.io": {
+        "forecast.io_mobile": {
             "DEFAULT": "key_mobile_sites_013.wprgo"
         },
-        "forecast.io_sync_scroll": {
+        "forecast.io_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_013.wprgo"
         },
-        "usatoday": {
+        "usatoday_mobile": {
             "DEFAULT": "key_mobile_sites_007.wprgo"
         },
-        "usatoday_sync_scroll": {
+        "usatoday_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_007.wprgo"
         },
-        "blogspot": {
+        "blogspot_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "blogspot_sync_scroll": {
+        "blogspot_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "gsp.ro": {
+        "gsp.ro_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "gsp.ro_sync_scroll": {
+        "gsp.ro_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "capitolvolkswagen": {
+        "capitolvolkswagen_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "capitolvolkswagen_sync_scroll": {
+        "capitolvolkswagen_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "youtube": {
+        "youtube_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "youtube_sync_scroll": {
+        "youtube_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "mlb": {
+        "mlb_mobile": {
             "DEFAULT": "key_mobile_sites_002.wprgo"
         },
-        "mlb_sync_scroll": {
+        "mlb_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_002.wprgo"
         },
-        "google_news": {
+        "google_news_mobile": {
             "DEFAULT": "key_mobile_sites_006.wprgo"
         },
-        "google_news_sync_scroll": {
+        "google_news_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_006.wprgo"
         },
-        "yahoo_news": {
+        "yahoo_news_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "yahoo_news_sync_scroll": {
+        "yahoo_news_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "nytimes": {
+        "nytimes_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "nytimes_sync_scroll": {
+        "nytimes_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "wsj": {
+        "wsj_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "wsj_sync_scroll": {
+        "wsj_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "pinterest": {
+        "pinterest_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "pinterest_sync_scroll": {
+        "pinterest_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "ebay": {
+        "ebay_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "ebay_sync_scroll": {
+        "ebay_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "slashdot": {
+        "slashdot_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "slashdot_sync_scroll": {
+        "slashdot_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "yahoo_sports": {
+        "yahoo_sports_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "yahoo_sports_sync_scroll": {
+        "yahoo_sports_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "techcrunch": {
+        "techcrunch_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "techcrunch_sync_scroll": {
+        "techcrunch_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "theverge": {
+        "theverge_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "theverge_sync_scroll": {
+        "theverge_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "worldjournal": {
+        "worldjournal_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "worldjournal_sync_scroll": {
+        "worldjournal_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "amazon": {
+        "amazon_mobile": {
             "DEFAULT": "key_mobile_sites_015.wprgo"
         },
-        "amazon_sync_scroll": {
+        "amazon_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_015.wprgo"
         },
-        "androidpolice": {
+        "androidpolice_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "androidpolice_sync_scroll": {
+        "androidpolice_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "baidu": {
+        "baidu_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "baidu_sync_scroll": {
+        "baidu_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "bing": {
+        "bing_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "bing_sync_scroll": {
+        "bing_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "boingboing": {
+        "boingboing_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "boingboing_sync_scroll": {
+        "boingboing_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "booking.com": {
+        "booking.com_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "booking.com_sync_scroll": {
+        "booking.com_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "cnn": {
+        "cnn_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "cnn_sync_scroll": {
+        "cnn_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "cnn_article": {
+        "cnn_article_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "cnn_article_sync_scroll": {
+        "cnn_article_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "deviantart": {
+        "deviantart_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "deviantart_sync_scroll": {
+        "deviantart_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "latimes": {
+        "latimes_mobile": {
             "DEFAULT": "key_mobile_sites_007.wprgo"
         },
-        "latimes_sync_scroll": {
+        "latimes_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_007.wprgo"
         },
-        "reddit": {
+        "reddit_mobile": {
             "DEFAULT": "key_mobile_sites_010.wprgo"
         },
-        "reddit_sync_scroll": {
+        "reddit_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_010.wprgo"
         },
-        "sfgate": {
+        "sfgate_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "sfgate_sync_scroll": {
+        "sfgate_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "theverge_article": {
+        "theverge_article_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "theverge_article_sync_scroll": {
+        "theverge_article_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "wowwiki": {
+        "wowwiki_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "wowwiki_sync_scroll": {
+        "wowwiki_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "facebook": {
+        "facebook_mobile": {
             "DEFAULT": "key_mobile_sites_003.wprgo"
         },
-        "facebook_sync_scroll": {
+        "facebook_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_003.wprgo"
         },
-        "gmail": {
+        "gmail_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "gmail_sync_scroll": {
+        "gmail_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "google_plus": {
+        "google_plus_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "google_plus_sync_scroll": {
+        "google_plus_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "google_web_search": {
+        "google_web_search_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "google_web_search_sync_scroll": {
+        "google_web_search_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "google_calendar": {
+        "google_calendar_mobile": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "google_calendar_sync_scroll": {
+        "google_calendar_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_000.wprgo"
         },
-        "linkedin": {
+        "linkedin_mobile": {
             "DEFAULT": "key_mobile_sites_002.wprgo"
         },
-        "linkedin_sync_scroll": {
+        "linkedin_mobile_sync_scroll": {
             "DEFAULT": "key_mobile_sites_002.wprgo"
         },
-        "google_docs_desktop": {
+        "google_docs": {
             "DEFAULT": "top_25_009.wprgo"
         },
         "google_docs_desktop_gpu_raster": {
             "DEFAULT": "top_25_009.wprgo"
         },
-        "facebook_desktop": {
+        "facebook": {
             "DEFAULT": "top_25_003.wprgo"
         },
         "facebook_desktop_gpu_raster": {
             "DEFAULT": "top_25_003.wprgo"
         },
-        "wikipedia_desktop": {
+        "wikipedia": {
             "DEFAULT": "top_25_004.wprgo"
         },
         "wikipedia_desktop_gpu_raster": {
             "DEFAULT": "top_25_004.wprgo"
         },
-        "yahoo_answers_desktop": {
+        "yahoo_answers": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "yahoo_answers_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "booking.com_desktop": {
+        "booking.com": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "booking.com_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "wordpress_desktop": {
+        "wordpress": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "wordpress_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "espn_desktop": {
+        "espn": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "espn_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "yahoo_games_desktop": {
+        "yahoo_games": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "yahoo_games_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "blogspot_desktop": {
+        "blogspot": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "blogspot_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "yahoo_news_desktop": {
+        "yahoo_news": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "yahoo_news_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "pinterest_desktop": {
+        "pinterest": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "pinterest_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "yahoo_sports_desktop": {
+        "yahoo_sports": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "yahoo_sports_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "techcrunch_desktop": {
+        "techcrunch": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "techcrunch_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "amazon_desktop": {
+        "amazon": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "amazon_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "cnn_desktop": {
+        "cnn": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "cnn_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "ebay_desktop": {
+        "ebay": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "ebay_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "linkedin_desktop": {
+        "linkedin": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "linkedin_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "weather.com_desktop": {
+        "weather.com": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "weather.com_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "youtube_desktop": {
+        "youtube": {
             "DEFAULT": "top_25_011.wprgo"
         },
         "youtube_desktop_gpu_raster": {
             "DEFAULT": "top_25_011.wprgo"
         },
-        "google_drive_desktop": {
+        "google_drive": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "google_drive_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "gmail_desktop": {
+        "gmail": {
             "DEFAULT": "top_25_006.wprgo"
         },
         "gmail_desktop_gpu_raster": {
             "DEFAULT": "top_25_006.wprgo"
         },
-        "google_plus_desktop": {
+        "google_plus": {
             "DEFAULT": "top_25_010.wprgo"
         },
         "google_plus_desktop_gpu_raster": {
             "DEFAULT": "top_25_010.wprgo"
         },
-        "twitter_desktop": {
+        "twitter": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "twitter_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "google_web_search_desktop": {
+        "google_web_search": {
             "DEFAULT": "top_25_000.wprgo"
         },
         "google_web_search_desktop_gpu_raster": {
             "DEFAULT": "top_25_000.wprgo"
         },
-        "google_calendar_desktop": {
+        "google_calendar": {
             "DEFAULT": "top_25_008.wprgo"
         },
         "google_calendar_desktop_gpu_raster": {
             "DEFAULT": "top_25_008.wprgo"
         },
-        "google_image_search_desktop": {
+        "google_image_search": {
             "DEFAULT": "top_25_007.wprgo"
         },
         "google_image_search_desktop_gpu_raster": {
             "DEFAULT": "top_25_007.wprgo"
+        },
+	"filter_terrain_svg": {
+            "DEFAULT": "tough_filters_cases_002.wprgo"
+        },
+        "motion_mark_focus": {
+            "DEFAULT": "tough_filters_cases_002.wprgo"
+        },
+        "analog_clock_svg": {
+            "DEFAULT": "tough_filters_cases_002.wprgo"
+        },
+        "ie_pirate_mark": {
+            "DEFAULT": "tough_filters_cases_002.wprgo"
         }
     },
     "description": "Describes the Web Page Replay archives for a story set. Don't edit by hand! Use record_wpr for updating.",
diff --git a/tools/perf/page_sets/data/tough_filters_cases.json b/tools/perf/page_sets/data/tough_filters_cases.json
index f42709bf..bb5b6b10 100644
--- a/tools/perf/page_sets/data/tough_filters_cases.json
+++ b/tools/perf/page_sets/data/tough_filters_cases.json
@@ -3,19 +3,19 @@
         "http://ie.microsoft.com/testdrive/Performance/Pirates/": {
             "DEFAULT": "tough_filters_cases_001.wprgo"
         },
-        "http://letmespellitoutforyou.com/samples/svg/filter_terrain.svg": {
+        "filter_terrain_svg": {
             "DEFAULT": "tough_filters_cases_002.wprgo"
         },
-        "http://rawgit.com/WebKit/webkit/master/PerformanceTests/Animometer/developer.html?test-interval=20&display=minimal&controller=fixed&frame-rate=50&kalman-process-error=1&kalman-measurement-error=4&time-measurement=performance&suite-name=Animometer&test-name=Focus&complexity=100": {
+        "motion_mark_focus": {
             "DEFAULT": "tough_filters_cases_002.wprgo"
         },
-        "http://static.bobdo.net/Analog_Clock.svg": {
+        "analog_clock_svg": {
             "DEFAULT": "tough_filters_cases_002.wprgo"
         },
-        "http://web.archive.org/web/20150502135732/http://ie.microsoft.com/testdrive/Performance/Pirates/Default.html": {
+        "ie_pirate_mark": {
             "DEFAULT": "tough_filters_cases_002.wprgo"
         }
     },
     "description": "Describes the Web Page Replay archives for a story set. Don't edit by hand! Use record_wpr for updating.",
     "platform_specific": true
-}
\ No newline at end of file
+}
diff --git a/tools/perf/page_sets/data/tough_path_rendering_cases.json b/tools/perf/page_sets/data/tough_path_rendering_cases.json
index f52a84d..3f9c4837 100644
--- a/tools/perf/page_sets/data/tough_path_rendering_cases.json
+++ b/tools/perf/page_sets/data/tough_path_rendering_cases.json
@@ -1,21 +1,15 @@
 {
     "archives": {
-        "GUIMark_Vector_Chart_Test": {
+        "guimark_vector_chart": {
             "DEFAULT": "tough_path_rendering_cases_002.wprgo"
         },
-        "MotionMark_Canvas_Fill_Shapes": {
+        "motion_mark_canvas_fill_shapes": {
             "DEFAULT": "tough_path_rendering_cases_002.wprgo"
         },
-        "MotionMark_Canvas_Stroke_Shapes": {
+        "motion_mark_canvas_stroke_shapes": {
             "DEFAULT": "tough_path_rendering_cases_002.wprgo"
         },
-        "http://ie.microsoft.com/testdrive/Performance/Chalkboard/": {
-            "DEFAULT": "tough_path_rendering_cases_000.wprgo"
-        },
-        "http://www.craftymind.com/factory/guimark2/HTML5ChartingTest.html": {
-            "DEFAULT": "tough_path_rendering_cases_001.wprgo"
-        },
-        "https://testdrive-archive.azurewebsites.net/performance/chalkboard/": {
+        "ie_chalkboard": {
             "DEFAULT": "tough_path_rendering_cases_002.wprgo"
         }
     },
diff --git a/tools/perf/page_sets/rendering/story_tags.py b/tools/perf/page_sets/rendering/story_tags.py
index c5f0cbe..301f2ba 100644
--- a/tools/perf/page_sets/rendering/story_tags.py
+++ b/tools/perf/page_sets/rendering/story_tags.py
@@ -15,6 +15,8 @@
     'gpu_rasterization', 'Story tests performance with GPU rasterization.')
 SYNC_SCROLL = Tag(
     'sync_scroll', 'Story tests rendering with synchronous scrolling.')
+FASTPATH = Tag(
+    'fastpath', 'Fast path stories.')
 
 
 def _ExtractAllTags():
diff --git a/tools/perf/page_sets/rendering/top_real_world.py b/tools/perf/page_sets/rendering/top_real_world.py
deleted file mode 100644
index 69c0698..0000000
--- a/tools/perf/page_sets/rendering/top_real_world.py
+++ /dev/null
@@ -1,514 +0,0 @@
-# Copyright 2018 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-from telemetry.page import shared_page_state
-
-from page_sets.login_helpers import google_login
-from page_sets.rendering import rendering_story
-from page_sets.rendering import story_tags
-
-
-class TopRealWorldPage(rendering_story.RenderingStory):
-  ABSTRACT_STORY = True
-  TAGS = [story_tags.GPU_RASTERIZATION]
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class,
-               name_suffix='',
-               extra_browser_args=None):
-    super(TopRealWorldPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-  def RunPageInteractions(self, action_runner):
-      action_runner.Wait(1)
-      with action_runner.CreateGestureInteraction('ScrollAction'):
-        action_runner.ScrollPage()
-        if self.story_set.scroll_forever:
-          while True:
-            action_runner.ScrollPage(direction='up')
-            action_runner.ScrollPage(direction='down')
-
-
-class GoogleWebSearchPage(TopRealWorldPage):
-  """ Why: top google property; a google tab is often open """
-  BASE_NAME = 'google_web_search'
-  URL = 'https://www.google.com/#hl=en&q=barack+obama'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(GoogleWebSearchPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-  def RunNavigateSteps(self, action_runner):
-    super(GoogleWebSearchPage, self).RunNavigateSteps(action_runner)
-    action_runner.WaitForElement(text='Next')
-
-
-class GoogleImageSearchPage(TopRealWorldPage):
-  """ Why: tough image case; top google properties """
-  BASE_NAME = 'google_image_search'
-  URL = 'https://www.google.com/search?q=cats&tbm=isch'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(GoogleImageSearchPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-  def RunNavigateSteps(self, action_runner):
-    google_login.LoginGoogleAccount(action_runner, 'googletest')
-    super(GoogleImageSearchPage, self).RunNavigateSteps(action_runner)
-
-
-class GmailPage(TopRealWorldPage):
-  """ Why: productivity, top google properties """
-  ABSTRACT_STORY = True
-  URL = 'https://mail.google.com/mail/'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(GmailPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-  def RunNavigateSteps(self, action_runner):
-    google_login.LoginGoogleAccount(action_runner, 'googletest')
-    super(GmailPage, self).RunNavigateSteps(action_runner)
-    action_runner.WaitForJavaScriptCondition(
-        'window.gmonkey !== undefined &&'
-        'document.getElementById("gb") !== null')
-
-
-class GoogleCalendarPage(TopRealWorldPage):
-  """ Why: productivity, top google properties """
-  ABSTRACT_STORY = True
-  URL='https://www.google.com/calendar/'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(GoogleCalendarPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-  def RunNavigateSteps(self, action_runner):
-    google_login.LoginGoogleAccount(action_runner, 'googletest')
-    super(GoogleCalendarPage, self).RunNavigateSteps(action_runner)
-    action_runner.Wait(2)
-    action_runner.WaitForElement('div[class~="navForward"]')
-    action_runner.ExecuteJavaScript("""
-        (function() {
-          var elem = document.createElement('meta');
-          elem.name='viewport';
-          elem.content='initial-scale=1';
-          document.body.appendChild(elem);
-        })();""")
-    action_runner.Wait(1)
-
-
-class GoogleDocPage(TopRealWorldPage):
-  """ Why: productivity, top google properties; Sample doc in the link """
-  ABSTRACT_STORY = True
-  # pylint: disable=line-too-long
-  URL = 'https://docs.google.com/document/d/1X-IKNjtEnx-WW5JIKRLsyhz5sbsat3mfTpAPUSX3_s4/view'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(GoogleDocPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-  def RunNavigateSteps(self, action_runner):
-    google_login.LoginGoogleAccount(action_runner, 'googletest')
-    super(GoogleDocPage, self).RunNavigateSteps(action_runner)
-    action_runner.Wait(2)
-    action_runner.WaitForJavaScriptCondition(
-        'document.getElementsByClassName("kix-appview-editor").length')
-
-
-class GooglePlusPage(TopRealWorldPage):
-  """ Why: social; top google property; Public profile; infinite scrolls """
-  BASE_NAME = 'google_plus'
-  URL = 'https://plus.google.com/110031535020051778989/posts'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(GooglePlusPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-  def RunNavigateSteps(self, action_runner):
-    google_login.LoginGoogleAccount(action_runner, 'googletest')
-    super(GooglePlusPage, self).RunNavigateSteps(action_runner)
-    action_runner.WaitForElement(text='Home')
-
-
-class YoutubePage(TopRealWorldPage):
-  """ Why: #3 (Alexa global) """
-  BASE_NAME = 'youtube'
-  URL = 'http://www.youtube.com'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(YoutubePage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-  def RunNavigateSteps(self, action_runner):
-    google_login.LoginGoogleAccount(action_runner, 'googletest')
-    super(YoutubePage, self).RunNavigateSteps(action_runner)
-    action_runner.Wait(2)
-
-
-class BlogspotPage(TopRealWorldPage):
-  """ Why: #11 (Alexa global), google property; some blogger layouts have
-  infinite scroll but more interesting """
-  BASE_NAME = 'blogspot'
-  URL = 'http://googlewebmastercentral.blogspot.com/'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(BlogspotPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-  def RunNavigateSteps(self, action_runner):
-    super(BlogspotPage, self).RunNavigateSteps(action_runner)
-    action_runner.WaitForElement(text='accessibility')
-
-
-class WordpressPage(TopRealWorldPage):
-  """ Why: #18 (Alexa global), Picked an interesting post """
-  BASE_NAME = 'wordpress'
-  # pylint: disable=line-too-long
-  URL = 'http://en.blog.wordpress.com/2012/09/04/freshly-pressed-editors-picks-for-august-2012/'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(WordpressPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-  def RunNavigateSteps(self, action_runner):
-    super(WordpressPage, self).RunNavigateSteps(action_runner)
-    action_runner.WaitForElement(
-        # pylint: disable=line-too-long
-        'a[href="http://en.blog.wordpress.com/2012/08/30/new-themes-able-and-sight/"]'
-    )
-
-
-class FacebookPage(TopRealWorldPage):
-  """ Why: top social,Public profile """
-  BASE_NAME = 'facebook'
-  URL = 'https://www.facebook.com/barackobama'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(FacebookPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-  def RunNavigateSteps(self, action_runner):
-    super(FacebookPage, self).RunNavigateSteps(action_runner)
-    action_runner.WaitForElement(text='Videos')
-
-
-class LinkedinPage(TopRealWorldPage):
-  """ Why: #12 (Alexa global), Public profile. """
-  BASE_NAME = 'linkedin'
-  URL = 'http://www.linkedin.com/in/linustorvalds'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(LinkedinPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-
-class WikipediaPage(TopRealWorldPage):
-  """ Why: #6 (Alexa) most visited worldwide,Picked an interesting page. """
-  BASE_NAME = 'wikipedia'
-  URL = 'http://en.wikipedia.org/wiki/Wikipedia'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(WikipediaPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-
-class TwitterPage(TopRealWorldPage):
-  """ Why: #8 (Alexa global),Picked an interesting page """
-  BASE_NAME = 'twitter'
-  URL = 'https://twitter.com/katyperry'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(TwitterPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-  def RunNavigateSteps(self, action_runner):
-    super(TwitterPage, self).RunNavigateSteps(action_runner)
-    action_runner.Wait(2)
-
-
-class PinterestPage(TopRealWorldPage):
-  """ Why: #37 (Alexa global) """
-  BASE_NAME = 'pinterest'
-  URL = 'http://pinterest.com'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(PinterestPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-
-class ESPNPage(TopRealWorldPage):
-  """ Why: #1 sports """
-  ABSTRACT_STORY = True
-  URL = 'http://espn.go.com'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(ESPNPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-
-class WeatherPage(TopRealWorldPage):
-  """ Why: #7 (Alexa news); #27 total time spent, picked interesting page. """
-  BASE_NAME = 'weather.com'
-  URL = 'http://www.weather.com/weather/right-now/Mountain+View+CA+94043'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(WeatherPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-
-class YahooGamesPage(TopRealWorldPage):
-  """ Why: #1 games according to Alexa (with actual games in it) """
-  BASE_NAME = 'yahoo_games'
-  URL = 'http://games.yahoo.com'
-
-  def __init__(self,
-               page_set,
-               shared_page_state_class=shared_page_state.SharedPageState,
-               name_suffix='',
-               extra_browser_args=None):
-    super(YahooGamesPage, self).__init__(
-        page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        name_suffix=name_suffix,
-        extra_browser_args=extra_browser_args)
-
-  def RunNavigateSteps(self, action_runner):
-    super(YahooGamesPage, self).RunNavigateSteps(action_runner)
-    action_runner.Wait(2)
-
-
-class GmailSmoothPage(GmailPage):
-  """ Why: productivity, top google properties """
-  BASE_NAME = 'gmail'
-
-  def RunPageInteractions(self, action_runner):
-    action_runner.ExecuteJavaScript("""
-        gmonkey.load('2.0', function(api) {
-          window.__scrollableElementForTelemetry = api.getScrollableElement();
-        });""")
-    action_runner.WaitForJavaScriptCondition(
-        'window.__scrollableElementForTelemetry != null')
-    action_runner.Wait(1)
-    with action_runner.CreateGestureInteraction('ScrollAction'):
-      action_runner.ScrollElement(
-          element_function='window.__scrollableElementForTelemetry')
-      if self.story_set.scroll_forever:
-        while True:
-          action_runner.ScrollElement(
-              direction='up',
-              element_function='window.__scrollableElementForTelemetry')
-          action_runner.ScrollElement(
-              direction='down',
-              element_function='window.__scrollableElementForTelemetry')
-
-
-class GoogleCalendarSmoothPage(GoogleCalendarPage):
-  """ Why: productivity, top google properties """
-  BASE_NAME='google_calendar'
-
-  def RunPageInteractions(self, action_runner):
-    action_runner.Wait(1)
-    with action_runner.CreateGestureInteraction('ScrollAction'):
-      action_runner.ScrollElement(selector='#scrolltimedeventswk')
-      if self.story_set.scroll_forever:
-        while True:
-          action_runner.ScrollElement(
-              direction='up', selector='#scrolltimedeventswk')
-          action_runner.ScrollElement(
-              direction='down', selector='#scrolltimedeventswk')
-
-
-class GoogleDocSmoothPage(GoogleDocPage):
-  """ Why: productivity, top google properties; Sample doc in the link """
-  BASE_NAME='google_docs'
-
-  def RunPageInteractions(self, action_runner):
-    action_runner.Wait(1)
-    with action_runner.CreateGestureInteraction('ScrollAction'):
-      action_runner.ScrollElement(selector='.kix-appview-editor')
-      if self.story_set.scroll_forever:
-        while True:
-          action_runner.ScrollElement(
-              direction='up', selector='.kix-appview-editor')
-          action_runner.ScrollElement(
-              direction='down', selector='.kix-appview-editor')
-
-
-class ESPNSmoothPage(ESPNPage):
-  """ Why: #1 sports """
-  BASE_NAME='espn'
-
-  def RunPageInteractions(self, action_runner):
-    action_runner.Wait(1)
-    with action_runner.CreateGestureInteraction('ScrollAction'):
-      action_runner.ScrollPage(left_start_ratio=0.1)
-      if self.story_set.scroll_forever:
-        while True:
-          action_runner.ScrollPage(direction='up', left_start_ratio=0.1)
-          action_runner.ScrollPage(direction='down', left_start_ratio=0.1)
-
-
-class YahooNewsPage(TopRealWorldPage):
-  """Why: #1 news worldwide (Alexa global)"""
-  BASE_NAME = 'yahoo_news'
-  URL = 'http://news.yahoo.com'
-
-
-class CNNNewsPage(TopRealWorldPage):
-  """Why: #2 news worldwide"""
-  BASE_NAME = 'cnn'
-  URL = 'http://www.cnn.com'
-
-
-class AmazonPage(TopRealWorldPage):
-  # Why: #1 world commerce website by visits; #3 commerce in the US by
-  # time spent
-  BASE_NAME = 'amazon'
-  URL = 'http://www.amazon.com'
-
-
-class EbayPage(TopRealWorldPage):
-  # Why: #1 commerce website by time spent by users in US
-  BASE_NAME = 'ebay'
-  URL = 'http://www.ebay.com'
-
-
-class BookingPage(TopRealWorldPage):
-  # Why: #1 Alexa recreation
-  BASE_NAME = 'booking.com'
-  URL = 'http://booking.com'
-
-
-class YahooAnswersPage(TopRealWorldPage):
-  # Why: #1 Alexa reference
-  BASE_NAME = 'yahoo_answers'
-  URL = 'http://answers.yahoo.com'
-
-
-class YahooSportsPage(TopRealWorldPage):
-  # Why: #1 Alexa sports
-  BASE_NAME = 'yahoo_sports'
-  URL = 'http://sports.yahoo.com/'
-
-
-class TechCrunchPage(TopRealWorldPage):
-  # Why: top tech blog
-  BASE_NAME = 'techcrunch'
-  URL = 'http://techcrunch.com'
diff --git a/tools/perf/page_sets/rendering/top_real_world_desktop.py b/tools/perf/page_sets/rendering/top_real_world_desktop.py
new file mode 100644
index 0000000..58bce88
--- /dev/null
+++ b/tools/perf/page_sets/rendering/top_real_world_desktop.py
@@ -0,0 +1,514 @@
+# Copyright 2018 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+from telemetry.page import shared_page_state
+
+from page_sets.login_helpers import google_login
+from page_sets.rendering import rendering_story
+from page_sets.rendering import story_tags
+
+
+class TopRealWorldDesktopPage(rendering_story.RenderingStory):
+  ABSTRACT_STORY = True
+  TAGS = [story_tags.GPU_RASTERIZATION]
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class,
+               name_suffix='',
+               extra_browser_args=None):
+    super(TopRealWorldDesktopPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunPageInteractions(self, action_runner):
+      action_runner.Wait(1)
+      with action_runner.CreateGestureInteraction('ScrollAction'):
+        action_runner.ScrollPage()
+        if self.story_set.scroll_forever:
+          while True:
+            action_runner.ScrollPage(direction='up')
+            action_runner.ScrollPage(direction='down')
+
+
+class GoogleWebSearchPage(TopRealWorldDesktopPage):
+  """ Why: top google property; a google tab is often open """
+  BASE_NAME = 'google_web_search'
+  URL = 'https://www.google.com/#hl=en&q=barack+obama'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(GoogleWebSearchPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunNavigateSteps(self, action_runner):
+    super(GoogleWebSearchPage, self).RunNavigateSteps(action_runner)
+    action_runner.WaitForElement(text='Next')
+
+
+class GoogleImageSearchPage(TopRealWorldDesktopPage):
+  """ Why: tough image case; top google properties """
+  BASE_NAME = 'google_image_search'
+  URL = 'https://www.google.com/search?q=cats&tbm=isch'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(GoogleImageSearchPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunNavigateSteps(self, action_runner):
+    google_login.LoginGoogleAccount(action_runner, 'googletest')
+    super(GoogleImageSearchPage, self).RunNavigateSteps(action_runner)
+
+
+class GmailPage(TopRealWorldDesktopPage):
+  """ Why: productivity, top google properties """
+  ABSTRACT_STORY = True
+  URL = 'https://mail.google.com/mail/'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(GmailPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunNavigateSteps(self, action_runner):
+    google_login.LoginGoogleAccount(action_runner, 'googletest')
+    super(GmailPage, self).RunNavigateSteps(action_runner)
+    action_runner.WaitForJavaScriptCondition(
+        'window.gmonkey !== undefined &&'
+        'document.getElementById("gb") !== null')
+
+
+class GoogleCalendarPage(TopRealWorldDesktopPage):
+  """ Why: productivity, top google properties """
+  ABSTRACT_STORY = True
+  URL='https://www.google.com/calendar/'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(GoogleCalendarPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunNavigateSteps(self, action_runner):
+    google_login.LoginGoogleAccount(action_runner, 'googletest')
+    super(GoogleCalendarPage, self).RunNavigateSteps(action_runner)
+    action_runner.Wait(2)
+    action_runner.WaitForElement('div[class~="navForward"]')
+    action_runner.ExecuteJavaScript("""
+        (function() {
+          var elem = document.createElement('meta');
+          elem.name='viewport';
+          elem.content='initial-scale=1';
+          document.body.appendChild(elem);
+        })();""")
+    action_runner.Wait(1)
+
+
+class GoogleDocPage(TopRealWorldDesktopPage):
+  """ Why: productivity, top google properties; Sample doc in the link """
+  ABSTRACT_STORY = True
+  # pylint: disable=line-too-long
+  URL = 'https://docs.google.com/document/d/1X-IKNjtEnx-WW5JIKRLsyhz5sbsat3mfTpAPUSX3_s4/view'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(GoogleDocPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunNavigateSteps(self, action_runner):
+    google_login.LoginGoogleAccount(action_runner, 'googletest')
+    super(GoogleDocPage, self).RunNavigateSteps(action_runner)
+    action_runner.Wait(2)
+    action_runner.WaitForJavaScriptCondition(
+        'document.getElementsByClassName("kix-appview-editor").length')
+
+
+class GooglePlusPage(TopRealWorldDesktopPage):
+  """ Why: social; top google property; Public profile; infinite scrolls """
+  BASE_NAME = 'google_plus'
+  URL = 'https://plus.google.com/110031535020051778989/posts'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(GooglePlusPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunNavigateSteps(self, action_runner):
+    google_login.LoginGoogleAccount(action_runner, 'googletest')
+    super(GooglePlusPage, self).RunNavigateSteps(action_runner)
+    action_runner.WaitForElement(text='Home')
+
+
+class YoutubePage(TopRealWorldDesktopPage):
+  """ Why: #3 (Alexa global) """
+  BASE_NAME = 'youtube'
+  URL = 'http://www.youtube.com'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(YoutubePage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunNavigateSteps(self, action_runner):
+    google_login.LoginGoogleAccount(action_runner, 'googletest')
+    super(YoutubePage, self).RunNavigateSteps(action_runner)
+    action_runner.Wait(2)
+
+
+class BlogspotPage(TopRealWorldDesktopPage):
+  """ Why: #11 (Alexa global), google property; some blogger layouts have
+  infinite scroll but more interesting """
+  BASE_NAME = 'blogspot'
+  URL = 'http://googlewebmastercentral.blogspot.com/'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(BlogspotPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunNavigateSteps(self, action_runner):
+    super(BlogspotPage, self).RunNavigateSteps(action_runner)
+    action_runner.WaitForElement(text='accessibility')
+
+
+class WordpressPage(TopRealWorldDesktopPage):
+  """ Why: #18 (Alexa global), Picked an interesting post """
+  BASE_NAME = 'wordpress'
+  # pylint: disable=line-too-long
+  URL = 'http://en.blog.wordpress.com/2012/09/04/freshly-pressed-editors-picks-for-august-2012/'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(WordpressPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunNavigateSteps(self, action_runner):
+    super(WordpressPage, self).RunNavigateSteps(action_runner)
+    action_runner.WaitForElement(
+        # pylint: disable=line-too-long
+        'a[href="http://en.blog.wordpress.com/2012/08/30/new-themes-able-and-sight/"]'
+    )
+
+
+class FacebookPage(TopRealWorldDesktopPage):
+  """ Why: top social,Public profile """
+  BASE_NAME = 'facebook'
+  URL = 'https://www.facebook.com/barackobama'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(FacebookPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunNavigateSteps(self, action_runner):
+    super(FacebookPage, self).RunNavigateSteps(action_runner)
+    action_runner.WaitForElement(text='Videos')
+
+
+class LinkedinPage(TopRealWorldDesktopPage):
+  """ Why: #12 (Alexa global), Public profile. """
+  BASE_NAME = 'linkedin'
+  URL = 'http://www.linkedin.com/in/linustorvalds'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(LinkedinPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+
+class WikipediaPage(TopRealWorldDesktopPage):
+  """ Why: #6 (Alexa) most visited worldwide,Picked an interesting page. """
+  BASE_NAME = 'wikipedia'
+  URL = 'http://en.wikipedia.org/wiki/Wikipedia'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(WikipediaPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+
+class TwitterPage(TopRealWorldDesktopPage):
+  """ Why: #8 (Alexa global),Picked an interesting page """
+  BASE_NAME = 'twitter'
+  URL = 'https://twitter.com/katyperry'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(TwitterPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunNavigateSteps(self, action_runner):
+    super(TwitterPage, self).RunNavigateSteps(action_runner)
+    action_runner.Wait(2)
+
+
+class PinterestPage(TopRealWorldDesktopPage):
+  """ Why: #37 (Alexa global) """
+  BASE_NAME = 'pinterest'
+  URL = 'http://pinterest.com'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(PinterestPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+
+class ESPNPage(TopRealWorldDesktopPage):
+  """ Why: #1 sports """
+  ABSTRACT_STORY = True
+  URL = 'http://espn.go.com'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(ESPNPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+
+class WeatherPage(TopRealWorldDesktopPage):
+  """ Why: #7 (Alexa news); #27 total time spent, picked interesting page. """
+  BASE_NAME = 'weather.com'
+  URL = 'http://www.weather.com/weather/right-now/Mountain+View+CA+94043'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(WeatherPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+
+class YahooGamesPage(TopRealWorldDesktopPage):
+  """ Why: #1 games according to Alexa (with actual games in it) """
+  BASE_NAME = 'yahoo_games'
+  URL = 'http://games.yahoo.com'
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(YahooGamesPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunNavigateSteps(self, action_runner):
+    super(YahooGamesPage, self).RunNavigateSteps(action_runner)
+    action_runner.Wait(2)
+
+
+class GmailSmoothPage(GmailPage):
+  """ Why: productivity, top google properties """
+  BASE_NAME = 'gmail'
+
+  def RunPageInteractions(self, action_runner):
+    action_runner.ExecuteJavaScript("""
+        gmonkey.load('2.0', function(api) {
+          window.__scrollableElementForTelemetry = api.getScrollableElement();
+        });""")
+    action_runner.WaitForJavaScriptCondition(
+        'window.__scrollableElementForTelemetry != null')
+    action_runner.Wait(1)
+    with action_runner.CreateGestureInteraction('ScrollAction'):
+      action_runner.ScrollElement(
+          element_function='window.__scrollableElementForTelemetry')
+      if self.story_set.scroll_forever:
+        while True:
+          action_runner.ScrollElement(
+              direction='up',
+              element_function='window.__scrollableElementForTelemetry')
+          action_runner.ScrollElement(
+              direction='down',
+              element_function='window.__scrollableElementForTelemetry')
+
+
+class GoogleCalendarSmoothPage(GoogleCalendarPage):
+  """ Why: productivity, top google properties """
+  BASE_NAME='google_calendar'
+
+  def RunPageInteractions(self, action_runner):
+    action_runner.Wait(1)
+    with action_runner.CreateGestureInteraction('ScrollAction'):
+      action_runner.ScrollElement(selector='#scrolltimedeventswk')
+      if self.story_set.scroll_forever:
+        while True:
+          action_runner.ScrollElement(
+              direction='up', selector='#scrolltimedeventswk')
+          action_runner.ScrollElement(
+              direction='down', selector='#scrolltimedeventswk')
+
+
+class GoogleDocSmoothPage(GoogleDocPage):
+  """ Why: productivity, top google properties; Sample doc in the link """
+  BASE_NAME='google_docs'
+
+  def RunPageInteractions(self, action_runner):
+    action_runner.Wait(1)
+    with action_runner.CreateGestureInteraction('ScrollAction'):
+      action_runner.ScrollElement(selector='.kix-appview-editor')
+      if self.story_set.scroll_forever:
+        while True:
+          action_runner.ScrollElement(
+              direction='up', selector='.kix-appview-editor')
+          action_runner.ScrollElement(
+              direction='down', selector='.kix-appview-editor')
+
+
+class ESPNSmoothPage(ESPNPage):
+  """ Why: #1 sports """
+  BASE_NAME='espn'
+
+  def RunPageInteractions(self, action_runner):
+    action_runner.Wait(1)
+    with action_runner.CreateGestureInteraction('ScrollAction'):
+      action_runner.ScrollPage(left_start_ratio=0.1)
+      if self.story_set.scroll_forever:
+        while True:
+          action_runner.ScrollPage(direction='up', left_start_ratio=0.1)
+          action_runner.ScrollPage(direction='down', left_start_ratio=0.1)
+
+
+class YahooNewsPage(TopRealWorldDesktopPage):
+  """Why: #1 news worldwide (Alexa global)"""
+  BASE_NAME = 'yahoo_news'
+  URL = 'http://news.yahoo.com'
+
+
+class CNNNewsPage(TopRealWorldDesktopPage):
+  """Why: #2 news worldwide"""
+  BASE_NAME = 'cnn'
+  URL = 'http://www.cnn.com'
+
+
+class AmazonPage(TopRealWorldDesktopPage):
+  # Why: #1 world commerce website by visits; #3 commerce in the US by
+  # time spent
+  BASE_NAME = 'amazon'
+  URL = 'http://www.amazon.com'
+
+
+class EbayPage(TopRealWorldDesktopPage):
+  # Why: #1 commerce website by time spent by users in US
+  BASE_NAME = 'ebay'
+  URL = 'http://www.ebay.com'
+
+
+class BookingPage(TopRealWorldDesktopPage):
+  # Why: #1 Alexa recreation
+  BASE_NAME = 'booking.com'
+  URL = 'http://booking.com'
+
+
+class YahooAnswersPage(TopRealWorldDesktopPage):
+  # Why: #1 Alexa reference
+  BASE_NAME = 'yahoo_answers'
+  URL = 'http://answers.yahoo.com'
+
+
+class YahooSportsPage(TopRealWorldDesktopPage):
+  # Why: #1 Alexa sports
+  BASE_NAME = 'yahoo_sports'
+  URL = 'http://sports.yahoo.com/'
+
+
+class TechCrunchPage(TopRealWorldDesktopPage):
+  # Why: top tech blog
+  BASE_NAME = 'techcrunch'
+  URL = 'http://techcrunch.com'
diff --git a/tools/perf/page_sets/rendering/top_real_world_mobile.py b/tools/perf/page_sets/rendering/top_real_world_mobile.py
new file mode 100644
index 0000000..ce11d86
--- /dev/null
+++ b/tools/perf/page_sets/rendering/top_real_world_mobile.py
@@ -0,0 +1,508 @@
+# Copyright 2018 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+from telemetry.page import shared_page_state
+
+from page_sets.rendering import rendering_story
+from page_sets.rendering import story_tags
+from page_sets.system_health import platforms
+
+
+class TopRealWorldMobilePage(rendering_story.RenderingStory):
+  ABSTRACT_STORY = True
+  TAGS = [story_tags.SYNC_SCROLL]
+  SUPPORTED_PLATFORMS = platforms.MOBILE_ONLY
+
+  def __init__(self,
+               page_set,
+               name_suffix='',
+               extra_browser_args=None,
+               shared_page_state_class=shared_page_state.SharedMobilePageState):
+    super(TopRealWorldMobilePage, self).__init__(
+        page_set=page_set,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args,
+        shared_page_state_class=shared_page_state_class)
+
+  def RunPageInteractions(self, action_runner):
+    with action_runner.CreateGestureInteraction('ScrollAction'):
+      action_runner.ScrollPage()
+
+
+class CapitolVolkswagenMobilePage(TopRealWorldMobilePage):
+  """ Why: Typical mobile business site """
+  BASE_NAME = 'capitolvolkswagen_mobile'
+  URL = ('http://iphone.capitolvolkswagen.com/index.htm'
+         '#new-inventory_p_2Fsb-new_p_2Ehtm_p_3Freset_p_3DInventoryListing')
+
+  def __init__(self,
+               page_set,
+               name_suffix='',
+               extra_browser_args=None,
+               shared_page_state_class=shared_page_state.SharedMobilePageState):
+    super(CapitolVolkswagenMobilePage, self).__init__(
+        page_set=page_set,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args,
+        shared_page_state_class=shared_page_state_class)
+
+  def RunNavigateSteps(self, action_runner):
+    super(CapitolVolkswagenMobilePage, self).RunNavigateSteps(action_runner)
+    action_runner.WaitForElement(text='Next 35')
+    action_runner.WaitForJavaScriptCondition(
+        'document.body.scrollHeight > 2560')
+
+
+class TheVergeArticleMobilePage(TopRealWorldMobilePage):
+  """ Why: Top tech blog """
+  BASE_NAME = 'theverge_article_mobile'
+  # pylint: disable=line-too-long
+  URL = 'http://www.theverge.com/2012/10/28/3568746/amazon-7-inch-fire-hd-ipad-mini-ad-ballsy'
+
+  def __init__(self,
+               page_set,
+               name_suffix='',
+               extra_browser_args=None,
+               shared_page_state_class=shared_page_state.SharedMobilePageState):
+    super(TheVergeArticleMobilePage, self).__init__(
+        page_set=page_set,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args,
+        shared_page_state_class=shared_page_state_class)
+
+  def RunNavigateSteps(self, action_runner):
+    super(TheVergeArticleMobilePage, self).RunNavigateSteps(action_runner)
+    action_runner.WaitForJavaScriptCondition(
+        'window.Chorus !== undefined &&'
+        'window.Chorus.Comments !== undefined &&'
+        'window.Chorus.Comments.Json !== undefined &&'
+        '(window.Chorus.Comments.loaded ||'
+        ' window.Chorus.Comments.Json.load_comments())')
+
+
+class CnnArticleMobilePage(TopRealWorldMobilePage):
+  """ Why: Top news site """
+  BASE_NAME = 'cnn_article_mobile'
+  # pylint: disable=line-too-long
+  URL = 'http://www.cnn.com/2012/10/03/politics/michelle-obama-debate/index.html'
+
+  def __init__(self,
+               page_set,
+               name_suffix='',
+               extra_browser_args=None,
+               shared_page_state_class=shared_page_state.SharedMobilePageState):
+    super(CnnArticleMobilePage, self).__init__(
+        page_set=page_set,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args,
+        shared_page_state_class=shared_page_state_class)
+
+  def RunNavigateSteps(self, action_runner):
+    super(CnnArticleMobilePage, self).RunNavigateSteps(action_runner)
+    action_runner.Wait(8)
+
+  def RunPageInteractions(self, action_runner):
+    with action_runner.CreateGestureInteraction('ScrollAction'):
+      # With default top_start_ratio=0.5 the corresponding element in this page
+      # will not be in the root scroller.
+      action_runner.ScrollPage(top_start_ratio=0.01)
+
+
+class FacebookMobilePage(TopRealWorldMobilePage):
+  """ Why: #1 (Alexa global) """
+  BASE_NAME = 'facebook_mobile'
+  URL = 'https://facebook.com/barackobama'
+
+  def __init__(self,
+               page_set,
+               name_suffix='',
+               extra_browser_args=None,
+               shared_page_state_class=shared_page_state.SharedMobilePageState):
+    super(FacebookMobilePage, self).__init__(
+        page_set=page_set,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args,
+        shared_page_state_class=shared_page_state_class)
+
+  def RunNavigateSteps(self, action_runner):
+    super(FacebookMobilePage, self).RunNavigateSteps(action_runner)
+    action_runner.WaitForJavaScriptCondition(
+        'document.getElementById("u_0_c") !== null &&'
+        'document.body.scrollHeight > window.innerHeight')
+
+
+class YoutubeMobilePage(TopRealWorldMobilePage):
+  """ Why: #3 (Alexa global) """
+  BASE_NAME = 'youtube_mobile'
+  URL = 'http://m.youtube.com/watch?v=9hBpF_Zj4OA'
+
+  def __init__(self,
+               page_set,
+               name_suffix='',
+               extra_browser_args=None,
+               shared_page_state_class=shared_page_state.SharedMobilePageState):
+    super(YoutubeMobilePage, self).__init__(
+        page_set=page_set,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args,
+        shared_page_state_class=shared_page_state_class)
+
+  def RunNavigateSteps(self, action_runner):
+    super(YoutubeMobilePage, self).RunNavigateSteps(action_runner)
+    action_runner.WaitForJavaScriptCondition(
+        'document.getElementById("paginatortarget") !== null')
+
+
+class LinkedInMobilePage(TopRealWorldMobilePage):
+  """ Why: #12 (Alexa global),Public profile """
+  BASE_NAME = 'linkedin_mobile'
+  URL = 'https://www.linkedin.com/in/linustorvalds'
+
+  def __init__(self,
+               page_set,
+               name_suffix='',
+               extra_browser_args=None,
+               shared_page_state_class=shared_page_state.SharedMobilePageState):
+    super(LinkedInMobilePage, self).__init__(
+        page_set=page_set,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args,
+        shared_page_state_class=shared_page_state_class)
+
+  # Linkedin has expensive shader compilation so it can benefit from shader
+  # cache from reload.
+  def RunNavigateSteps(self, action_runner):
+    super(LinkedInMobilePage, self).RunNavigateSteps(action_runner)
+    action_runner.WaitForJavaScriptCondition(
+        'document.getElementById("profile-view-scroller") !== null')
+
+    action_runner.ScrollPage()
+
+    super(LinkedInMobilePage, self).RunNavigateSteps(action_runner)
+    action_runner.WaitForJavaScriptCondition(
+        'document.getElementById("profile-view-scroller") !== null')
+
+
+class YahooAnswersMobilePage(TopRealWorldMobilePage):
+  """ Why: #1 Alexa reference """
+  BASE_NAME = 'yahoo_answers_mobile'
+  # pylint: disable=line-too-long
+  URL = 'http://answers.yahoo.com/question/index?qid=20110117024343AAopj8f'
+
+  def __init__(self,
+               page_set,
+               name_suffix='',
+               extra_browser_args=None,
+               shared_page_state_class=shared_page_state.SharedMobilePageState):
+    super(YahooAnswersMobilePage, self).__init__(
+        page_set=page_set,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args,
+        shared_page_state_class=shared_page_state_class)
+
+  def RunNavigateSteps(self, action_runner):
+    super(YahooAnswersMobilePage, self).RunNavigateSteps(action_runner)
+    action_runner.WaitForElement(text='Other Answers (1 - 20 of 149)')
+    action_runner.ClickElement(text='Other Answers (1 - 20 of 149)')
+
+
+class GoogleNewsMobilePage(TopRealWorldMobilePage):
+  """ Why: Google News: accelerated scrolling version """
+  BASE_NAME = 'google_news_mobile'
+  URL = 'http://mobile-news.sandbox.google.com/news/pt1'
+
+  def __init__(self,
+               page_set,
+               name_suffix='',
+               extra_browser_args=None,
+               shared_page_state_class=shared_page_state.SharedMobilePageState):
+    super(GoogleNewsMobilePage, self).__init__(
+        page_set=page_set,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args,
+        shared_page_state_class=shared_page_state_class)
+
+  def RunNavigateSteps(self, action_runner):
+    super(GoogleNewsMobilePage, self).RunNavigateSteps(action_runner)
+    action_runner.WaitForJavaScriptCondition(
+        'typeof NEWS_telemetryReady !== "undefined" && '
+        'NEWS_telemetryReady == true')
+
+
+class AmazonNicolasCageMobilePage(TopRealWorldMobilePage):
+  """
+  Why: #1 world commerce website by visits; #3 commerce in the US by time spent
+  """
+  BASE_NAME = 'amazon_mobile'
+  URL = 'http://www.amazon.com/gp/aw/s/ref=is_box_?k=nicolas+cage'
+
+  def __init__(self,
+               page_set,
+               name_suffix='',
+               extra_browser_args=None,
+               shared_page_state_class=shared_page_state.SharedMobilePageState):
+    super(AmazonNicolasCageMobilePage, self).__init__(
+        page_set=page_set,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args,
+        shared_page_state_class=shared_page_state_class)
+
+  def RunPageInteractions(self, action_runner):
+    with action_runner.CreateGestureInteraction('ScrollAction'):
+      action_runner.ScrollElement(
+          selector='#search',
+          distance_expr='document.body.scrollHeight - window.innerHeight')
+
+
+class WowwikiMobilePage(TopRealWorldMobilePage):
+  """Why: Mobile wiki."""
+  BASE_NAME = 'wowwiki_mobile'
+  URL = 'http://www.wowwiki.com/World_of_Warcraft:_Mists_of_Pandaria'
+
+  def __init__(self,
+               page_set,
+               name_suffix='',
+               extra_browser_args=None,
+               shared_page_state_class=shared_page_state.SharedMobilePageState):
+    super(WowwikiMobilePage, self).__init__(
+        page_set=page_set,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args,
+        shared_page_state_class=shared_page_state_class)
+
+  # Wowwiki has expensive shader compilation so it can benefit from shader
+  # cache from reload.
+  def RunNavigateSteps(self, action_runner):
+    super(WowwikiMobilePage, self).RunNavigateSteps(action_runner)
+    action_runner.ScrollPage()
+    super(WowwikiMobilePage, self).RunNavigateSteps(action_runner)
+
+
+class WikipediaDelayedScrollMobilePage(TopRealWorldMobilePage):
+  """Why: Wikipedia page with a delayed scroll start"""
+  BASE_NAME = 'wikipedia_delayed_scroll_start'
+  URL = 'http://en.wikipedia.org/wiki/Wikipedia'
+
+  def __init__(self,
+               page_set,
+               name_suffix='',
+               extra_browser_args=None,
+               shared_page_state_class=shared_page_state.SharedMobilePageState):
+    super(WikipediaDelayedScrollMobilePage, self).__init__(
+        page_set=page_set,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args,
+        shared_page_state_class=shared_page_state_class)
+
+  def RunPageInteractions(self, action_runner):
+    action_runner.WaitForJavaScriptCondition(
+      'document.readyState == "complete"', timeout=30)
+    with action_runner.CreateGestureInteraction('ScrollAction'):
+      action_runner.ScrollPage()
+
+
+class BlogspotMobilePage(TopRealWorldMobilePage):
+  """Why: #11 (Alexa global), google property"""
+  BASE_NAME = 'blogspot_mobile'
+  URL = 'http://googlewebmastercentral.blogspot.com/'
+
+
+class WordpressMobilePage(TopRealWorldMobilePage):
+  """Why: #18 (Alexa global), Picked an interesting post"""
+  BASE_NAME = 'wordpress_mobile'
+  # pylint: disable=line-too-long
+  URL = 'http://en.blog.wordpress.com/2012/09/04/freshly-pressed-editors-picks-for-august-2012/'
+
+
+class WikipediaMobilePage(TopRealWorldMobilePage):
+  """Why: #6 (Alexa) most visited worldwide, picked an interesting page"""
+  BASE_NAME = 'wikipedia_mobile'
+  URL = 'http://en.wikipedia.org/wiki/Wikipedia'
+
+
+class TwitterMobilePage(TopRealWorldMobilePage):
+  """Why: #8 (Alexa global), picked an interesting page"""
+  BASE_NAME = 'twitter_mobile'
+  URL = 'http://twitter.com/katyperry'
+
+
+class PinterestMobilePage(TopRealWorldMobilePage):
+  """Why: #37 (Alexa global)."""
+  BASE_NAME = 'pinterest_mobile'
+  URL = 'http://pinterest.com'
+
+
+class ESPNMobilePage(TopRealWorldMobilePage):
+  """Why: #1 sports."""
+  BASE_NAME = 'espn_mobile'
+  URL = 'http://espn.go.com'
+
+
+class ForecastIOMobilePage(TopRealWorldMobilePage):
+  """Why: crbug.com/231413"""
+  BASE_NAME = 'forecast.io_mobile'
+  URL = 'http://forecast.io'
+
+
+class GooglePlusMobilePage(TopRealWorldMobilePage):
+  """Why: Social; top Google property; Public profile; infinite scrolls."""
+  BASE_NAME = 'google_plus_mobile'
+  # pylint: disable=line-too-long
+  URL = 'https://plus.google.com/app/basic/110031535020051778989/posts?source=apppromo'
+
+
+class AndroidPoliceMobilePage(TopRealWorldMobilePage):
+  """Why: crbug.com/242544"""
+  BASE_NAME = 'androidpolice_mobile'
+  # pylint: disable=line-too-long
+  URL = 'http://www.androidpolice.com/2012/10/03/rumor-evidence-mounts-that-an-lg-optimus-g-nexus-is-coming-along-with-a-nexus-phone-certification-program/'
+
+
+class GSPMobilePage(TopRealWorldMobilePage):
+  """Why: crbug.com/149958"""
+  BASE_NAME = 'gsp.ro_mobile'
+  URL = 'http://gsp.ro'
+
+
+class TheVergeMobilePage(TopRealWorldMobilePage):
+  """Why: Top tech blog"""
+  BASE_NAME = 'theverge_mobile'
+  URL = 'http://theverge.com'
+
+
+class DiggMobilePage(TopRealWorldMobilePage):
+  """Why: Top tech site"""
+  BASE_NAME = 'digg_mobile'
+  URL = 'http://digg.com'
+
+
+class GoogleSearchMobilePage(TopRealWorldMobilePage):
+  """Why: Top Google property; a Google tab is often open"""
+  BASE_NAME = 'google_web_search_mobile'
+  URL = 'https://www.google.co.uk/search?hl=en&q=barack+obama&cad=h'
+
+
+class YahooNewsMobilePage(TopRealWorldMobilePage):
+  """Why: #1 news worldwide (Alexa global)"""
+  BASE_NAME = 'yahoo_news_mobile'
+  URL = 'http://news.yahoo.com'
+
+
+class CnnNewsMobilePage(TopRealWorldMobilePage):
+  """# Why: #2 news worldwide"""
+  BASE_NAME = 'cnn_mobile'
+  URL = 'http://www.cnn.com'
+
+
+class EbayMobilePage(TopRealWorldMobilePage):
+  """Why: #1 commerce website by time spent by users in US"""
+  BASE_NAME = 'ebay_mobile'
+  URL = 'http://shop.mobileweb.ebay.com/searchresults?kw=viking+helmet'
+
+
+class BookingMobilePage(TopRealWorldMobilePage):
+  """Why: #1 Alexa recreation"""
+  BASE_NAME = 'booking.com_mobile'
+  # pylint: disable=line-too-long
+  URL = 'http://www.booking.com/searchresults.html?src=searchresults&latitude=65.0500&longitude=25.4667'
+
+
+class TechCrunchMobilePage(TopRealWorldMobilePage):
+  """Why: Top tech blog"""
+  BASE_NAME = 'techcrunch_mobile'
+  URL = 'http://techcrunch.com'
+
+
+class MLBMobilePage(TopRealWorldMobilePage):
+  """Why: #6 Alexa sports"""
+  BASE_NAME = 'mlb_mobile'
+  URL = 'http://mlb.com/'
+
+
+class SFGateMobilePage(TopRealWorldMobilePage):
+  """Why: #14 Alexa California"""
+  BASE_NAME = 'sfgate_mobile'
+  URL = 'http://www.sfgate.com/'
+
+
+class WorldJournalMobilePage(TopRealWorldMobilePage):
+  """Why: Non-latin character set"""
+  BASE_NAME = 'worldjournal_mobile'
+  URL = 'http://worldjournal.com/'
+
+
+class WSJMobilePage(TopRealWorldMobilePage):
+  """Why: #15 Alexa news"""
+  BASE_NAME = 'wsj_mobile'
+  URL = 'http://online.wsj.com/home-page'
+
+
+class DeviantArtMobilePage(TopRealWorldMobilePage):
+  """Why: Image-heavy mobile site"""
+  BASE_NAME = 'deviantart_mobile'
+  URL = 'http://www.deviantart.com/'
+
+
+class BaiduMobilePage(TopRealWorldMobilePage):
+  """Why: Top search engine"""
+  BASE_NAME = 'baidu_mobile'
+  # pylint: disable=line-too-long
+  URL = 'http://www.baidu.com/s?wd=barack+obama&rsv_bp=0&rsv_spt=3&rsv_sug3=9&rsv_sug=0&rsv_sug4=3824&rsv_sug1=3&inputT=4920'
+
+
+class BingMobilePage(TopRealWorldMobilePage):
+  """Why: Top search engine"""
+  BASE_NAME = 'bing_mobile'
+  URL = 'http://www.bing.com/search?q=sloths'
+
+
+class USATodayMobilePage(TopRealWorldMobilePage):
+  """Why: Good example of poor initial scrolling"""
+  BASE_NAME = 'usatoday_mobile'
+  URL = 'http://ftw.usatoday.com/2014/05/spelling-bee-rules-shenanigans'
+
+
+class FastPathSmoothMobilePage(TopRealWorldMobilePage):
+  ABSTRACT_STORY = True
+  TAGS = [story_tags.FASTPATH]
+
+  def __init__(self,
+               page_set,
+               name_suffix='',
+               extra_browser_args=None,
+               shared_page_state_class=shared_page_state.SharedMobilePageState):
+    super(FastPathSmoothMobilePage, self).__init__(
+        page_set=page_set,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args,
+        shared_page_state_class=shared_page_state_class)
+
+
+class NYTimesMobilePage(FastPathSmoothMobilePage):
+  """Why: Top news site."""
+  BASE_NAME = 'nytimes_mobile'
+  URL = 'http://nytimes.com/'
+
+
+class CuteOverloadMobilePage(FastPathSmoothMobilePage):
+  """Why: Image-heavy site."""
+  BASE_NAME = 'cuteoverload_mobile'
+  URL = 'http://cuteoverload.com'
+
+
+class RedditMobilePage(FastPathSmoothMobilePage):
+  """Why: #5 Alexa news."""
+  BASE_NAME = 'reddit_mobile'
+  URL = 'http://www.reddit.com/r/programming/comments/1g96ve'
+
+
+class BoingBoingMobilePage(FastPathSmoothMobilePage):
+  """Why: Problematic use of fixed position elements."""
+  BASE_NAME = 'boingboing_mobile'
+  URL = 'http://www.boingboing.net'
+
+
+class SlashDotMobilePage(FastPathSmoothMobilePage):
+  """Why: crbug.com/169827"""
+  BASE_NAME = 'slashdot_mobile'
+  URL = 'http://slashdot.org'
diff --git a/tools/perf/page_sets/rendering/tough_filters_cases.py b/tools/perf/page_sets/rendering/tough_filters_cases.py
new file mode 100644
index 0000000..56d6d8a
--- /dev/null
+++ b/tools/perf/page_sets/rendering/tough_filters_cases.py
@@ -0,0 +1,89 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+from telemetry.page import shared_page_state
+from telemetry import story
+
+from page_sets.rendering import rendering_story
+
+class ToughFiltersCasesPage(rendering_story.RenderingStory):
+  ABSTRACT_STORY = True
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(ToughFiltersCasesPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunPageInteractions(self, action_runner):
+    with action_runner.CreateInteraction('Filter'):
+      action_runner.Wait(10)
+
+
+class MotionMarkPage(ToughFiltersCasesPage):
+  BASE_NAME = 'motion_mark_focus'
+  # pylint: disable=line-too-long
+  URL = 'http://rawgit.com/WebKit/webkit/master/PerformanceTests/Animometer/developer.html?test-interval=20&display=minimal&controller=fixed&frame-rate=50&kalman-process-error=1&kalman-measurement-error=4&time-measurement=performance&suite-name=Animometer&test-name=Focus&complexity=100'
+
+
+class FilterTerrainSVGPage(ToughFiltersCasesPage):
+  BASE_NAME = 'filter_terrain_svg'
+  URL = 'http://letmespellitoutforyou.com/samples/svg/filter_terrain.svg'
+
+
+class AnalogClockSVGPage(ToughFiltersCasesPage):
+  BASE_NAME = 'analog_clock_svg'
+  URL = 'http://static.bobdo.net/Analog_Clock.svg'
+
+
+class PirateMarkPage(rendering_story.RenderingStory):
+  BASE_NAME = 'ie_pirate_mark'
+  URL = ('http://web.archive.org/web/20150502135732/'
+         'http://ie.microsoft.com/testdrive/Performance/'
+         'Pirates/Default.html')
+
+  def __init__(self,
+               page_set,
+               shared_page_state_class=shared_page_state.SharedPageState,
+               name_suffix='',
+               extra_browser_args=None):
+    super(PirateMarkPage, self).__init__(
+        page_set=page_set,
+        shared_page_state_class=shared_page_state_class,
+        name_suffix=name_suffix,
+        extra_browser_args=extra_browser_args)
+
+  def RunPageInteractions(self, action_runner):
+    action_runner.WaitForNetworkQuiescence()
+    with action_runner.CreateInteraction('Filter'):
+      action_runner.EvaluateJavaScript(
+          'document.getElementById("benchmarkButtonText").click()')
+      action_runner.Wait(10)
+
+# TODO(crbug.com/760553):remove this class after smoothness.tough_filters_cases
+# benchmark is completely replaced by rendering benchmarks
+class ToughFiltersCasesPageSet(story.StorySet):
+
+  """
+  Description: Self-driven filters animation examples
+  """
+
+  def __init__(self):
+    super(ToughFiltersCasesPageSet, self).__init__(
+      archive_data_file='../data/tough_filters_cases.json',
+      cloud_storage_bucket=story.PARTNER_BUCKET)
+
+    page_classes = [
+        MotionMarkPage,
+        FilterTerrainSVGPage,
+        AnalogClockSVGPage,
+        PirateMarkPage
+    ]
+
+    for page_class in page_classes:
+      self.AddStory(page_class(self))
diff --git a/tools/perf/page_sets/rendering_mobile.py b/tools/perf/page_sets/rendering_mobile.py
deleted file mode 100644
index af1762e..0000000
--- a/tools/perf/page_sets/rendering_mobile.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2018 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-from telemetry.page import shared_page_state
-from telemetry import story
-
-from page_sets import key_mobile_sites_smooth
-from page_sets import top_25_smooth
-
-
-class _SharedPageState(shared_page_state.SharedMobilePageState):
-  pass
-
-
-class RenderingMobilePageSet(story.StorySet):
-  """ Page set for measuring rendering performance on desktop. """
-
-  def __init__(self, scroll_forever=False):
-    super(RenderingMobilePageSet, self).__init__(
-        archive_data_file='data/rendering_mobile.json',
-        cloud_storage_bucket=story.PARTNER_BUCKET)
-
-    self.scroll_forever = scroll_forever
-
-    top_25_smooth.AddPagesToPageSet(
-        self,
-        shared_page_state_class=_SharedPageState,
-        name_func=lambda name: name + '_desktop')
-    top_25_smooth.AddPagesToPageSet(
-        self,
-        shared_page_state_class=_SharedPageState,
-        name_func=lambda name: name + '_desktop_gpu_raster',
-        extra_browser_args=['--force-gpu-rasterization'])
-
-    key_mobile_sites_smooth.AddPagesToPageSet(
-        self,
-        shared_page_state_class=_SharedPageState)
-    key_mobile_sites_smooth.AddPagesToPageSet(
-        self,
-        shared_page_state_class=_SharedPageState,
-        name_func=lambda name: name + '_sync_scroll',
-        extra_browser_args=['--disable-threaded-scrolling'])
diff --git a/tools/perf/page_sets/tough_filters_cases.py b/tools/perf/page_sets/tough_filters_cases.py
deleted file mode 100644
index faaa1aa..0000000
--- a/tools/perf/page_sets/tough_filters_cases.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-from telemetry.page import page as page_module
-from telemetry import story
-
-
-class ToughFiltersCasesPage(page_module.Page):
-
-  def __init__(self, url, page_set, name):
-    super(ToughFiltersCasesPage, self).__init__(
-        url=url, page_set=page_set, name=name)
-
-  def RunPageInteractions(self, action_runner):
-    with action_runner.CreateInteraction('Filter'):
-      action_runner.Wait(10)
-
-
-class PirateMarkPage(page_module.Page):
-
-  def RunPageInteractions(self, action_runner):
-    action_runner.WaitForNetworkQuiescence()
-    with action_runner.CreateInteraction('Filter'):
-      action_runner.EvaluateJavaScript(
-          'document.getElementById("benchmarkButtonText").click()')
-      action_runner.Wait(10)
-
-class ToughFiltersCasesPageSet(story.StorySet):
-
-  """
-  Description: Self-driven filters animation examples
-  """
-
-  def __init__(self):
-    super(ToughFiltersCasesPageSet, self).__init__(
-      archive_data_file='data/tough_filters_cases.json',
-      cloud_storage_bucket=story.PARTNER_BUCKET)
-
-    urls_list = [
-      ('http://rawgit.com/WebKit/webkit/master/PerformanceTests/Animometer/developer.html?test-interval=20&display=minimal&controller=fixed&frame-rate=50&kalman-process-error=1&kalman-measurement-error=4&time-measurement=performance&suite-name=Animometer&test-name=Focus&complexity=100', # pylint: disable=line-too-long
-       'MotionMark_Focus'),
-      ('http://letmespellitoutforyou.com/samples/svg/filter_terrain.svg',
-       'Filter_Terrain_SVG'),
-      ('http://static.bobdo.net/Analog_Clock.svg',
-       'Analog_Clock_SVG'),
-    ]
-
-    for url, name in urls_list:
-      self.AddStory(ToughFiltersCasesPage(url, self, name))
-
-    pirate_url = ('http://web.archive.org/web/20150502135732/'
-                  'http://ie.microsoft.com/testdrive/Performance/'
-                  'Pirates/Default.html')
-    name = 'IE_PirateMark'
-    self.AddStory(PirateMarkPage(pirate_url, self, name=name))
diff --git a/tools/perf/page_sets/tough_path_rendering_cases.py b/tools/perf/page_sets/tough_path_rendering_cases.py
index d9c090a..330ae16 100644
--- a/tools/perf/page_sets/tough_path_rendering_cases.py
+++ b/tools/perf/page_sets/tough_path_rendering_cases.py
@@ -31,11 +31,11 @@
       cloud_storage_bucket=story.PARTNER_BUCKET)
 
     page_list = [
-      ('GUIMark_Vector_Chart_Test',
+      ('guimark_vector_chart',
       'http://www.craftymind.com/factory/guimark2/HTML5ChartingTest.html'),
-      ('MotionMark_Canvas_Fill_Shapes',
+      ('motion_mark_canvas_fill_shapes',
       'http://rawgit.com/WebKit/webkit/master/PerformanceTests/MotionMark/developer.html?test-name=Fillshapes&test-interval=20&display=minimal&tiles=big&controller=fixed&frame-rate=50&kalman-process-error=1&kalman-measurement-error=4&time-measurement=performance&suite-name=Canvassuite&complexity=1000'), # pylint: disable=line-too-long
-      ('MotionMark_Canvas_Stroke_Shapes',
+      ('motion_mark_canvas_stroke_shapes',
       'http://rawgit.com/WebKit/webkit/master/PerformanceTests/MotionMark/developer.html?test-name=Strokeshapes&test-interval=20&display=minimal&tiles=big&controller=fixed&frame-rate=50&kalman-process-error=1&kalman-measurement-error=4&time-measurement=performance&suite-name=Canvassuite&complexity=1000'), # pylint: disable=line-too-long
     ]
 
@@ -47,5 +47,5 @@
     # http://ie.microsoft.com/testdrive/Performance/Chalkboard/.
     chalkboard_url = ('https://testdrive-archive.azurewebsites.net'
                       '/performance/chalkboard/')
-    name = 'IE_Chalkboard'
+    name = 'ie_chalkboard'
     self.AddStory(ChalkboardPage(chalkboard_url, self, name=name))
diff --git a/tools/perf/process_perf_results.py b/tools/perf/process_perf_results.py
index 90479d1..1c48344 100755
--- a/tools/perf/process_perf_results.py
+++ b/tools/perf/process_perf_results.py
@@ -303,7 +303,7 @@
     logdog_dict = {}
     logdog_stream = None
     logdog_label = 'Results Dashboard'
-    upload_fail = False
+    upload_failure = False
     with oauth_api.with_access_token(service_account_file) as oauth_file:
       for benchmark_name, directories in benchmark_directory_map.iteritems():
         if not benchmark_enabled_map[benchmark_name]:
@@ -327,16 +327,17 @@
             benchmark_name, results_filename, configuration_name,
             build_properties, oauth_file, tmpfile_dir, logdog_dict,
             ('.reference' in benchmark_name))
+        upload_failure = upload_failure or upload_fail
 
     logdog_file_name = _generate_unique_logdog_filename('Results_Dashboard_')
     logdog_stream = logdog_helper.text(logdog_file_name,
         json.dumps(logdog_dict, sort_keys=True,
                    indent=4, separators=(',', ': ')),
         content_type=JSON_CONTENT_TYPE)
-    if upload_fail:
+    if upload_failure:
       logdog_label += ' Upload Failure'
     extra_links[logdog_label] = logdog_stream
-    if upload_fail:
+    if upload_failure:
       return 1
     return 0
   finally:
diff --git a/tools/traffic_annotation/auditor/BUILD.gn b/tools/traffic_annotation/auditor/BUILD.gn
index 200ebb0..4b50c8c 100644
--- a/tools/traffic_annotation/auditor/BUILD.gn
+++ b/tools/traffic_annotation/auditor/BUILD.gn
@@ -67,7 +67,7 @@
   public_deps = [
     ":traffic_annotation",
     "//base",
-    "//net:traffic_annotation",
+    "//net/traffic_annotation",
     "//third_party/libxml",
     "//third_party/protobuf:protobuf_full",
     "//third_party/re2",
diff --git a/ui/android/java/res/color/black_summary_color_list.xml b/ui/android/java/res/color/black_body_color_list.xml
similarity index 100%
rename from ui/android/java/res/color/black_summary_color_list.xml
rename to ui/android/java/res/color/black_body_color_list.xml
diff --git a/ui/android/java/res/values-v17/styles.xml b/ui/android/java/res/values-v17/styles.xml
index c6f4bd9..64359238 100644
--- a/ui/android/java/res/values-v17/styles.xml
+++ b/ui/android/java/res/values-v17/styles.xml
@@ -56,18 +56,13 @@
         <item name="android:textSize">@dimen/headline_size_medium</item>
     </style>
     <style name="BlackTitle1" tools:ignore="UnusedResources">
-        <item name="android:textColor">@color/black_alpha_87</item>
+        <item name="android:textColor">@color/black_title_color_list</item>
         <item name="android:textSize">@dimen/text_size_large</item>
     </style>
     <style name="BlackTitle2" parent="RobotoMediumStyle" tools:ignore="UnusedResources">
         <item name="android:textColor">@color/black_alpha_87</item>
         <item name="android:textSize">@dimen/text_size_medium</item>
     </style>
-    <!-- TODO(xingliu): Merge BlackTitle3 to BlackTitle1. -->
-    <style name="BlackTitle3" tools:ignore="UnusedResources">
-        <item name="android:textColor">@color/black_title_color_list</item>
-        <item name="android:textSize">@dimen/text_size_large</item>
-    </style>
     <style name="BlackHint1" tools:ignore="UnusedResources">
         <item name="android:textColor">@color/black_alpha_54</item>
         <item name="android:textSize">@dimen/text_size_large</item>
@@ -93,7 +88,7 @@
         <item name="android:textSize">@dimen/text_size_medium</item>
     </style>
     <style name="BlackBody" tools:ignore="UnusedResources">
-        <item name="android:textColor">@color/black_alpha_54</item>
+        <item name="android:textColor">@color/black_body_color_list</item>
         <item name="android:textSize">@dimen/text_size_medium</item>
     </style>
     <style name="BlackCaptionDefault" tools:ignore="UnusedResources">
@@ -113,10 +108,6 @@
         <item name="android:textSize">@dimen/text_size_medium</item>
         <item name="android:textStyle">bold</item>
     </style>
-    <style name="BlackSummary" tools:ignore="UnusedResources">
-        <item name="android:textColor">@color/black_summary_color_list</item>
-        <item name="android:textSize">@dimen/text_size_medium</item>
-    </style>
 
     <!-- White Text Styles -->
     <style name="WhiteHeadline1" tools:ignore="UnusedResources">
diff --git a/ui/android/java/src/org/chromium/ui/DropdownAdapter.java b/ui/android/java/src/org/chromium/ui/DropdownAdapter.java
index 53824ca..db7a087 100644
--- a/ui/android/java/src/org/chromium/ui/DropdownAdapter.java
+++ b/ui/android/java/src/org/chromium/ui/DropdownAdapter.java
@@ -99,30 +99,20 @@
         // http://crbug.com/429364
         LinearLayout wrapper = (LinearLayout) layout.findViewById(R.id.dropdown_label_wrapper);
         if (item.isMultilineLabel()) height = LayoutParams.WRAP_CONTENT;
-        if (item.isLabelAndSublabelOnSameLine()) {
-            wrapper.setOrientation(LinearLayout.HORIZONTAL);
-        } else {
-            wrapper.setOrientation(LinearLayout.VERTICAL);
-        }
-
+        wrapper.setOrientation(LinearLayout.VERTICAL);
         wrapper.setLayoutParams(new LinearLayout.LayoutParams(0, height, 1));
 
         // Layout of the main label view.
         TextView labelView = (TextView) layout.findViewById(R.id.dropdown_label);
         labelView.setText(item.getLabel());
         labelView.setSingleLine(!item.isMultilineLabel());
-        if (item.isLabelAndSublabelOnSameLine()) {
-            labelView.setLayoutParams(
-                    new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1));
-        } else {
-            if (item.isMultilineLabel()) {
-                // If there is a multiline label, we add extra padding at the top and bottom because
-                // WRAP_CONTENT, defined above for multiline labels, leaves none.
-                int existingStart = ApiCompatibilityUtils.getPaddingStart(labelView);
-                int existingEnd = ApiCompatibilityUtils.getPaddingEnd(labelView);
-                ApiCompatibilityUtils.setPaddingRelative(
-                        labelView, existingStart, mLabelMargin, existingEnd, mLabelMargin);
-            }
+        if (item.isMultilineLabel()) {
+            // If there is a multiline label, we add extra padding at the top and bottom because
+            // WRAP_CONTENT, defined above for multiline labels, leaves none.
+            int existingStart = ApiCompatibilityUtils.getPaddingStart(labelView);
+            int existingEnd = ApiCompatibilityUtils.getPaddingEnd(labelView);
+            ApiCompatibilityUtils.setPaddingRelative(
+                    labelView, existingStart, mLabelMargin, existingEnd, mLabelMargin);
         }
 
         labelView.setEnabled(item.isEnabled());
@@ -135,7 +125,7 @@
         labelView.setTextColor(ApiCompatibilityUtils.getColor(
                 mContext.getResources(), item.getLabelFontColorResId()));
         labelView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
-                mContext.getResources().getDimension(item.getLabelFontSizeResId()));
+                mContext.getResources().getDimension(R.dimen.text_size_large));
 
         // Layout of the sublabel view, which has a smaller font and usually sits below the main
         // label.
@@ -144,16 +134,6 @@
         if (TextUtils.isEmpty(sublabel)) {
             sublabelView.setVisibility(View.GONE);
         } else {
-            if (item.isLabelAndSublabelOnSameLine()) {
-                // Use the layout params in |dropdown_item.xml| for the sublabel if it is on the
-                // same line as the label. We regenerate the layout params in case the view is
-                // reused and the label and sublabel are on the same line when the view is reused.
-                LinearLayout.LayoutParams subLabelLayoutParams = new LinearLayout.LayoutParams(
-                        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
-                ApiCompatibilityUtils.setMarginStart(subLabelLayoutParams, mLabelMargin);
-                ApiCompatibilityUtils.setMarginEnd(subLabelLayoutParams, mLabelMargin);
-                sublabelView.setLayoutParams(subLabelLayoutParams);
-            }
             sublabelView.setText(sublabel);
             sublabelView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
                     mContext.getResources().getDimension(item.getSublabelFontSizeResId()));
diff --git a/ui/android/java/src/org/chromium/ui/DropdownItem.java b/ui/android/java/src/org/chromium/ui/DropdownItem.java
index bd0d79c..cee8b1c 100644
--- a/ui/android/java/src/org/chromium/ui/DropdownItem.java
+++ b/ui/android/java/src/org/chromium/ui/DropdownItem.java
@@ -44,18 +44,10 @@
      */
     int getLabelFontColorResId();
     /**
-     * Returns resource ID of label's font size.
-     */
-    int getLabelFontSizeResId();
-    /**
      * Returns resource ID of sublabel's font size.
      */
     int getSublabelFontSizeResId();
     /**
-     * Returns whether label and sublabel should be on the same line.
-     */
-    boolean isLabelAndSublabelOnSameLine();
-    /**
      * Returns whether the icon should be displayed at the start, before label
      * and sublabel.
      */
diff --git a/ui/android/java/src/org/chromium/ui/DropdownItemBase.java b/ui/android/java/src/org/chromium/ui/DropdownItemBase.java
index e453643..7c68975 100644
--- a/ui/android/java/src/org/chromium/ui/DropdownItemBase.java
+++ b/ui/android/java/src/org/chromium/ui/DropdownItemBase.java
@@ -50,21 +50,11 @@
     }
 
     @Override
-    public int getLabelFontSizeResId() {
-        return R.dimen.text_size_large;
-    }
-
-    @Override
     public int getSublabelFontSizeResId() {
         return R.dimen.text_size_small;
     }
 
     @Override
-    public boolean isLabelAndSublabelOnSameLine() {
-        return false;
-    }
-
-    @Override
     public boolean isIconAtStart() {
         return false;
     }
diff --git a/ui/app_list/BUILD.gn b/ui/app_list/BUILD.gn
index 9444a6e..5e64535 100644
--- a/ui/app_list/BUILD.gn
+++ b/ui/app_list/BUILD.gn
@@ -29,12 +29,12 @@
     "views/app_list_item_view.h",
     "views/app_list_main_view.cc",
     "views/app_list_main_view.h",
+    "views/app_list_menu_model_adapter.cc",
+    "views/app_list_menu_model_adapter.h",
     "views/app_list_page.cc",
     "views/app_list_page.h",
     "views/app_list_view.cc",
     "views/app_list_view.h",
-    "views/app_list_view_context_menu.cc",
-    "views/app_list_view_context_menu.h",
     "views/apps_container_view.cc",
     "views/apps_container_view.h",
     "views/apps_grid_view.cc",
diff --git a/ui/app_list/views/app_list_item_view.cc b/ui/app_list/views/app_list_item_view.cc
index 2c260391..30c3b5d 100644
--- a/ui/app_list/views/app_list_item_view.cc
+++ b/ui/app_list/views/app_list_item_view.cc
@@ -12,7 +12,6 @@
 #include "ash/app_list/model/app_list_item.h"
 #include "ash/public/cpp/app_list/app_list_constants.h"
 #include "ash/public/cpp/app_list/app_list_switches.h"
-#include "base/metrics/histogram_macros.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "ui/accessibility/ax_node_data.h"
@@ -78,7 +77,6 @@
       icon_(new views::ImageView),
       title_(new views::Label),
       progress_bar_(new views::ProgressBar),
-      context_menu_(this),
       weak_ptr_factory_(this) {
   SetFocusBehavior(FocusBehavior::ALWAYS);
 
@@ -214,7 +212,8 @@
 }
 
 void AppListItemView::CancelContextMenu() {
-  context_menu_.Cancel();
+  if (context_menu_)
+    context_menu_->Cancel();
 }
 
 gfx::ImageSkia AppListItemView::GetDragImage() {
@@ -278,21 +277,13 @@
   progress_bar_->SetValue(percent_downloaded / 100.0);
 }
 
-void AppListItemView::OnContextMenuClosed(const base::TimeTicks& open_time) {
-  UMA_HISTOGRAM_TIMES("Apps.ContextMenuUserJourneyTime.AppGrid",
-                      base::TimeTicks::Now() - open_time);
-}
-
 void AppListItemView::OnContextMenuModelReceived(
     const gfx::Point& point,
     ui::MenuSourceType source_type,
     std::vector<ash::mojom::MenuItemPtr> menu) {
-  if (menu.empty() || context_menu_.IsRunning())
+  if (menu.empty() || (context_menu_ && context_menu_->IsShowingMenu()))
     return;
 
-  UMA_HISTOGRAM_ENUMERATION("Apps.ContextMenuShowSource.AppGrid", source_type,
-                            ui::MENU_SOURCE_TYPE_LAST);
-
   if (!apps_grid_view_->IsSelectedView(this))
     apps_grid_view_->ClearAnySelectedView();
   int run_types = views::MenuRunner::HAS_MNEMONICS;
@@ -317,12 +308,11 @@
     }
   }
 
-  context_menu_.Build(
-      std::move(menu), run_types,
-      base::Bind(&AppListItemView::OnContextMenuClosed,
-                 weak_ptr_factory_.GetWeakPtr(), base::TimeTicks::Now()));
-  context_menu_.Run(GetWidget(), nullptr, anchor_rect, anchor_position,
-                    source_type);
+  context_menu_ = std::make_unique<AppListMenuModelAdapter>(
+      item_weak_->GetMetadata()->id, this, source_type, this,
+      AppListMenuModelAdapter::FULLSCREEN_APP_GRID);
+  context_menu_->Build(std::move(menu));
+  context_menu_->Run(anchor_rect, anchor_position, run_types);
 }
 
 void AppListItemView::ShowContextMenuForView(views::View* source,
diff --git a/ui/app_list/views/app_list_item_view.h b/ui/app_list/views/app_list_item_view.h
index b754523..ba077cd 100644
--- a/ui/app_list/views/app_list_item_view.h
+++ b/ui/app_list/views/app_list_item_view.h
@@ -16,7 +16,7 @@
 #include "base/strings/string16.h"
 #include "base/timer/timer.h"
 #include "ui/app_list/app_list_export.h"
-#include "ui/app_list/views/app_list_view_context_menu.h"
+#include "ui/app_list/views/app_list_menu_model_adapter.h"
 #include "ui/app_list/views/image_shadow_animator.h"
 #include "ui/views/context_menu_controller.h"
 #include "ui/views/controls/button/button.h"
@@ -38,7 +38,7 @@
       public views::ContextMenuController,
       public AppListItemObserver,
       public ImageShadowAnimator::Delegate,
-      public AppListViewContextMenu::Delegate {
+      public AppListMenuModelAdapter::Delegate {
  public:
   // Internal class name.
   static const char kViewClassName[];
@@ -132,9 +132,6 @@
   void OnTouchDragTimer(const gfx::Point& tap_down_location,
                         const gfx::Point& tap_down_root_location);
 
-  // Records the context menu user journey time.
-  void OnContextMenuClosed(const base::TimeTicks& open_time);
-
   // Callback invoked when a context menu is received after calling
   // |AppListViewDelegate::GetContextMenuModel|.
   void OnContextMenuModelReceived(const gfx::Point& point,
@@ -169,7 +166,7 @@
   void ItemPercentDownloadedChanged() override;
   void ItemBeingDestroyed() override;
 
-  // AppListViewContextMenu::Delegate overrides;
+  // AppListMenuModelAdapter::Delegate overrides;
   void ExecuteCommand(int command_id, int event_flags) override;
 
   const bool is_folder_;
@@ -183,7 +180,7 @@
   views::Label* title_;               // Strongly typed child view.
   views::ProgressBar* progress_bar_;  // Strongly typed child view.
 
-  AppListViewContextMenu context_menu_;
+  std::unique_ptr<AppListMenuModelAdapter> context_menu_;
 
   UIState ui_state_ = UI_STATE_NORMAL;
 
diff --git a/ui/app_list/views/app_list_menu_model_adapter.cc b/ui/app_list/views/app_list_menu_model_adapter.cc
new file mode 100644
index 0000000..49d25c5
--- /dev/null
+++ b/ui/app_list/views/app_list_menu_model_adapter.cc
@@ -0,0 +1,100 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/app_list/views/app_list_menu_model_adapter.h"
+
+#include <utility>
+
+#include "ash/public/cpp/menu_utils.h"
+#include "base/metrics/histogram_macros.h"
+#include "ui/views/controls/menu/menu_runner.h"
+#include "ui/views/view.h"
+
+namespace app_list {
+
+AppListMenuModelAdapter::AppListMenuModelAdapter(const std::string& app_id,
+                                                 views::View* menu_owner,
+                                                 ui::MenuSourceType source_type,
+                                                 Delegate* delegate,
+                                                 AppListViewAppType type)
+    : ash::AppMenuModelAdapter(app_id,
+                               std::make_unique<ui::SimpleMenuModel>(nullptr),
+                               menu_owner,
+                               source_type,
+                               base::OnceClosure()),
+      delegate_(delegate),
+      type_(type) {
+  DCHECK(delegate_);
+  DCHECK_NE(AppListViewAppType::APP_LIST_APP_TYPE_LAST, type);
+}
+
+AppListMenuModelAdapter::~AppListMenuModelAdapter() = default;
+
+void AppListMenuModelAdapter::Build(
+    std::vector<ash::mojom::MenuItemPtr> items) {
+  DCHECK(!items.empty() && !IsShowingMenu());
+
+  ash::menu_utils::PopulateMenuFromMojoMenuItems(model(), nullptr, items,
+                                                 &submenu_models_);
+  menu_items_ = std::move(items);
+}
+
+void AppListMenuModelAdapter::RecordHistogram() {
+  const base::TimeDelta user_journey_time =
+      base::TimeTicks::Now() - menu_open_time();
+  switch (type_) {
+    case FULLSCREEN_SUGGESTED:
+      UMA_HISTOGRAM_ENUMERATION(
+          "Apps.ContextMenuShowSource.SuggestedAppFullscreen", source_type(),
+          ui::MenuSourceType::MENU_SOURCE_TYPE_LAST);
+      UMA_HISTOGRAM_TIMES(
+          "Apps.ContextMenuUserJourneyTime.SuggestedAppFullscreen",
+          user_journey_time);
+      break;
+    case FULLSCREEN_APP_GRID:
+      UMA_HISTOGRAM_ENUMERATION("Apps.ContextMenuShowSource.AppGrid",
+                                source_type(), ui::MENU_SOURCE_TYPE_LAST);
+      UMA_HISTOGRAM_TIMES("Apps.ContextMenuUserJourneyTime.AppGrid",
+                          user_journey_time);
+
+      break;
+    case PEEKING_SUGGESTED:
+      UMA_HISTOGRAM_ENUMERATION(
+          "Apps.ContextMenuShowSource.SuggestedAppPeeking", source_type(),
+          ui::MenuSourceType::MENU_SOURCE_TYPE_LAST);
+      UMA_HISTOGRAM_TIMES("Apps.ContextMenuUserJourneyTime.SuggestedAppPeeking",
+                          user_journey_time);
+      break;
+    case HALF_SEARCH_RESULT:
+    case FULLSCREEN_SEARCH_RESULT:
+      UMA_HISTOGRAM_ENUMERATION("Apps.ContextMenuShowSource.SearchResult",
+                                source_type(),
+                                ui::MenuSourceType::MENU_SOURCE_TYPE_LAST);
+      UMA_HISTOGRAM_TIMES("Apps.ContextMenuUserJourneyTime.SearchResult",
+                          user_journey_time);
+      break;
+    case SEARCH_RESULT:
+      // SearchResult can use this class, but the code is dead and does not show
+      // a menu.
+      NOTREACHED();
+      break;
+    case APP_LIST_APP_TYPE_LAST:
+      NOTREACHED();
+      break;
+  }
+}
+
+bool AppListMenuModelAdapter::IsItemChecked(int id) const {
+  return ash::menu_utils::GetMenuItemByCommandId(menu_items_, id)->checked;
+}
+
+bool AppListMenuModelAdapter::IsCommandEnabled(int id) const {
+  return ash::menu_utils::GetMenuItemByCommandId(menu_items_, id)->enabled;
+}
+
+void AppListMenuModelAdapter::ExecuteCommand(int id, int mouse_event_flags) {
+  delegate_->ExecuteCommand(id, mouse_event_flags);
+}
+
+}  // namespace app_list
diff --git a/ui/app_list/views/app_list_menu_model_adapter.h b/ui/app_list/views/app_list_menu_model_adapter.h
new file mode 100644
index 0000000..5118e9e
--- /dev/null
+++ b/ui/app_list/views/app_list_menu_model_adapter.h
@@ -0,0 +1,78 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_APP_LIST_VIEWS_APP_LIST_MENU_MODEL_ADAPTER_H_
+#define UI_APP_LIST_VIEWS_APP_LIST_MENU_MODEL_ADAPTER_H_
+
+#include <memory>
+#include <vector>
+
+#include "ash/public/cpp/app_menu_model_adapter.h"
+#include "ash/public/interfaces/menu.mojom.h"
+#include "ui/app_list/app_list_export.h"
+#include "ui/base/models/simple_menu_model.h"
+#include "ui/base/ui_base_types.h"
+#include "ui/views/controls/menu/menu_types.h"
+
+namespace app_list {
+
+// A class wrapping menu operations for apps in AppListView. Responsible for
+// building, running, and recording histograms.
+class APP_LIST_EXPORT AppListMenuModelAdapter
+    : public ash::AppMenuModelAdapter {
+ public:
+  // The kinds of apps which show menus. This enum is used to record
+  // metrics, if a new value is added make sure to modify RecordHistogram().
+  enum AppListViewAppType {
+    FULLSCREEN_SEARCH_RESULT,
+    FULLSCREEN_SUGGESTED,
+    FULLSCREEN_APP_GRID,
+    PEEKING_SUGGESTED,
+    HALF_SEARCH_RESULT,
+    SEARCH_RESULT,
+    APP_LIST_APP_TYPE_LAST
+  };
+
+  // A delegate class of the menu with implementation of menu behaviors,
+  // which should be the view showing this menu.
+  class Delegate {
+   public:
+    virtual void ExecuteCommand(int command_id, int event_flags) {}
+  };
+
+  AppListMenuModelAdapter(const std::string& app_id,
+                          views::View* menu_owner,
+                          ui::MenuSourceType source_type,
+                          Delegate* delegate,
+                          AppListViewAppType type);
+  ~AppListMenuModelAdapter() override;
+
+  // Builds the menu model from |items|.
+  void Build(std::vector<ash::mojom::MenuItemPtr> items);
+
+  // Overridden from AppMenuModelAdapter:
+  void RecordHistogram() override;
+
+  // Overridden from views::MenuModelAdapter:
+  bool IsItemChecked(int id) const override;
+  bool IsCommandEnabled(int id) const override;
+  void ExecuteCommand(int id, int mouse_event_flags) override;
+
+ private:
+  // The delegate, usually the owning view, which is used to execute commands.
+  Delegate* const delegate_;
+
+  // The type of app which is using this object to show a menu.
+  const AppListViewAppType type_;
+
+  // The mojo version of the model of items which are shown in a menu.
+  std::vector<ash::mojom::MenuItemPtr> menu_items_;
+  std::vector<std::unique_ptr<ui::MenuModel>> submenu_models_;
+
+  DISALLOW_COPY_AND_ASSIGN(AppListMenuModelAdapter);
+};
+
+}  // namespace app_list
+
+#endif  // UI_APP_LIST_VIEWS_APP_LIST_MENU_MODEL_ADAPTER_H_
diff --git a/ui/app_list/views/app_list_view_context_menu.cc b/ui/app_list/views/app_list_view_context_menu.cc
deleted file mode 100644
index e340da81..0000000
--- a/ui/app_list/views/app_list_view_context_menu.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/app_list/views/app_list_view_context_menu.h"
-
-#include <utility>
-
-#include "ash/public/cpp/menu_utils.h"
-#include "ui/views/controls/menu/menu_runner.h"
-#include "ui/views/view.h"
-
-namespace app_list {
-
-AppListViewContextMenu::AppListViewContextMenu(Delegate* delegate)
-    : delegate_(delegate) {
-  DCHECK(delegate_);
-}
-
-AppListViewContextMenu::~AppListViewContextMenu() = default;
-
-bool AppListViewContextMenu::IsRunning() {
-  return menu_runner_ && menu_runner_->IsRunning();
-}
-
-void AppListViewContextMenu::Build(
-    std::vector<ash::mojom::MenuItemPtr> items,
-    int32_t run_types,
-    const base::RepeatingClosure& on_menu_closed_callback) {
-  DCHECK(!items.empty() && !IsRunning());
-
-  // Reset and populate the context menu model.
-  menu_model_ = std::make_unique<ui::SimpleMenuModel>(this);
-  ash::menu_utils::PopulateMenuFromMojoMenuItems(menu_model_.get(), this, items,
-                                                 &submenu_models_);
-  menu_items_ = std::move(items);
-  menu_runner_ = std::make_unique<views::MenuRunner>(
-      menu_model_.get(), run_types, on_menu_closed_callback);
-}
-
-void AppListViewContextMenu::Run(views::Widget* parent,
-                                 views::MenuButton* button,
-                                 const gfx::Rect& bounds,
-                                 views::MenuAnchorPosition anchor,
-                                 ui::MenuSourceType source_type) {
-  DCHECK(menu_runner_);
-  menu_runner_->RunMenuAt(parent, button, bounds, anchor, source_type);
-}
-
-void AppListViewContextMenu::Cancel() {
-  if (menu_runner_)
-    menu_runner_->Cancel();
-}
-
-void AppListViewContextMenu::Reset() {
-  menu_runner_ = nullptr;
-}
-
-bool AppListViewContextMenu::IsCommandIdChecked(int command_id) const {
-  return ash::menu_utils::GetMenuItemByCommandId(menu_items_, command_id)
-      ->checked;
-}
-
-bool AppListViewContextMenu::IsCommandIdEnabled(int command_id) const {
-  return ash::menu_utils::GetMenuItemByCommandId(menu_items_, command_id)
-      ->enabled;
-}
-
-void AppListViewContextMenu::ExecuteCommand(int command_id, int event_flags) {
-  delegate_->ExecuteCommand(command_id, event_flags);
-}
-
-}  // namespace app_list
diff --git a/ui/app_list/views/app_list_view_context_menu.h b/ui/app_list/views/app_list_view_context_menu.h
deleted file mode 100644
index 79ffbad..0000000
--- a/ui/app_list/views/app_list_view_context_menu.h
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef UI_APP_LIST_VIEWS_APP_LIST_VIEW_CONTEXT_MENU_H_
-#define UI_APP_LIST_VIEWS_APP_LIST_VIEW_CONTEXT_MENU_H_
-
-#include <memory>
-#include <vector>
-
-#include "ash/public/interfaces/menu.mojom.h"
-#include "ui/app_list/app_list_export.h"
-#include "ui/base/models/simple_menu_model.h"
-#include "ui/base/ui_base_types.h"
-#include "ui/views/controls/menu/menu_types.h"
-
-namespace gfx {
-class Rect;
-}  // namespace gfx
-
-namespace views {
-class MenuButton;
-class MenuRunner;
-class Widget;
-}  // namespace views
-
-namespace app_list {
-
-// A class wrapping context menu operations for app list views.
-class APP_LIST_EXPORT AppListViewContextMenu
-    : public ui::SimpleMenuModel::Delegate {
- public:
-  // A delegate class of the context menu with implementation of menu behaviors,
-  // which should be the view showing this context menu.
-  class Delegate {
-   public:
-    virtual void ExecuteCommand(int command_id, int event_flags) {}
-  };
-
-  explicit AppListViewContextMenu(Delegate* delegate);
-  ~AppListViewContextMenu() override;
-
-  // Returns whether the context menu is running.
-  bool IsRunning();
-
-  // Builds the context menu model and runner.
-  void Build(std::vector<ash::mojom::MenuItemPtr> items,
-             int32_t run_types,
-             const base::RepeatingClosure& on_menu_closed_callback =
-                 base::RepeatingClosure());
-
-  // Runs the menu.
-  void Run(views::Widget* parent,
-           views::MenuButton* button,
-           const gfx::Rect& bounds,
-           views::MenuAnchorPosition anchor,
-           ui::MenuSourceType source_type);
-
-  // Cancels the running menu.
-  void Cancel();
-
-  // Resets the menu runner.
-  void Reset();
-
- private:
-  // Overridden from ui::SimpleMenuModel::Delegate:
-  bool IsCommandIdChecked(int command_id) const override;
-  bool IsCommandIdEnabled(int command_id) const override;
-  void ExecuteCommand(int command_id, int event_flags) override;
-
-  std::unique_ptr<ui::SimpleMenuModel> menu_model_;
-  std::vector<ash::mojom::MenuItemPtr> menu_items_;
-  std::vector<std::unique_ptr<ui::MenuModel>> submenu_models_;
-  std::unique_ptr<views::MenuRunner> menu_runner_;
-
-  Delegate* const delegate_;
-
-  DISALLOW_COPY_AND_ASSIGN(AppListViewContextMenu);
-};
-
-}  // namespace app_list
-
-#endif  // UI_APP_LIST_VIEWS_APP_LIST_VIEW_CONTEXT_MENU_H_
diff --git a/ui/app_list/views/search_result_tile_item_view.cc b/ui/app_list/views/search_result_tile_item_view.cc
index 26b3921..9dccf48 100644
--- a/ui/app_list/views/search_result_tile_item_view.cc
+++ b/ui/app_list/views/search_result_tile_item_view.cc
@@ -93,7 +93,6 @@
       pagination_model_(pagination_model),
       is_play_store_app_search_enabled_(
           features::IsPlayStoreAppSearchEnabled()),
-      context_menu_(this),
       weak_ptr_factory_(this) {
   SetFocusBehavior(FocusBehavior::ALWAYS);
 
@@ -162,7 +161,7 @@
 void SearchResultTileItemView::SetSearchResult(SearchResult* item) {
   // Handle the case where this may be called from a nested run loop while its
   // context menu is showing. This cancels the menu (it's for the old item).
-  context_menu_.Reset();
+  context_menu_.reset();
 
   SetVisible(!!item);
 
@@ -229,25 +228,6 @@
   UpdateBackgroundColor();
 }
 
-void SearchResultTileItemView::OnContextMenuClosed(
-    const base::TimeTicks& open_time) {
-  base::TimeDelta user_journey_time = base::TimeTicks::Now() - open_time;
-  if (IsSuggestedAppTile()) {
-    if (view_delegate_->GetModel()->state_fullscreen() ==
-        AppListViewState::PEEKING) {
-      UMA_HISTOGRAM_TIMES("Apps.ContextMenuUserJourneyTime.SuggestedAppPeeking",
-                          user_journey_time);
-    } else {
-      UMA_HISTOGRAM_TIMES(
-          "Apps.ContextMenuUserJourneyTime.SuggestedAppFullscreen",
-          user_journey_time);
-    }
-  } else {
-    UMA_HISTOGRAM_TIMES("Apps.ContextMenuUserJourneyTime.SearchResult",
-                        user_journey_time);
-  }
-}
-
 void SearchResultTileItemView::ButtonPressed(views::Button* sender,
                                              const ui::Event& event) {
   if (IsSuggestedAppTile())
@@ -349,7 +329,7 @@
 
 void SearchResultTileItemView::OnResultDestroying() {
   // The menu comes from |item_|. If we're showing a menu we need to cancel it.
-  context_menu_.Reset();
+  context_menu_.reset();
 
   if (item_)
     item_->RemoveObserver(this);
@@ -377,36 +357,19 @@
     const gfx::Point& point,
     ui::MenuSourceType source_type,
     std::vector<ash::mojom::MenuItemPtr> menu) {
-  if (menu.empty() || context_menu_.IsRunning())
+  if (menu.empty() || (context_menu_ && context_menu_->IsShowingMenu()))
     return;
 
-  if (IsSuggestedAppTile()) {
-    if (view_delegate_->GetModel()->state_fullscreen() ==
-        AppListViewState::PEEKING) {
-      UMA_HISTOGRAM_ENUMERATION(
-          "Apps.ContextMenuShowSource.SuggestedAppPeeking", source_type,
-          ui::MenuSourceType::MENU_SOURCE_TYPE_LAST);
-    } else {
-      UMA_HISTOGRAM_ENUMERATION(
-          "Apps.ContextMenuShowSource.SuggestedAppFullscreen", source_type,
-          ui::MenuSourceType::MENU_SOURCE_TYPE_LAST);
-    }
-  } else {
-    UMA_HISTOGRAM_ENUMERATION("Apps.ContextMenuShowSource.SearchResult",
-                              source_type,
-                              ui::MenuSourceType::MENU_SOURCE_TYPE_LAST);
-  }
-
   // TODO(warx): This is broken (https://crbug.com/795994).
   if (!HasFocus())
     result_container_->ClearSelectedIndex();
 
   int run_types = views::MenuRunner::HAS_MNEMONICS;
-  views::MenuAnchorPosition anchor_type = views::MENU_ANCHOR_TOPLEFT;
+  views::MenuAnchorPosition anchor_position = views::MENU_ANCHOR_TOPLEFT;
   gfx::Rect anchor_rect = gfx::Rect(point, gfx::Size());
 
   if (::features::IsTouchableAppContextMenuEnabled()) {
-    anchor_type = views::MENU_ANCHOR_BUBBLE_TOUCHABLE_LEFT;
+    anchor_position = views::MENU_ANCHOR_BUBBLE_TOUCHABLE_LEFT;
     run_types |= views::MenuRunner::USE_TOUCHABLE_LAYOUT |
                  views::MenuRunner::CONTEXT_MENU |
                  views::MenuRunner::FIXED_ANCHOR;
@@ -417,13 +380,11 @@
           gfx::Size(kGridSelectedSize, kGridSelectedSize));
     }
   }
-  context_menu_.Build(
-      std::move(menu), run_types,
-      base::Bind(&SearchResultTileItemView::OnContextMenuClosed,
-                 weak_ptr_factory_.GetWeakPtr(), base::TimeTicks::Now()));
-  context_menu_.Run(GetWidget(), nullptr, anchor_rect, anchor_type,
-                    source_type);
 
+  context_menu_ = std::make_unique<AppListMenuModelAdapter>(
+      item_->id(), this, source_type, this, GetAppType());
+  context_menu_->Build(std::move(menu));
+  context_menu_->Run(anchor_rect, anchor_position, run_types);
   source->RequestFocus();
 }
 
@@ -495,6 +456,28 @@
   price_->SetVisible(true);
 }
 
+AppListMenuModelAdapter::AppListViewAppType
+SearchResultTileItemView::GetAppType() const {
+  if (IsSuggestedAppTile()) {
+    if (view_delegate_->GetModel()->state_fullscreen() ==
+        AppListViewState::PEEKING) {
+      return AppListMenuModelAdapter::PEEKING_SUGGESTED;
+    } else {
+      return AppListMenuModelAdapter::FULLSCREEN_SUGGESTED;
+    }
+  } else {
+    if (view_delegate_->GetModel()->state_fullscreen() ==
+        AppListViewState::HALF) {
+      return AppListMenuModelAdapter::HALF_SEARCH_RESULT;
+    } else if (view_delegate_->GetModel()->state_fullscreen() ==
+               AppListViewState::FULLSCREEN_SEARCH) {
+      return AppListMenuModelAdapter::FULLSCREEN_SEARCH_RESULT;
+    }
+  }
+  NOTREACHED();
+  return AppListMenuModelAdapter::APP_LIST_APP_TYPE_LAST;
+}
+
 bool SearchResultTileItemView::IsSuggestedAppTile() const {
   return item_ &&
          item_->display_type() == ash::SearchResultDisplayType::kRecommendation;
diff --git a/ui/app_list/views/search_result_tile_item_view.h b/ui/app_list/views/search_result_tile_item_view.h
index 8c37081..06204d6d 100644
--- a/ui/app_list/views/search_result_tile_item_view.h
+++ b/ui/app_list/views/search_result_tile_item_view.h
@@ -10,7 +10,7 @@
 
 #include "base/macros.h"
 #include "ui/app_list/app_list_export.h"
-#include "ui/app_list/views/app_list_view_context_menu.h"
+#include "ui/app_list/views/app_list_menu_model_adapter.h"
 #include "ui/app_list/views/search_result_base_view.h"
 #include "ui/views/context_menu_controller.h"
 
@@ -31,7 +31,7 @@
 class APP_LIST_EXPORT SearchResultTileItemView
     : public SearchResultBaseView,
       public views::ContextMenuController,
-      public AppListViewContextMenu::Delegate {
+      public AppListMenuModelAdapter::Delegate {
  public:
   SearchResultTileItemView(SearchResultContainerView* result_container,
                            AppListViewDelegate* view_delegate,
@@ -69,7 +69,7 @@
                               const gfx::Point& point,
                               ui::MenuSourceType source_type) override;
 
-  // AppListViewContextMenu::Delegate overrides:
+  // AppListMenuModelAdapter::Delegate overrides:
   void ExecuteCommand(int command_id, int event_flags) override;
 
  private:
@@ -85,6 +85,8 @@
   void SetRating(float rating);
   void SetPrice(const base::string16& price);
 
+  AppListMenuModelAdapter::AppListViewAppType GetAppType() const;
+
   // Whether the tile view is a suggested app.
   bool IsSuggestedAppTile() const;
 
@@ -118,7 +120,7 @@
 
   const bool is_play_store_app_search_enabled_;
 
-  AppListViewContextMenu context_menu_;
+  std::unique_ptr<AppListMenuModelAdapter> context_menu_;
 
   base::WeakPtrFactory<SearchResultTileItemView> weak_ptr_factory_;
 
diff --git a/ui/app_list/views/search_result_view.cc b/ui/app_list/views/search_result_view.cc
index f1959b5..ed4b7b17 100644
--- a/ui/app_list/views/search_result_view.cc
+++ b/ui/app_list/views/search_result_view.cc
@@ -61,7 +61,6 @@
       badge_icon_(new views::ImageView),
       actions_view_(new SearchResultActionsView(this)),
       progress_bar_(new views::ProgressBar),
-      context_menu_(this),
       weak_ptr_factory_(this) {
   SetFocusBehavior(FocusBehavior::ALWAYS);
   icon_->set_can_process_events_within_subtree(false);
@@ -424,13 +423,15 @@
     const gfx::Point& point,
     ui::MenuSourceType source_type,
     std::vector<ash::mojom::MenuItemPtr> menu) {
-  if (menu.empty() || context_menu_.IsRunning())
+  if (menu.empty() || context_menu_->IsShowingMenu())
     return;
 
-  context_menu_.Build(std::move(menu), views::MenuRunner::HAS_MNEMONICS);
-  context_menu_.Run(GetWidget(), nullptr, gfx::Rect(point, gfx::Size()),
-                    views::MENU_ANCHOR_TOPLEFT, source_type);
-
+  context_menu_ = std::make_unique<AppListMenuModelAdapter>(
+      std::string(), this, source_type, this,
+      AppListMenuModelAdapter::SEARCH_RESULT);
+  context_menu_->Build(std::move(menu));
+  context_menu_->Run(gfx::Rect(point, gfx::Size()), views::MENU_ANCHOR_TOPLEFT,
+                     views::MenuRunner::HAS_MNEMONICS);
   source->RequestFocus();
 }
 
diff --git a/ui/app_list/views/search_result_view.h b/ui/app_list/views/search_result_view.h
index fe3fb3b..f1f5d8d 100644
--- a/ui/app_list/views/search_result_view.h
+++ b/ui/app_list/views/search_result_view.h
@@ -16,7 +16,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/strings/string16.h"
 #include "ui/app_list/app_list_export.h"
-#include "ui/app_list/views/app_list_view_context_menu.h"
+#include "ui/app_list/views/app_list_menu_model_adapter.h"
 #include "ui/app_list/views/search_result_actions_view_delegate.h"
 #include "ui/app_list/views/search_result_base_view.h"
 #include "ui/views/context_menu_controller.h"
@@ -45,7 +45,7 @@
     : public SearchResultBaseView,
       public views::ContextMenuController,
       public SearchResultActionsViewDelegate,
-      public AppListViewContextMenu::Delegate {
+      public AppListMenuModelAdapter::Delegate {
  public:
   // Internal class name.
   static const char kViewClassName[];
@@ -69,7 +69,7 @@
 
   void set_is_last_result(bool is_last) { is_last_result_ = is_last; }
 
-  // AppListViewContextMenu::Delegate overrides:
+  // AppListMenuModelAdapter::Delegate overrides:
   void ExecuteCommand(int command_id, int event_flags) override;
 
  private:
@@ -136,7 +136,7 @@
   SearchResultActionsView* actions_view_;  // Owned by the views hierarchy.
   views::ProgressBar* progress_bar_;       // Owned by views hierarchy.
 
-  AppListViewContextMenu context_menu_;
+  std::unique_ptr<AppListMenuModelAdapter> context_menu_;
 
   // Whether this view is selected.
   bool selected_ = false;
diff --git a/ui/display/manager/display_configurator.cc b/ui/display/manager/display_configurator.cc
index 7ff4c289..5bae8f7 100644
--- a/ui/display/manager/display_configurator.cc
+++ b/ui/display/manager/display_configurator.cc
@@ -21,6 +21,7 @@
 #include "ui/display/manager/update_display_configuration_task.h"
 #include "ui/display/types/display_mode.h"
 #include "ui/display/types/display_snapshot.h"
+#include "ui/display/types/gamma_ramp_rgb_entry.h"
 #include "ui/display/types/native_display_delegate.h"
 #include "ui/display/util/display_util.h"
 
@@ -40,6 +41,33 @@
   const DisplayMode* mirror_mode = nullptr;
 };
 
+// This is used for calling either SetColorMatrix() or SetGammaCorrection()
+// depending on the given |color_correction_closure| which is run synchronously.
+// If |reset_color_space_on_success| is true and running
+// |color_correction_closure| returns true, then the color space of the display
+// with |display_id| will be reset.
+bool RunColorCorrectionClosureSync(
+    int64_t display_id,
+    const DisplayConfigurator::DisplayStateList& cached_displays,
+    bool reset_color_space_on_success,
+    base::OnceCallback<bool(void)> color_correction_closure) {
+  for (DisplaySnapshot* display : cached_displays) {
+    if (display->display_id() != display_id)
+      continue;
+
+    const bool success = std::move(color_correction_closure).Run();
+
+    // Nullify the |display|s ColorSpace to avoid correcting colors twice, if
+    // we have successfully configured something.
+    if (success && reset_color_space_on_success)
+      display->reset_color_space();
+
+    return success;
+  }
+
+  return false;
+}
+
 }  // namespace
 
 const int DisplayConfigurator::kSetDisplayPowerNoFlags = 0;
@@ -860,27 +888,28 @@
     content_protection_tasks_.front().Run();
 }
 
-bool DisplayConfigurator::SetColorCorrection(
+bool DisplayConfigurator::SetColorMatrix(
+    int64_t display_id,
+    const std::vector<float>& color_matrix) {
+  return RunColorCorrectionClosureSync(
+      display_id, cached_displays_,
+      !color_matrix.empty() /* reset_color_space_on_success */,
+      base::BindOnce(&NativeDisplayDelegate::SetColorMatrix,
+                     base::Unretained(native_display_delegate_.get()),
+                     display_id, color_matrix));
+}
+
+bool DisplayConfigurator::SetGammaCorrection(
     int64_t display_id,
     const std::vector<GammaRampRGBEntry>& degamma_lut,
-    const std::vector<GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
-  for (DisplaySnapshot* display : cached_displays_) {
-    if (display->display_id() != display_id)
-      continue;
-
-    const bool success = native_display_delegate_->SetColorCorrection(
-        *display, degamma_lut, gamma_lut, correction_matrix);
-    // Nullify the |display|s ColorSpace to avoid correcting colors twice, if
-    // we have successfully configured something.
-    if (success && (!degamma_lut.empty() || !gamma_lut.empty() ||
-                    !correction_matrix.empty())) {
-      display->reset_color_space();
-    }
-    return success;
-  }
-
-  return false;
+    const std::vector<GammaRampRGBEntry>& gamma_lut) {
+  const bool reset_color_space_on_success =
+      !degamma_lut.empty() || !gamma_lut.empty();
+  return RunColorCorrectionClosureSync(
+      display_id, cached_displays_, reset_color_space_on_success,
+      base::BindOnce(&NativeDisplayDelegate::SetGammaCorrection,
+                     base::Unretained(native_display_delegate_.get()),
+                     display_id, degamma_lut, gamma_lut));
 }
 
 chromeos::DisplayPowerState DisplayConfigurator::GetRequestedPowerState()
diff --git a/ui/display/manager/display_configurator.h b/ui/display/manager/display_configurator.h
index e62b8dfe..e3cbbe0f 100644
--- a/ui/display/manager/display_configurator.h
+++ b/ui/display/manager/display_configurator.h
@@ -284,12 +284,17 @@
   // Returns true if there is at least one display on.
   bool IsDisplayOn() const;
 
-  // Sets the gamma, degamma and correction matrix for |display_id| to the
-  // values in |degamma_lut|, |gamma_lut| and |correction_matrix|.
-  bool SetColorCorrection(int64_t display_id,
+  // Sets the given 3x3 |color_matrix| on the display with |display_id|.
+  // This doesn't affect gamma or degamma. It returns true if the color matrix
+  // was sent to the GPU process successfully.
+  bool SetColorMatrix(int64_t display_id,
+                      const std::vector<float>& color_matrix);
+
+  // Sets the given |gamma_lut| and |degamma_lut| on the display with
+  // |display_id|.
+  bool SetGammaCorrection(int64_t display_id,
                           const std::vector<GammaRampRGBEntry>& degamma_lut,
-                          const std::vector<GammaRampRGBEntry>& gamma_lut,
-                          const std::vector<float>& correction_matrix);
+                          const std::vector<GammaRampRGBEntry>& gamma_lut);
 
   // Returns the requested power state if set or the default power state.
   chromeos::DisplayPowerState GetRequestedPowerState() const;
diff --git a/ui/display/manager/fake_display_delegate.cc b/ui/display/manager/fake_display_delegate.cc
index 50999342..e169733 100644
--- a/ui/display/manager/fake_display_delegate.cc
+++ b/ui/display/manager/fake_display_delegate.cc
@@ -162,11 +162,16 @@
   std::move(callback).Run(false);
 }
 
-bool FakeDisplayDelegate::SetColorCorrection(
-    const DisplaySnapshot& output,
-    const std::vector<GammaRampRGBEntry>& degamma_lut,
-    const std::vector<GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
+bool FakeDisplayDelegate::SetColorMatrix(
+    int64_t display_id,
+    const std::vector<float>& color_matrix) {
+  return false;
+}
+
+bool FakeDisplayDelegate::SetGammaCorrection(
+    int64_t display_id,
+    const std::vector<display::GammaRampRGBEntry>& degamma_lut,
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
   return false;
 }
 
diff --git a/ui/display/manager/fake_display_delegate.h b/ui/display/manager/fake_display_delegate.h
index 71b0455..44e632d5 100644
--- a/ui/display/manager/fake_display_delegate.h
+++ b/ui/display/manager/fake_display_delegate.h
@@ -94,10 +94,12 @@
   void SetHDCPState(const DisplaySnapshot& output,
                     HDCPState state,
                     SetHDCPStateCallback callback) override;
-  bool SetColorCorrection(const DisplaySnapshot& output,
-                          const std::vector<GammaRampRGBEntry>& degamma_lut,
-                          const std::vector<GammaRampRGBEntry>& gamma_lut,
-                          const std::vector<float>& correction_matrix) override;
+  bool SetColorMatrix(int64_t display_id,
+                      const std::vector<float>& color_matrix) override;
+  bool SetGammaCorrection(
+      int64_t display_id,
+      const std::vector<display::GammaRampRGBEntry>& degamma_lut,
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut) override;
   void AddObserver(NativeDisplayObserver* observer) override;
   void RemoveObserver(NativeDisplayObserver* observer) override;
   FakeDisplayController* GetFakeDisplayController() override;
diff --git a/ui/display/manager/forwarding_display_delegate.cc b/ui/display/manager/forwarding_display_delegate.cc
index c21c84db..50623ee 100644
--- a/ui/display/manager/forwarding_display_delegate.cc
+++ b/ui/display/manager/forwarding_display_delegate.cc
@@ -81,13 +81,19 @@
   delegate_->SetHDCPState(snapshot.display_id(), state, std::move(callback));
 }
 
-bool ForwardingDisplayDelegate::SetColorCorrection(
-    const DisplaySnapshot& output,
-    const std::vector<GammaRampRGBEntry>& degamma_lut,
-    const std::vector<GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
-  delegate_->SetColorCorrection(output.display_id(), degamma_lut, gamma_lut,
-                                correction_matrix);
+bool ForwardingDisplayDelegate::SetColorMatrix(
+    int64_t display_id,
+    const std::vector<float>& color_matrix) {
+  delegate_->SetColorMatrix(display_id, color_matrix);
+  // DrmNativeDisplayDelegate always returns true so this will too.
+  return true;
+}
+
+bool ForwardingDisplayDelegate::SetGammaCorrection(
+    int64_t display_id,
+    const std::vector<display::GammaRampRGBEntry>& degamma_lut,
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
+  delegate_->SetGammaCorrection(display_id, degamma_lut, gamma_lut);
   // DrmNativeDisplayDelegate always returns true so this will too.
   return true;
 }
diff --git a/ui/display/manager/forwarding_display_delegate.h b/ui/display/manager/forwarding_display_delegate.h
index 79d1c4e8..b3396bb1 100644
--- a/ui/display/manager/forwarding_display_delegate.h
+++ b/ui/display/manager/forwarding_display_delegate.h
@@ -45,10 +45,12 @@
   void SetHDCPState(const DisplaySnapshot& output,
                     HDCPState state,
                     SetHDCPStateCallback callback) override;
-  bool SetColorCorrection(const DisplaySnapshot& output,
-                          const std::vector<GammaRampRGBEntry>& degamma_lut,
-                          const std::vector<GammaRampRGBEntry>& gamma_lut,
-                          const std::vector<float>& correction_matrix) override;
+  bool SetColorMatrix(int64_t display_id,
+                      const std::vector<float>& color_matrix) override;
+  bool SetGammaCorrection(
+      int64_t display_id,
+      const std::vector<display::GammaRampRGBEntry>& degamma_lut,
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut) override;
   void AddObserver(display::NativeDisplayObserver* observer) override;
   void RemoveObserver(display::NativeDisplayObserver* observer) override;
   FakeDisplayController* GetFakeDisplayController() override;
diff --git a/ui/display/manager/test/action_logger_util.cc b/ui/display/manager/test/action_logger_util.cc
index 8f64638..8f65810 100644
--- a/ui/display/manager/test/action_logger_util.cc
+++ b/ui/display/manager/test/action_logger_util.cc
@@ -38,11 +38,20 @@
                             output.display_id(), state);
 }
 
-std::string SetColorCorrectionAction(
-    const DisplaySnapshot& output,
-    const std::vector<GammaRampRGBEntry>& degamma_lut,
-    const std::vector<GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
+std::string SetColorMatrixAction(int64_t display_id,
+                                 const std::vector<float>& color_matrix) {
+  std::string ctm;
+  for (size_t i = 0; i < color_matrix.size(); ++i)
+    ctm += base::StringPrintf(",ctm[%" PRIuS "]=%f", i, color_matrix[i]);
+
+  return base::StringPrintf("set_color_matrix(id=%" PRId64 "%s)", display_id,
+                            ctm.c_str());
+}
+
+std::string SetGammaCorrectionAction(
+    int64_t display_id,
+    const std::vector<display::GammaRampRGBEntry>& degamma_lut,
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
   std::string degamma_table;
   for (size_t i = 0; i < degamma_lut.size(); ++i) {
     degamma_table += base::StringPrintf(",degamma[%" PRIuS "]=%04x%04x%04x", i,
@@ -56,14 +65,9 @@
                            gamma_lut[i].g, gamma_lut[i].b);
   }
 
-  std::string ctm;
-  for (size_t i = 0; i < correction_matrix.size(); ++i) {
-    ctm += base::StringPrintf(",ctm[%" PRIuS "]=%f", i, correction_matrix[i]);
-  }
-
-  return base::StringPrintf("set_color_correction(id=%" PRId64 "%s%s%s)",
-                            output.display_id(), degamma_table.c_str(),
-                            gamma_table.c_str(), ctm.c_str());
+  return base::StringPrintf("set_gamma_correction(id=%" PRId64 "%s%s)",
+                            display_id, degamma_table.c_str(),
+                            gamma_table.c_str());
 }
 
 std::string JoinActions(const char* action, ...) {
diff --git a/ui/display/manager/test/action_logger_util.h b/ui/display/manager/test/action_logger_util.h
index 79ca459..a2b1375 100644
--- a/ui/display/manager/test/action_logger_util.h
+++ b/ui/display/manager/test/action_logger_util.h
@@ -46,13 +46,18 @@
 std::string GetSetHDCPStateAction(const DisplaySnapshot& output,
                                   HDCPState state);
 
-// Returns a string describing a TestNativeDisplayDelegate::SetColorCorrection()
-// call;
-std::string SetColorCorrectionAction(
-    const DisplaySnapshot& output,
-    const std::vector<GammaRampRGBEntry>& degamma_lut,
-    const std::vector<GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix);
+// Returns a string describing a TestNativeDisplayDelegate::SetColorMatrix()
+// call.
+std::string SetColorMatrixAction(int64_t display_id,
+                                 const std::vector<float>& color_matrix);
+
+// Returns a string describing a TestNativeDisplayDelegate::SetGammaCorrection()
+// call.
+std::string SetGammaCorrectionAction(
+    int64_t display_id,
+    const std::vector<display::GammaRampRGBEntry>& degamma_lut,
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut);
+
 // Joins a sequence of strings describing actions (e.g. kScreenDim) such
 // that they can be compared against a string returned by
 // ActionLogger::GetActionsAndClear().  The list of actions must be
diff --git a/ui/display/manager/test/test_native_display_delegate.cc b/ui/display/manager/test/test_native_display_delegate.cc
index 2a35618..a90af3fa 100644
--- a/ui/display/manager/test/test_native_display_delegate.cc
+++ b/ui/display/manager/test/test_native_display_delegate.cc
@@ -93,13 +93,19 @@
   std::move(callback).Run(set_hdcp_expectation_);
 }
 
-bool TestNativeDisplayDelegate::SetColorCorrection(
-    const DisplaySnapshot& output,
-    const std::vector<GammaRampRGBEntry>& degamma_lut,
-    const std::vector<GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
-  log_->AppendAction(SetColorCorrectionAction(output, degamma_lut, gamma_lut,
-                                              correction_matrix));
+bool TestNativeDisplayDelegate::SetColorMatrix(
+    int64_t display_id,
+    const std::vector<float>& color_matrix) {
+  log_->AppendAction(SetColorMatrixAction(display_id, color_matrix));
+  return true;
+}
+
+bool TestNativeDisplayDelegate::SetGammaCorrection(
+    int64_t display_id,
+    const std::vector<display::GammaRampRGBEntry>& degamma_lut,
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
+  log_->AppendAction(
+      SetGammaCorrectionAction(display_id, degamma_lut, gamma_lut));
   return true;
 }
 
diff --git a/ui/display/manager/test/test_native_display_delegate.h b/ui/display/manager/test/test_native_display_delegate.h
index 5fc0b73..8413a93 100644
--- a/ui/display/manager/test/test_native_display_delegate.h
+++ b/ui/display/manager/test/test_native_display_delegate.h
@@ -65,10 +65,12 @@
   void SetHDCPState(const DisplaySnapshot& output,
                     HDCPState state,
                     SetHDCPStateCallback callback) override;
-  bool SetColorCorrection(const DisplaySnapshot& output,
-                          const std::vector<GammaRampRGBEntry>& degamma_lut,
-                          const std::vector<GammaRampRGBEntry>& gamma_lut,
-                          const std::vector<float>& correction_matrix) override;
+  bool SetColorMatrix(int64_t display_id,
+                      const std::vector<float>& color_matrix) override;
+  bool SetGammaCorrection(
+      int64_t display_id,
+      const std::vector<display::GammaRampRGBEntry>& degamma_lut,
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut) override;
   void AddObserver(NativeDisplayObserver* observer) override;
   void RemoveObserver(NativeDisplayObserver* observer) override;
   FakeDisplayController* GetFakeDisplayController() override;
diff --git a/ui/display/mojo/native_display_delegate.mojom b/ui/display/mojo/native_display_delegate.mojom
index d0d47a8..6659ac63 100644
--- a/ui/display/mojo/native_display_delegate.mojom
+++ b/ui/display/mojo/native_display_delegate.mojom
@@ -46,9 +46,13 @@
   // Sets HDCP state of output.
   SetHDCPState(int64 display_id, HDCPState state) => (bool status);
 
-  // Set the gamma tables and correction matrix for |display_id|.
-  SetColorCorrection(int64 display_id,
+  // Sets a 3x3 color transform matrix on the display hardware.
+  // TODO: Consider using a different type for the color matrix.
+  // https://crbug.com/846975.
+  SetColorMatrix(int64 display_id, array<float, 9> color_matrix);
+
+  // Set the gamma lookup tables for |display_id|.
+  SetGammaCorrection(int64 display_id,
                      array<GammaRampRGBEntry> degamma_lut,
-                     array<GammaRampRGBEntry> gamma_lut,
-                     array<float> correction_matrix);
+                     array<GammaRampRGBEntry> gamma_lut);
 };
diff --git a/ui/display/types/native_display_delegate.h b/ui/display/types/native_display_delegate.h
index 7c79778..ba29230 100644
--- a/ui/display/types/native_display_delegate.h
+++ b/ui/display/types/native_display_delegate.h
@@ -72,12 +72,19 @@
                             HDCPState state,
                             SetHDCPStateCallback callback) = 0;
 
-  // Set the gamma tables and corection matrix for the display.
-  virtual bool SetColorCorrection(
-      const DisplaySnapshot& output,
+  // Sets the given 3x3 |color_matrix| on the display with |display_id|.
+  // This doesn't affect gamma or degamma. It returns true the color matrix was
+  // sent to the GPU process successfully.
+  virtual bool SetColorMatrix(int64_t display_id,
+                              const std::vector<float>& color_matrix) = 0;
+
+  // Sets the given |gamma_lut| and |degamma_lut| on the display with
+  // |display_id|. Returns true if the given tables were sent to the GPU process
+  // successfully.
+  virtual bool SetGammaCorrection(
+      int64_t display_id,
       const std::vector<GammaRampRGBEntry>& degamma_lut,
-      const std::vector<GammaRampRGBEntry>& gamma_lut,
-      const std::vector<float>& correction_matrix) = 0;
+      const std::vector<GammaRampRGBEntry>& gamma_lut) = 0;
 
   virtual void AddObserver(NativeDisplayObserver* observer) = 0;
 
diff --git a/ui/gfx/linux/client_native_pixmap_factory_dmabuf.cc b/ui/gfx/linux/client_native_pixmap_factory_dmabuf.cc
index 16924fa..0fdb9cb3 100644
--- a/ui/gfx/linux/client_native_pixmap_factory_dmabuf.cc
+++ b/ui/gfx/linux/client_native_pixmap_factory_dmabuf.cc
@@ -70,10 +70,11 @@
         return
 #if defined(ARCH_CPU_X86_FAMILY)
             // Currently only Intel driver (i.e. minigbm and Mesa) supports R_8
-            // RG_88 and NV12. https://crbug.com/356871
+            // RG_88, NV12 and XB30. https://crbug.com/356871
             format == gfx::BufferFormat::R_8 ||
             format == gfx::BufferFormat::RG_88 ||
             format == gfx::BufferFormat::YUV_420_BIPLANAR ||
+            format == gfx::BufferFormat::RGBX_1010102 ||
 #endif
 
             format == gfx::BufferFormat::BGRX_8888 ||
diff --git a/ui/gl/gl_image_egl.cc b/ui/gl/gl_image_egl.cc
index c70202c..9e1e66e 100644
--- a/ui/gl/gl_image_egl.cc
+++ b/ui/gl/gl_image_egl.cc
@@ -14,14 +14,13 @@
 
 GLImageEGL::~GLImageEGL() {
   DCHECK(thread_checker_.CalledOnValidThread());
-  if (egl_image_ != EGL_NO_IMAGE_KHR) {
-    EGLBoolean result =
-        eglDestroyImageKHR(GLSurfaceEGL::GetHardwareDisplay(), egl_image_);
-    if (result == EGL_FALSE) {
-      DLOG(ERROR) << "Error destroying EGLImage: "
-                  << ui::GetLastEGLErrorString();
-    }
-  }
+  if (egl_image_ == EGL_NO_IMAGE_KHR)
+    return;
+
+  const EGLBoolean result =
+      eglDestroyImageKHR(GLSurfaceEGL::GetHardwareDisplay(), egl_image_);
+  if (result == EGL_FALSE)
+    DLOG(ERROR) << "Error destroying EGLImage: " << ui::GetLastEGLErrorString();
 }
 
 bool GLImageEGL::Initialize(EGLContext context,
@@ -32,12 +31,10 @@
   DCHECK_EQ(EGL_NO_IMAGE_KHR, egl_image_);
   egl_image_ = eglCreateImageKHR(GLSurfaceEGL::GetHardwareDisplay(), context,
                                  target, buffer, attrs);
-  if (egl_image_ == EGL_NO_IMAGE_KHR) {
+  const bool success = egl_image_ != EGL_NO_IMAGE_KHR;
+  if (!success)
     LOG(ERROR) << "Error creating EGLImage: " << ui::GetLastEGLErrorString();
-    return false;
-  }
-
-  return true;
+  return success;
 }
 
 gfx::Size GLImageEGL::GetSize() {
diff --git a/ui/gl/gl_image_native_pixmap.cc b/ui/gl/gl_image_native_pixmap.cc
index 1af6e661..3a34402 100644
--- a/ui/gl/gl_image_native_pixmap.cc
+++ b/ui/gl/gl_image_native_pixmap.cc
@@ -24,8 +24,7 @@
 #define DRM_FORMAT_ABGR8888 FOURCC('A', 'B', '2', '4')
 #define DRM_FORMAT_XRGB8888 FOURCC('X', 'R', '2', '4')
 #define DRM_FORMAT_XBGR8888 FOURCC('X', 'B', '2', '4')
-#define DRM_FORMAT_XRGB2101010 FOURCC('X', 'R', '3', '0')
-#define DRM_FORMAT_XBGR2101010 FOURCC('X', 'B', '3', '0')
+#define DRM_FORMAT_ABGR2101010 FOURCC('A', 'B', '3', '0')
 #define DRM_FORMAT_YVU420 FOURCC('Y', 'V', '1', '2')
 #define DRM_FORMAT_NV12 FOURCC('N', 'V', '1', '2')
 
@@ -37,8 +36,9 @@
     case GL_RGB:
       return format == gfx::BufferFormat::BGR_565 ||
              format == gfx::BufferFormat::RGBX_8888 ||
-             format == gfx::BufferFormat::BGRX_8888 ||
-             format == gfx::BufferFormat::BGRX_1010102;
+             format == gfx::BufferFormat::BGRX_8888;
+    case GL_RGB10_A2_EXT:
+      return format == gfx::BufferFormat::RGBX_1010102;
     case GL_RGB_YCRCB_420_CHROMIUM:
       return format == gfx::BufferFormat::YVU_420;
     case GL_RGB_YCBCR_420V_CHROMIUM:
@@ -78,10 +78,10 @@
       return DRM_FORMAT_ARGB8888;
     case gfx::BufferFormat::BGRX_8888:
       return DRM_FORMAT_XRGB8888;
-    case gfx::BufferFormat::BGRX_1010102:
-      return DRM_FORMAT_XRGB2101010;
     case gfx::BufferFormat::RGBX_1010102:
-      return DRM_FORMAT_XBGR2101010;
+      // We should use here DRM_FORMAT_XBGR2101010 format, but EGL on Intel
+      // doesn't support it for scanout, see https://crbug.com/776093#c14.
+      return DRM_FORMAT_ABGR2101010;
     case gfx::BufferFormat::YVU_420:
       return DRM_FORMAT_YVU420;
     case gfx::BufferFormat::YUV_420_BIPLANAR:
@@ -92,6 +92,7 @@
     case gfx::BufferFormat::DXT5:
     case gfx::BufferFormat::ETC1:
     case gfx::BufferFormat::RGBA_4444:
+    case gfx::BufferFormat::BGRX_1010102:
     case gfx::BufferFormat::RGBA_F16:
     case gfx::BufferFormat::UYVY_422:
       NOTREACHED();
@@ -116,9 +117,9 @@
       return gfx::BufferFormat::BGRA_8888;
     case DRM_FORMAT_XRGB8888:
       return gfx::BufferFormat::BGRX_8888;
-    case DRM_FORMAT_XRGB2101010:
-      return gfx::BufferFormat::BGRX_1010102;
-    case DRM_FORMAT_XBGR2101010:
+    case DRM_FORMAT_ABGR2101010:
+      // We should support DRM_FORMAT_XBGR2101010 format instead, but EGL on
+      // Intel doesn't support it for scanout, see https://crbug.com/776093#c14.
       return gfx::BufferFormat::RGBX_1010102;
     case DRM_FORMAT_RGB565:
       return gfx::BufferFormat::BGR_565;
@@ -392,7 +393,6 @@
       return GL_RGB;
     case gfx::BufferFormat::RGBA_8888:
       return GL_RGBA;
-    case gfx::BufferFormat::BGRX_1010102:
     case gfx::BufferFormat::RGBX_1010102:
       return GL_RGB10_A2_EXT;
     case gfx::BufferFormat::BGRA_8888:
@@ -407,6 +407,7 @@
     case gfx::BufferFormat::DXT5:
     case gfx::BufferFormat::ETC1:
     case gfx::BufferFormat::RGBA_4444:
+    case gfx::BufferFormat::BGRX_1010102:
     case gfx::BufferFormat::RGBA_F16:
     case gfx::BufferFormat::UYVY_422:
       NOTREACHED();
@@ -428,7 +429,6 @@
     case gfx::BufferFormat::RGBX_8888:
     case gfx::BufferFormat::BGRA_8888:
     case gfx::BufferFormat::BGRX_8888:
-    case gfx::BufferFormat::BGRX_1010102:
     case gfx::BufferFormat::RGBX_1010102:
     case gfx::BufferFormat::YVU_420:
     case gfx::BufferFormat::YUV_420_BIPLANAR:
@@ -439,6 +439,7 @@
     case gfx::BufferFormat::DXT5:
     case gfx::BufferFormat::ETC1:
     case gfx::BufferFormat::RGBA_4444:
+    case gfx::BufferFormat::BGRX_1010102:
     case gfx::BufferFormat::RGBA_F16:
     case gfx::BufferFormat::UYVY_422:
       return false;
diff --git a/ui/latency/frame_metrics.cc b/ui/latency/frame_metrics.cc
index a65c0d2..5c4d99a1 100644
--- a/ui/latency/frame_metrics.cc
+++ b/ui/latency/frame_metrics.cc
@@ -117,8 +117,59 @@
   return std::min(duration, kDurationCap).InMicroseconds();
 }
 
+const char* ToString(FrameMetricsSource source) {
+  switch (source) {
+    case FrameMetricsSource::UnitTest:
+      return "UnitTest";
+    case FrameMetricsSource::Thread:
+      return "Thread";
+    case FrameMetricsSource::Unknown:
+      break;
+  };
+  return "Unknown";
+}
+
+const char* ToString(FrameMetricsSourceThread thread) {
+  switch (thread) {
+    case FrameMetricsSourceThread::Blink:
+      return "Blink";
+    case FrameMetricsSourceThread::RendererCompositor:
+      return "RendererCompositor";
+    case FrameMetricsSourceThread::Ui:
+      return "Ui";
+    case FrameMetricsSourceThread::UiCompositor:
+      return "UiCompositor";
+    case FrameMetricsSourceThread::VizCompositor:
+      return "VizCompositor";
+    case FrameMetricsSourceThread::Unknown:
+      break;
+  }
+  return "Unknown";
+}
+
+const char* ToString(FrameMetricsCompileTarget target) {
+  switch (target) {
+    case FrameMetricsCompileTarget::Chromium:
+      return "Chromium";
+    case FrameMetricsCompileTarget::SynchronousCompositor:
+      return "SynchronousCompositor";
+    case FrameMetricsCompileTarget::Headless:
+      return "Headless";
+    case FrameMetricsCompileTarget::Unknown:
+      break;
+  }
+  return "Unknown";
+}
+
 }  // namespace
 
+void FrameMetricsSettings::AsValueInto(
+    base::trace_event::TracedValue* state) const {
+  state->SetString("source", ToString(source));
+  state->SetString("thread", ToString(source_thread));
+  state->SetString("compile_target", ToString(compile_target));
+}
+
 namespace frame_metrics {
 
 // Converts result to fraction of frames skipped.
@@ -159,10 +210,8 @@
 
 }  // namespace frame_metrics
 
-FrameMetrics::FrameMetrics(const FrameMetricsSettings& settings,
-                           const char* source_name)
+FrameMetrics::FrameMetrics(FrameMetricsSettings settings)
     : settings_(settings),
-      source_name_(source_name),
       shared_skip_client_(settings_.max_window_size),
       shared_latency_client_(settings_.max_window_size),
       frame_skips_analyzer_(&skip_client_,
@@ -224,15 +273,12 @@
   DCHECK_GE(skipped_to_produced_ratio, 0);
   frame_skips_analyzer_.AddSample(CapValue(skipped_to_produced_ratio),
                                   CapDuration(amount_produced));
-
-  bool tracing_enabled = 0;
-  TRACE_EVENT_CATEGORY_GROUP_ENABLED(kTraceCategories, &tracing_enabled);
-  if (tracing_enabled)
-    TraceProducedStats();
 }
 
 void FrameMetrics::AddFrameDisplayed(base::TimeTicks source_timestamp,
                                      base::TimeTicks display_timestamp) {
+  TRACE_EVENT0(kTraceCategories, "AddFrameDisplayed");
+
   // Frame timestamps shouldn't go back in time, but check and drop them just
   // in case. Much of the code assumes a positive and non-zero delta.
   if (source_timestamp <= source_timestamp_prev_) {
@@ -299,7 +345,7 @@
   bool tracing_enabled = 0;
   TRACE_EVENT_CATEGORY_GROUP_ENABLED(kTraceCategories, &tracing_enabled);
   if (tracing_enabled)
-    TraceDisplayedStats();
+    TraceStats();
 }
 
 void FrameMetrics::Reset() {
@@ -340,22 +386,53 @@
   latency_acceleration_analyzer_.StartNewReportPeriod();
 }
 
-void FrameMetrics::TraceProducedStats() {
-  TRACE_EVENT1(kTraceCategories, "FrameProduced", "Skips",
-               frame_skips_analyzer_.AsValue());
-}
+namespace {
 
-void FrameMetrics::TraceDisplayedStats() {
-  TRACE_EVENT0(kTraceCategories, "FrameDisplayed");
-  TRACE_EVENT_INSTANT1(kTraceCategories, "FrameDisplayed",
-                       TRACE_EVENT_SCOPE_THREAD, "Latency",
-                       latency_analyzer_.AsValue());
-  TRACE_EVENT_INSTANT1(kTraceCategories, "FrameDisplayed",
-                       TRACE_EVENT_SCOPE_THREAD, "LatencySpeed",
-                       latency_speed_analyzer_.AsValue());
-  TRACE_EVENT_INSTANT1(kTraceCategories, "FrameDisplayed",
-                       TRACE_EVENT_SCOPE_THREAD, "LatencyAcceleration",
-                       latency_acceleration_analyzer_.AsValue());
+struct FrameMetricsTraceData {
+  FrameMetricsSettings settings;
+  StreamAnalysis skips, latency, speed, acceleration;
+
+  std::unique_ptr<base::trace_event::ConvertableToTraceFormat> AsValue() const {
+    auto state = std::make_unique<base::trace_event::TracedValue>();
+
+    state->BeginDictionary("Source");
+    settings.AsValueInto(state.get());
+    state->EndDictionary();
+
+    state->BeginDictionary("Skips");
+    skips.AsValueInto(state.get());
+    state->EndDictionary();
+
+    state->BeginDictionary("Latency");
+    latency.AsValueInto(state.get());
+    state->EndDictionary();
+
+    state->BeginDictionary("Speed");
+    speed.AsValueInto(state.get());
+    state->EndDictionary();
+
+    state->BeginDictionary("Acceleration");
+    acceleration.AsValueInto(state.get());
+    state->EndDictionary();
+
+    return std::move(state);
+  }
+};
+
+}  // namespace
+
+void FrameMetrics::TraceStats() const {
+  FrameMetricsTraceData trace_data;
+  {
+    TRACE_EVENT0(kTraceCategories, "CalculateFrameDisplayed");
+    trace_data.settings = settings_;
+    frame_skips_analyzer_.ComputeSummary(&trace_data.skips);
+    latency_analyzer_.ComputeSummary(&trace_data.latency);
+    latency_speed_analyzer_.ComputeSummary(&trace_data.speed);
+    latency_acceleration_analyzer_.ComputeSummary(&trace_data.acceleration);
+  }
+  TRACE_EVENT_INSTANT1(kTraceCategories, "FrameMetrics",
+                       TRACE_EVENT_SCOPE_THREAD, "Info", trace_data.AsValue());
 }
 
 }  // namespace ui
diff --git a/ui/latency/frame_metrics.h b/ui/latency/frame_metrics.h
index 3b2fd69d..2239b00 100644
--- a/ui/latency/frame_metrics.h
+++ b/ui/latency/frame_metrics.h
@@ -12,6 +12,7 @@
 #include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/time/time.h"
+#include "base/trace_event/trace_event_argument.h"
 
 namespace ui {
 namespace frame_metrics {
@@ -34,13 +35,55 @@
 
 }  // namespace frame_metrics
 
+enum class FrameMetricsSource {
+  Unknown = 0,
+  UnitTest = 1,
+  Thread = 2,
+};
+
+enum class FrameMetricsSourceThread {
+  Unknown = 0,
+  Blink = 1,
+  RendererCompositor = 2,
+  Ui = 3,
+  UiCompositor = 4,
+  VizCompositor = 5,
+};
+
+enum class FrameMetricsCompileTarget {
+  Unknown = 0,
+  Chromium = 1,
+  SynchronousCompositor = 2,
+  Headless = 3,
+};
+
 struct FrameMetricsSettings {
+  FrameMetricsSettings() = default;
+
+  FrameMetricsSettings(FrameMetricsSource source,
+                       FrameMetricsSourceThread source_thread,
+                       FrameMetricsCompileTarget compile_target,
+                       bool trace_results_every_frame = false,
+                       size_t max_window_size = 60)
+      : source(source),
+        source_thread(source_thread),
+        compile_target(compile_target),
+        trace_results_every_frame(trace_results_every_frame),
+        max_window_size(max_window_size) {}
+
+  // Source configuration.
+  FrameMetricsSource source;
+  FrameMetricsSourceThread source_thread;
+  FrameMetricsCompileTarget compile_target;
+
   // This is needed for telemetry results.
-  bool trace_results_every_frame = false;
+  bool trace_results_every_frame;
 
   // Maximum window size in number of samples.
   // This is forwarded to each WindowAnalyzer.
-  size_t max_window_size = 60;
+  size_t max_window_size;
+
+  void AsValueInto(base::trace_event::TracedValue* state) const;
 };
 
 // Calculates all metrics for a frame source.
@@ -51,9 +94,7 @@
 // the last call to StartNewReportPeriod.
 class FrameMetrics {
  public:
-  // |source_name| must have a global lifetime for tracing and reporting
-  // purposes.
-  FrameMetrics(const FrameMetricsSettings& settings, const char* source_name);
+  explicit FrameMetrics(FrameMetricsSettings settings);
   virtual ~FrameMetrics();
 
   // Resets all data and history as if the class were just created.
@@ -76,8 +117,7 @@
                          base::TimeTicks display_timestamp);
 
  protected:
-  void TraceProducedStats();
-  void TraceDisplayedStats();
+  void TraceStats() const;
 
   // virtual for testing.
   virtual base::TimeDelta ReportPeriod();
diff --git a/ui/latency/frame_metrics_unittest.cc b/ui/latency/frame_metrics_unittest.cc
index c94d3e5..dd142de 100644
--- a/ui/latency/frame_metrics_unittest.cc
+++ b/ui/latency/frame_metrics_unittest.cc
@@ -55,9 +55,8 @@
 // purposes.
 class TestFrameMetrics : public FrameMetrics {
  public:
-  TestFrameMetrics(const FrameMetricsSettings& settings,
-                   const char* source_name)
-      : FrameMetrics(settings, source_name) {}
+  TestFrameMetrics(const FrameMetricsSettings& settings)
+      : FrameMetrics(settings) {}
   ~TestFrameMetrics() override = default;
 
   void OverrideReportPeriod(base::TimeDelta period) {
@@ -129,9 +128,14 @@
 // The test fixture used by all tests in this file.
 class FrameMetricsTest : public testing::Test {
  public:
+  FrameMetricsTest()
+      : settings(ui::FrameMetricsSource::UnitTest,
+                 ui::FrameMetricsSourceThread::Unknown,
+                 ui::FrameMetricsCompileTarget::Unknown) {}
+
   void SetUp() override {
     // Make sure we don't get an unexpected call to StartNewReportPeriod.
-    frame_metrics = std::make_unique<TestFrameMetrics>(settings, "sourceA");
+    frame_metrics = std::make_unique<TestFrameMetrics>(settings);
     source_timestamp_origin =
         base::TimeTicks() + base::TimeDelta::FromSeconds(1);
     current_source_timestamp = source_timestamp_origin;
diff --git a/ui/latency/stream_analyzer.cc b/ui/latency/stream_analyzer.cc
index 435d9617..0453e27 100644
--- a/ui/latency/stream_analyzer.cc
+++ b/ui/latency/stream_analyzer.cc
@@ -9,6 +9,48 @@
 StreamAnalysis::StreamAnalysis() = default;
 StreamAnalysis::~StreamAnalysis() = default;
 
+void StreamAnalysis::AsValueInto(base::trace_event::TracedValue* state) const {
+  state->SetDouble("mean", mean);
+
+  state->SetDouble("rms", rms);
+  state->SetDouble("smr", smr);
+
+  state->SetDouble("std_dev", std_dev);
+  state->SetDouble("variance_of_roots", variance_of_roots);
+
+  state->BeginArray("thresholds");
+  for (const auto& t : thresholds) {
+    state->BeginArray();
+    state->AppendDouble(t.threshold);
+    state->AppendDouble(t.ge_fraction);
+    state->EndArray();
+  }
+  state->EndArray();
+
+  state->BeginArray("percentiles");
+  for (size_t i = 0; i < PercentileResults::kCount; i++) {
+    state->BeginArray();
+    state->AppendDouble(PercentileResults::kPercentiles[i]);
+    state->AppendDouble(percentiles.values[i]);
+    state->EndArray();
+  }
+  state->EndArray();
+
+  state->SetInteger("worst_sample_count", worst_sample_count);
+
+  state->BeginDictionary("worst_mean");
+  worst_mean.AsValueInto(state);
+  state->EndDictionary();
+
+  state->BeginDictionary("worst_rms");
+  worst_rms.AsValueInto(state);
+  state->EndDictionary();
+
+  state->BeginDictionary("worst_smr");
+  worst_smr.AsValueInto(state);
+  state->EndDictionary();
+}
+
 namespace frame_metrics {
 
 StreamAnalyzer::StreamAnalyzer(
@@ -158,45 +200,7 @@
   results->worst_mean = windowed_analyzer_.ComputeWorstMean();
   results->worst_rms = windowed_analyzer_.ComputeWorstRMS();
   results->worst_smr = windowed_analyzer_.ComputeWorstSMR();
-}
-
-std::unique_ptr<base::trace_event::ConvertableToTraceFormat>
-StreamAnalyzer::AsValue() const {
-  auto state = std::make_unique<base::trace_event::TracedValue>();
-  AsValueInto(state.get());
-  return std::move(state);
-}
-
-void StreamAnalyzer::AsValueInto(base::trace_event::TracedValue* state) const {
-  state->SetDouble("mean", ComputeMean());
-
-  state->SetDouble("rms", ComputeRMS());
-  state->SetDouble("smr", ComputeSMR());
-
-  state->SetDouble("std_dev", ComputeStdDev());
-  state->SetDouble("variance_of_roots", ComputeVarianceOfRoots());
-
-  state->BeginArray("percentiles");
-  PercentileResults result = ComputePercentiles();
-  for (size_t i = 0; i < PercentileResults::kCount; i++) {
-    state->BeginArray();
-    state->AppendDouble(PercentileResults::kPercentiles[i]);
-    state->AppendDouble(result.values[i]);
-    state->EndArray();
-  }
-  state->EndArray();
-
-  state->BeginArray("thresholds");
-  std::vector<ThresholdResult> thresholds(ComputeThresholds());
-  for (const auto& t : thresholds) {
-    state->BeginArray();
-    state->AppendDouble(t.threshold);
-    state->AppendDouble(t.ge_fraction);
-    state->EndArray();
-  }
-  state->EndArray();
-
-  windowed_analyzer_.AsValueInto(state);
+  results->worst_sample_count = results->worst_mean.sample_count;
 }
 
 }  // namespace frame_metrics
diff --git a/ui/latency/stream_analyzer.h b/ui/latency/stream_analyzer.h
index 767f76d..ac550c8 100644
--- a/ui/latency/stream_analyzer.h
+++ b/ui/latency/stream_analyzer.h
@@ -38,10 +38,13 @@
   std::vector<ThresholdResult> thresholds;
   PercentileResults percentiles;
 
+  size_t worst_sample_count = 0;
   FrameRegionResult worst_mean;
   FrameRegionResult worst_rms;
   FrameRegionResult worst_smr;
 
+  void AsValueInto(base::trace_event::TracedValue* state) const;
+
   DISALLOW_COPY_AND_ASSIGN(StreamAnalysis);
 };
 
@@ -115,8 +118,6 @@
   const WindowedAnalyzer& window() const { return windowed_analyzer_; }
 
   void ComputeSummary(StreamAnalysis* results) const;
-  std::unique_ptr<base::trace_event::ConvertableToTraceFormat> AsValue() const;
-  void AsValueInto(base::trace_event::TracedValue* state) const;
 
  protected:
   double VarianceHelper(double accum, double square_accum) const;
diff --git a/ui/latency/windowed_analyzer.cc b/ui/latency/windowed_analyzer.cc
index 01e61c9..a78d003 100644
--- a/ui/latency/windowed_analyzer.cc
+++ b/ui/latency/windowed_analyzer.cc
@@ -8,6 +8,7 @@
 
 void FrameRegionResult::AsValueInto(
     base::trace_event::TracedValue* state) const {
+  // We don't report sample_count, since that is reported at a higher level.
   state->SetDouble("value", value);
   state->SetDouble("start", window_begin.since_origin().InMillisecondsF());
   state->SetDouble("duration", (window_end - window_begin).InMillisecondsF());
@@ -122,25 +123,5 @@
   return result;
 }
 
-void WindowedAnalyzer::AsValueInto(
-    base::trace_event::TracedValue* state) const {
-  FrameRegionResult region;
-
-  region = ComputeWorstMean();
-  state->BeginDictionary("worst_mean");
-  region.AsValueInto(state);
-  state->EndDictionary();
-
-  region = ComputeWorstSMR();
-  state->BeginDictionary("worst_smr");
-  region.AsValueInto(state);
-  state->EndDictionary();
-
-  region = ComputeWorstRMS();
-  state->BeginDictionary("worst_rms");
-  region.AsValueInto(state);
-  state->EndDictionary();
-}
-
 }  // namespace frame_metrics
 }  // namespace ui
diff --git a/ui/latency/windowed_analyzer.h b/ui/latency/windowed_analyzer.h
index 248b6cc..3cc15bb 100644
--- a/ui/latency/windowed_analyzer.h
+++ b/ui/latency/windowed_analyzer.h
@@ -103,8 +103,6 @@
   FrameRegionResult ComputeWorstRMS() const;
   FrameRegionResult ComputeWorstSMR() const;
 
-  void AsValueInto(base::trace_event::TracedValue* state) const;
-
  protected:
   struct QueueEntry {
     uint32_t value = 0;
diff --git a/ui/ozone/common/BUILD.gn b/ui/ozone/common/BUILD.gn
index daefe0e2..b17a00b 100644
--- a/ui/ozone/common/BUILD.gn
+++ b/ui/ozone/common/BUILD.gn
@@ -48,6 +48,11 @@
     sources = [
       "linux/drm_util_linux.cc",
       "linux/drm_util_linux.h",
+      "linux/gbm_device_linux.cc",
+      "linux/gbm_device_linux.h",
+      "linux/overlay_plane.cc",
+      "linux/overlay_plane.h",
+      "linux/scanout_buffer.h",
     ]
 
     deps = [
@@ -55,6 +60,8 @@
       "//third_party/libdrm",
       "//third_party/minigbm",
       "//ui/gfx:buffer_types",
+      "//ui/gfx:memory_buffer",
+      "//ui/gfx/geometry:geometry",
     ]
 
     visibility = [ "//ui/ozone/platform/drm/*" ]
diff --git a/ui/ozone/common/gpu/ozone_gpu_messages.h b/ui/ozone/common/gpu/ozone_gpu_messages.h
index d472f08..22980fe 100644
--- a/ui/ozone/common/gpu/ozone_gpu_messages.h
+++ b/ui/ozone/common/gpu/ozone_gpu_messages.h
@@ -153,11 +153,14 @@
                      int64_t /* display_id */,
                      display::HDCPState /* state */)
 
-IPC_MESSAGE_CONTROL4(OzoneGpuMsg_SetColorCorrection,
-                     int64_t,                                  // display ID,
-                     std::vector<display::GammaRampRGBEntry>,  // degamma lut
-                     std::vector<display::GammaRampRGBEntry>,  // gamma lut
-                     std::vector<float>)  // transform matrix
+IPC_MESSAGE_CONTROL2(OzoneGpuMsg_SetColorMatrix,
+                     int64_t,             // Display ID
+                     std::vector<float>)  // Color transform matrix
+
+IPC_MESSAGE_CONTROL3(OzoneGpuMsg_SetGammaCorrection,
+                     int64_t,                                  // Display ID
+                     std::vector<display::GammaRampRGBEntry>,  // Degamma lut
+                     std::vector<display::GammaRampRGBEntry>)  // Gamma lut
 
 IPC_MESSAGE_CONTROL2(OzoneGpuMsg_CheckOverlayCapabilities,
                      gfx::AcceleratedWidget /* widget */,
diff --git a/ui/ozone/common/linux/OWNERS b/ui/ozone/common/linux/OWNERS
new file mode 100644
index 0000000..363a93a
--- /dev/null
+++ b/ui/ozone/common/linux/OWNERS
@@ -0,0 +1,2 @@
+dcastagna@chromium.org
+dnicoara@chromium.org
diff --git a/ui/ozone/common/linux/drm_util_linux.cc b/ui/ozone/common/linux/drm_util_linux.cc
index aa9c07d..eaa8d58 100644
--- a/ui/ozone/common/linux/drm_util_linux.cc
+++ b/ui/ozone/common/linux/drm_util_linux.cc
@@ -26,6 +26,8 @@
       return DRM_FORMAT_XRGB8888;
     case gfx::BufferFormat::BGRX_1010102:
       return DRM_FORMAT_XRGB2101010;
+    case gfx::BufferFormat::RGBX_1010102:
+      return DRM_FORMAT_XBGR2101010;
     case gfx::BufferFormat::BGR_565:
       return DRM_FORMAT_RGB565;
     case gfx::BufferFormat::UYVY_422:
@@ -56,6 +58,8 @@
       return gfx::BufferFormat::BGRX_8888;
     case DRM_FORMAT_XRGB2101010:
       return gfx::BufferFormat::BGRX_1010102;
+    case DRM_FORMAT_XBGR2101010:
+      return gfx::BufferFormat::RGBX_1010102;
     case DRM_FORMAT_RGB565:
       return gfx::BufferFormat::BGR_565;
     case DRM_FORMAT_UYVY:
diff --git a/ui/ozone/common/linux/gbm_device_linux.cc b/ui/ozone/common/linux/gbm_device_linux.cc
new file mode 100644
index 0000000..da3c8640
--- /dev/null
+++ b/ui/ozone/common/linux/gbm_device_linux.cc
@@ -0,0 +1,23 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/ozone/common/linux/gbm_device_linux.h"
+
+#include <gbm.h>
+
+namespace ui {
+
+GbmDeviceLinux::GbmDeviceLinux() {}
+
+GbmDeviceLinux::~GbmDeviceLinux() {
+  if (device_)
+    gbm_device_destroy(device_);
+}
+
+bool GbmDeviceLinux::InitializeGbmDevice(int fd) {
+  device_ = gbm_create_device(fd);
+  return !!device_;
+}
+
+}  // namespace ui
diff --git a/ui/ozone/common/linux/gbm_device_linux.h b/ui/ozone/common/linux/gbm_device_linux.h
new file mode 100644
index 0000000..3eb146fb
--- /dev/null
+++ b/ui/ozone/common/linux/gbm_device_linux.h
@@ -0,0 +1,32 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_OZONE_COMMON_LINUX_GBM_DEVICE_LINUX_H_
+#define UI_OZONE_COMMON_LINUX_GBM_DEVICE_LINUX_H_
+
+#include "base/files/file.h"
+#include "base/macros.h"
+
+struct gbm_device;
+
+namespace ui {
+
+class GbmDeviceLinux {
+ public:
+  GbmDeviceLinux();
+  virtual ~GbmDeviceLinux();
+
+  gbm_device* device() const { return device_; }
+
+  bool InitializeGbmDevice(int fd);
+
+ private:
+  gbm_device* device_ = nullptr;
+
+  DISALLOW_COPY_AND_ASSIGN(GbmDeviceLinux);
+};
+
+}  // namespace ui
+
+#endif  // UI_OZONE_COMMON_LINUX_GBM_DEVICE_LINUX_H_
diff --git a/ui/ozone/common/linux/overlay_plane.cc b/ui/ozone/common/linux/overlay_plane.cc
new file mode 100644
index 0000000..5bbeadf
--- /dev/null
+++ b/ui/ozone/common/linux/overlay_plane.cc
@@ -0,0 +1,58 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/ozone/common/linux/overlay_plane.h"
+
+#include <stddef.h>
+
+#include "ui/ozone/common/linux/scanout_buffer.h"
+
+namespace ui {
+
+OverlayPlane::OverlayPlane(const scoped_refptr<ScanoutBuffer>& buffer,
+                           gfx::GpuFence* gpu_fence)
+    : buffer(buffer),
+      plane_transform(gfx::OVERLAY_TRANSFORM_NONE),
+      display_bounds(gfx::Point(), buffer->GetSize()),
+      crop_rect(0, 0, 1, 1),
+      enable_blend(false),
+      gpu_fence(gpu_fence) {}
+
+OverlayPlane::OverlayPlane(const scoped_refptr<ScanoutBuffer>& buffer,
+                           int z_order,
+                           gfx::OverlayTransform plane_transform,
+                           const gfx::Rect& display_bounds,
+                           const gfx::RectF& crop_rect,
+                           bool enable_blend,
+                           gfx::GpuFence* gpu_fence)
+    : buffer(buffer),
+      z_order(z_order),
+      plane_transform(plane_transform),
+      display_bounds(display_bounds),
+      crop_rect(crop_rect),
+      enable_blend(enable_blend),
+      gpu_fence(gpu_fence) {}
+
+OverlayPlane::OverlayPlane(const OverlayPlane& other) = default;
+
+OverlayPlane::~OverlayPlane() {}
+
+bool OverlayPlane::operator<(const OverlayPlane& plane) const {
+  return std::tie(z_order, display_bounds, crop_rect, plane_transform) <
+         std::tie(plane.z_order, plane.display_bounds, plane.crop_rect,
+                  plane.plane_transform);
+}
+
+// static
+const OverlayPlane* OverlayPlane::GetPrimaryPlane(
+    const OverlayPlaneList& overlays) {
+  for (size_t i = 0; i < overlays.size(); ++i) {
+    if (overlays[i].z_order == 0)
+      return &overlays[i];
+  }
+
+  return nullptr;
+}
+
+}  // namespace ui
diff --git a/ui/ozone/common/linux/overlay_plane.h b/ui/ozone/common/linux/overlay_plane.h
new file mode 100644
index 0000000..11cf463
--- /dev/null
+++ b/ui/ozone/common/linux/overlay_plane.h
@@ -0,0 +1,59 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_OZONE_COMMON_LINUX_OVERLAY_PLANE_H_
+#define UI_OZONE_COMMON_LINUX_OVERLAY_PLANE_H_
+
+#include <vector>
+
+#include "base/bind.h"
+#include "base/memory/ref_counted.h"
+#include "ui/gfx/geometry/rect.h"
+#include "ui/gfx/geometry/rect_f.h"
+#include "ui/gfx/overlay_transform.h"
+
+namespace gfx {
+class GpuFence;
+}
+
+namespace ui {
+
+class ScanoutBuffer;
+
+struct OverlayPlane;
+typedef std::vector<OverlayPlane> OverlayPlaneList;
+
+struct OverlayPlane {
+  // Simpler constructor for the primary plane.
+  explicit OverlayPlane(const scoped_refptr<ScanoutBuffer>& buffer,
+                        gfx::GpuFence* gpu_fence);
+
+  OverlayPlane(const scoped_refptr<ScanoutBuffer>& buffer,
+               int z_order,
+               gfx::OverlayTransform plane_transform,
+               const gfx::Rect& display_bounds,
+               const gfx::RectF& crop_rect,
+               bool enable_blend,
+               gfx::GpuFence* gpu_fence);
+  OverlayPlane(const OverlayPlane& other);
+
+  bool operator<(const OverlayPlane& plane) const;
+
+  ~OverlayPlane();
+
+  // Returns the primary plane in |overlays|.
+  static const OverlayPlane* GetPrimaryPlane(const OverlayPlaneList& overlays);
+
+  scoped_refptr<ScanoutBuffer> buffer;
+  int z_order = 0;
+  gfx::OverlayTransform plane_transform;
+  gfx::Rect display_bounds;
+  gfx::RectF crop_rect;
+  bool enable_blend;
+  gfx::GpuFence* gpu_fence;
+};
+
+}  // namespace ui
+
+#endif  // UI_OZONE_COMMON_LINUX_OVERLAY_PLANE_H_
diff --git a/ui/ozone/common/linux/scanout_buffer.h b/ui/ozone/common/linux/scanout_buffer.h
new file mode 100644
index 0000000..8aa8fe8
--- /dev/null
+++ b/ui/ozone/common/linux/scanout_buffer.h
@@ -0,0 +1,70 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_OZONE_COMMON_LINUX_SCANOUT_BUFFER_H_
+#define UI_OZONE_COMMON_LINUX_SCANOUT_BUFFER_H_
+
+#include <stdint.h>
+
+#include "base/memory/ref_counted.h"
+#include "ui/gfx/buffer_types.h"
+#include "ui/gfx/geometry/size.h"
+
+namespace ui {
+
+class DrmDevice;
+
+// Abstraction for a DRM buffer that can be scanned-out of.
+class ScanoutBuffer : public base::RefCountedThreadSafe<ScanoutBuffer> {
+ public:
+  // ID allocated by the KMS API when the buffer is registered (via the handle).
+  virtual uint32_t GetFramebufferId() const = 0;
+
+  // ID allocated if the buffer is also registered with a different pixel format
+  // so that it can be scheduled as an opaque buffer.
+  virtual uint32_t GetOpaqueFramebufferId() const = 0;
+
+  // Returns FourCC format representing the way pixel data has been encoded in
+  // memory for the registered framebuffer. This can be used to check if frame
+  // buffer is compatible with a given hardware plane.
+  virtual uint32_t GetFramebufferPixelFormat() const = 0;
+
+  // Returns FourCC format that should be used to schedule this buffer for
+  // scanout when used as an opaque buffer.
+  virtual uint32_t GetOpaqueFramebufferPixelFormat() const = 0;
+
+  // Returns format modifier for buffer.
+  virtual uint64_t GetFormatModifier() const = 0;
+
+  // Handle for the buffer. This is received when allocating the buffer.
+  virtual uint32_t GetHandle() const = 0;
+
+  // Size of the buffer.
+  virtual gfx::Size GetSize() const = 0;
+
+  // Device on which the buffer was created.
+  virtual const DrmDevice* GetDrmDevice() const = 0;
+
+  virtual bool RequiresGlFinish() const = 0;
+
+ protected:
+  virtual ~ScanoutBuffer() {}
+
+  friend class base::RefCountedThreadSafe<ScanoutBuffer>;
+};
+
+class ScanoutBufferGenerator {
+ public:
+  virtual ~ScanoutBufferGenerator() {}
+
+  virtual scoped_refptr<ScanoutBuffer> Create(
+      const scoped_refptr<DrmDevice>& drm,
+      uint32_t format,
+      const std::vector<uint64_t>& modifiers,
+      const gfx::Size& size) = 0;
+};
+
+}  // namespace ui
+
+#endif  // UI_OZONE_COMMON_LINUX_SCANOUT_BUFFER_H_
diff --git a/ui/ozone/gl/gl_image_ozone_native_pixmap_unittest.cc b/ui/ozone/gl/gl_image_ozone_native_pixmap_unittest.cc
index c294802..d647992 100644
--- a/ui/ozone/gl/gl_image_ozone_native_pixmap_unittest.cc
+++ b/ui/ozone/gl/gl_image_ozone_native_pixmap_unittest.cc
@@ -90,9 +90,9 @@
 
 using GLImageScanoutTypeDisabled = testing::Types<
     GLImageNativePixmapTestDelegate<gfx::BufferUsage::SCANOUT,
-                                    gfx::BufferFormat::BGRX_1010102>>;
+                                    gfx::BufferFormat::RGBX_1010102>>;
 
-// This test is disabled since we need mesa support for XR30 that is not
+// This test is disabled since we need mesa support for XR30/XB30 that is not
 // available on many boards yet.
 INSTANTIATE_TYPED_TEST_CASE_P(DISABLED_GLImageNativePixmapScanout,
                               GLImageTest,
@@ -108,7 +108,7 @@
     GLImageNativePixmapTestDelegate<gfx::BufferUsage::GPU_READ_CPU_READ_WRITE,
                                     gfx::BufferFormat::BGRA_8888>,
     GLImageNativePixmapTestDelegate<gfx::BufferUsage::GPU_READ_CPU_READ_WRITE,
-                                    gfx::BufferFormat::BGRX_1010102>,
+                                    gfx::BufferFormat::RGBX_1010102>,
     GLImageNativePixmapTestDelegate<gfx::BufferUsage::GPU_READ_CPU_READ_WRITE,
                                     gfx::BufferFormat::R_8>,
     GLImageNativePixmapTestDelegate<gfx::BufferUsage::GPU_READ_CPU_READ_WRITE,
diff --git a/ui/ozone/platform/drm/BUILD.gn b/ui/ozone/platform/drm/BUILD.gn
index 46d5be8..00c1368 100644
--- a/ui/ozone/platform/drm/BUILD.gn
+++ b/ui/ozone/platform/drm/BUILD.gn
@@ -74,13 +74,10 @@
     "gpu/hardware_display_plane_manager_legacy.h",
     "gpu/inter_thread_messaging_proxy.cc",
     "gpu/inter_thread_messaging_proxy.h",
-    "gpu/overlay_plane.cc",
-    "gpu/overlay_plane.h",
     "gpu/page_flip_request.cc",
     "gpu/page_flip_request.h",
     "gpu/proxy_helpers.cc",
     "gpu/proxy_helpers.h",
-    "gpu/scanout_buffer.h",
     "gpu/screen_manager.cc",
     "gpu/screen_manager.h",
     "host/drm_cursor.cc",
diff --git a/ui/ozone/platform/drm/common/drm_util.cc b/ui/ozone/platform/drm/common/drm_util.cc
index a70ec1f7..1fed9e1 100644
--- a/ui/ozone/platform/drm/common/drm_util.cc
+++ b/ui/ozone/platform/drm/common/drm_util.cc
@@ -540,6 +540,8 @@
       return DRM_FORMAT_XRGB8888;
     case gfx::BufferFormat::BGRX_1010102:
       return DRM_FORMAT_XRGB2101010;
+    case gfx::BufferFormat::RGBX_1010102:
+      return DRM_FORMAT_XBGR2101010;
     case gfx::BufferFormat::BGR_565:
       return DRM_FORMAT_RGB565;
     case gfx::BufferFormat::UYVY_422:
diff --git a/ui/ozone/platform/drm/common/scoped_drm_types.cc b/ui/ozone/platform/drm/common/scoped_drm_types.cc
index f7d8be7..e8b7941 100644
--- a/ui/ozone/platform/drm/common/scoped_drm_types.cc
+++ b/ui/ozone/platform/drm/common/scoped_drm_types.cc
@@ -55,11 +55,4 @@
   drmModeFreeFB(framebuffer);
 }
 
-ScopedDrmPropertyBlob::ScopedDrmPropertyBlob(int fd, uint32_t blob_id)
-    : fd(fd), blob_id(blob_id) {}
-
-ScopedDrmPropertyBlob::~ScopedDrmPropertyBlob() {
-  drmModeDestroyPropertyBlob(fd, blob_id);
-}
-
 }  // namespace ui
diff --git a/ui/ozone/platform/drm/common/scoped_drm_types.h b/ui/ozone/platform/drm/common/scoped_drm_types.h
index fd006e5..32f9dc9 100644
--- a/ui/ozone/platform/drm/common/scoped_drm_types.h
+++ b/ui/ozone/platform/drm/common/scoped_drm_types.h
@@ -78,13 +78,6 @@
 typedef std::unique_ptr<drmModeFB, DrmFramebufferDeleter>
     ScopedDrmFramebufferPtr;
 
-struct ScopedDrmPropertyBlob {
-  ScopedDrmPropertyBlob(int fd, uint32_t blob_id);
-  ~ScopedDrmPropertyBlob();
-  int fd;
-  uint32_t blob_id;
-};
-
 typedef std::unique_ptr<drm_color_lut, base::FreeDeleter> ScopedDrmColorLutPtr;
 typedef std::unique_ptr<drm_color_ctm, base::FreeDeleter> ScopedDrmColorCtmPtr;
 
diff --git a/ui/ozone/platform/drm/gpu/crtc_controller.cc b/ui/ozone/platform/drm/gpu/crtc_controller.cc
index 329e6d0..b49b897 100644
--- a/ui/ozone/platform/drm/gpu/crtc_controller.cc
+++ b/ui/ozone/platform/drm/gpu/crtc_controller.cc
@@ -7,10 +7,10 @@
 #include "base/logging.h"
 #include "base/time/time.h"
 #include "ui/gfx/presentation_feedback.h"
+#include "ui/ozone/common/linux/scanout_buffer.h"
 #include "ui/ozone/platform/drm/gpu/drm_device.h"
 #include "ui/ozone/platform/drm/gpu/hardware_display_plane.h"
 #include "ui/ozone/platform/drm/gpu/page_flip_request.h"
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
 
 namespace ui {
 
diff --git a/ui/ozone/platform/drm/gpu/crtc_controller.h b/ui/ozone/platform/drm/gpu/crtc_controller.h
index 98b27671..f9a089a 100644
--- a/ui/ozone/platform/drm/gpu/crtc_controller.h
+++ b/ui/ozone/platform/drm/gpu/crtc_controller.h
@@ -14,9 +14,9 @@
 #include "base/observer_list.h"
 #include "base/time/time.h"
 #include "ui/gfx/swap_result.h"
+#include "ui/ozone/common/linux/overlay_plane.h"
 #include "ui/ozone/platform/drm/common/scoped_drm_types.h"
 #include "ui/ozone/platform/drm/gpu/hardware_display_plane_manager.h"
-#include "ui/ozone/platform/drm/gpu/overlay_plane.h"
 
 namespace gfx {
 struct PresentationFeedback;
diff --git a/ui/ozone/platform/drm/gpu/drm_buffer.h b/ui/ozone/platform/drm/gpu/drm_buffer.h
index dc6ed49..845f65be 100644
--- a/ui/ozone/platform/drm/gpu/drm_buffer.h
+++ b/ui/ozone/platform/drm/gpu/drm_buffer.h
@@ -10,7 +10,7 @@
 
 #include "base/macros.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
+#include "ui/ozone/common/linux/scanout_buffer.h"
 
 class SkCanvas;
 struct SkImageInfo;
diff --git a/ui/ozone/platform/drm/gpu/drm_device.cc b/ui/ozone/platform/drm/gpu/drm_device.cc
index 156114f..4ec8f44 100644
--- a/ui/ozone/platform/drm/gpu/drm_device.cc
+++ b/ui/ozone/platform/drm/gpu/drm_device.cc
@@ -133,6 +133,15 @@
 
 }  // namespace
 
+DrmPropertyBlobMetadata::DrmPropertyBlobMetadata(DrmDevice* drm, uint32_t id)
+    : drm_(drm), id_(id) {}
+
+DrmPropertyBlobMetadata::~DrmPropertyBlobMetadata() {
+  DCHECK(drm_);
+  DCHECK(id_);
+  drm_->DestroyPropertyBlob(id_);
+}
+
 class DrmDevice::PageFlipManager {
  public:
   PageFlipManager() : next_id_(0) {}
@@ -433,6 +442,18 @@
                                       property_id, value);
 }
 
+ScopedDrmPropertyBlob DrmDevice::CreatePropertyBlob(void* blob, size_t size) {
+  uint32_t id = 0;
+  int ret = drmModeCreatePropertyBlob(file_.GetPlatformFile(), blob, size, &id);
+  DCHECK(!ret && id);
+
+  return ScopedDrmPropertyBlob(new DrmPropertyBlobMetadata(this, id));
+}
+
+void DrmDevice::DestroyPropertyBlob(uint32_t id) {
+  drmModeDestroyPropertyBlob(file_.GetPlatformFile(), id);
+}
+
 bool DrmDevice::GetCapability(uint64_t capability, uint64_t* value) {
   DCHECK(file_.IsValid());
   return !drmGetCap(file_.GetPlatformFile(), capability, value);
diff --git a/ui/ozone/platform/drm/gpu/drm_device.h b/ui/ozone/platform/drm/gpu/drm_device.h
index 05851bb2..571c8f0 100644
--- a/ui/ozone/platform/drm/gpu/drm_device.h
+++ b/ui/ozone/platform/drm/gpu/drm_device.h
@@ -19,6 +19,7 @@
 #include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/geometry/rect_f.h"
 #include "ui/gfx/overlay_transform.h"
+#include "ui/ozone/common/linux/gbm_device_linux.h"
 #include "ui/ozone/platform/drm/common/scoped_drm_types.h"
 
 typedef struct _drmEventContext drmEventContext;
@@ -33,11 +34,29 @@
 namespace ui {
 
 class HardwareDisplayPlaneManager;
+class DrmDevice;
+
+class DrmPropertyBlobMetadata {
+ public:
+  DrmPropertyBlobMetadata(DrmDevice* drm, uint32_t id);
+  ~DrmPropertyBlobMetadata();
+
+  uint32_t id() const { return id_; }
+
+ private:
+  DrmDevice* drm_;  // Not owned;
+  uint32_t id_;
+
+  DISALLOW_COPY_AND_ASSIGN(DrmPropertyBlobMetadata);
+};
+
+using ScopedDrmPropertyBlob = std::unique_ptr<DrmPropertyBlobMetadata>;
 
 // Wraps DRM calls into a nice interface. Used to provide different
 // implementations of the DRM calls. For the actual implementation the DRM API
 // would be called. In unit tests this interface would be stubbed.
-class DrmDevice : public base::RefCountedThreadSafe<DrmDevice> {
+class DrmDevice : public GbmDeviceLinux,
+                  public base::RefCountedThreadSafe<DrmDevice> {
  public:
   using PageFlipCallback =
       base::OnceCallback<void(unsigned int /* frame */,
@@ -151,6 +170,11 @@
                            uint32_t property_id,
                            uint64_t value);
 
+  // Creates a property blob with data |blob| of size |size|.
+  virtual ScopedDrmPropertyBlob CreatePropertyBlob(void* blob, size_t size);
+
+  virtual void DestroyPropertyBlob(uint32_t id);
+
   // Returns a binary blob associated with |property_id|. May be nullptr if the
   // property couldn't be found.
   virtual ScopedDrmPropertyBlobPtr GetPropertyBlob(uint32_t property_id);
@@ -210,7 +234,7 @@
  protected:
   friend class base::RefCountedThreadSafe<DrmDevice>;
 
-  virtual ~DrmDevice();
+  ~DrmDevice() override;
 
   std::unique_ptr<HardwareDisplayPlaneManager> plane_manager_;
 
diff --git a/ui/ozone/platform/drm/gpu/drm_display.cc b/ui/ozone/platform/drm/gpu/drm_display.cc
index 209ec3b3..6563246 100644
--- a/ui/ozone/platform/drm/gpu/drm_display.cc
+++ b/ui/ozone/platform/drm/gpu/drm_display.cc
@@ -172,14 +172,18 @@
       GetContentProtectionValue(hdcp_property.get(), state));
 }
 
-void DrmDisplay::SetColorCorrection(
+void DrmDisplay::SetColorMatrix(const std::vector<float>& color_matrix) {
+  if (!drm_->plane_manager()->SetColorMatrix(crtc_, color_matrix)) {
+    LOG(ERROR) << "Failed to set color matrix for display: crtc_id = " << crtc_;
+  }
+}
+
+void DrmDisplay::SetGammaCorrection(
     const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-    const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
-  if (!drm_->plane_manager()->SetColorCorrection(crtc_, degamma_lut, gamma_lut,
-                                                 correction_matrix)) {
-    LOG(ERROR) << "Failed to set color correction for display: crtc_id = "
-               << crtc_;
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
+  if (!drm_->plane_manager()->SetGammaCorrection(crtc_, degamma_lut,
+                                                 gamma_lut)) {
+    LOG(ERROR) << "Failed to set gamma tables for display: crtc_id = " << crtc_;
   }
 }
 
diff --git a/ui/ozone/platform/drm/gpu/drm_display.h b/ui/ozone/platform/drm/gpu/drm_display.h
index 5d7b239..b7ad5bd 100644
--- a/ui/ozone/platform/drm/gpu/drm_display.h
+++ b/ui/ozone/platform/drm/gpu/drm_display.h
@@ -48,10 +48,10 @@
   bool Configure(const drmModeModeInfo* mode, const gfx::Point& origin);
   bool GetHDCPState(display::HDCPState* state);
   bool SetHDCPState(display::HDCPState state);
-  void SetColorCorrection(
+  void SetColorMatrix(const std::vector<float>& color_matrix);
+  void SetGammaCorrection(
       const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-      const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-      const std::vector<float>& correction_matrix);
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut);
 
  private:
   ScreenManager* screen_manager_;  // Not owned.
diff --git a/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc b/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc
index 2bc54a2..9764bcc 100644
--- a/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc
+++ b/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc
@@ -201,18 +201,28 @@
   return display->SetHDCPState(state);
 }
 
-void DrmGpuDisplayManager::SetColorCorrection(
+void DrmGpuDisplayManager::SetColorMatrix(
     int64_t display_id,
-    const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-    const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
+    const std::vector<float>& color_matrix) {
   DrmDisplay* display = FindDisplay(display_id);
   if (!display) {
     LOG(ERROR) << "There is no display with ID " << display_id;
     return;
   }
 
-  display->SetColorCorrection(degamma_lut, gamma_lut, correction_matrix);
+  display->SetColorMatrix(color_matrix);
+}
+
+void DrmGpuDisplayManager::SetGammaCorrection(
+    int64_t display_id,
+    const std::vector<display::GammaRampRGBEntry>& degamma_lut,
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
+  DrmDisplay* display = FindDisplay(display_id);
+  if (!display) {
+    LOG(ERROR) << "There is no display with ID " << display_id;
+    return;
+  }
+  display->SetGammaCorrection(degamma_lut, gamma_lut);
 }
 
 DrmDisplay* DrmGpuDisplayManager::FindDisplay(int64_t display_id) {
diff --git a/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.h b/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.h
index bdab97c..ccfbd9f 100644
--- a/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.h
+++ b/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.h
@@ -51,11 +51,12 @@
   bool DisableDisplay(int64_t id);
   bool GetHDCPState(int64_t display_id, display::HDCPState* state);
   bool SetHDCPState(int64_t display_id, display::HDCPState state);
-  void SetColorCorrection(
-      int64_t id,
+  void SetColorMatrix(int64_t display_id,
+                      const std::vector<float>& color_matrix);
+  void SetGammaCorrection(
+      int64_t display_id,
       const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-      const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-      const std::vector<float>& correction_matrix);
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut);
 
  private:
   DrmDisplay* FindDisplay(int64_t display_id);
diff --git a/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc b/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc
index 3f82bdd..7f95ff1 100644
--- a/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc
+++ b/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc
@@ -9,11 +9,11 @@
 #include "base/files/platform_file.h"
 #include "ui/gfx/geometry/size_conversions.h"
 #include "ui/ozone/common/linux/drm_util_linux.h"
+#include "ui/ozone/common/linux/scanout_buffer.h"
 #include "ui/ozone/platform/drm/common/drm_util.h"
 #include "ui/ozone/platform/drm/gpu/drm_device.h"
 #include "ui/ozone/platform/drm/gpu/drm_window.h"
 #include "ui/ozone/platform/drm/gpu/hardware_display_controller.h"
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
 
 namespace ui {
 
diff --git a/ui/ozone/platform/drm/gpu/drm_overlay_validator.h b/ui/ozone/platform/drm/gpu/drm_overlay_validator.h
index 64dc7b9..ec10780 100644
--- a/ui/ozone/platform/drm/gpu/drm_overlay_validator.h
+++ b/ui/ozone/platform/drm/gpu/drm_overlay_validator.h
@@ -6,7 +6,7 @@
 #define UI_OZONE_PLATFORM_DRM_GPU_DRM_OVERLAY_VALIDATOR_H_
 
 #include "base/containers/mru_cache.h"
-#include "ui/ozone/platform/drm/gpu/overlay_plane.h"
+#include "ui/ozone/common/linux/overlay_plane.h"
 
 namespace ui {
 
diff --git a/ui/ozone/platform/drm/gpu/drm_thread.cc b/ui/ozone/platform/drm/gpu/drm_thread.cc
index acbbad3..c9dddeef 100644
--- a/ui/ozone/platform/drm/gpu/drm_thread.cc
+++ b/ui/ozone/platform/drm/gpu/drm_thread.cc
@@ -334,13 +334,16 @@
                           display_manager_->SetHDCPState(display_id, state));
 }
 
-void DrmThread::SetColorCorrection(
+void DrmThread::SetColorMatrix(int64_t display_id,
+                               const std::vector<float>& color_matrix) {
+  display_manager_->SetColorMatrix(display_id, color_matrix);
+}
+
+void DrmThread::SetGammaCorrection(
     int64_t display_id,
     const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-    const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
-  display_manager_->SetColorCorrection(display_id, degamma_lut, gamma_lut,
-                                       correction_matrix);
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
+  display_manager_->SetGammaCorrection(display_id, degamma_lut, gamma_lut);
 }
 
 void DrmThread::StartDrmDevice(StartDrmDeviceCallback callback) {
diff --git a/ui/ozone/platform/drm/gpu/drm_thread.h b/ui/ozone/platform/drm/gpu/drm_thread.h
index 1faf9994..ec86dbc 100644
--- a/ui/ozone/platform/drm/gpu/drm_thread.h
+++ b/ui/ozone/platform/drm/gpu/drm_thread.h
@@ -117,11 +117,12 @@
   void SetHDCPState(int64_t display_id,
                     display::HDCPState state,
                     base::OnceCallback<void(int64_t, bool)> callback) override;
-  void SetColorCorrection(
+  void SetColorMatrix(int64_t display_id,
+                      const std::vector<float>& color_matrix) override;
+  void SetGammaCorrection(
       int64_t display_id,
       const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-      const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-      const std::vector<float>& correction_matrix) override;
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut) override;
   void CheckOverlayCapabilities(
       const gfx::AcceleratedWidget& widget,
       const OverlaySurfaceCandidateList& overlays,
diff --git a/ui/ozone/platform/drm/gpu/drm_thread_message_proxy.cc b/ui/ozone/platform/drm/gpu/drm_thread_message_proxy.cc
index 842ed61..7217f11 100644
--- a/ui/ozone/platform/drm/gpu/drm_thread_message_proxy.cc
+++ b/ui/ozone/platform/drm/gpu/drm_thread_message_proxy.cc
@@ -53,7 +53,8 @@
                         OnRemoveGraphicsDevice)
     IPC_MESSAGE_HANDLER(OzoneGpuMsg_GetHDCPState, OnGetHDCPState)
     IPC_MESSAGE_HANDLER(OzoneGpuMsg_SetHDCPState, OnSetHDCPState)
-    IPC_MESSAGE_HANDLER(OzoneGpuMsg_SetColorCorrection, OnSetColorCorrection)
+    IPC_MESSAGE_HANDLER(OzoneGpuMsg_SetColorMatrix, OnSetColorMatrix)
+    IPC_MESSAGE_HANDLER(OzoneGpuMsg_SetGammaCorrection, OnSetGammaCorrection)
     IPC_MESSAGE_HANDLER(OzoneGpuMsg_CheckOverlayCapabilities,
                         OnCheckOverlayCapabilities)
     IPC_MESSAGE_UNHANDLED(handled = false)
@@ -226,16 +227,25 @@
                      display_id, state, std::move(safe_callback)));
 }
 
-void DrmThreadMessageProxy::OnSetColorCorrection(
-    int64_t id,
-    const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-    const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
+void DrmThreadMessageProxy::OnSetColorMatrix(
+    int64_t display_id,
+    const std::vector<float>& color_matrix) {
   DCHECK(drm_thread_->IsRunning());
   drm_thread_->task_runner()->PostTask(
-      FROM_HERE, base::BindOnce(&DrmThread::SetColorCorrection,
-                                base::Unretained(drm_thread_), id, degamma_lut,
-                                gamma_lut, correction_matrix));
+      FROM_HERE,
+      base::BindOnce(&DrmThread::SetColorMatrix, base::Unretained(drm_thread_),
+                     display_id, color_matrix));
+}
+
+void DrmThreadMessageProxy::OnSetGammaCorrection(
+    int64_t display_id,
+    const std::vector<display::GammaRampRGBEntry>& degamma_lut,
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
+  DCHECK(drm_thread_->IsRunning());
+  drm_thread_->task_runner()->PostTask(
+      FROM_HERE, base::BindOnce(&DrmThread::SetGammaCorrection,
+                                base::Unretained(drm_thread_), display_id,
+                                degamma_lut, gamma_lut));
 }
 
 void DrmThreadMessageProxy::OnCheckOverlayCapabilitiesCallback(
diff --git a/ui/ozone/platform/drm/gpu/drm_thread_message_proxy.h b/ui/ozone/platform/drm/gpu/drm_thread_message_proxy.h
index c1ec315..ef02797 100644
--- a/ui/ozone/platform/drm/gpu/drm_thread_message_proxy.h
+++ b/ui/ozone/platform/drm/gpu/drm_thread_message_proxy.h
@@ -73,11 +73,12 @@
   void OnRemoveGraphicsDevice(const base::FilePath& path);
   void OnGetHDCPState(int64_t display_id);
   void OnSetHDCPState(int64_t display_id, display::HDCPState state);
-  void OnSetColorCorrection(
-      int64_t id,
+  void OnSetColorMatrix(int64_t display_id,
+                        const std::vector<float>& color_matrix);
+  void OnSetGammaCorrection(
+      int64_t display_id,
       const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-      const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-      const std::vector<float>& correction_matrix);
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut);
 
   void OnCheckOverlayCapabilitiesCallback(
       const gfx::AcceleratedWidget& widget,
diff --git a/ui/ozone/platform/drm/gpu/drm_window.h b/ui/ozone/platform/drm/gpu/drm_window.h
index fa84f66..ec5fab2 100644
--- a/ui/ozone/platform/drm/gpu/drm_window.h
+++ b/ui/ozone/platform/drm/gpu/drm_window.h
@@ -14,7 +14,7 @@
 #include "ui/gfx/native_widget_types.h"
 #include "ui/gfx/swap_result.h"
 #include "ui/gfx/vsync_provider.h"
-#include "ui/ozone/platform/drm/gpu/overlay_plane.h"
+#include "ui/ozone/common/linux/overlay_plane.h"
 #include "ui/ozone/platform/drm/gpu/page_flip_request.h"
 #include "ui/ozone/public/swap_completion_callback.h"
 
diff --git a/ui/ozone/platform/drm/gpu/drm_window_proxy.cc b/ui/ozone/platform/drm/gpu/drm_window_proxy.cc
index f5f882a..1ec1141 100644
--- a/ui/ozone/platform/drm/gpu/drm_window_proxy.cc
+++ b/ui/ozone/platform/drm/gpu/drm_window_proxy.cc
@@ -5,10 +5,10 @@
 #include "ui/ozone/platform/drm/gpu/drm_window_proxy.h"
 
 #include "ui/gfx/presentation_feedback.h"
+#include "ui/ozone/common/linux/overlay_plane.h"
+#include "ui/ozone/common/linux/scanout_buffer.h"
 #include "ui/ozone/platform/drm/gpu/drm_thread.h"
-#include "ui/ozone/platform/drm/gpu/overlay_plane.h"
 #include "ui/ozone/platform/drm/gpu/proxy_helpers.h"
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
 
 namespace ui {
 
diff --git a/ui/ozone/platform/drm/gpu/gbm_buffer.h b/ui/ozone/platform/drm/gpu/gbm_buffer.h
index e647e1c..bfbb733a 100644
--- a/ui/ozone/platform/drm/gpu/gbm_buffer.h
+++ b/ui/ozone/platform/drm/gpu/gbm_buffer.h
@@ -12,7 +12,7 @@
 #include "ui/gfx/buffer_types.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/gfx/native_pixmap.h"
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
+#include "ui/ozone/common/linux/scanout_buffer.h"
 
 struct gbm_bo;
 
diff --git a/ui/ozone/platform/drm/gpu/gbm_device.cc b/ui/ozone/platform/drm/gpu/gbm_device.cc
index 9aa2ce916..ab71756 100644
--- a/ui/ozone/platform/drm/gpu/gbm_device.cc
+++ b/ui/ozone/platform/drm/gpu/gbm_device.cc
@@ -4,7 +4,6 @@
 
 #include "ui/ozone/platform/drm/gpu/gbm_device.h"
 
-#include <gbm.h>
 #include <utility>
 
 namespace ui {
@@ -14,17 +13,14 @@
                      bool is_primary_device)
     : DrmDevice(device_path, std::move(file), is_primary_device) {}
 
-GbmDevice::~GbmDevice() {
-  if (device_)
-    gbm_device_destroy(device_);
-}
+GbmDevice::~GbmDevice() = default;
 
 bool GbmDevice::Initialize() {
   if (!DrmDevice::Initialize())
     return false;
 
-  device_ = gbm_create_device(get_fd());
-  if (!device_) {
+  InitializeGbmDevice(get_fd());
+  if (!device()) {
     PLOG(ERROR) << "Unable to initialize GBM for " << device_path().value();
     return false;
   }
diff --git a/ui/ozone/platform/drm/gpu/gbm_device.h b/ui/ozone/platform/drm/gpu/gbm_device.h
index 0de11ed..a3bc8e2 100644
--- a/ui/ozone/platform/drm/gpu/gbm_device.h
+++ b/ui/ozone/platform/drm/gpu/gbm_device.h
@@ -8,8 +8,6 @@
 #include "base/macros.h"
 #include "ui/ozone/platform/drm/gpu/drm_device.h"
 
-struct gbm_device;
-
 namespace ui {
 
 class GbmDevice : public DrmDevice {
@@ -18,16 +16,12 @@
             base::File file,
             bool is_primary_device);
 
-  gbm_device* device() const { return device_; }
-
   // DrmDevice implementation:
   bool Initialize() override;
 
  private:
   ~GbmDevice() override;
 
-  gbm_device* device_ = nullptr;
-
   DISALLOW_COPY_AND_ASSIGN(GbmDevice);
 };
 
diff --git a/ui/ozone/platform/drm/gpu/gbm_surfaceless.cc b/ui/ozone/platform/drm/gpu/gbm_surfaceless.cc
index 4375553..ff82cc0 100644
--- a/ui/ozone/platform/drm/gpu/gbm_surfaceless.cc
+++ b/ui/ozone/platform/drm/gpu/gbm_surfaceless.cc
@@ -13,10 +13,10 @@
 #include "ui/gfx/gpu_fence.h"
 #include "ui/gfx/presentation_feedback.h"
 #include "ui/ozone/common/egl_util.h"
+#include "ui/ozone/common/linux/scanout_buffer.h"
 #include "ui/ozone/platform/drm/gpu/drm_vsync_provider.h"
 #include "ui/ozone/platform/drm/gpu/drm_window_proxy.h"
 #include "ui/ozone/platform/drm/gpu/gbm_surface_factory.h"
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
 
 namespace ui {
 
diff --git a/ui/ozone/platform/drm/gpu/gbm_surfaceless.h b/ui/ozone/platform/drm/gpu/gbm_surfaceless.h
index cc42f71..e9e7a412 100644
--- a/ui/ozone/platform/drm/gpu/gbm_surfaceless.h
+++ b/ui/ozone/platform/drm/gpu/gbm_surfaceless.h
@@ -15,7 +15,7 @@
 #include "ui/gl/gl_surface_egl.h"
 #include "ui/gl/gl_surface_overlay.h"
 #include "ui/gl/scoped_binders.h"
-#include "ui/ozone/platform/drm/gpu/overlay_plane.h"
+#include "ui/ozone/common/linux/overlay_plane.h"
 
 namespace ui {
 
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_controller.h b/ui/ozone/platform/drm/gpu/hardware_display_controller.h
index 1fa3665..1ecc4443 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_controller.h
+++ b/ui/ozone/platform/drm/gpu/hardware_display_controller.h
@@ -18,8 +18,8 @@
 #include "base/macros.h"
 #include "base/time/time.h"
 #include "ui/gfx/swap_result.h"
+#include "ui/ozone/common/linux/overlay_plane.h"
 #include "ui/ozone/platform/drm/gpu/hardware_display_plane_manager.h"
-#include "ui/ozone/platform/drm/gpu/overlay_plane.h"
 #include "ui/ozone/public/swap_completion_callback.h"
 
 namespace gfx {
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane.cc b/ui/ozone/platform/drm/gpu/hardware_display_plane.cc
index 0a00cd0e..54e2cb0 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane.cc
@@ -166,6 +166,7 @@
                         &properties_.in_formats);
   GetDrmPropertyForName(drm, props.get(), "IN_FENCE_FD",
                         &properties_.in_fence_fd);
+  GetDrmPropertyForName(drm, props.get(), "PLANE_CTM", &properties_.plane_ctm);
 }
 
 }  // namespace ui
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane.h b/ui/ozone/platform/drm/gpu/hardware_display_plane.h
index 6027c86..80609c6 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane.h
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane.h
@@ -67,6 +67,7 @@
     DrmDevice::Property rotation;
     DrmDevice::Property in_formats;
     DrmDevice::Property in_fence_fd;
+    DrmDevice::Property plane_ctm;
   };
 
   uint32_t id_;
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.cc b/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.cc
index b1f973a..b1ab4c1 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.cc
@@ -134,4 +134,13 @@
   return true;
 }
 
+bool HardwareDisplayPlaneAtomic::SetPlaneCtm(drmModeAtomicReq* property_set,
+                                             uint32_t ctm_blob_id) {
+  if (!properties_.plane_ctm.id)
+    return false;
+
+  properties_.plane_ctm.value = ctm_blob_id;
+  return AddProperty(property_set, id_, properties_.plane_ctm);
+}
+
 }  // namespace ui
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.h b/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.h
index 01dca75..a28f562 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.h
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.h
@@ -35,6 +35,8 @@
                             const gfx::OverlayTransform transform,
                             int in_fence_fd);
 
+  bool SetPlaneCtm(drmModeAtomicReq* property_set, uint32_t ctm_blob_id);
+
   void set_crtc(CrtcController* crtc) { crtc_ = crtc; }
   CrtcController* crtc() const { return crtc_; }
 
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.cc b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.cc
index f6aa5f3..0a92c94d 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.cc
@@ -14,11 +14,11 @@
 #include "base/posix/safe_strerror.h"
 #include "base/trace_event/trace_event.h"
 #include "ui/gfx/geometry/rect.h"
+#include "ui/ozone/common/linux/scanout_buffer.h"
 #include "ui/ozone/platform/drm/gpu/drm_device.h"
 #include "ui/ozone/platform/drm/gpu/drm_gpu_util.h"
 #include "ui/ozone/platform/drm/gpu/hardware_display_plane.h"
 #include "ui/ozone/platform/drm/gpu/hardware_display_plane_dummy.h"
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
 
 namespace ui {
 namespace {
@@ -376,14 +376,17 @@
   return std::vector<uint64_t>();
 }
 
-bool HardwareDisplayPlaneManager::SetColorCorrection(
+bool HardwareDisplayPlaneManager::SetColorMatrix(
     uint32_t crtc_id,
-    const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-    const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
-  const bool should_set_gamma_properties =
-      !degamma_lut.empty() || !gamma_lut.empty();
-  int crtc_index = LookupCrtcIndex(crtc_id);
+    const std::vector<float>& color_matrix) {
+  if (color_matrix.empty()) {
+    // TODO: Consider allowing an empty matrix to disable the color transform
+    // matrix.
+    LOG(ERROR) << "CTM is empty. Expected a 3x3 matrix.";
+    return false;
+  }
+
+  const int crtc_index = LookupCrtcIndex(crtc_id);
   if (crtc_index < 0) {
     LOG(ERROR) << "Unknown CRTC ID=" << crtc_id;
     return false;
@@ -391,26 +394,32 @@
 
   const CrtcProperties& crtc_props = crtc_properties_[crtc_index];
 
-  if (correction_matrix.empty()) {
-    LOG(ERROR) << "CTM is empty. Expected a 3x3 matrix.";
+  ScopedDrmColorCtmPtr ctm_blob_data = CreateCTMBlob(color_matrix);
+  if (!crtc_props.ctm.id)
+    return SetColorCorrectionOnAllCrtcPlanes(crtc_id, std::move(ctm_blob_data));
+
+  return SetBlobProperty(drm_->get_fd(), crtc_id, DRM_MODE_OBJECT_CRTC,
+                         crtc_props.ctm.id, "CTM",
+                         reinterpret_cast<unsigned char*>(ctm_blob_data.get()),
+                         sizeof(drm_color_ctm));
+}
+
+bool HardwareDisplayPlaneManager::SetGammaCorrection(
+    uint32_t crtc_id,
+    const std::vector<display::GammaRampRGBEntry>& degamma_lut,
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
+  if (degamma_lut.empty() && gamma_lut.empty()) {
+    // TODO: Consider treating this as a signal to disable gamma correction.
+    return true;
+  }
+
+  const int crtc_index = LookupCrtcIndex(crtc_id);
+  if (crtc_index < 0) {
+    LOG(ERROR) << "Unknown CRTC ID=" << crtc_id;
     return false;
   }
 
-  if (crtc_props.ctm.id) {
-    ScopedDrmColorCtmPtr ctm_blob_data = CreateCTMBlob(correction_matrix);
-    if (!SetBlobProperty(drm_->get_fd(), crtc_id, DRM_MODE_OBJECT_CRTC,
-                         crtc_props.ctm.id, "CTM",
-                         reinterpret_cast<unsigned char*>(ctm_blob_data.get()),
-                         sizeof(drm_color_ctm))) {
-      return false;
-    }
-  } else if (!should_set_gamma_properties) {
-    return SetColorCorrectionOnAllCrtcPlanes(crtc_id,
-                                             CreateCTMBlob(correction_matrix));
-  }
-
-  if (!should_set_gamma_properties)
-    return true;
+  const CrtcProperties& crtc_props = crtc_properties_[crtc_index];
 
   if (!crtc_props.degamma_lut_size.id || !crtc_props.gamma_lut_size.id ||
       !crtc_props.degamma_lut.id || !crtc_props.gamma_lut.id) {
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.h b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.h
index e053e5f..2cc8811 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.h
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.h
@@ -12,9 +12,9 @@
 
 #include "base/macros.h"
 #include "ui/display/types/gamma_ramp_rgb_entry.h"
+#include "ui/ozone/common/linux/overlay_plane.h"
 #include "ui/ozone/platform/drm/common/scoped_drm_types.h"
 #include "ui/ozone/platform/drm/gpu/drm_device.h"
-#include "ui/ozone/platform/drm/gpu/overlay_plane.h"
 
 namespace gfx {
 class Rect;
@@ -79,11 +79,13 @@
   void BeginFrame(HardwareDisplayPlaneList* plane_list);
 
   // TODO(dnicoara): Split this into atomic and legacy implementation.
-  bool SetColorCorrection(
+  bool SetColorMatrix(uint32_t crtc_id, const std::vector<float>& color_matrix);
+
+  // TODO(dnicoara): Split this into atomic and legacy implementation.
+  bool SetGammaCorrection(
       uint32_t crtc_id,
       const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-      const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-      const std::vector<float>& correction_matrix);
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut);
 
   // Assign hardware planes from the |planes_| list to |overlay_list| entries,
   // recording the plane IDs in the |plane_list|. Only planes compatible with
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.cc b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.cc
index 687dfa4..e7c47e46 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.cc
@@ -13,11 +13,11 @@
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "ui/gfx/gpu_fence.h"
 #include "ui/gfx/gpu_fence_handle.h"
+#include "ui/ozone/common/linux/scanout_buffer.h"
 #include "ui/ozone/platform/drm/common/drm_util.h"
 #include "ui/ozone/platform/drm/gpu/crtc_controller.h"
 #include "ui/ozone/platform/drm/gpu/drm_device.h"
 #include "ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.h"
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
 
 namespace ui {
 
@@ -128,44 +128,28 @@
     uint32_t crtc_id,
     ScopedDrmColorCtmPtr ctm_blob_data) {
   ScopedDrmAtomicReqPtr property_set(drmModeAtomicAlloc());
-  uint32_t blob_id = 0;
-  int fd = drm_->get_fd();
-  int ret = drmModeCreatePropertyBlob(fd, ctm_blob_data.get(),
-                                      sizeof(drm_color_ctm), &blob_id);
-  DCHECK(!ret && blob_id);
-  ScopedDrmPropertyBlob property_blob(fd, blob_id);
+  ScopedDrmPropertyBlob property_blob(
+      drm_->CreatePropertyBlob(ctm_blob_data.get(), sizeof(drm_color_ctm)));
 
   const int crtc_index = LookupCrtcIndex(crtc_id);
   DCHECK_GE(crtc_index, 0);
-  const int crtc_bit = 1 << crtc_index;
 
-  ScopedDrmPlaneResPtr plane_resources(drmModeGetPlaneResources(fd));
-  DCHECK(plane_resources);
-  bool all_planes_ctm = true;
-  for (uint32_t i = 0; i < plane_resources->count_planes; ++i) {
-    ScopedDrmPlanePtr drm_plane(
-        drmModeGetPlane(fd, plane_resources->planes[i]));
-    DCHECK(drm_plane);
+  for (auto& plane : planes_) {
+    HardwareDisplayPlaneAtomic* atomic_plane =
+        static_cast<HardwareDisplayPlaneAtomic*>(plane.get());
 
-    // This assumes planes can belong only to one crtc.
-    if (!(drm_plane->possible_crtcs & crtc_bit))
+    // This assumes planes can only belong to one crtc.
+    if (!atomic_plane->CanUseForCrtc(crtc_index))
       continue;
-    ScopedDrmObjectPropertyPtr plane_props(drmModeObjectGetProperties(
-        fd, plane_resources->planes[i], DRM_MODE_OBJECT_PLANE));
-    DCHECK(plane_props);
-    ScopedDrmPropertyPtr property(
-        FindDrmProperty(fd, plane_props.get(), "PLANE_CTM"));
-    if (property) {
-      int ret = drmModeAtomicAddProperty(
-          property_set.get(), plane_resources->planes[i], property->prop_id,
-          property_blob.blob_id);
-      LOG_IF(ERROR, ret < 0) << "Failed to set PLANE_CTM property.";
+
+    if (!atomic_plane->SetPlaneCtm(property_set.get(), property_blob->id())) {
+      LOG(ERROR) << "Failed to set PLANE_CTM for plane=" << atomic_plane->id();
+      return false;
     }
-    all_planes_ctm = all_planes_ctm && property;
   }
-  drm_->CommitProperties(property_set.get(), DRM_MODE_ATOMIC_NONBLOCK, 0,
-                         DrmDevice::PageFlipCallback());
-  return all_planes_ctm;
+
+  return drm_->CommitProperties(property_set.get(), DRM_MODE_ATOMIC_NONBLOCK, 0,
+                                DrmDevice::PageFlipCallback());
 }
 
 bool HardwareDisplayPlaneManagerAtomic::ValidatePrimarySize(
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_legacy.cc b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_legacy.cc
index 9db78c3..319097b 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_legacy.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_legacy.cc
@@ -12,10 +12,10 @@
 #include "base/task_scheduler/post_task.h"
 #include "ui/gfx/gpu_fence.h"
 #include "ui/gfx/presentation_feedback.h"
+#include "ui/ozone/common/linux/scanout_buffer.h"
 #include "ui/ozone/platform/drm/gpu/crtc_controller.h"
 #include "ui/ozone/platform/drm/gpu/drm_device.h"
 #include "ui/ozone/platform/drm/gpu/hardware_display_plane.h"
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
 
 namespace ui {
 
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_unittest.cc b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_unittest.cc
index d241f667..d4175660 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_unittest.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_unittest.cc
@@ -25,9 +25,10 @@
 
 namespace {
 
-constexpr uint32_t kTypePropId = 200;
-constexpr uint32_t kInFormatsPropId = 201;
-constexpr uint32_t kInFormatsBlobPropId = 300;
+constexpr uint32_t kTypePropId = 300;
+constexpr uint32_t kInFormatsPropId = 301;
+constexpr uint32_t kPlaneCtmId = 302;
+constexpr uint32_t kInFormatsBlobPropId = 400;
 
 const uint32_t kDummyFormat = 0;
 const gfx::Size kDefaultBufferSize(2, 2);
@@ -64,8 +65,22 @@
 void HardwareDisplayPlaneManagerTest::InitializeDrmState(
     size_t crtc_count,
     size_t planes_per_crtc) {
-  property_names_.insert({kTypePropId, "type"});
-  property_names_.insert({kInFormatsPropId, "IN_FORMATS"});
+  property_names_ = {
+      // Add all required properties.
+      {200, "CRTC_ID"},
+      {201, "CRTC_X"},
+      {202, "CRTC_Y"},
+      {203, "CRTC_W"},
+      {204, "CRTC_H"},
+      {205, "FB_ID"},
+      {206, "SRC_X"},
+      {207, "SRC_Y"},
+      {208, "SRC_W"},
+      {209, "SRC_H"},
+      // Defines some optional properties we use for convenience.
+      {kTypePropId, "type"},
+      {kInFormatsPropId, "IN_FORMATS"},
+  };
 
   for (size_t i = 0; i < crtc_count; ++i) {
     ui::MockDrmDevice::CrtcProperties crtc_prop;
@@ -77,15 +92,23 @@
       ui::MockDrmDevice::PlaneProperties plane_prop;
       plane_prop.id = 100 + i * planes_per_crtc + j;
       plane_prop.crtc_mask = 1 << i;
-      plane_prop.properties = {
-          {.id = kTypePropId,
-           .value = j == 0 ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY},
-          {.id = kInFormatsPropId, .value = kInFormatsBlobPropId},
+      for (const auto& pair : property_names_) {
+        uint32_t value = 0;
+        if (pair.first == kTypePropId)
+          value = j == 0 ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY;
+        else if (pair.first == kInFormatsPropId)
+          value = kInFormatsBlobPropId;
+
+        plane_prop.properties.push_back({.id = pair.first, .value = value});
       };
 
       plane_properties_.emplace_back(std::move(plane_prop));
     }
   }
+
+  // Separately add optional properties that will be used in some tests, but the
+  // tests will append the property to the planes on a case-by-case basis.
+  property_names_.insert({kPlaneCtmId, "PLANE_CTM"});
 }
 
 TEST_F(HardwareDisplayPlaneManagerTest, SinglePlaneAssignment) {
@@ -294,6 +317,44 @@
   EXPECT_EQ(1, fake_drm_->get_overlay_clear_call_count());
 }
 
+TEST_F(HardwareDisplayPlaneManagerTest,
+       SetColorCorrectionOnAllCrtcPlanes_Success) {
+  InitializeDrmState(/*crtc_count=*/1, /*planes_per_crtc=*/1);
+  plane_properties_[0].properties.push_back({.id = kPlaneCtmId, .value = 0});
+  fake_drm_->InitializeState(crtc_properties_, plane_properties_,
+                             property_names_, /* use_atomic= */ true);
+
+  ui::ScopedDrmColorCtmPtr ctm_blob(new drm_color_ctm());
+  EXPECT_TRUE(fake_drm_->plane_manager()->SetColorCorrectionOnAllCrtcPlanes(
+      crtc_properties_[0].id, std::move(ctm_blob)));
+  EXPECT_EQ(1, fake_drm_->get_commit_count());
+}
+
+TEST_F(HardwareDisplayPlaneManagerTest,
+       SetColorCorrectionOnAllCrtcPlanes_NoPlaneCtmProperty) {
+  InitializeDrmState(/*crtc_count=*/1, /*planes_per_crtc=*/1);
+  fake_drm_->InitializeState(crtc_properties_, plane_properties_,
+                             property_names_, /* use_atomic= */ true);
+
+  ui::ScopedDrmColorCtmPtr ctm_blob(new drm_color_ctm());
+  EXPECT_FALSE(fake_drm_->plane_manager()->SetColorCorrectionOnAllCrtcPlanes(
+      crtc_properties_[0].id, std::move(ctm_blob)));
+  EXPECT_EQ(0, fake_drm_->get_commit_count());
+}
+
+TEST_F(HardwareDisplayPlaneManagerTest,
+       SetColorCorrectionOnAllCrtcPlanes_OnePlaneMissingCtmProperty) {
+  InitializeDrmState(/*crtc_count=*/1, /*planes_per_crtc=*/2);
+  plane_properties_[0].properties.push_back({.id = kPlaneCtmId, .value = 0});
+  fake_drm_->InitializeState(crtc_properties_, plane_properties_,
+                             property_names_, /* use_atomic= */ true);
+
+  ui::ScopedDrmColorCtmPtr ctm_blob(new drm_color_ctm());
+  EXPECT_FALSE(fake_drm_->plane_manager()->SetColorCorrectionOnAllCrtcPlanes(
+      crtc_properties_[0].id, std::move(ctm_blob)));
+  EXPECT_EQ(0, fake_drm_->get_commit_count());
+}
+
 class FakeFenceFD {
  public:
   FakeFenceFD();
diff --git a/ui/ozone/platform/drm/gpu/mock_drm_device.cc b/ui/ozone/platform/drm/gpu/mock_drm_device.cc
index 7a6fb05..65fb705 100644
--- a/ui/ozone/platform/drm/gpu/mock_drm_device.cc
+++ b/ui/ozone/platform/drm/gpu/mock_drm_device.cc
@@ -275,6 +275,13 @@
   return true;
 }
 
+ScopedDrmPropertyBlob MockDrmDevice::CreatePropertyBlob(void* blob,
+                                                        size_t size) {
+  return ScopedDrmPropertyBlob(new DrmPropertyBlobMetadata(this, 0xffffffff));
+}
+
+void MockDrmDevice::DestroyPropertyBlob(uint32_t id) {}
+
 bool MockDrmDevice::GetCapability(uint64_t capability, uint64_t* value) {
   return true;
 }
@@ -359,6 +366,8 @@
     std::move(callback).Run(0, base::TimeTicks());
   else
     callbacks_.push(std::move(callback));
+
+  commit_count_++;
   return true;
 }
 
diff --git a/ui/ozone/platform/drm/gpu/mock_drm_device.h b/ui/ozone/platform/drm/gpu/mock_drm_device.h
index b4b9c41..1337584 100644
--- a/ui/ozone/platform/drm/gpu/mock_drm_device.h
+++ b/ui/ozone/platform/drm/gpu/mock_drm_device.h
@@ -62,6 +62,7 @@
   int get_page_flip_call_count() const { return page_flip_call_count_; }
   int get_overlay_flip_call_count() const { return overlay_flip_call_count_; }
   int get_overlay_clear_call_count() const { return overlay_clear_call_count_; }
+  int get_commit_count() const { return commit_count_; }
   void set_set_crtc_expectation(bool state) { set_crtc_expectation_ = state; }
   void set_page_flip_expectation(bool state) { page_flip_expectation_ = state; }
   void set_add_framebuffer_expectation(bool state) {
@@ -128,6 +129,8 @@
   bool SetProperty(uint32_t connector_id,
                    uint32_t property_id,
                    uint64_t value) override;
+  ScopedDrmPropertyBlob CreatePropertyBlob(void* blob, size_t size) override;
+  void DestroyPropertyBlob(uint32_t id) override;
   bool GetCapability(uint64_t capability, uint64_t* value) override;
   ScopedDrmPropertyBlobPtr GetPropertyBlob(uint32_t property_id) override;
   ScopedDrmPropertyBlobPtr GetPropertyBlob(drmModeConnector* connector,
@@ -164,6 +167,7 @@
   int overlay_flip_call_count_;
   int overlay_clear_call_count_;
   int allocate_buffer_count_;
+  int commit_count_ = 0;
 
   bool set_crtc_expectation_;
   bool add_framebuffer_expectation_;
diff --git a/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.h b/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.h
index f29f7e2..2f68299 100644
--- a/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.h
+++ b/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.h
@@ -7,7 +7,7 @@
 
 #include "base/macros.h"
 
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
+#include "ui/ozone/common/linux/scanout_buffer.h"
 
 namespace ui {
 
diff --git a/ui/ozone/platform/drm/gpu/mock_scanout_buffer.h b/ui/ozone/platform/drm/gpu/mock_scanout_buffer.h
index cbeb256..93a40e6 100644
--- a/ui/ozone/platform/drm/gpu/mock_scanout_buffer.h
+++ b/ui/ozone/platform/drm/gpu/mock_scanout_buffer.h
@@ -9,7 +9,7 @@
 #include <stdint.h>
 
 #include "base/macros.h"
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
+#include "ui/ozone/common/linux/scanout_buffer.h"
 
 namespace ui {
 
diff --git a/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.h b/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.h
index c904501b5..ad886c2 100644
--- a/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.h
+++ b/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.h
@@ -7,7 +7,7 @@
 
 #include "base/macros.h"
 
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
+#include "ui/ozone/common/linux/scanout_buffer.h"
 
 namespace ui {
 
diff --git a/ui/ozone/platform/drm/gpu/overlay_plane.cc b/ui/ozone/platform/drm/gpu/overlay_plane.cc
deleted file mode 100644
index be15821..0000000
--- a/ui/ozone/platform/drm/gpu/overlay_plane.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/ozone/platform/drm/gpu/overlay_plane.h"
-
-#include <stddef.h>
-
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
-
-namespace ui {
-
-OverlayPlane::OverlayPlane(const scoped_refptr<ScanoutBuffer>& buffer,
-                           gfx::GpuFence* gpu_fence)
-    : buffer(buffer),
-      plane_transform(gfx::OVERLAY_TRANSFORM_NONE),
-      display_bounds(gfx::Point(), buffer->GetSize()),
-      crop_rect(0, 0, 1, 1),
-      enable_blend(false),
-      gpu_fence(gpu_fence) {}
-
-OverlayPlane::OverlayPlane(const scoped_refptr<ScanoutBuffer>& buffer,
-                           int z_order,
-                           gfx::OverlayTransform plane_transform,
-                           const gfx::Rect& display_bounds,
-                           const gfx::RectF& crop_rect,
-                           bool enable_blend,
-                           gfx::GpuFence* gpu_fence)
-    : buffer(buffer),
-      z_order(z_order),
-      plane_transform(plane_transform),
-      display_bounds(display_bounds),
-      crop_rect(crop_rect),
-      enable_blend(enable_blend),
-      gpu_fence(gpu_fence) {}
-
-OverlayPlane::OverlayPlane(const OverlayPlane& other) = default;
-
-OverlayPlane::~OverlayPlane() {
-}
-
-bool OverlayPlane::operator<(const OverlayPlane& plane) const {
-  return std::tie(z_order, display_bounds, crop_rect, plane_transform) <
-         std::tie(plane.z_order, plane.display_bounds, plane.crop_rect,
-                  plane.plane_transform);
-}
-
-// static
-const OverlayPlane* OverlayPlane::GetPrimaryPlane(
-    const OverlayPlaneList& overlays) {
-  for (size_t i = 0; i < overlays.size(); ++i) {
-    if (overlays[i].z_order == 0)
-      return &overlays[i];
-  }
-
-  return nullptr;
-}
-
-}  // namespace ui
diff --git a/ui/ozone/platform/drm/gpu/overlay_plane.h b/ui/ozone/platform/drm/gpu/overlay_plane.h
deleted file mode 100644
index 34e4e1b..0000000
--- a/ui/ozone/platform/drm/gpu/overlay_plane.h
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef UI_OZONE_PLATFORM_DRM_GPU_OVERLAY_PLANE_H_
-#define UI_OZONE_PLATFORM_DRM_GPU_OVERLAY_PLANE_H_
-
-#include <vector>
-
-#include "base/bind.h"
-#include "base/memory/ref_counted.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/geometry/rect_f.h"
-#include "ui/gfx/overlay_transform.h"
-
-namespace gfx {
-class GpuFence;
-}
-
-namespace ui {
-
-class ScanoutBuffer;
-
-struct OverlayPlane;
-typedef std::vector<OverlayPlane> OverlayPlaneList;
-
-struct OverlayPlane {
-  // Simpler constructor for the primary plane.
-  explicit OverlayPlane(const scoped_refptr<ScanoutBuffer>& buffer,
-                        gfx::GpuFence* gpu_fence);
-
-  OverlayPlane(const scoped_refptr<ScanoutBuffer>& buffer,
-               int z_order,
-               gfx::OverlayTransform plane_transform,
-               const gfx::Rect& display_bounds,
-               const gfx::RectF& crop_rect,
-               bool enable_blend,
-               gfx::GpuFence* gpu_fence);
-  OverlayPlane(const OverlayPlane& other);
-
-  bool operator<(const OverlayPlane& plane) const;
-
-  ~OverlayPlane();
-
-  // Returns the primary plane in |overlays|.
-  static const OverlayPlane* GetPrimaryPlane(const OverlayPlaneList& overlays);
-
-  scoped_refptr<ScanoutBuffer> buffer;
-  int z_order = 0;
-  gfx::OverlayTransform plane_transform;
-  gfx::Rect display_bounds;
-  gfx::RectF crop_rect;
-  bool enable_blend;
-  gfx::GpuFence* gpu_fence;
-};
-
-}  // namespace ui
-
-#endif  // UI_OZONE_PLATFORM_DRM_GPU_OVERLAY_PLANE_H_
diff --git a/ui/ozone/platform/drm/gpu/scanout_buffer.h b/ui/ozone/platform/drm/gpu/scanout_buffer.h
deleted file mode 100644
index 3d4f2c3..0000000
--- a/ui/ozone/platform/drm/gpu/scanout_buffer.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef UI_OZONE_PLATFORM_DRM_GPU_SCANOUT_BUFFER_H_
-#define UI_OZONE_PLATFORM_DRM_GPU_SCANOUT_BUFFER_H_
-
-#include <stdint.h>
-
-#include "base/memory/ref_counted.h"
-#include "ui/gfx/buffer_types.h"
-#include "ui/gfx/geometry/size.h"
-
-namespace ui {
-
-class DrmDevice;
-
-// Abstraction for a DRM buffer that can be scanned-out of.
-class ScanoutBuffer : public base::RefCountedThreadSafe<ScanoutBuffer> {
- public:
-  // ID allocated by the KMS API when the buffer is registered (via the handle).
-  virtual uint32_t GetFramebufferId() const = 0;
-
-  // ID allocated if the buffer is also registered with a different pixel format
-  // so that it can be scheduled as an opaque buffer.
-  virtual uint32_t GetOpaqueFramebufferId() const = 0;
-
-  // Returns FourCC format representing the way pixel data has been encoded in
-  // memory for the registered framebuffer. This can be used to check if frame
-  // buffer is compatible with a given hardware plane.
-  virtual uint32_t GetFramebufferPixelFormat() const = 0;
-
-  // Returns FourCC format that should be used to schedule this buffer for
-  // scanout when used as an opaque buffer.
-  virtual uint32_t GetOpaqueFramebufferPixelFormat() const = 0;
-
-  // Returns format modifier for buffer.
-  virtual uint64_t GetFormatModifier() const = 0;
-
-  // Handle for the buffer. This is received when allocating the buffer.
-  virtual uint32_t GetHandle() const = 0;
-
-  // Size of the buffer.
-  virtual gfx::Size GetSize() const = 0;
-
-  // Device on which the buffer was created.
-  virtual const DrmDevice* GetDrmDevice() const = 0;
-
-  virtual bool RequiresGlFinish() const = 0;
-
- protected:
-  virtual ~ScanoutBuffer() {}
-
-  friend class base::RefCountedThreadSafe<ScanoutBuffer>;
-};
-
-class ScanoutBufferGenerator {
- public:
-  virtual ~ScanoutBufferGenerator() {}
-
-  virtual scoped_refptr<ScanoutBuffer> Create(
-      const scoped_refptr<DrmDevice>& drm,
-      uint32_t format,
-      const std::vector<uint64_t>& modifiers,
-      const gfx::Size& size) = 0;
-};
-
-}  // namespace ui
-
-#endif  // UI_OZONE_PLATFORM_DRM_GPU_SCANOUT_BUFFER_H_
diff --git a/ui/ozone/platform/drm/gpu/screen_manager.cc b/ui/ozone/platform/drm/gpu/screen_manager.cc
index 3fdc922..165dcbb1 100644
--- a/ui/ozone/platform/drm/gpu/screen_manager.cc
+++ b/ui/ozone/platform/drm/gpu/screen_manager.cc
@@ -14,13 +14,13 @@
 #include "ui/gfx/geometry/point.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/geometry/size.h"
+#include "ui/ozone/common/linux/scanout_buffer.h"
 #include "ui/ozone/platform/drm/common/drm_util.h"
 #include "ui/ozone/platform/drm/gpu/crtc_controller.h"
 #include "ui/ozone/platform/drm/gpu/drm_console_buffer.h"
 #include "ui/ozone/platform/drm/gpu/drm_device.h"
 #include "ui/ozone/platform/drm/gpu/drm_window.h"
 #include "ui/ozone/platform/drm/gpu/hardware_display_controller.h"
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
 
 namespace ui {
 
diff --git a/ui/ozone/platform/drm/host/drm_display_host.cc b/ui/ozone/platform/drm/host/drm_display_host.cc
index 6e5eebb0..78271ca 100644
--- a/ui/ozone/platform/drm/host/drm_display_host.cc
+++ b/ui/ozone/platform/drm/host/drm_display_host.cc
@@ -103,12 +103,15 @@
   set_hdcp_callback_.Reset();
 }
 
-void DrmDisplayHost::SetColorCorrection(
+void DrmDisplayHost::SetColorMatrix(const std::vector<float>& color_matrix) {
+  sender_->GpuSetColorMatrix(snapshot_->display_id(), color_matrix);
+}
+
+void DrmDisplayHost::SetGammaCorrection(
     const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-    const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
-  sender_->GpuSetColorCorrection(snapshot_->display_id(), degamma_lut,
-                                 gamma_lut, correction_matrix);
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
+  sender_->GpuSetGammaCorrection(snapshot_->display_id(), degamma_lut,
+                                 gamma_lut);
 }
 
 void DrmDisplayHost::OnGpuProcessLaunched() {}
diff --git a/ui/ozone/platform/drm/host/drm_display_host.h b/ui/ozone/platform/drm/host/drm_display_host.h
index e8894ec2..55b5de5 100644
--- a/ui/ozone/platform/drm/host/drm_display_host.h
+++ b/ui/ozone/platform/drm/host/drm_display_host.h
@@ -36,10 +36,10 @@
   void GetHDCPState(display::GetHDCPStateCallback callback);
   void SetHDCPState(display::HDCPState state,
                     display::SetHDCPStateCallback callback);
-  void SetColorCorrection(
+  void SetColorMatrix(const std::vector<float>& color_matrix);
+  void SetGammaCorrection(
       const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-      const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-      const std::vector<float>& correction_matrix);
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut);
 
   // Called when the IPC from the GPU process arrives to answer the above
   // commands.
diff --git a/ui/ozone/platform/drm/host/drm_gpu_platform_support_host.cc b/ui/ozone/platform/drm/host/drm_gpu_platform_support_host.cc
index c06c013d..6054b9b 100644
--- a/ui/ozone/platform/drm/host/drm_gpu_platform_support_host.cc
+++ b/ui/ozone/platform/drm/host/drm_gpu_platform_support_host.cc
@@ -357,13 +357,18 @@
   return Send(new OzoneGpuMsg_SetHDCPState(display_id, state));
 }
 
-bool DrmGpuPlatformSupportHost::GpuSetColorCorrection(
+bool DrmGpuPlatformSupportHost::GpuSetColorMatrix(
+    int64_t display_id,
+    const std::vector<float>& color_matrix) {
+  return Send(new OzoneGpuMsg_SetColorMatrix(display_id, color_matrix));
+}
+
+bool DrmGpuPlatformSupportHost::GpuSetGammaCorrection(
     int64_t display_id,
     const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-    const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
-  return Send(new OzoneGpuMsg_SetColorCorrection(display_id, degamma_lut,
-                                                 gamma_lut, correction_matrix));
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
+  return Send(
+      new OzoneGpuMsg_SetGammaCorrection(display_id, degamma_lut, gamma_lut));
 }
 
 bool DrmGpuPlatformSupportHost::GpuDestroyWindow(
diff --git a/ui/ozone/platform/drm/host/drm_gpu_platform_support_host.h b/ui/ozone/platform/drm/host/drm_gpu_platform_support_host.h
index 4f0f918..dc29a4ae 100644
--- a/ui/ozone/platform/drm/host/drm_gpu_platform_support_host.h
+++ b/ui/ozone/platform/drm/host/drm_gpu_platform_support_host.h
@@ -87,11 +87,12 @@
   bool GpuDisableNativeDisplay(int64_t display_id) override;
   bool GpuGetHDCPState(int64_t display_id) override;
   bool GpuSetHDCPState(int64_t display_id, display::HDCPState state) override;
-  bool GpuSetColorCorrection(
+  bool GpuSetColorMatrix(int64_t display_id,
+                         const std::vector<float>& color_matrix) override;
+  bool GpuSetGammaCorrection(
       int64_t display_id,
       const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-      const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-      const std::vector<float>& correction_matrix) override;
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut) override;
 
   // Services needed by DrmWindowHost
   bool GpuDestroyWindow(gfx::AcceleratedWidget widget) override;
diff --git a/ui/ozone/platform/drm/host/drm_native_display_delegate.cc b/ui/ozone/platform/drm/host/drm_native_display_delegate.cc
index 8a67a61..61d507f1 100644
--- a/ui/ozone/platform/drm/host/drm_native_display_delegate.cc
+++ b/ui/ozone/platform/drm/host/drm_native_display_delegate.cc
@@ -72,13 +72,20 @@
   display->SetHDCPState(state, std::move(callback));
 }
 
-bool DrmNativeDisplayDelegate::SetColorCorrection(
-    const display::DisplaySnapshot& output,
+bool DrmNativeDisplayDelegate::SetColorMatrix(
+    int64_t display_id,
+    const std::vector<float>& color_matrix) {
+  DrmDisplayHost* display = display_manager_->GetDisplay(display_id);
+  display->SetColorMatrix(color_matrix);
+  return true;
+}
+
+bool DrmNativeDisplayDelegate::SetGammaCorrection(
+    int64_t display_id,
     const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-    const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
-  DrmDisplayHost* display = display_manager_->GetDisplay(output.display_id());
-  display->SetColorCorrection(degamma_lut, gamma_lut, correction_matrix);
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
+  DrmDisplayHost* display = display_manager_->GetDisplay(display_id);
+  display->SetGammaCorrection(degamma_lut, gamma_lut);
   return true;
 }
 
diff --git a/ui/ozone/platform/drm/host/drm_native_display_delegate.h b/ui/ozone/platform/drm/host/drm_native_display_delegate.h
index 39f2eee..079f901 100644
--- a/ui/ozone/platform/drm/host/drm_native_display_delegate.h
+++ b/ui/ozone/platform/drm/host/drm_native_display_delegate.h
@@ -38,12 +38,12 @@
   void SetHDCPState(const display::DisplaySnapshot& output,
                     display::HDCPState state,
                     display::SetHDCPStateCallback callback) override;
-  bool SetColorCorrection(
-      const display::DisplaySnapshot& output,
+  bool SetColorMatrix(int64_t display_id,
+                      const std::vector<float>& color_matrix) override;
+  bool SetGammaCorrection(
+      int64_t display_id,
       const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-      const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-      const std::vector<float>& correction_matrix) override;
-
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut) override;
   void AddObserver(display::NativeDisplayObserver* observer) override;
   void RemoveObserver(display::NativeDisplayObserver* observer) override;
   display::FakeDisplayController* GetFakeDisplayController() override;
diff --git a/ui/ozone/platform/drm/host/gpu_thread_adapter.h b/ui/ozone/platform/drm/host/gpu_thread_adapter.h
index f275e66..7668d18 100644
--- a/ui/ozone/platform/drm/host/gpu_thread_adapter.h
+++ b/ui/ozone/platform/drm/host/gpu_thread_adapter.h
@@ -60,11 +60,12 @@
   virtual bool GpuGetHDCPState(int64_t display_id) = 0;
   virtual bool GpuSetHDCPState(int64_t display_id,
                                display::HDCPState state) = 0;
-  virtual bool GpuSetColorCorrection(
+  virtual bool GpuSetColorMatrix(int64_t display_id,
+                                 const std::vector<float>& color_matrix) = 0;
+  virtual bool GpuSetGammaCorrection(
       int64_t display_id,
       const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-      const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-      const std::vector<float>& correction_matrix) = 0;
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut) = 0;
 
   // Services needed by DrmWindowHost
   virtual bool GpuDestroyWindow(gfx::AcceleratedWidget widget) = 0;
diff --git a/ui/ozone/platform/drm/host/host_drm_device.cc b/ui/ozone/platform/drm/host/host_drm_device.cc
index 36ff79c..24b5592f 100644
--- a/ui/ozone/platform/drm/host/host_drm_device.cc
+++ b/ui/ozone/platform/drm/host/host_drm_device.cc
@@ -315,18 +315,25 @@
   return true;
 }
 
-bool HostDrmDevice::GpuSetColorCorrection(
-    int64_t id,
-    const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-    const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
+bool HostDrmDevice::GpuSetColorMatrix(int64_t display_id,
+                                      const std::vector<float>& color_matrix) {
   DCHECK_CALLED_ON_VALID_THREAD(on_window_server_thread_);
   if (!IsConnected())
     return false;
 
-  drm_device_ptr_->SetColorCorrection(id, degamma_lut, gamma_lut,
-                                      correction_matrix);
+  drm_device_ptr_->SetColorMatrix(display_id, color_matrix);
+  return true;
+}
 
+bool HostDrmDevice::GpuSetGammaCorrection(
+    int64_t display_id,
+    const std::vector<display::GammaRampRGBEntry>& degamma_lut,
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
+  DCHECK_CALLED_ON_VALID_THREAD(on_window_server_thread_);
+  if (!IsConnected())
+    return false;
+
+  drm_device_ptr_->SetGammaCorrection(display_id, degamma_lut, gamma_lut);
   return true;
 }
 
diff --git a/ui/ozone/platform/drm/host/host_drm_device.h b/ui/ozone/platform/drm/host/host_drm_device.h
index 0a5b41c8..03b08f7 100644
--- a/ui/ozone/platform/drm/host/host_drm_device.h
+++ b/ui/ozone/platform/drm/host/host_drm_device.h
@@ -86,11 +86,12 @@
   bool GpuDisableNativeDisplay(int64_t display_id) override;
   bool GpuGetHDCPState(int64_t display_id) override;
   bool GpuSetHDCPState(int64_t display_id, display::HDCPState state) override;
-  bool GpuSetColorCorrection(
+  bool GpuSetColorMatrix(int64_t display_id,
+                         const std::vector<float>& color_matrix) override;
+  bool GpuSetGammaCorrection(
       int64_t display_id,
       const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-      const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-      const std::vector<float>& correction_matrix) override;
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut) override;
 
   // Services needed by DrmWindowHost
   bool GpuDestroyWindow(gfx::AcceleratedWidget widget) override;
diff --git a/ui/ozone/platform/drm/ozone_platform_gbm.cc b/ui/ozone/platform/drm/ozone_platform_gbm.cc
index a6e1286..a3f2586 100644
--- a/ui/ozone/platform/drm/ozone_platform_gbm.cc
+++ b/ui/ozone/platform/drm/ozone_platform_gbm.cc
@@ -23,6 +23,7 @@
 #include "ui/events/ozone/device/device_manager.h"
 #include "ui/events/ozone/evdev/event_factory_evdev.h"
 #include "ui/events/ozone/layout/keyboard_layout_engine_manager.h"
+#include "ui/ozone/common/linux/scanout_buffer.h"
 #include "ui/ozone/platform/drm/common/drm_util.h"
 #include "ui/ozone/platform/drm/gpu/drm_device_generator.h"
 #include "ui/ozone/platform/drm/gpu/drm_device_manager.h"
@@ -31,7 +32,6 @@
 #include "ui/ozone/platform/drm/gpu/drm_thread_proxy.h"
 #include "ui/ozone/platform/drm/gpu/gbm_surface_factory.h"
 #include "ui/ozone/platform/drm/gpu/proxy_helpers.h"
-#include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
 #include "ui/ozone/platform/drm/gpu/screen_manager.h"
 #include "ui/ozone/platform/drm/host/drm_cursor.h"
 #include "ui/ozone/platform/drm/host/drm_device_connector.h"
diff --git a/ui/ozone/platform/wayland/wayland_native_display_delegate.cc b/ui/ozone/platform/wayland/wayland_native_display_delegate.cc
index f7215b5..029da54 100644
--- a/ui/ozone/platform/wayland/wayland_native_display_delegate.cc
+++ b/ui/ozone/platform/wayland/wayland_native_display_delegate.cc
@@ -64,11 +64,17 @@
   NOTREACHED();
 }
 
-bool WaylandNativeDisplayDelegate::SetColorCorrection(
-    const display::DisplaySnapshot& output,
+bool WaylandNativeDisplayDelegate::SetColorMatrix(
+    int64_t display_id,
+    const std::vector<float>& color_matrix) {
+  NOTREACHED();
+  return false;
+}
+
+bool WaylandNativeDisplayDelegate::SetGammaCorrection(
+    int64_t display_id,
     const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-    const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-    const std::vector<float>& correction_matrix) {
+    const std::vector<display::GammaRampRGBEntry>& gamma_lut) {
   NOTREACHED();
   return false;
 }
diff --git a/ui/ozone/platform/wayland/wayland_native_display_delegate.h b/ui/ozone/platform/wayland/wayland_native_display_delegate.h
index 0624cd2f..8c5d599 100644
--- a/ui/ozone/platform/wayland/wayland_native_display_delegate.h
+++ b/ui/ozone/platform/wayland/wayland_native_display_delegate.h
@@ -37,12 +37,12 @@
   void SetHDCPState(const display::DisplaySnapshot& output,
                     display::HDCPState state,
                     display::SetHDCPStateCallback callback) override;
-  bool SetColorCorrection(
-      const display::DisplaySnapshot& output,
+  bool SetColorMatrix(int64_t display_id,
+                      const std::vector<float>& color_matrix) override;
+  bool SetGammaCorrection(
+      int64_t display_id,
       const std::vector<display::GammaRampRGBEntry>& degamma_lut,
-      const std::vector<display::GammaRampRGBEntry>& gamma_lut,
-      const std::vector<float>& correction_matrix) override;
-
+      const std::vector<display::GammaRampRGBEntry>& gamma_lut) override;
   void AddObserver(display::NativeDisplayObserver* observer) override;
   void RemoveObserver(display::NativeDisplayObserver* observer) override;
   display::FakeDisplayController* GetFakeDisplayController() override;
diff --git a/ui/ozone/public/interfaces/drm_device.mojom b/ui/ozone/public/interfaces/drm_device.mojom
index 48ea6df..1a21e59 100644
--- a/ui/ozone/public/interfaces/drm_device.mojom
+++ b/ui/ozone/public/interfaces/drm_device.mojom
@@ -68,11 +68,15 @@
   SetHDCPState(int64 display_id, display.mojom.HDCPState  state) =>
       (int64 display_id, bool success);
 
-  // Sets a color correction gamma table.
-  SetColorCorrection(int64 display_id,
+  // Sets a 3x3 color transform matrix on the display hardware.
+  // TODO: Consider using a different type for the color matrix.
+  // https://crbug.com/846975.
+  SetColorMatrix(int64 display_id, array<float, 9> color_matrix);
+
+  // Sets a color correction gamma lookup table.
+  SetGammaCorrection(int64 display_id,
                      array<display.mojom.GammaRampRGBEntry> degamma_lut,
-                     array<display.mojom.GammaRampRGBEntry> gamma_lut,
-                     array<float> correction_matrix);
+                     array<display.mojom.GammaRampRGBEntry> gamma_lut);
 
   // Verifies if the display controller can successfully scanout the given set
   // of OverlaySurfaceCandidates and return the status associated with each
diff --git a/ui/views/controls/menu/menu_types.h b/ui/views/controls/menu/menu_types.h
index 03a0c72..149a0a23 100644
--- a/ui/views/controls/menu/menu_types.h
+++ b/ui/views/controls/menu/menu_types.h
@@ -22,7 +22,9 @@
   MENU_ANCHOR_BUBBLE_ABOVE,
   MENU_ANCHOR_BUBBLE_BELOW,
   MENU_ANCHOR_BUBBLE_TOUCHABLE_ABOVE,
-  MENU_ANCHOR_BUBBLE_TOUCHABLE_LEFT
+  MENU_ANCHOR_BUBBLE_TOUCHABLE_LEFT,
+  // Keep this the last item.
+  MENU_ANCHOR_POSITION_LAST
 };
 
 }  // namespace views