diff --git a/base/process/memory_linux.cc b/base/process/memory_linux.cc
index b6a513b..91eef21 100644
--- a/base/process/memory_linux.cc
+++ b/base/process/memory_linux.cc
@@ -41,105 +41,6 @@
 
 }  // namespace
 
-// TODO(primiano): Once the unified shim is on by default (crbug.com/550886)
-// get rid of the code in this entire #if section. The whole termination-on-OOM
-// logic is implemented in the shim.
-#if !defined(ADDRESS_SANITIZER) && !defined(MEMORY_SANITIZER) && \
-    !defined(THREAD_SANITIZER) && !defined(LEAK_SANITIZER) &&    \
-    !BUILDFLAG(USE_ALLOCATOR_SHIM)
-
-#if defined(LIBC_GLIBC) && !defined(USE_TCMALLOC)
-
-extern "C" {
-void* __libc_malloc(size_t size);
-void* __libc_realloc(void* ptr, size_t size);
-void* __libc_calloc(size_t nmemb, size_t size);
-void* __libc_valloc(size_t size);
-#if PVALLOC_AVAILABLE == 1
-void* __libc_pvalloc(size_t size);
-#endif
-void* __libc_memalign(size_t alignment, size_t size);
-
-// Overriding the system memory allocation functions:
-//
-// For security reasons, we want malloc failures to be fatal. Too much code
-// doesn't check for a NULL return value from malloc and unconditionally uses
-// the resulting pointer. If the first offset that they try to access is
-// attacker controlled, then the attacker can direct the code to access any
-// part of memory.
-//
-// Thus, we define all the standard malloc functions here and mark them as
-// visibility 'default'. This means that they replace the malloc functions for
-// all Chromium code and also for all code in shared libraries. There are tests
-// for this in process_util_unittest.cc.
-//
-// If we are using tcmalloc, then the problem is moot since tcmalloc handles
-// this for us. Thus this code is in a !defined(USE_TCMALLOC) block.
-//
-// If we are testing the binary with AddressSanitizer, we should not
-// redefine malloc and let AddressSanitizer do it instead.
-//
-// We call the real libc functions in this code by using __libc_malloc etc.
-// Previously we tried using dlsym(RTLD_NEXT, ...) but that failed depending on
-// the link order. Since ld.so needs calloc during symbol resolution, it
-// defines its own versions of several of these functions in dl-minimal.c.
-// Depending on the runtime library order, dlsym ended up giving us those
-// functions and bad things happened. See crbug.com/31809
-//
-// This means that any code which calls __libc_* gets the raw libc versions of
-// these functions.
-
-#define DIE_ON_OOM_1(function_name) \
-  void* function_name(size_t) __attribute__ ((visibility("default"))); \
-  \
-  void* function_name(size_t size) { \
-    void* ret = __libc_##function_name(size); \
-    if (ret == NULL && size != 0) \
-      OnNoMemorySize(size); \
-    return ret; \
-  }
-
-#define DIE_ON_OOM_2(function_name, arg1_type) \
-  void* function_name(arg1_type, size_t) \
-      __attribute__ ((visibility("default"))); \
-  \
-  void* function_name(arg1_type arg1, size_t size) { \
-    void* ret = __libc_##function_name(arg1, size); \
-    if (ret == NULL && size != 0) \
-      OnNoMemorySize(size); \
-    return ret; \
-  }
-
-DIE_ON_OOM_1(malloc)
-DIE_ON_OOM_1(valloc)
-#if PVALLOC_AVAILABLE == 1
-DIE_ON_OOM_1(pvalloc)
-#endif
-
-DIE_ON_OOM_2(calloc, size_t)
-DIE_ON_OOM_2(realloc, void*)
-DIE_ON_OOM_2(memalign, size_t)
-
-// posix_memalign has a unique signature and doesn't have a __libc_ variant.
-int posix_memalign(void** ptr, size_t alignment, size_t size)
-    __attribute__ ((visibility("default")));
-
-int posix_memalign(void** ptr, size_t alignment, size_t size) {
-  // This will use the safe version of memalign, above.
-  *ptr = memalign(alignment, size);
-  return 0;
-}
-
-}  // extern C
-
-#else
-
-// TODO(mostynb@opera.com): dlsym dance
-
-#endif  // LIBC_GLIBC && !USE_TCMALLOC
-
-#endif  // !*_SANITIZER
-
 void EnableTerminationOnHeapCorruption() {
   // On Linux, there nothing to do AFAIK.
 }
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index 2d02a4f..9ae1ad4 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -680,10 +680,8 @@
   // coloring.
   // TODO(ccameron): Disable this once color correct rasterization is functional
   // https://crbug.com/701942
-  if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableHDR)) {
-    gfx::ColorSpace::CreateSRGB().GetICCProfile(
-        &resize_params->screen_info.icc_profile);
-  }
+  if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableHDR))
+    resize_params->screen_info.color_space = gfx::ColorSpace::CreateSRGB();
 
   if (delegate_) {
     resize_params->is_fullscreen_granted =
diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/browser/web_contents/web_contents_view_aura.cc
index 58b55db..870aa44 100644
--- a/content/browser/web_contents/web_contents_view_aura.cc
+++ b/content/browser/web_contents/web_contents_view_aura.cc
@@ -711,7 +711,7 @@
   results->depth_per_component = display.depth_per_component();
   results->is_monochrome = display.is_monochrome();
   results->device_scale_factor = display.device_scale_factor();
-  display.color_space().GetICCProfile(&results->icc_profile);
+  results->color_space = display.color_space();
 
   // The Display rotation and the ScreenInfo orientation are not the same
   // angle. The former is the physical display rotation while the later is the
diff --git a/content/browser/web_contents/web_contents_view_mac.mm b/content/browser/web_contents/web_contents_view_mac.mm
index f046623..1062bb5 100644
--- a/content/browser/web_contents/web_contents_view_mac.mm
+++ b/content/browser/web_contents/web_contents_view_mac.mm
@@ -89,7 +89,7 @@
 
   content::ScreenInfo results;
   results.device_scale_factor = static_cast<int>(display.device_scale_factor());
-  display.color_space().GetICCProfile(&results.icc_profile);
+  results.color_space = display.color_space();
   results.depth = display.color_depth();
   results.depth_per_component = display.depth_per_component();
   results.is_monochrome = display.is_monochrome();
diff --git a/content/common/view_messages.h b/content/common/view_messages.h
index fc2ad5b0..d52258a 100644
--- a/content/common/view_messages.h
+++ b/content/common/view_messages.h
@@ -56,12 +56,12 @@
 #include "ui/base/ime/text_input_mode.h"
 #include "ui/base/ime/text_input_type.h"
 #include "ui/base/ui_base_types.h"
+#include "ui/gfx/color_space.h"
 #include "ui/gfx/geometry/point.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/geometry/rect_f.h"
 #include "ui/gfx/geometry/vector2d.h"
 #include "ui/gfx/geometry/vector2d_f.h"
-#include "ui/gfx/icc_profile.h"
 #include "ui/gfx/ipc/color/gfx_param_traits.h"
 #include "ui/gfx/ipc/gfx_param_traits.h"
 #include "ui/gfx/ipc/skia/gfx_skia_param_traits.h"
@@ -164,7 +164,7 @@
 
 IPC_STRUCT_TRAITS_BEGIN(content::ScreenInfo)
   IPC_STRUCT_TRAITS_MEMBER(device_scale_factor)
-  IPC_STRUCT_TRAITS_MEMBER(icc_profile)
+  IPC_STRUCT_TRAITS_MEMBER(color_space)
   IPC_STRUCT_TRAITS_MEMBER(depth)
   IPC_STRUCT_TRAITS_MEMBER(depth_per_component)
   IPC_STRUCT_TRAITS_MEMBER(is_monochrome)
diff --git a/content/public/common/screen_info.cc b/content/public/common/screen_info.cc
index acd02a0..488e368 100644
--- a/content/public/common/screen_info.cc
+++ b/content/public/common/screen_info.cc
@@ -12,11 +12,9 @@
 
 bool ScreenInfo::operator==(const ScreenInfo& other) const {
   return device_scale_factor == other.device_scale_factor &&
-         icc_profile == other.icc_profile &&
-         depth == other.depth &&
+         color_space == other.color_space && depth == other.depth &&
          depth_per_component == other.depth_per_component &&
-         is_monochrome == other.is_monochrome &&
-         rect == other.rect &&
+         is_monochrome == other.is_monochrome && rect == other.rect &&
          available_rect == other.available_rect &&
          orientation_type == other.orientation_type &&
          orientation_angle == other.orientation_angle;
diff --git a/content/public/common/screen_info.h b/content/public/common/screen_info.h
index b758fed..0a2afbb 100644
--- a/content/public/common/screen_info.h
+++ b/content/public/common/screen_info.h
@@ -7,8 +7,8 @@
 
 #include "content/common/content_export.h"
 #include "content/public/common/screen_orientation_values.h"
+#include "ui/gfx/color_space.h"
 #include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/icc_profile.h"
 
 namespace content {
 
@@ -23,8 +23,8 @@
     // pixels.
     float device_scale_factor = 1.f;
 
-    // The ICC profile of the output display.
-    gfx::ICCProfile icc_profile;
+    // The color space of the output display.
+    gfx::ColorSpace color_space = gfx::ColorSpace::CreateSRGB();
 
     // The screen depth in bits per pixel
     uint32_t depth = 0;
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 506a5a1a..74369403 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -2481,7 +2481,7 @@
     const gfx::ICCProfile& icc_profile) {
   ResizeParams params;
   params.screen_info = screen_info_;
-  params.screen_info.icc_profile = icc_profile;
+  params.screen_info.color_space = icc_profile.GetColorSpace();
   params.new_size = size();
   params.visible_viewport_size = visible_viewport_size_;
   params.physical_backing_size = physical_backing_size_;
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index ed2476d7d..0519a5a0 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -1219,7 +1219,7 @@
     compositor_->SetViewportSize(params.physical_backing_size);
     compositor_->setBottomControlsHeight(params.bottom_controls_height);
     compositor_->SetRasterColorSpace(
-        screen_info_.icc_profile.GetParametricColorSpace());
+        screen_info_.color_space.GetParametricApproximation());
     // If surface synchronization is enable, then this will use the provided
     // |local_surface_id_| to submit the next generated CompositorFrame.
     // If the ID is not valid, then the compositor will defer commits until
@@ -1317,7 +1317,7 @@
   compositor_->SetViewportSize(physical_backing_size_);
   OnDeviceScaleFactorChanged();
   compositor_->SetRasterColorSpace(
-      screen_info_.icc_profile.GetParametricColorSpace());
+      screen_info_.color_space.GetParametricApproximation());
   compositor_->SetContentSourceId(current_content_source_id_);
   compositor_->SetLocalSurfaceId(local_surface_id_);
   // For background pages and certain tests, we don't want to trigger
@@ -2168,7 +2168,7 @@
 blink::WebScreenInfo RenderWidget::GetScreenInfo() {
   blink::WebScreenInfo web_screen_info;
   web_screen_info.device_scale_factor = screen_info_.device_scale_factor;
-  web_screen_info.icc_profile = screen_info_.icc_profile;
+  web_screen_info.color_space = screen_info_.color_space;
   web_screen_info.depth = screen_info_.depth;
   web_screen_info.depth_per_component = screen_info_.depth_per_component;
   web_screen_info.is_monochrome = screen_info_.is_monochrome;
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json
index 534c107..3554809 100644
--- a/testing/buildbot/chromium.perf.json
+++ b/testing/buildbot/chromium.perf.json
@@ -24040,65 +24040,6 @@
     "isolated_scripts": [
       {
         "args": [
-          "battor.steady_state",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "battor.steady_state",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "battor.steady_state",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "battor.steady_state.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "battor.trivial_pages",
           "-v",
           "--upload-results",
@@ -24276,65 +24217,6 @@
       },
       {
         "args": [
-          "blink_perf.css",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.css",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "blink_perf.css",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.css.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "blink_perf.dom",
           "-v",
           "--upload-results",
@@ -24394,65 +24276,6 @@
       },
       {
         "args": [
-          "blink_perf.events",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.events",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "blink_perf.events",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.events.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "blink_perf.layout",
           "-v",
           "--upload-results",
@@ -24630,65 +24453,6 @@
       },
       {
         "args": [
-          "blink_perf.shadow_dom",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.shadow_dom",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "blink_perf.shadow_dom",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.shadow_dom.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "blink_perf.svg",
           "-v",
           "--upload-results",
@@ -25278,65 +25042,6 @@
         }
       },
       {
-        "args": [
-          "kraken",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "kraken",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "kraken",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "kraken.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
         "args": [],
         "isolate_name": "load_library_perf_tests",
         "name": "load_library_perf_tests",
@@ -25417,65 +25122,6 @@
       },
       {
         "args": [
-          "media.mse_cases",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.mse_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "media.mse_cases",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.mse_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "media.tough_video_cases",
           "-v",
           "--upload-results",
@@ -25534,65 +25180,6 @@
         }
       },
       {
-        "args": [
-          "media.tough_video_cases_tbmv2",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "media.tough_video_cases_tbmv2",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.tough_video_cases_tbmv2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
         "args": [],
         "isolate_name": "media_perftests",
         "name": "media_perftests",
@@ -25731,65 +25318,6 @@
         }
       },
       {
-        "args": [
-          "memory.long_running_idle_gmail_tbmv2",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.long_running_idle_gmail_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "memory.long_running_idle_gmail_tbmv2",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.long_running_idle_gmail_tbmv2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
         "args": [],
         "isolate_name": "net_perftests",
         "name": "net_perftests",
@@ -26047,65 +25575,6 @@
       },
       {
         "args": [
-          "page_cycler_v2_site_isolation.basic_oopif",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "page_cycler_v2_site_isolation.basic_oopif",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "page_cycler_v2_site_isolation.basic_oopif",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "page_cycler_v2_site_isolation.basic_oopif.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "power.idle_platform",
           "-v",
           "--upload-results",
@@ -26253,65 +25722,6 @@
       },
       {
         "args": [
-          "rasterize_and_record_micro.partial_invalidation",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rasterize_and_record_micro.partial_invalidation",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.partial_invalidation",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rasterize_and_record_micro.partial_invalidation.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "rasterize_and_record_micro.top_25",
           "-v",
           "--upload-results",
@@ -26548,65 +25958,6 @@
       },
       {
         "args": [
-          "smoothness.desktop_tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.desktop_tough_pinch_zoom_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "smoothness.desktop_tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.desktop_tough_pinch_zoom_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "smoothness.gpu_rasterization.tough_filters_cases",
           "-v",
           "--upload-results",
@@ -26666,65 +26017,6 @@
       },
       {
         "args": [
-          "smoothness.gpu_rasterization.tough_path_rendering_cases",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "smoothness.gpu_rasterization.tough_path_rendering_cases",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "smoothness.gpu_rasterization_and_decoding.image_decoding_cases",
           "-v",
           "--upload-results",
@@ -26902,65 +26194,6 @@
       },
       {
         "args": [
-          "smoothness.maps",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.maps",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "smoothness.maps",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.maps.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "smoothness.scrolling_tough_ad_cases",
           "-v",
           "--upload-results",
@@ -27138,65 +26371,6 @@
       },
       {
         "args": [
-          "smoothness.tough_animation_cases",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.tough_animation_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "smoothness.tough_animation_cases",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.tough_animation_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "smoothness.tough_canvas_cases",
           "-v",
           "--upload-results",
@@ -27492,124 +26666,6 @@
       },
       {
         "args": [
-          "smoothness.tough_texture_upload_cases",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.tough_texture_upload_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "smoothness.tough_texture_upload_cases",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.tough_texture_upload_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "smoothness.tough_webgl_ad_cases",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.tough_webgl_ad_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "smoothness.tough_webgl_ad_cases",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.tough_webgl_ad_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "smoothness.tough_webgl_cases",
           "-v",
           "--upload-results",
@@ -27787,65 +26843,6 @@
       },
       {
         "args": [
-          "start_with_ext.warm.blank_page",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "start_with_ext.warm.blank_page",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "start_with_ext.warm.blank_page",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "start_with_ext.warm.blank_page.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "startup.cold.blank_page",
           "-v",
           "--upload-results",
@@ -27905,65 +26902,6 @@
       },
       {
         "args": [
-          "startup.large_profile.cold.blank_page",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "startup.large_profile.cold.blank_page",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "startup.large_profile.cold.blank_page",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "startup.large_profile.cold.blank_page.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "startup.large_profile.warm.blank_page",
           "-v",
           "--upload-results",
@@ -28200,65 +27138,6 @@
       },
       {
         "args": [
-          "system_health.common_desktop",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.common_desktop",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "system_health.common_desktop",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.common_desktop.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "system_health.memory_desktop",
           "-v",
           "--upload-results",
@@ -28318,65 +27197,6 @@
       },
       {
         "args": [
-          "system_health.webview_startup",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.webview_startup",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "system_health.webview_startup",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.webview_startup.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "tab_switching.typical_25",
           "-v",
           "--upload-results",
@@ -28810,65 +27630,6 @@
       },
       {
         "args": [
-          "v8.infinite_scroll_tbmv2",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=release"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.infinite_scroll_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
-          "v8.infinite_scroll_tbmv2",
-          "-v",
-          "--upload-results",
-          "--output-format=chartjson",
-          "--browser=reference",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.infinite_scroll_tbmv2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "gpu": "102b:0534",
-              "id": "build152-m1",
-              "os": "Ubuntu-14.04",
-              "pool": "Chrome-perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 3600
-        }
-      },
-      {
-        "args": [
           "v8.runtime_stats.top_25",
           "-v",
           "--upload-results",
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 b/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
index 3b30542..938bd97f 100644
--- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
+++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
@@ -104,6 +104,9 @@
 Bug(none) virtual/windows-directwrite/ [ Skip ]
 Bug(none) virtual/without-smil/ [ Skip ]
 
+# Fail on SPv1, but succeed on SPv2
+crbug.com/472330 fast/borders/border-image-outset-split-inline-vertical-lr.html [ Pass ]
+
 Bug(none) paint/transparency/compositing-alpha-fold-crash.html [ Failure ]
 Bug(none) paint/invalidation/clip-flex-text.html [ Pass Failure ]
 Bug(none) virtual/new-remote-playback-pipeline/media/controls/video-controls-with-cast-rendering.html [ Failure ]
@@ -466,7 +469,6 @@
 Bug(none) fast/block/float/nested-clearance.html [ Failure ]
 Bug(none) fast/block/float/relative-painted-twice.html [ Failure ]
 Bug(none) fast/block/float/shrink-to-avoid-float-complexity.html [ Failure ]
-crbug.com/667946 fast/block/float/float-change-composited-scrolling.html [ Failure ]
 Bug(none) fast/block/margin-collapse/103.html [ Failure ]
 Bug(none) fast/block/margin-collapse/104.html [ Failure ]
 Bug(none) fast/block/margin-collapse/empty-clear-blocks.html [ Failure ]
@@ -561,6 +563,7 @@
 crbug.com/667946 fast/events/autoscroll-disabled-in-fix.html [ Skip ]
 Bug(none) fast/events/gesture-pinch-zoom-scroll-bubble.html [ Failure ]
 Bug(none) fast/events/keyboard-scroll-by-page.html [ Failure ]
+Bug(none) fast/events/platform-wheelevent-in-scrolling-div.html [ Failure ]
 Bug(none) fast/events/platform-wheelevent-paging-x-in-scrolling-page.html [ Failure ]
 Bug(none) fast/events/platform-wheelevent-paging-xy-in-scrolling-page.html [ Failure ]
 Bug(none) fast/events/platform-wheelevent-paging-y-in-scrolling-page.html [ Failure ]
@@ -1246,7 +1249,6 @@
 Bug(none) paint/invalidation/selection/repaint-rect-for-vertical-writing-mode-with-positioned-root.html [ Failure ]
 Bug(none) paint/invalidation/selection/selection-within-composited-scroller.html [ Failure ]
 Bug(none) paint/invalidation/subpixel-offset-scaled-transform.html [ Failure ]
-Bug(none) paint/invalidation/subpixel-shadow-included-in-invalidation.html [ Failure ]
 Bug(none) paint/invalidation/subtree-root-clip.html [ Failure ]
 Bug(none) paint/invalidation/subtree-root-skipped.html [ Failure ]
 Bug(none) paint/invalidation/svg/absolute-sized-content-with-resources.xhtml [ Failure ]
@@ -1265,7 +1267,6 @@
 Bug(none) paint/invalidation/svg/foreign-object-repaint.svg [ Failure ]
 Bug(none) paint/invalidation/svg/hairline-stroke-squarecap.svg [ Failure ]
 Bug(none) paint/invalidation/svg/image-animation-with-zoom.html [ Pass Failure ]
-Bug(none) paint/invalidation/svg/image-href-change.svg [ Failure ]
 Bug(none) paint/invalidation/svg/image-with-clip-path.svg [ Failure ]
 Bug(none) paint/invalidation/svg/inner-svg-change-viewBox-contract.svg [ Failure ]
 Bug(none) paint/invalidation/svg/inner-svg-change-viewBox.svg [ Failure ]
@@ -1286,7 +1287,6 @@
 Bug(none) paint/invalidation/svg/repaint-in-scrolled-view.html [ Failure ]
 Bug(none) paint/invalidation/svg/resize-svg-invalidate-children-2.html [ Failure ]
 Bug(none) paint/invalidation/svg/resize-svg-invalidate-children.html [ Failure ]
-Bug(none) paint/invalidation/svg/resource-client-removal.svg [ Failure ]
 Bug(none) paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem.html [ Failure ]
 Bug(none) paint/invalidation/svg/shape-transform-change.html [ Failure ]
 Bug(none) paint/invalidation/svg/tabgroup.svg [ Failure ]
@@ -1335,18 +1335,10 @@
 Bug(none) paint/invalidation/video-unmute-repaint.html [ Failure ]
 Bug(none) paint/invalidation/view-background-from-body-2.html [ Failure ]
 Bug(none) paint/invalidation/window-resize-background-image-fixed-centered-composited.html [ Failure ]
-Bug(none) paint/invalidation/window-resize-background-image-fixed-centered.html [ Failure ]
-Bug(none) paint/invalidation/window-resize-background-image-generated.html [ Failure ]
-Bug(none) paint/invalidation/window-resize-background-image-non-fixed.html [ Failure ]
-Bug(none) paint/invalidation/window-resize-centered-inline-under-fixed-pos.html [ Failure ]
 Bug(none) paint/invalidation/window-resize-frameset.html [ Failure ]
 Bug(none) paint/invalidation/window-resize-media-query.html [ Failure ]
 Bug(none) paint/invalidation/window-resize-percent-html.html [ Failure ]
-Bug(none) paint/invalidation/window-resize-percent-width-height.html [ Failure ]
-Bug(none) paint/invalidation/window-resize-positioned-bottom.html [ Failure ]
-Bug(none) paint/invalidation/window-resize-positioned-percent-top.html [ Failure ]
 Bug(none) paint/invalidation/window-resize-vertical-writing-mode.html [ Failure ]
-Bug(none) paint/invalidation/window-resize-viewport-percent.html [ Failure ]
 Bug(none) paint/masks/fieldset-mask.html [ Failure ]
 Bug(none) paint/overflow/fixed-background-scroll-in-frame.html [ Failure ]
 Bug(none) paint/pagination/pagination-change-clip-crash.html [ Failure ]
@@ -1527,14 +1519,10 @@
 crbug.com/644358 compositing/iframes/connect-compositing-iframe-delayed.html [ Failure ]
 crbug.com/644358 compositing/iframes/connect-compositing-iframe.html [ Failure ]
 crbug.com/644358 compositing/iframes/enter-compositing-iframe.html [ Failure ]
-crbug.com/644358 compositing/iframes/repaint-after-losing-scrollbars.html [ Failure ]
 crbug.com/644358 compositing/squashing/squashed-layer-loses-graphicslayer.html [ Failure ]
 crbug.com/644358 fast/canvas/canvas-composite-video-shadow.html [ Failure ]
 crbug.com/644358 fast/canvas/imagebitmap/transferFromImageBitmap-no-alpha.html [ Failure ]
 crbug.com/644358 fast/css3-text/css3-text-decoration/repaint/repaint-text-decoration-style.html [ Failure ]
-crbug.com/644358 fast/forms/relayout-shifts-inner-editor.html [ Failure ]
-crbug.com/644358 images/color-profile-munsell-adobe-to-srgb.html [ Failure ]
-crbug.com/644358 images/color-profile-munsell-srgb-to-srgb.html [ Failure ]
 crbug.com/644358 paint/invalidation/justify-items-overflow-change.html [ Failure ]
 crbug.com/644358 paint/invalidation/justify-self-overflow-change.html [ Failure ]
 crbug.com/644358 paint/invalidation/multi-subsequence-scrolled.html [ Failure ]
@@ -1552,28 +1540,17 @@
 crbug.com/644358 paint/invalidation/table/collapsed-border-current-color.html [ Crash ]
 crbug.com/644358 paint/invalidation/video-paint-invalidation.html [ Crash ]
 crbug.com/644358 svg/animations/animateMotion_changingPath.html [ Failure ]
-crbug.com/644358 svg/custom/object-current-scale.html [ Failure ]
-crbug.com/644358 svg/dynamic-updates/SVGTextElement-dom-transform-attr.html [ Failure ]
-crbug.com/644358 svg/dynamic-updates/SVGTextElement-svgdom-transform-prop.html [ Failure ]
-crbug.com/644358 svg/dynamic-updates/SVGUseElement-svgdom-href1-prop.html [ Failure ]
-crbug.com/644358 svg/dynamic-updates/SVGUseElement-dom-href1-attr.html [ Failure ]
-crbug.com/644358 svg/transforms/change-transform-to-none-shape.html [ Failure ]
-crbug.com/644358 svg/transforms/change-transform-to-none-text.html [ Failure ]
 
 Bug(none) compositing/layer-creation/main-thread-scrolling-for-non-composited-fixed-position-if-overflow-hidden.html [ Failure ]
 Bug(none) compositing/layer-creation/main-thread-scrolling-for-non-composited-fixed-position.html [ Failure ]
-Bug(none) compositing/squashing/invalidations-with-large-negative-margin-inline-content.html [ Failure ]
 Bug(none) fast/dom/vertical-scrollbar-in-rtl.html [ Failure ]
 Bug(none) fast/events/continuous-platform-wheelevent-in-scrolling-div.html [ Failure ]
-Bug(none) fast/events/middleClickAutoscroll-click-hyperlink.html [ Failure ]
-Bug(none) fast/events/platform-wheelevent-in-scrolling-div.html [ Failure ]
 Bug(none) fast/events/platform-wheelevent-paging-x-in-scrolling-div.html [ Failure ]
 Bug(none) fast/events/platform-wheelevent-paging-xy-in-scrolling-div.html [ Failure ]
 Bug(none) fast/events/platform-wheelevent-paging-y-in-scrolling-div.html [ Failure ]
 Bug(none) fast/events/scroll-in-scaled-page-with-overflow-hidden.html [ Failure ]
 Bug(none) fast/events/scrollbar-double-click.html [ Failure ]
 Bug(none) fast/events/wheel/wheelevent-basic.html [ Failure ]
-Bug(none) fast/events/wheel/wheelevent-in-scrolling-div.html [ Failure ]
 Bug(none) fast/forms/suggestion-picker/date-suggestion-picker-mouse-operations.html [ Failure ]
 Bug(none) fast/forms/suggestion-picker/datetimelocal-suggestion-picker-mouse-operations.html [ Failure ]
 Bug(none) fast/forms/suggestion-picker/month-suggestion-picker-mouse-operations.html [ Failure ]
@@ -1583,14 +1560,7 @@
 Bug(none) fast/multicol/nested-with-clipped-first-column.html [ Failure ]
 Bug(none) fast/scrolling/absolute-position-behind-scrollbar.html [ Failure ]
 Bug(none) fast/scrolling/fixed-position-behind-scrollbar.html [ Failure Timeout ]
-Bug(none) fast/events/middleClickAutoscroll-in-iframe.html [ Timeout ]
-Bug(none) fast/events/middleClickAutoscroll-click.html [ Timeout ]
 Bug(none) fast/events/remove-child-onscroll.html [ Timeout ]
-Bug(none) fast/events/middleClickAutoscroll-drag.html [ Timeout ]
-Bug(none) fast/events/middleClickAutoscroll-nested-divs-forbidden.html [ Timeout ]
-Bug(none) fast/events/middleClickAutoscroll-nested-divs.html [ Timeout ]
-Bug(none) fast/events/middleClickAutoscroll-event-fired.html [ Timeout ]
-Bug(none) fast/events/middleClickAutoscroll-latching.html [ Timeout ]
 Bug(none) fast/events/mouse-wheel-main-frame-scroll.html [ Timeout ]
 Bug(none) fast/scrolling/hover-during-scroll.html [ Timeout ]
 
@@ -1705,11 +1675,7 @@
 crbug.com/589265 css3/blending/mix-blend-mode-isolated-group-1.html [ Failure ]
 crbug.com/589265 css3/blending/mix-blend-mode-isolated-group-2.html [ Failure ]
 crbug.com/589265 css3/blending/mix-blend-mode-isolated-group-3.html [ Failure ]
-crbug.com/589265 css3/blending/svg-blend-color.html [ Failure ]
 crbug.com/589265 css3/blending/svg-blend-exclusion.html [ Failure ]
-crbug.com/589265 css3/blending/svg-blend-hue.html [ Failure ]
-crbug.com/589265 css3/blending/svg-blend-luminosity.html [ Failure ]
-crbug.com/589265 css3/blending/svg-blend-saturation.html [ Failure ]
 crbug.com/589265 css3/blending/svg-blend-screen.html [ Failure ]
 crbug.com/589265 fast/css/ZeroOpacityLayers.html [ Failure ]
 crbug.com/589265 fast/css/ZeroOpacityLayers2.html [ Failure ]
@@ -1789,8 +1755,6 @@
 crbug.com/692310 virtual/threaded/animations/composited-animations-rotate-zero-degrees.html [ Failure ]
 
 Bug(none) virtual/threaded/animations/3d/change-transform-in-end-event.html [ Failure ]
-Bug(none) virtual/threaded/animations/composited-pseudo-element-animation.html [ Failure ]
-Bug(none) virtual/threaded/transitions/transition-end-event-rendering.html [ Failure ]
 Bug(none) virtual/threaded/animations/svg-attribute-composition/svg-startOffset-composition.html [ Failure ]
 
 # Compositor Worker logic has not yet been fully ported to SPv2.
@@ -1820,7 +1784,6 @@
 # The following debug crashes have not been triaged.
 crbug.com/702805 css3/blending/svg-blend-layer-filter.html [ Crash ]
 crbug.com/702805 virtual/threaded/compositing/visibility/overlays-persist-on-navigation.html [ Crash ]
-crbug.com/702805 svg/text/removing-id-on-path.html [ Failure ]
 crbug.com/702805 svg/filters/feImage-self-referencing.html [ Crash ]
 crbug.com/702805 svg/filters/feImage-self-and-other-referencing.html [ Crash ]
 crbug.com/702805 fast/forms/select-popup/popup-menu-appearance-coarse.html [ Crash Timeout ]
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 54d501b4..b410d9a0 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -48,20 +48,17 @@
 # --- End SPV2 Tests ---
 
 ########## Ref tests can't be rebaselined ##########
-crbug.com/504613 crbug.com/524248 paint/images/image-backgrounds-not-antialiased.html [ Failure ]
-crbug.com/504613 crbug.com/524248 virtual/disable-spinvalidation/paint/images/image-backgrounds-not-antialiased.html [ Failure ]
+crbug.com/504613 crbug.com/524248 [ Mac ] paint/images/image-backgrounds-not-antialiased.html [ Failure ]
+crbug.com/504613 crbug.com/524248 [ Mac ] virtual/disable-spinvalidation/paint/images/image-backgrounds-not-antialiased.html [ Failure ]
 
-crbug.com/619103 paint/invalidation/background-resize-width.html [ Failure ]
-crbug.com/619103 virtual/disable-spinvalidation/paint/invalidation/background-resize-width.html [ Failure ]
+crbug.com/619103 paint/invalidation/background-resize-width.html [ Failure Pass ]
+crbug.com/619103 virtual/disable-spinvalidation/paint/invalidation/background-resize-width.html [ Failure Pass ]
 
 crbug.com/627844 virtual/gpu/fast/canvas/canvas-createImageBitmap-colorClamping.html [ Failure ]
 
 # Scanlines off by 1, but code path should be the same
 crbug.com/644433 virtual/gpu/fast/canvas/OffscreenCanvas-2d-pattern-in-worker.html [ Failure ]
 
-crbug.com/667045 paint/invalidation/table/composited-cell-collapsed-border-add-anonymous.html [ Crash ]
-crbug.com/667045 virtual/disable-spinvalidation/paint/invalidation/table/composited-cell-collapsed-border-add-anonymous.html [ Crash ]
-
 crbug.com/702006 paint/invalidation/compositing/scrolling-neg-z-index-descendants-should-cause-repaint.html [ Failure ]
 crbug.com/702006 virtual/disable-spinvalidation/paint/invalidation/compositing/scrolling-neg-z-index-descendants-should-cause-repaint.html [ Failure ]
 
@@ -1514,9 +1511,6 @@
 # These need a rebaseline due crbug.com/504745 on Windows when they are activated again.
 crbug.com/521124 crbug.com/410145 [ Win7 ] fast/css/font-weight-1.html [ Pass Failure ]
 
-# Temporary, until we stop use_system_harfbuzz on Linux including non-official builds
-crbug.com/462689 [ Linux ] fast/text/unicode-variation-selector.html [ Failure ]
-
 # Disabled briefly until test runner support lands.
 crbug.com/479533 accessibility/show-context-menu.html [ Skip ]
 crbug.com/479533 accessibility/show-context-menu-shadowdom.html [ Skip ]
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng/fast/block/float/overhanging-float-crashes-when-sibling-becomes-formatting-context-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng/fast/block/float/overhanging-float-crashes-when-sibling-becomes-formatting-context-expected.txt
index 78eec79..f04680a 100644
--- a/third_party/WebKit/LayoutTests/virtual/layout_ng/fast/block/float/overhanging-float-crashes-when-sibling-becomes-formatting-context-expected.txt
+++ b/third_party/WebKit/LayoutTests/virtual/layout_ng/fast/block/float/overhanging-float-crashes-when-sibling-becomes-formatting-context-expected.txt
@@ -1,2 +1,2 @@
-crbug.com/459533: Don't crash when changing an element to one that interacts with other floats to one that can't.  
+crbug.com/459533: Don't crash when changing an element to one that interacts with other floats to one that can't.
 
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng/fast/block/float/selection-gap-clip-out-tiger-crash-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng/fast/block/float/selection-gap-clip-out-tiger-crash-expected.txt
new file mode 100644
index 0000000..04863308
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/virtual/layout_ng/fast/block/float/selection-gap-clip-out-tiger-crash-expected.txt
@@ -0,0 +1,29 @@
+Simply do a select all to see the crash
+C
+D
+E
+F
+G
+H
+I
+K
+L
+M
+N
+O
+PQ
+R
+ST
+U
+VW
+X
+Y
+ZAA
+BB
+CCDD
+EE
+FFGG
+HH
+IIJJ
+KK
+END!
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng/fast/block/margin-collapse/self-collapsing-block-discards-margin-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng/fast/block/margin-collapse/self-collapsing-block-discards-margin-expected.txt
deleted file mode 100644
index 9229098..0000000
--- a/third_party/WebKit/LayoutTests/virtual/layout_ng/fast/block/margin-collapse/self-collapsing-block-discards-margin-expected.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-crbug.com/479275: Don't ASSERT when a self-collapsing block discards its margin 
-
diff --git a/third_party/WebKit/Source/core/css/CSSProperties.json5 b/third_party/WebKit/Source/core/css/CSSProperties.json5
index f1e73d0d..fa5f10b 100644
--- a/third_party/WebKit/Source/core/css/CSSProperties.json5
+++ b/third_party/WebKit/Source/core/css/CSSProperties.json5
@@ -950,6 +950,7 @@
       field_group: "rare-non-inherited",
       default_value: "nullptr",
       wrapper_pointer_name: "RefPtr",
+      include_paths: ["core/style/ShadowList.h"],
     },
     {
       name: "box-sizing",
@@ -1216,6 +1217,7 @@
       field_template: "external",
       default_value: "Length(kAuto)",
       field_group: "rare-non-inherited->flexible-box",
+      include_paths: ["platform/Length.h"],
     },
     {
       name: "flex-direction",
@@ -1284,6 +1286,7 @@
       field_template: "external",
       default_value: "Vector<GridTrackSize>(1, GridTrackSize(Length(kAuto)))",
       field_group: "rare-non-inherited->grid",
+      include_paths: ["platform/wtf/Vector.h", "core/style/GridTrackSize.h"],
     },
     {
       name: "grid-auto-flow",
@@ -1306,6 +1309,7 @@
       field_template: "external",
       default_value: "Vector<GridTrackSize>(1, GridTrackSize(Length(kAuto)))",
       field_group: "rare-non-inherited->grid",
+      include_paths: ["platform/wtf/Vector.h", "core/style/GridTrackSize.h"],
     },
     {
       name: "grid-column-end",
@@ -1316,6 +1320,7 @@
       field_template: "external",
       default_value: "GridPosition()",
       field_group: "rare-non-inherited->grid-item",
+      include_paths: ["core/style/GridPosition.h"],
     },
     {
       name: "grid-column-gap",
@@ -1325,6 +1330,7 @@
       field_template: "external",
       default_value: "Length(kFixed)",
       field_group: "rare-non-inherited->grid",
+      include_paths: ["platform/Length.h"],
     },
     {
       name: "grid-column-start",
@@ -1335,6 +1341,7 @@
       field_template: "external",
       default_value: "GridPosition()",
       field_group: "rare-non-inherited->grid-item",
+      include_paths: ["core/style/GridPosition.h"],
     },
     {
       name: "grid-row-end",
@@ -1345,6 +1352,7 @@
       field_template: "external",
       default_value: "GridPosition()",
       field_group: "rare-non-inherited->grid-item",
+      include_paths: ["core/style/GridPosition.h"],
     },
     {
       name: "grid-row-gap",
@@ -1354,6 +1362,7 @@
       field_template: "external",
       default_value: "Length(kFixed)",
       field_group: "rare-non-inherited->grid",
+      include_paths: ["platform/Length.h"],
     },
     {
       name: "grid-row-start",
@@ -1364,6 +1373,7 @@
       field_template: "external",
       default_value: "GridPosition()",
       field_group: "rare-non-inherited->grid-item",
+      include_paths: ["core/style/GridPosition.h"],
     },
     {
       name: "grid-template-areas",
@@ -1380,6 +1390,7 @@
       type_name: "Vector<GridTrackSize>",
       field_group: "rare-non-inherited->grid",
       default_value: "Vector<GridTrackSize>()",
+      include_paths: ["platform/wtf/Vector.h", "core/style/GridTrackSize.h"],
     },
     {
       name: "grid-template-rows",
@@ -1390,6 +1401,7 @@
       type_name: "Vector<GridTrackSize>",
       field_group: "rare-non-inherited->grid",
       default_value: "Vector<GridTrackSize>()",
+      include_paths: ["platform/wtf/Vector.h", "core/style/GridTrackSize.h"],
     },
     {
       name: "height",
@@ -1548,6 +1560,7 @@
       wrapper_pointer_name: "Persistent",
       default_value: "nullptr",
       field_group: "rare-inherited",
+      include_paths: ["core/style/StyleImage.h"],
     },
     {
       name: "list-style-position",
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder.cc
index 1038485..8533bd9 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder.cc
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder.cc
@@ -21,8 +21,7 @@
   // lines and collapsible spaces in Phase I.
   // [1] https://drafts.csswg.org/css-text-3/#line-break-transform
   // [2] https://drafts.csswg.org/css-text-3/#white-space-phase-2
-  unsigned next_start_offset = text_.length();
-  RemoveTrailingCollapsibleSpaceIfExists(&next_start_offset);
+  RemoveTrailingCollapsibleSpaceIfExists();
 
   return text_.ToString();
 }
@@ -174,7 +173,8 @@
     }
 
     if (last_collapsible_space_ == CollapsibleSpace::kNewline) {
-      RemoveTrailingCollapsibleNewlineIfNeeded(&start_offset, string, i, style);
+      RemoveTrailingCollapsibleNewlineIfNeeded(string, i, style);
+      start_offset = std::min(start_offset, text_.length());
     }
 
     size_t end_of_non_space = string.Find(IsCollapsibleSpace, i + 1);
@@ -240,8 +240,7 @@
 void NGInlineItemsBuilder::AppendForcedBreak(const ComputedStyle* style,
                                              LayoutObject* layout_object) {
   // Remove collapsible spaces immediately before a preserved newline.
-  unsigned start_offset = text_.length();
-  RemoveTrailingCollapsibleSpaceIfExists(&start_offset);
+  RemoveTrailingCollapsibleSpaceIfExists();
 
   Append(NGInlineItem::kControl, kNewlineCharacter, style, layout_object);
 
@@ -262,15 +261,23 @@
   last_collapsible_space_ = CollapsibleSpace::kNone;
 }
 
-void NGInlineItemsBuilder::Append(NGInlineItem::NGInlineItemType type,
-                                  const ComputedStyle* style,
-                                  LayoutObject* layout_object) {
+void NGInlineItemsBuilder::AppendOpaque(NGInlineItem::NGInlineItemType type,
+                                        UChar character) {
+  text_.Append(character);
+  unsigned end_offset = text_.length();
+  AppendItem(items_, type, end_offset - 1, end_offset, nullptr, nullptr);
+}
+
+void NGInlineItemsBuilder::AppendOpaque(NGInlineItem::NGInlineItemType type,
+                                        const ComputedStyle* style,
+                                        LayoutObject* layout_object) {
   unsigned end_offset = text_.length();
   AppendItem(items_, type, end_offset, end_offset, style, layout_object);
 }
 
+// Removes the collapsible newline at the end of |text_| if exists and the
+// removal conditions met.
 void NGInlineItemsBuilder::RemoveTrailingCollapsibleNewlineIfNeeded(
-    unsigned* next_start_offset,
     const String& after,
     unsigned after_index,
     const ComputedStyle* after_style) {
@@ -287,57 +294,67 @@
   }
 
   if (ShouldRemoveNewline(text_, before_style, after, after_index, after_style))
-    RemoveTrailingCollapsibleSpace(next_start_offset);
+    RemoveTrailingCollapsibleSpace(text_.length() - 1);
 }
 
-void NGInlineItemsBuilder::RemoveTrailingCollapsibleSpaceIfExists(
-    unsigned* next_start_offset) {
-  if (last_collapsible_space_ != CollapsibleSpace::kNone && !text_.IsEmpty() &&
-      text_[text_.length() - 1] == kSpaceCharacter)
-    RemoveTrailingCollapsibleSpace(next_start_offset);
+// Removes the collapsible space at the end of |text_| if exists.
+void NGInlineItemsBuilder::RemoveTrailingCollapsibleSpaceIfExists() {
+  if (last_collapsible_space_ == CollapsibleSpace::kNone || text_.IsEmpty())
+    return;
+
+  // Look for the last space character since characters that are opaque to
+  // whitespace collapsing may be appended.
+  for (unsigned i = text_.length(); i;) {
+    UChar ch = text_[--i];
+    if (ch == kSpaceCharacter) {
+      RemoveTrailingCollapsibleSpace(i);
+      return;
+    }
+
+    // AppendForcedBreak sets CollapsibleSpace::kSpace to ignore leading
+    // spaces. In this case, the trailing collapsible space does not exist.
+    if (ch == kNewlineCharacter)
+      return;
+  }
+  NOTREACHED();
 }
 
-void NGInlineItemsBuilder::RemoveTrailingCollapsibleSpace(
-    unsigned* next_start_offset) {
+// Removes the collapsible space at the specified index.
+void NGInlineItemsBuilder::RemoveTrailingCollapsibleSpace(unsigned index) {
   DCHECK_NE(last_collapsible_space_, CollapsibleSpace::kNone);
   DCHECK(!text_.IsEmpty());
-  DCHECK_EQ(text_[text_.length() - 1], kSpaceCharacter);
+  DCHECK_EQ(text_[index], kSpaceCharacter);
 
-  unsigned new_size = text_.length() - 1;
-  text_.Resize(new_size);
+  text_.erase(index);
   last_collapsible_space_ = CollapsibleSpace::kNone;
 
-  if (*next_start_offset <= new_size)
-    return;
-  *next_start_offset = new_size;
-
-  // Adjust the last item if the removed space is already appended.
+  // Adjust items if the removed space is already included.
   for (unsigned i = items_->size(); i > 0;) {
     NGInlineItem& item = (*items_)[--i];
-    DCHECK_EQ(item.EndOffset(), new_size + 1);
-    if (item.Type() == NGInlineItem::kText) {
-      DCHECK_GE(item.Length(), 1u);
-      if (item.Length() > 1)
-        item.SetEndOffset(new_size);
-      else
+    if (index >= item.EndOffset())
+      return;
+    if (item.StartOffset() <= index) {
+      if (item.Length() == 1) {
+        DCHECK_EQ(item.StartOffset(), index);
+        DCHECK_EQ(item.Type(), NGInlineItem::kText);
         items_->erase(i);
-      break;
+      } else {
+        item.SetEndOffset(item.EndOffset() - 1);
+      }
+      return;
     }
-    if (!item.Length()) {
-      // Trailing spaces can be removed across non-character items.
-      item.SetOffset(new_size, new_size);
-      continue;
-    }
-    NOTREACHED();
-    break;
+
+    // Trailing spaces can be removed across non-character items.
+    // Adjust their offsets if after the removed index.
+    item.SetOffset(item.StartOffset() - 1, item.EndOffset() - 1);
   }
 }
 
 void NGInlineItemsBuilder::AppendBidiControl(const ComputedStyle* style,
                                              UChar ltr,
                                              UChar rtl) {
-  Append(NGInlineItem::kBidiControl,
-         style->Direction() == TextDirection::kRtl ? rtl : ltr);
+  AppendOpaque(NGInlineItem::kBidiControl,
+               IsLtr(style->Direction()) ? ltr : rtl);
 }
 
 void NGInlineItemsBuilder::EnterBlock(const ComputedStyle* style) {
@@ -389,11 +406,11 @@
       Enter(node, kPopDirectionalIsolateCharacter);
       break;
     case UnicodeBidi::kPlaintext:
-      Append(NGInlineItem::kBidiControl, kFirstStrongIsolateCharacter);
+      AppendOpaque(NGInlineItem::kBidiControl, kFirstStrongIsolateCharacter);
       Enter(node, kPopDirectionalIsolateCharacter);
       break;
     case UnicodeBidi::kIsolateOverride:
-      Append(NGInlineItem::kBidiControl, kFirstStrongIsolateCharacter);
+      AppendOpaque(NGInlineItem::kBidiControl, kFirstStrongIsolateCharacter);
       AppendBidiControl(style, kLeftToRightOverrideCharacter,
                         kRightToLeftOverrideCharacter);
       Enter(node, kPopDirectionalIsolateCharacter);
@@ -401,7 +418,7 @@
       break;
   }
 
-  Append(NGInlineItem::kOpenTag, style, node);
+  AppendOpaque(NGInlineItem::kOpenTag, style, node);
 }
 
 void NGInlineItemsBuilder::Enter(LayoutObject* node, UChar character_to_exit) {
@@ -416,14 +433,14 @@
 void NGInlineItemsBuilder::ExitInline(LayoutObject* node) {
   DCHECK(node);
 
-  Append(NGInlineItem::kCloseTag, node->Style(), node);
+  AppendOpaque(NGInlineItem::kCloseTag, node->Style(), node);
 
   Exit(node);
 }
 
 void NGInlineItemsBuilder::Exit(LayoutObject* node) {
   while (!exits_.IsEmpty() && exits_.back().node == node) {
-    Append(NGInlineItem::kBidiControl, exits_.back().character);
+    AppendOpaque(NGInlineItem::kBidiControl, exits_.back().character);
     exits_.pop_back();
   }
 }
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder.h b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder.h
index 9f295706..87195e47 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder.h
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder.h
@@ -63,10 +63,16 @@
               const ComputedStyle* = nullptr,
               LayoutObject* = nullptr);
 
-  // Append a non-character item.
-  void Append(NGInlineItem::NGInlineItemType,
-              const ComputedStyle* = nullptr,
-              LayoutObject* = nullptr);
+  // Append a character.
+  // The character is opaque to space collapsing; i.e., spaces before this
+  // character and after this character can collapse as if this character does
+  // not exist.
+  void AppendOpaque(NGInlineItem::NGInlineItemType, UChar);
+
+  // Append a non-character item that is opaque to space collapsing.
+  void AppendOpaque(NGInlineItem::NGInlineItemType,
+                    const ComputedStyle* = nullptr,
+                    LayoutObject* = nullptr);
 
   // Append a Bidi control character, for LTR or RTL depends on the style.
   void AppendBidiControl(const ComputedStyle*, UChar ltr, UChar rtl);
@@ -112,12 +118,9 @@
   // This function determines whether to add the newline or ignore.
   void ProcessPendingNewline(const String&, const ComputedStyle*);
 
-  // Removes the collapsible space at the end of |text_| if exists.
-  void RemoveTrailingCollapsibleSpaceIfExists(unsigned*);
-  void RemoveTrailingCollapsibleSpace(unsigned*);
-
-  void RemoveTrailingCollapsibleNewlineIfNeeded(unsigned*,
-                                                const String&,
+  void RemoveTrailingCollapsibleSpaceIfExists();
+  void RemoveTrailingCollapsibleSpace(unsigned);
+  void RemoveTrailingCollapsibleNewlineIfNeeded(const String&,
                                                 unsigned,
                                                 const ComputedStyle*);
 
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder_test.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder_test.cc
index dac3a12..49323cc 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder_test.cc
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder_test.cc
@@ -220,6 +220,18 @@
          "when both sides are Wide.";
 }
 
+TEST_F(NGInlineItemsBuilderTest, OpaqueToSpaceCollapsing) {
+  NGInlineItemsBuilder builder(&items_);
+  builder.Append("Hello ", style_.Get());
+  builder.AppendOpaque(NGInlineItem::kBidiControl,
+                       kFirstStrongIsolateCharacter);
+  builder.Append(" ", style_.Get());
+  builder.AppendOpaque(NGInlineItem::kBidiControl,
+                       kFirstStrongIsolateCharacter);
+  builder.Append(" World", style_.Get());
+  EXPECT_EQ(String(u"Hello \u2068\u2068World"), builder.ToString());
+}
+
 TEST_F(NGInlineItemsBuilderTest, CollapseAroundReplacedElement) {
   NGInlineItemsBuilder builder(&items_);
   builder.Append("Hello ", style_.Get());
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node.cc
index 6751cb3..d508b03 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node.cc
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node.cc
@@ -230,12 +230,10 @@
       // Add floats and positioned objects in the same way as atomic inlines.
       // Because these objects need positions, they will be handled in
       // NGInlineLayoutAlgorithm.
-      builder->Append(NGInlineItem::kFloating, kObjectReplacementCharacter,
-                      nullptr, node);
+      builder->AppendOpaque(NGInlineItem::kFloating, nullptr, node);
 
     } else if (node->IsOutOfFlowPositioned()) {
-      builder->Append(NGInlineItem::kOutOfFlowPositioned,
-                      kObjectReplacementCharacter, nullptr, node);
+      builder->AppendOpaque(NGInlineItem::kOutOfFlowPositioned, nullptr, node);
 
     } else if (node->IsAtomicInlineLevel()) {
       // For atomic inlines add a unicode "object replacement character" to
diff --git a/third_party/WebKit/Source/core/loader/resource/ImageResource.cpp b/third_party/WebKit/Source/core/loader/resource/ImageResource.cpp
index 2124f45c..472011e 100644
--- a/third_party/WebKit/Source/core/loader/resource/ImageResource.cpp
+++ b/third_party/WebKit/Source/core/loader/resource/ImageResource.cpp
@@ -461,6 +461,7 @@
 bool ImageResource::ShouldShowPlaceholder() const {
   switch (placeholder_option_) {
     case PlaceholderOption::kShowAndReloadPlaceholderAlways:
+    case PlaceholderOption::kShowAndDoNotReloadPlaceholder:
       return true;
     case PlaceholderOption::kReloadPlaceholderOnDecodeError:
     case PlaceholderOption::kDoNotReloadPlaceholder:
@@ -476,6 +477,7 @@
       return ErrorOccurred();
     case PlaceholderOption::kReloadPlaceholderOnDecodeError:
       return GetStatus() == ResourceStatus::kDecodeError;
+    case PlaceholderOption::kShowAndDoNotReloadPlaceholder:
     case PlaceholderOption::kDoNotReloadPlaceholder:
       return false;
   }
@@ -518,6 +520,8 @@
   // The reloaded image should not use any previews transformations.
   WebURLRequest::PreviewsState previews_state_for_reload =
       WebURLRequest::kPreviewsNoTransform;
+  WebURLRequest::PreviewsState old_previews_state =
+      GetResourceRequest().GetPreviewsState();
 
   if (policy == kReloadIfNeeded && (GetResourceRequest().GetPreviewsState() &
                                     WebURLRequest::kClientLoFiOn)) {
@@ -532,7 +536,13 @@
 
   if (placeholder_option_ != PlaceholderOption::kDoNotReloadPlaceholder)
     ClearRangeRequestHeader();
-  placeholder_option_ = PlaceholderOption::kDoNotReloadPlaceholder;
+
+  if (old_previews_state & WebURLRequest::kClientLoFiOn &&
+      policy != kReloadAlways) {
+    placeholder_option_ = PlaceholderOption::kShowAndDoNotReloadPlaceholder;
+  } else {
+    placeholder_option_ = PlaceholderOption::kDoNotReloadPlaceholder;
+  }
 
   if (IsLoading()) {
     Loader()->Cancel();
diff --git a/third_party/WebKit/Source/core/loader/resource/ImageResource.h b/third_party/WebKit/Source/core/loader/resource/ImageResource.h
index fbc4bf1..bc687fc 100644
--- a/third_party/WebKit/Source/core/loader/resource/ImageResource.h
+++ b/third_party/WebKit/Source/core/loader/resource/ImageResource.h
@@ -163,6 +163,11 @@
     // Do not show or reload placeholder.
     kDoNotReloadPlaceholder,
 
+    // Show placeholder, and do not reload. The original image will still be
+    // loaded and shown if the image is explicitly reloaded, e.g. when
+    // ReloadIfLoFiOrPlaceholderImage is called with kReloadAlways.
+    kShowAndDoNotReloadPlaceholder,
+
     // Do not show placeholder, reload only when decode error occurs.
     kReloadPlaceholderOnDecodeError,
 
diff --git a/third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp b/third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp
index fce9e1a..b59dcbb4 100644
--- a/third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp
+++ b/third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp
@@ -190,7 +190,8 @@
                                             ImageResource* image_resource,
                                             ImageResourceContent* content,
                                             MockImageResourceObserver* observer,
-                                            WebCachePolicy policy_for_reload) {
+                                            WebCachePolicy policy_for_reload,
+                                            bool placeholder_before_reload) {
   const char* data = reinterpret_cast<const char*>(kJpegImage2);
   constexpr size_t kDataLength = sizeof(kJpegImage2);
   constexpr int kImageWidth = 50;
@@ -200,7 +201,7 @@
   // reloading.
   EXPECT_EQ(ResourceStatus::kPending, image_resource->GetStatus());
   EXPECT_FALSE(image_resource->ResourceBuffer());
-  EXPECT_FALSE(image_resource->ShouldShowPlaceholder());
+  EXPECT_EQ(placeholder_before_reload, image_resource->ShouldShowPlaceholder());
   EXPECT_EQ(g_null_atom,
             image_resource->GetResourceRequest().HttpHeaderField("range"));
   EXPECT_EQ(policy_for_reload,
@@ -243,7 +244,6 @@
   EXPECT_FALSE(content->GetImage()->IsNull());
   EXPECT_EQ(kImageWidth, content->GetImage()->width());
   EXPECT_EQ(kImageHeight, content->GetImage()->height());
-  EXPECT_TRUE(content->GetImage()->IsBitmapImage());
   EXPECT_FALSE(content->GetImage()->PaintImageForCurrentFrame().is_multipart());
 }
 
@@ -599,7 +599,7 @@
   EXPECT_EQ(3, observer->ImageChangedCount());
   TestThatReloadIsStartedThenServeReload(
       test_url, image_resource, image_resource->GetContent(), observer.get(),
-      WebCachePolicy::kBypassingCache);
+      WebCachePolicy::kBypassingCache, false);
 }
 
 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderAfterFinishedWithOldHeaders) {
@@ -642,7 +642,7 @@
   EXPECT_EQ(3, observer->ImageChangedCount());
   TestThatReloadIsStartedThenServeReload(
       test_url, image_resource, image_resource->GetContent(), observer.get(),
-      WebCachePolicy::kBypassingCache);
+      WebCachePolicy::kBypassingCache, false);
 }
 
 TEST(ImageResourceTest,
@@ -725,9 +725,9 @@
 
   EXPECT_EQ(3, observer->ImageChangedCount());
 
-  TestThatReloadIsStartedThenServeReload(test_url, image_resource, content,
-                                         observer.get(),
-                                         WebCachePolicy::kBypassingCache);
+  TestThatReloadIsStartedThenServeReload(
+      test_url, image_resource, content, observer.get(),
+      WebCachePolicy::kBypassingCache, false);
 
   GetMemoryCache()->Remove(image_resource);
 }
@@ -775,7 +775,7 @@
 
   TestThatReloadIsStartedThenServeReload(
       test_url, image_resource, image_resource->GetContent(), observer.get(),
-      WebCachePolicy::kBypassingCache);
+      WebCachePolicy::kBypassingCache, false);
 }
 
 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderForPlaceholder) {
@@ -799,7 +799,7 @@
 
   TestThatReloadIsStartedThenServeReload(
       test_url, image_resource, image_resource->GetContent(), observer.get(),
-      WebCachePolicy::kBypassingCache);
+      WebCachePolicy::kBypassingCache, false);
 }
 
 TEST(ImageResourceTest, SVGImage) {
@@ -1329,21 +1329,71 @@
   // loading.
   EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
   EXPECT_EQ(2, observer->ImageChangedCount());
+  EXPECT_FALSE(image_resource->ShouldShowPlaceholder());
 
   TestThatReloadIsStartedThenServeReload(
       test_url, image_resource, image_resource->GetContent(), observer.get(),
-      WebCachePolicy::kBypassingCache);
+      WebCachePolicy::kBypassingCache, false);
+}
+
+TEST(ImageResourceTest, FetchAllowPlaceholderUnsuccessfulClientLoFi) {
+  KURL test_url(kParsedURLString, kTestURL);
+  ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
+
+  ResourceRequest request = ResourceRequest(test_url);
+  request.SetPreviewsState(WebURLRequest::kClientLoFiOn);
+  FetchParameters params{request};
+  params.SetAllowImagePlaceholder();
+  ImageResource* image_resource = ImageResource::Fetch(params, CreateFetcher());
+  EXPECT_EQ(FetchParameters::kAllowPlaceholder,
+            params.GetPlaceholderImageRequestType());
+  EXPECT_EQ("bytes=0-2047",
+            image_resource->GetResourceRequest().HttpHeaderField("range"));
+  EXPECT_TRUE(image_resource->ShouldShowPlaceholder());
+  std::unique_ptr<MockImageResourceObserver> observer =
+      MockImageResourceObserver::Create(image_resource->GetContent());
+
+  const char kBadData[] = "notanimageresponse";
+
+  ResourceResponse bad_response(test_url, "image/jpeg", sizeof(kBadData),
+                                g_null_atom);
+  bad_response.SetHTTPStatusCode(206);
+  bad_response.SetHTTPHeaderField(
+      "content-range", BuildContentRange(sizeof(kBadData), sizeof(kJpegImage)));
+
+  image_resource->Loader()->DidReceiveResponse(
+      WrappedResourceResponse(bad_response));
+
+  EXPECT_EQ(0, observer->ImageChangedCount());
+
+  image_resource->Loader()->DidReceiveData(kBadData, sizeof(kBadData));
+
+  // The dimensions could not be extracted, so the full original image should be
+  // loading.
+  EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
+  EXPECT_EQ(2, observer->ImageChangedCount());
+
+  TestThatReloadIsStartedThenServeReload(
+      test_url, image_resource, image_resource->GetContent(), observer.get(),
+      WebCachePolicy::kBypassingCache, true);
+
+  EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsBitmapImage());
+  EXPECT_TRUE(image_resource->ShouldShowPlaceholder());
 }
 
 TEST(ImageResourceTest, FetchAllowPlaceholderPartialContentWithoutDimensions) {
   const struct {
     WebURLRequest::PreviewsState initial_previews_state;
     WebURLRequest::PreviewsState expected_reload_previews_state;
+    bool placeholder_before_reload;
+    bool placeholder_after_reload;
   } tests[] = {
-      {WebURLRequest::kPreviewsUnspecified,
-       WebURLRequest::kPreviewsNoTransform},
-      {WebURLRequest::kClientLoFiOn, WebURLRequest::kPreviewsNoTransform |
-                                         WebURLRequest::kClientLoFiAutoReload},
+      {WebURLRequest::kPreviewsUnspecified, WebURLRequest::kPreviewsNoTransform,
+       false},
+      {WebURLRequest::kClientLoFiOn,
+       WebURLRequest::kPreviewsNoTransform |
+           WebURLRequest::kClientLoFiAutoReload,
+       true},
   };
 
   for (const auto& test : tests) {
@@ -1394,7 +1444,7 @@
 
     TestThatReloadIsStartedThenServeReload(
         test_url, image_resource, image_resource->GetContent(), observer.get(),
-        WebCachePolicy::kBypassingCache);
+        WebCachePolicy::kBypassingCache, test.placeholder_before_reload);
 
     EXPECT_EQ(test.expected_reload_previews_state,
               image_resource->GetResourceRequest().GetPreviewsState());
@@ -1624,7 +1674,7 @@
     // error, so the full original image should be loading.
     TestThatReloadIsStartedThenServeReload(
         test_url, image_resource, image_resource->GetContent(), observer.get(),
-        WebCachePolicy::kBypassingCache);
+        WebCachePolicy::kBypassingCache, false);
   }
 }
 
diff --git a/third_party/WebKit/Source/platform/graphics/ColorSpaceGamut.cpp b/third_party/WebKit/Source/platform/graphics/ColorSpaceGamut.cpp
index 452a197..d83dabf 100644
--- a/third_party/WebKit/Source/platform/graphics/ColorSpaceGamut.cpp
+++ b/third_party/WebKit/Source/platform/graphics/ColorSpaceGamut.cpp
@@ -12,12 +12,12 @@
 namespace ColorSpaceUtilities {
 
 ColorSpaceGamut GetColorSpaceGamut(const WebScreenInfo& screen_info) {
-  const gfx::ICCProfile& profile = screen_info.icc_profile;
-  if (profile == gfx::ICCProfile())
+  const gfx::ColorSpace& color_space = screen_info.color_space;
+  if (!color_space.IsValid())
     return ColorSpaceGamut::kUnknown;
 
   return ColorSpaceUtilities::GetColorSpaceGamut(
-      profile.GetColorSpace().ToSkColorSpace().get());
+      color_space.ToSkColorSpace().get());
 }
 
 ColorSpaceGamut GetColorSpaceGamut(SkColorSpace* color_space) {
diff --git a/third_party/WebKit/public/platform/WebScreenInfo.h b/third_party/WebKit/public/platform/WebScreenInfo.h
index 857918d5..06ecf1e 100644
--- a/third_party/WebKit/public/platform/WebScreenInfo.h
+++ b/third_party/WebKit/public/platform/WebScreenInfo.h
@@ -34,7 +34,7 @@
 #include "WebRect.h"
 #include "public/platform/ShapeProperties.h"
 #include "public/platform/modules/screen_orientation/WebScreenOrientationType.h"
-#include "ui/gfx/icc_profile.h"
+#include "ui/gfx/color_space.h"
 
 namespace blink {
 
@@ -43,8 +43,8 @@
   // pixels.
   float device_scale_factor = 1.f;
 
-  // The ICC profile of the output display.
-  gfx::ICCProfile icc_profile;
+  // The color space of the output display.
+  gfx::ColorSpace color_space;
 
   // The screen depth in bits per pixel
   int depth = 0;
@@ -89,7 +89,7 @@
 
   bool operator==(const WebScreenInfo& other) const {
     return this->device_scale_factor == other.device_scale_factor &&
-           this->icc_profile == other.icc_profile &&
+           this->color_space == other.color_space &&
            this->depth == other.depth &&
            this->depth_per_component == other.depth_per_component &&
            this->is_monochrome == other.is_monochrome &&
diff --git a/tools/perf/core/perf_data_generator.py b/tools/perf/core/perf_data_generator.py
index ccb2b30..3feac7e 100755
--- a/tools/perf/core/perf_data_generator.py
+++ b/tools/perf/core/perf_data_generator.py
@@ -787,6 +787,7 @@
 # Devices which are broken right now. Tests will not be scheduled on them.
 # Please add a comment with a bug for replacing the device.
 BLACKLISTED_DEVICES = [
+    'build152-m1',  # crbug.com/736593
 ]
 
 
diff --git a/ui/ozone/demo/surfaceless_gl_renderer.cc b/ui/ozone/demo/surfaceless_gl_renderer.cc
index dfbcb95..549c7ac 100644
--- a/ui/ozone/demo/surfaceless_gl_renderer.cc
+++ b/ui/ozone/demo/surfaceless_gl_renderer.cc
@@ -11,11 +11,14 @@
 #include "base/macros.h"
 #include "base/trace_event/trace_event.h"
 #include "ui/display/types/display_snapshot.h"
+#include "ui/gfx/geometry/rect_conversions.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_image.h"
 #include "ui/gl/gl_image_native_pixmap.h"
 #include "ui/gl/gl_surface.h"
+#include "ui/ozone/public/overlay_candidates_ozone.h"
+#include "ui/ozone/public/overlay_manager_ozone.h"
 #include "ui/ozone/public/ozone_platform.h"
 #include "ui/ozone/public/surface_factory_ozone.h"
 
@@ -79,7 +82,11 @@
     gfx::AcceleratedWidget widget,
     const scoped_refptr<gl::GLSurface>& surface,
     const gfx::Size& size)
-    : GlRenderer(widget, surface, size), weak_ptr_factory_(this) {}
+    : GlRenderer(widget, surface, size),
+      overlay_checker_(ui::OzonePlatform::GetInstance()
+                           ->GetOverlayManager()
+                           ->CreateOverlayCandidates(widget)),
+      weak_ptr_factory_(this) {}
 
 SurfacelessGlRenderer::~SurfacelessGlRenderer() {
   // Need to make current when deleting the framebuffer resources allocated in
@@ -112,6 +119,53 @@
   return true;
 }
 
+// OverlayChecker demonstrates how to use the
+// OverlayCandidatesOzone::CheckOverlaySupport to determine if a given overlay
+// can be successfully displayed.
+void SurfacelessGlRenderer::OverlayChecker(int z_order,
+                                           gfx::Rect bounds_rect,
+                                           gfx::RectF crop_rect) {
+  // The overlay checking interface is designed to satisfy the needs of CC which
+  // will be producing RectF target rectangles. But we use the bounds produced
+  // in RenderFrame for GLSurface::ScheduleOverlayPlane.
+  gfx::RectF display_rect(bounds_rect.x(), bounds_rect.y(), bounds_rect.width(),
+                          bounds_rect.height());
+
+  OverlayCandidatesOzone::OverlaySurfaceCandidate overlay_candidate;
+
+  // The bounds rectangle of the candidate overlay buffer.
+  overlay_candidate.buffer_size = bounds_rect.size();
+  // The same rectangle in floating point coordinates.
+  overlay_candidate.display_rect = display_rect;
+
+  // Show the entire buffer by setting the crop to a unity square.
+  overlay_candidate.crop_rect = gfx::RectF(0, 0, 1, 1);
+
+  // The quad rect is the rectangular bounds of the overlay demonstration
+  // rectangle.
+  overlay_candidate.quad_rect_in_target_space = bounds_rect;
+
+  // The clip region is the entire screen.
+  overlay_candidate.clip_rect = gfx::Rect(size_);
+
+  // The demo overlay instance is always ontop and not clipped. Clipped quads
+  // cannot be placed in overlays.
+  overlay_candidate.is_clipped = false;
+
+  OverlayCandidatesOzone::OverlaySurfaceCandidateList list;
+  list.push_back(overlay_candidate);
+
+  // Ask ozone platform to determine if this rect can be placed in an overlay.
+  // Ozone will update the list and return it.
+  overlay_checker_->CheckOverlaySupport(&list);
+
+  // Note what the checker decided.
+  // say more about it.
+  TRACE_EVENT2("hwoverlays", "SurfacelessGlRenderer::OverlayChecker", "canihaz",
+               list[0].overlay_handled, "display_rect",
+               list[0].display_rect.ToString());
+}
+
 void SurfacelessGlRenderer::RenderFrame() {
   TRACE_EVENT0("ozone", "SurfacelessGlRenderer::RenderFrame");
 
@@ -133,6 +187,11 @@
     gfx::Vector2d offset(fraction * (size_.width() - overlay_rect.width()),
                          (size_.height() - overlay_rect.height()) / 2);
     overlay_rect += offset;
+
+    // TODO(rjkroege): Overlay checking should gate the following and will
+    // be added after solving http://crbug.com/735640
+    OverlayChecker(1, overlay_rect, gfx::RectF(0, 0, 1, 1));
+
     surface_->ScheduleOverlayPlane(1, gfx::OVERLAY_TRANSFORM_NONE,
                                    overlay_buffer_->image(), overlay_rect,
                                    gfx::RectF(0, 0, 1, 1));
diff --git a/ui/ozone/demo/surfaceless_gl_renderer.h b/ui/ozone/demo/surfaceless_gl_renderer.h
index cc67a74d..5467435 100644
--- a/ui/ozone/demo/surfaceless_gl_renderer.h
+++ b/ui/ozone/demo/surfaceless_gl_renderer.h
@@ -8,6 +8,7 @@
 #include <memory>
 
 #include "base/macros.h"
+#include "ui/gfx/geometry/rect_f.h"
 #include "ui/ozone/demo/gl_renderer.h"
 
 namespace gl {
@@ -15,6 +16,7 @@
 }
 
 namespace ui {
+class OverlayCandidatesOzone;
 
 class SurfacelessGlRenderer : public GlRenderer {
  public:
@@ -30,6 +32,7 @@
   // GlRenderer:
   void RenderFrame() override;
   void PostRenderFrameTask(gfx::SwapResult result) override;
+  void OverlayChecker(int z_order, gfx::Rect bounds_rect, gfx::RectF crop_rect);
 
   class BufferWrapper {
    public:
@@ -56,6 +59,8 @@
 
   std::unique_ptr<BufferWrapper> overlay_buffer_;
 
+  std::unique_ptr<OverlayCandidatesOzone> overlay_checker_;
+
   int back_buffer_ = 0;
 
   base::WeakPtrFactory<SurfacelessGlRenderer> weak_ptr_factory_;
diff --git a/ui/ozone/platform/drm/gpu/drm_thread.cc b/ui/ozone/platform/drm/gpu/drm_thread.cc
index a91932da..eb333ee 100644
--- a/ui/ozone/platform/drm/gpu/drm_thread.cc
+++ b/ui/ozone/platform/drm/gpu/drm_thread.cc
@@ -12,6 +12,7 @@
 #include "base/memory/ptr_util.h"
 #include "base/message_loop/message_loop.h"
 #include "base/threading/thread_task_runner_handle.h"
+#include "base/trace_event/trace_event.h"
 #include "ui/display/types/display_mode.h"
 #include "ui/display/types/display_snapshot_mojo.h"
 #include "ui/ozone/common/display_snapshot_proxy.h"
@@ -225,6 +226,8 @@
                             const std::vector<OverlayCheck_Params>&,
                             const std::vector<OverlayCheckReturn_Params>&)>
         callback) {
+  TRACE_EVENT0("drm,hwoverlays", "DrmThread::CheckOverlayCapabilities");
+
   std::move(callback).Run(
       widget, overlays,
       screen_manager_->GetWindow(widget)->TestPageFlip(overlays));
diff --git a/ui/ozone/platform/drm/host/drm_overlay_manager.cc b/ui/ozone/platform/drm/host/drm_overlay_manager.cc
index b45a6645..9d5a968 100644
--- a/ui/ozone/platform/drm/host/drm_overlay_manager.cc
+++ b/ui/ozone/platform/drm/host/drm_overlay_manager.cc
@@ -10,6 +10,7 @@
 
 #include "base/command_line.h"
 #include "base/memory/ptr_util.h"
+#include "base/trace_event/trace_event.h"
 #include "ui/gfx/geometry/rect_conversions.h"
 #include "ui/ozone/platform/drm/host/drm_overlay_candidates_host.h"
 #include "ui/ozone/platform/drm/host/drm_window_host.h"
@@ -44,6 +45,7 @@
 void DrmOverlayManager::CheckOverlaySupport(
     OverlayCandidatesOzone::OverlaySurfaceCandidateList* candidates,
     gfx::AcceleratedWidget widget) {
+  TRACE_EVENT0("hwoverlays", "DrmOverlayManager::CheckOverlaySupport");
   std::vector<OverlayCheck_Params> overlay_params;
   for (auto& candidate : *candidates) {
     // Reject candidates that don't fall on a pixel boundary.
@@ -118,7 +120,8 @@
     gfx::AcceleratedWidget widget) const {
   if (!proxy_->IsConnected())
     return;
-
+  TRACE_EVENT_ASYNC_BEGIN0(
+      "hwoverlays", "DrmOverlayManager::SendOverlayValidationRequest", this);
   proxy_->GpuCheckOverlayCapabilities(widget, new_params);
 }
 
@@ -126,6 +129,9 @@
     gfx::AcceleratedWidget widget,
     const std::vector<OverlayCheck_Params>& params,
     const std::vector<OverlayCheckReturn_Params>& returns) {
+  TRACE_EVENT_ASYNC_END0(
+      "hwoverlays", "DrmOverlayManager::SendOverlayValidationRequest response",
+      this);
   cache_.Put(params, returns);
 }