diff --git a/DEPS b/DEPS
index 2629f49d8..e3abd6e 100644
--- a/DEPS
+++ b/DEPS
@@ -40,11 +40,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': 'a2fc16e677c213d9efcc9e857effde0ed249b54d',
+  'skia_revision': 'c1889823de68ffd2ef08b5c1969d41c98034ec6a',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': 'fa3a1c7570ad09f941c31714d7d54c87439f4c39',
+  'v8_revision': '9f6be2e9e4279586cf484b669d1fc701c31a7fe2',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
diff --git a/build/check_gn_headers.py b/build/check_gn_headers.py
index 3e04120..ae1ef49 100755
--- a/build/check_gn_headers.py
+++ b/build/check_gn_headers.py
@@ -19,21 +19,7 @@
 
 def GetHeadersFromNinja(out_dir):
   """Return all the header files from ninja_deps"""
-
-  def NinjaSource():
-    cmd = ['ninja', '-C', out_dir, '-t', 'deps']
-    # A negative bufsize means to use the system default, which usually
-    # means fully buffered.
-    popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=-1)
-    for line in iter(popen.stdout.readline, ''):
-      yield line
-
-    popen.stdout.close()
-    return_code = popen.wait()
-    if return_code:
-      raise subprocess.CalledProcessError(return_code, cmd)
-
-  ninja_out = NinjaSource()
+  ninja_out = subprocess.check_output(['ninja', '-C', out_dir, '-t', 'deps'])
   return ParseNinjaDepsOutput(ninja_out)
 
 
@@ -44,7 +30,7 @@
   prefix = '..' + os.sep + '..' + os.sep
 
   is_valid = False
-  for line in ninja_out:
+  for line in ninja_out.split('\n'):
     if line.startswith('    '):
       if not is_valid:
         continue
diff --git a/build/check_gn_headers_unittest.py b/build/check_gn_headers_unittest.py
index f62fe62..7272ea9 100755
--- a/build/check_gn_headers_unittest.py
+++ b/build/check_gn_headers_unittest.py
@@ -58,7 +58,7 @@
 
 class CheckGnHeadersTest(unittest.TestCase):
   def testNinja(self):
-    headers = check_gn_headers.ParseNinjaDepsOutput(ninja_input.split('\n'))
+    headers = check_gn_headers.ParseNinjaDepsOutput(ninja_input)
     expected = set([
         'dir/path/b.h',
         'c.hh',
@@ -71,8 +71,7 @@
     old_sep = os.sep
     os.sep = '\\'
 
-    headers = check_gn_headers.ParseNinjaDepsOutput(
-        ninja_input_win.split('\n'))
+    headers = check_gn_headers.ParseNinjaDepsOutput(ninja_input_win)
     expected = set([
         'dir\\path\\b.h',
         'c.hh',
diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn
index 090e98d8..e29acdc 100644
--- a/chrome/BUILD.gn
+++ b/chrome/BUILD.gn
@@ -68,6 +68,22 @@
   }
 }
 
+# Dependencies which must accompany ChromeMainDelegate when embedded
+# Mash services are enabled.
+if (enable_package_mash_services) {
+  embedded_mash_service_deps = [
+    "//chrome/app/mash:chrome_mash_catalog",
+    "//chrome/app/mash:embedded_services",
+    "//mash/common",
+    "//mash/quick_launch/public/interfaces:constants",
+    "//services/ui/public/interfaces:constants",
+  ]
+
+  if (is_chromeos) {
+    embedded_mash_service_deps += [ "//chrome/app/mash:chrome_mus_catalog" ]
+  }
+}
+
 # This target exists above chrome and it's main components in the dependency
 # tree as a central place to put assert_no_deps annotations. Since this depends
 # on Chrome and the main DLLs it uses, it will transitively assert that those
@@ -243,9 +259,11 @@
         # Needed to use the master_preferences functions
         "//chrome/installer/util:with_no_strings",
         "//content/public/app:both",
+        "//content/public/common:service_names",
 
         # For headless mode.
         "//headless:headless_shell_lib",
+        "//services/service_manager/embedder",
       ]
 
       public_deps = [
@@ -274,8 +292,7 @@
       }
 
       if (enable_package_mash_services) {
-        deps += [ "//chrome/app/mash" ]
-        data_deps += [ "//chrome/app:service_manifests" ]
+        deps += embedded_mash_service_deps
       }
     }
 
@@ -341,9 +358,11 @@
       "//components/crash/content/app",
       "//components/policy:generated",
       "//content/app/resources",
+      "//content/public/common:service_names",
       "//crypto",
       "//net:net_resources",
       "//ppapi/features",
+      "//services/service_manager/embedder",
       "//third_party/cld",
       "//third_party/wtl",
       "//ui/views",
@@ -396,7 +415,7 @@
     }
 
     if (enable_package_mash_services) {
-      deps += [ "//chrome/app/mash" ]
+      deps += embedded_mash_service_deps
     }
   }
 
@@ -432,6 +451,8 @@
         "//components/browser_watcher:browser_watcher_client",
         "//components/crash/content/app",
         "//content/public/app:child",
+        "//content/public/common:service_names",
+        "//services/service_manager/embedder",
       ]
 
       ldflags = [
@@ -1088,7 +1109,9 @@
       "//components/crash/content/app",
       "//components/policy:generated",
       "//content/public/app:both",
+      "//content/public/common:service_names",
       "//headless:headless_shell_lib",
+      "//services/service_manager/embedder",
       "//third_party/cld",
     ]
 
@@ -1103,7 +1126,7 @@
     ]
 
     if (enable_package_mash_services) {
-      deps += [ "//chrome/app/mash" ]
+      deps += embedded_mash_service_deps
     }
 
     configs += [ "//build/config/compiler:wexit_time_destructors" ]
@@ -1645,6 +1668,8 @@
       "//chrome/utility",
       "//components/safe_browsing_db:safe_browsing_db_mobile",
       "//content/public/app:both",
+      "//content/public/common:service_names",
+      "//services/service_manager/embedder",
     ]
   }
 }
diff --git a/chrome/app/BUILD.gn b/chrome/app/BUILD.gn
index c5909b2b..2daa56c 100644
--- a/chrome/app/BUILD.gn
+++ b/chrome/app/BUILD.gn
@@ -316,6 +316,7 @@
 
   deps = [
     "//base",
+    "//chrome/app:shutdown_signal_handlers",
     "//chrome/browser",
     "//chrome/browser/policy:path_parser",
     "//chrome/child",
@@ -328,9 +329,11 @@
     "//components/startup_metric_utils/browser:lib",
     "//content/public/app:both",
     "//content/public/common",
+    "//content/public/common:service_names",
     "//pdf",
     "//ppapi/features",
     "//printing/features",
+    "//services/service_manager/embedder",
     "//ui/base",
   ]
 
@@ -361,6 +364,20 @@
       "//components/nacl/renderer/plugin:nacl_trusted_plugin",
     ]
   }
+
+  if (enable_package_mash_services) {
+    deps += [
+      "//chrome/app/mash:chrome_mash_catalog",
+      "//chrome/app/mash:embedded_services",
+      "//mash/common",
+      "//mash/quick_launch/public/interfaces:constants",
+      "//services/ui/public/interfaces:constants",
+    ]
+
+    if (is_chromeos) {
+      deps += [ "//chrome/app/mash:chrome_mus_catalog" ]
+    }
+  }
 }
 
 chrome_packaged_services = [ ":chrome_manifest" ]
diff --git a/chrome/app/DEPS b/chrome/app/DEPS
index cc9ceea..2b65bf89 100644
--- a/chrome/app/DEPS
+++ b/chrome/app/DEPS
@@ -30,9 +30,12 @@
   "+content/public/browser/browser_main_runner.h",
   "+extensions/common/constants.h",
   "+headless/public",  # For headless mode.
+  "+mash/common",
+  "+mash/quick_launch/public",
   "+native_client/src/trusted/service_runtime/osx",
   "+remoting/client/plugin",
   "+sandbox",
-  "+services/service_manager/runner/common/client_util.h",
+  "+services/service_manager",
+  "+services/ui/public",
   "+third_party/crashpad/crashpad",
 ]
diff --git a/chrome/app/chrome_main.cc b/chrome/app/chrome_main.cc
index 2cc37702..6585c78 100644
--- a/chrome/app/chrome_main.cc
+++ b/chrome/app/chrome_main.cc
@@ -16,9 +16,6 @@
 #include "ui/gfx/switches.h"
 
 #if BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
-#include "chrome/app/mash/mash_runner.h"
-#include "chrome/common/channel_info.h"
-#include "components/version_info/version_info.h"
 #include "services/service_manager/runner/common/client_util.h"
 #endif
 
@@ -107,17 +104,8 @@
 #endif  // defined(OS_LINUX) || defined(OS_MACOSX)
 
 #if defined(OS_CHROMEOS) && BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
-  version_info::Channel channel = chrome::GetChannel();
-  if (channel == version_info::Channel::CANARY ||
-      channel == version_info::Channel::UNKNOWN) {
-    if (command_line->HasSwitch(switches::kMash) ||
-        command_line->HasSwitch(switches::kMus)) {
-      return MashMain();
-    }
-    WaitForMashDebuggerIfNecessary();
-    if (service_manager::ServiceManagerIsRemote())
-      params.env_mode = aura::Env::Mode::MUS;
-  }
+  if (service_manager::ServiceManagerIsRemote())
+    params.env_mode = aura::Env::Mode::MUS;
 #endif  // BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
 
   int rv = content::ContentMain(params);
diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegate.cc
index bcc8d8c..7f4aebbc 100644
--- a/chrome/app/chrome_main_delegate.cc
+++ b/chrome/app/chrome_main_delegate.cc
@@ -21,6 +21,7 @@
 #include "base/process/process_handle.h"
 #include "base/process/process_info.h"
 #include "base/strings/string_util.h"
+#include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
 #include "base/trace_event/trace_event_impl.h"
 #include "build/build_config.h"
@@ -51,10 +52,12 @@
 #include "content/public/common/content_client.h"
 #include "content/public/common/content_paths.h"
 #include "content/public/common/content_switches.h"
+#include "content/public/common/service_names.mojom.h"
 #include "extensions/common/constants.h"
 #include "pdf/features.h"
 #include "ppapi/features/features.h"
 #include "printing/features/features.h"
+#include "services/service_manager/embedder/switches.h"
 #include "ui/base/material_design/material_design_controller.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/base/ui_base_switches.h"
@@ -86,7 +89,9 @@
 #if defined(OS_POSIX)
 #include <locale.h>
 #include <signal.h>
+
 #include "chrome/app/chrome_crash_reporter_client.h"
+#include "chrome/app/shutdown_signal_handlers_posix.h"
 #endif
 
 #if !defined(DISABLE_NACL) && defined(OS_LINUX)
@@ -102,6 +107,19 @@
 #include "chromeos/hugepage_text/hugepage_text.h"
 #endif
 
+#if BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
+#include "chrome/app/mash/chrome_mash_catalog.h"
+#include "chrome/app/mash/embedded_services.h"
+#include "mash/common/config.h"                                   // nogncheck
+#include "mash/quick_launch/public/interfaces/constants.mojom.h"  // nogncheck
+#include "services/ui/public/interfaces/constants.mojom.h"        // nogncheck
+
+#if defined(OS_CHROMEOS)
+#include "chrome/app/mash/chrome_mus_catalog.h"
+#endif
+
+#endif  // BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
+
 #if defined(OS_ANDROID)
 #include "base/android/java_exception_reporter.h"
 #include "chrome/common/descriptors_android.h"
@@ -250,7 +268,8 @@
     score = kPluginScore + kScoreBump;
   } else if (process_type == switches::kUtilityProcess ||
              process_type == switches::kGpuProcess ||
-             process_type == switches::kCloudPrintServiceProcess) {
+             process_type == switches::kCloudPrintServiceProcess ||
+             process_type == service_manager::switches::kProcessTypeService) {
     score = kMiscScore;
 #ifndef DISABLE_NACL
   } else if (process_type == switches::kNaClLoaderProcess ||
@@ -258,6 +277,8 @@
     score = kPluginScore;
 #endif
   } else if (process_type == switches::kZygoteProcess ||
+             process_type ==
+                 service_manager::switches::kProcessTypeServiceManager ||
              process_type.empty()) {
     // For zygotes and unlabeled process types, we want to still make
     // them killable by the OOM killer.
@@ -1091,3 +1112,113 @@
       return false;
   }
 }
+
+service_manager::ProcessType ChromeMainDelegate::OverrideProcessType() {
+  const auto& command_line = *base::CommandLine::ForCurrentProcess();
+  if (command_line.GetSwitchValueASCII(switches::kProcessType) ==
+      service_manager::switches::kProcessTypeService) {
+    // Don't mess with embedded service command lines.
+    return service_manager::ProcessType::kDefault;
+  }
+
+#if BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
+  if (command_line.HasSwitch(switches::kMus) ||
+      command_line.HasSwitch(switches::kMash)) {
+    return service_manager::ProcessType::kServiceManager;
+  }
+#endif
+
+  return service_manager::ProcessType::kDefault;
+}
+
+std::unique_ptr<base::Value> ChromeMainDelegate::CreateServiceCatalog() {
+#if BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
+  const auto& command_line = *base::CommandLine::ForCurrentProcess();
+#if defined(OS_CHROMEOS)
+  if (command_line.HasSwitch(switches::kMus))
+    return CreateChromeMusCatalog();
+#endif  // defined(OS_CHROMEOS)
+  if (command_line.HasSwitch(switches::kMash))
+    return CreateChromeMashCatalog();
+#endif  // BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
+  return nullptr;
+}
+
+void ChromeMainDelegate::AdjustServiceProcessCommandLine(
+    const service_manager::Identity& identity,
+    base::CommandLine* command_line) {
+#if BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
+  // Add kMusConfig so that launched processes know what config they are
+  // running in.
+  const bool is_mash = command_line->HasSwitch(switches::kMash);
+  command_line->AppendSwitchASCII(switches::kMusConfig,
+                                  is_mash ? switches::kMash : switches::kMus);
+
+  if (identity.name() == content::mojom::kPackagedServicesServiceName) {
+    // Ensure the browser process doesn't inherit mash or mus flags, since these
+    // flags would cause the process to run as a Service Manager instead.
+    base::CommandLine::SwitchMap switches = command_line->GetSwitches();
+    switches.erase(switches::kMash);
+    switches.erase(switches::kMus);
+    *command_line = base::CommandLine(command_line->GetProgram());
+    for (const auto& sw : switches)
+      command_line->AppendSwitchNative(sw.first, sw.second);
+  }
+#endif
+}
+
+bool ChromeMainDelegate::ShouldTerminateServiceManagerOnInstanceQuit(
+    const service_manager::Identity& identity,
+    int* exit_code) {
+#if BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
+  if (identity.name() == mash::common::GetWindowManagerServiceName() ||
+      identity.name() == ui::mojom::kServiceName ||
+      identity.name() == content::mojom::kPackagedServicesServiceName) {
+    // Quit the main process if an important child (e.g. window manager) dies.
+    // On Chrome OS the OS-level session_manager will restart the main process.
+    *exit_code = 1;
+    LOG(ERROR) << "Main process exiting because service " << identity.name()
+               << " quit unexpectedly.";
+    return true;
+  }
+#endif  // BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
+
+  return false;
+}
+
+void ChromeMainDelegate::OnServiceManagerInitialized(
+    const base::Closure& quit_closure,
+    service_manager::BackgroundServiceManager* service_manager) {
+#if defined(OS_POSIX)
+  // Quit the main process in response to shutdown signals (like SIGTERM).
+  // These signals are used by Linux distributions to request clean shutdown.
+  // On Chrome OS the SIGTERM signal is sent by session_manager.
+  InstallShutdownSignalHandlers(quit_closure,
+                                base::ThreadTaskRunnerHandle::Get());
+#endif
+
+#if BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
+  // Start services that we know we want to launch on startup (UI service,
+  // window manager, quick launch app).
+  service_manager->StartService(
+      service_manager::Identity(ui::mojom::kServiceName));
+  service_manager->StartService(
+      service_manager::Identity(content::mojom::kPackagedServicesServiceName));
+  if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kMash)) {
+    service_manager->StartService(
+        service_manager::Identity(mash::common::GetWindowManagerServiceName()));
+    service_manager->StartService(
+        service_manager::Identity(mash::quick_launch::mojom::kServiceName));
+  }
+#endif  // BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
+}
+
+std::unique_ptr<service_manager::Service>
+ChromeMainDelegate::CreateEmbeddedService(const std::string& service_name) {
+#if BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
+  auto mash_service = CreateEmbeddedMashService(service_name);
+  if (mash_service)
+    return mash_service;
+#endif  // BUILDFLAG(ENABLE_PACKAGE_MASH_SERVICES)
+  return nullptr;
+}
diff --git a/chrome/app/chrome_main_delegate.h b/chrome/app/chrome_main_delegate.h
index 5af397be..22ba58a 100644
--- a/chrome/app/chrome_main_delegate.h
+++ b/chrome/app/chrome_main_delegate.h
@@ -48,6 +48,19 @@
   void ZygoteForked() override;
 #endif
   bool ShouldEnableProfilerRecording() override;
+  service_manager::ProcessType OverrideProcessType() override;
+  std::unique_ptr<base::Value> CreateServiceCatalog() override;
+  void AdjustServiceProcessCommandLine(
+      const service_manager::Identity& identity,
+      base::CommandLine* command_line) override;
+  bool ShouldTerminateServiceManagerOnInstanceQuit(
+      const service_manager::Identity& identity,
+      int* exit_code) override;
+  void OnServiceManagerInitialized(
+      const base::Closure& quit_closure,
+      service_manager::BackgroundServiceManager* service_manager) override;
+  std::unique_ptr<service_manager::Service> CreateEmbeddedService(
+      const std::string& service_name) override;
 
   content::ContentBrowserClient* CreateContentBrowserClient() override;
   content::ContentGpuClient* CreateContentGpuClient() override;
diff --git a/chrome/app/mash/BUILD.gn b/chrome/app/mash/BUILD.gn
index 5bb9c71a..ea70a42 100644
--- a/chrome/app/mash/BUILD.gn
+++ b/chrome/app/mash/BUILD.gn
@@ -9,20 +9,27 @@
 
 assert(enable_package_mash_services)
 
-source_set("mash") {
+source_set("embedded_services") {
   sources = [
-    "mash_runner.cc",
-    "mash_runner.h",
+    "embedded_services.cc",
+    "embedded_services.h",
   ]
+
   deps = [
     ":chrome_mash_catalog",
     "//base:i18n",
     "//chrome/common:constants",
     "//components/tracing:startup_tracing",
     "//content/public/common",
+    "//mash/catalog_viewer:lib",
+    "//mash/catalog_viewer/public/interfaces:constants",
     "//mash/common",
-    "//mash/package",
+    "//mash/quick_launch:lib",
     "//mash/quick_launch/public/interfaces:constants",
+    "//mash/session:lib",
+    "//mash/session/public/interfaces:constants",
+    "//mash/task_viewer:lib",
+    "//mash/task_viewer/public/interfaces:constants",
     "//services/catalog/public/interfaces",
     "//services/service_manager",
     "//services/service_manager/background:lib",
@@ -33,6 +40,8 @@
     "//services/service_manager/runner/common",
     "//services/service_manager/runner/host:lib",
     "//services/service_manager/standalone",
+    "//services/ui:lib",
+    "//services/ui/ime/test_ime_driver:lib",
     "//services/ui/public/interfaces:constants",
     "//url",
   ]
@@ -40,7 +49,10 @@
   if (is_chromeos) {
     deps += [
       ":chrome_mus_catalog",
+      "//ash/autoclick/mus:lib",
+      "//ash/mus:lib",
       "//ash/resources",
+      "//ash/touch_hud/mus:lib",
     ]
   }
 
@@ -53,42 +65,30 @@
   }
 }
 
-service_manifest("mash_manifest") {
-  name = "chrome_mash"
-  source = "chrome_mash_manifest.json"
-  packaged_services = [
+catalog("catalog") {
+  embedded_services = [
     "//ash/autoclick/mus:manifest",
     "//ash/touch_hud/mus:manifest",
     "//mash/catalog_viewer:manifest",
     "//mash/quick_launch:manifest",
+    "//mash/session:manifest",
     "//mash/task_viewer:manifest",
     "//services/ui:manifest",
     "//services/ui/ime/test_ime_driver:manifest",
   ]
-
-  if (is_chromeos) {
-    packaged_services += [ "//ash/mus:manifest" ]
-  }
-
-  if (is_linux && !is_android) {
-    packaged_services += [ "//components/font_service:manifest" ]
-  }
-
-  if (enable_nacl) {
-    packaged_services += [ "//components/nacl/loader:nacl_loader_manifest" ]
-    if (is_win && target_cpu == "x86") {
-      packaged_services += [ "//components/nacl/broker:nacl_broker_manifest" ]
-    }
-  }
-}
-
-catalog("catalog") {
-  embedded_services = [ ":mash_manifest" ]
   catalog_deps = [ "//chrome/app:catalog_for_mash" ]
   standalone_services = [
     "//mash/example/views_examples:manifest",
     "//mash/simple_wm:manifest",
   ]
+
+  if (is_chromeos) {
+    embedded_services += [ "//ash/mus:manifest" ]
+  }
+
+  if (is_linux && !is_android) {
+    embedded_services += [ "//components/font_service:manifest" ]
+  }
 }
 
 catalog_cpp_source("chrome_mash_catalog") {
@@ -96,32 +96,15 @@
   generated_function_name = "CreateChromeMashCatalog"
 }
 
-source_set("mash_service_overrides") {
-  testonly = true
-  data = [
-    "mash_service_overrides.json",
-  ]
-}
-
 if (is_chromeos) {
-  service_manifest("mus_manifest") {
-    name = "chrome_mus"
-    source = "chrome_mus_manifest.json"
-    packaged_services = [
+  catalog("catalog_mus") {
+    catalog_deps = [ "//chrome/app:catalog" ]
+    embedded_services = [
       "//services/ui:manifest",
 
       # TODO(sky): verify if we need this.
       "//services/ui/ime/test_ime_driver:manifest",
     ]
-
-    if (enable_nacl) {
-      packaged_services += [ "//components/nacl/loader:nacl_loader_manifest" ]
-    }
-  }
-
-  catalog("catalog_mus") {
-    embedded_services = [ ":mus_manifest" ]
-    catalog_deps = [ "//chrome/app:catalog" ]
   }
 
   catalog_cpp_source("chrome_mus_catalog") {
diff --git a/chrome/app/mash/chrome_mash_manifest.json b/chrome/app/mash/chrome_mash_manifest.json
deleted file mode 100644
index ec970f1b..0000000
--- a/chrome/app/mash/chrome_mash_manifest.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-  // NOTE: This is the manifest for service:chrome_mash, which is only used to
-  // package services for the Mash environment when baked into the Chrome binary
-  // (i.e. "chrome --mash")
-  //
-  // If you need to require or provide capabilities from Chrome itself within
-  // the you should instead modify chrome_content_browser_manifest_overlay.json.
-  "name": "chrome_mash",
-  "display_name": "Chrome Mash Packaged Services",
-  "interface_provider_specs": {
-    "service_manager:connector": {
-      "provides": {
-        "service_manager:service_factory": [
-          "service_manager::mojom::ServiceFactory"
-        ]
-      },
-      "requires": {
-        "*": [ "app" ],
-        "ash": [ "app" ],
-        "catalog": [ "control" ],
-        "content_browser": [ "app" ],
-        "quick_launch": [ "app" ],
-        "service_manager": [ "service_manager:instance_per_child" ],
-        "ui": [ "app" ]
-      }
-    }
-  }
-}
diff --git a/chrome/app/mash/chrome_mus_manifest.json b/chrome/app/mash/chrome_mus_manifest.json
deleted file mode 100644
index 7712b5f..0000000
--- a/chrome/app/mash/chrome_mus_manifest.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-  // NOTE: This is the manifest for service:chrome_mus, which is only used to
-  // package services for the Mus environment when baked into the Chrome binary
-  // (i.e. "chrome --mus")
-  //
-  // If you need to require or provide capabilities from Chrome itself within
-  // the you should instead modify chrome_content_browser_manifest_overlay.json.
-  "name": "chrome_mus",
-  "display_name": "Chrome Mus Packaged Services",
-  "interface_provider_specs": {
-    "service_manager:connector": {
-      "provides": {
-        "service_manager:service_factory": [
-          "service_manager::mojom::ServiceFactory"
-        ]
-      },
-      "requires": {
-        "*": [ "app" ],
-        "catalog": [ "control" ],
-        "content_browser": [ "app" ],
-        "service_manager": [ "service_manager:instance_per_child" ],
-        "ui": [ "app" ]
-      }
-    }
-  }
-}
diff --git a/chrome/app/mash/embedded_services.cc b/chrome/app/mash/embedded_services.cc
new file mode 100644
index 0000000..65ef4da
--- /dev/null
+++ b/chrome/app/mash/embedded_services.cc
@@ -0,0 +1,59 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/app/mash/embedded_services.h"
+
+#include "mash/catalog_viewer/catalog_viewer.h"
+#include "mash/catalog_viewer/public/interfaces/constants.mojom.h"
+#include "mash/common/config.h"
+#include "mash/quick_launch/public/interfaces/constants.mojom.h"
+#include "mash/quick_launch/quick_launch.h"
+#include "mash/session/public/interfaces/constants.mojom.h"
+#include "mash/session/session.h"
+#include "mash/task_viewer/public/interfaces/constants.mojom.h"
+#include "mash/task_viewer/task_viewer.h"
+#include "services/ui/ime/test_ime_driver/test_ime_application.h"
+#include "services/ui/public/interfaces/constants.mojom.h"
+#include "services/ui/service.h"
+
+#if defined(OS_CHROMEOS)
+#include "ash/autoclick/mus/autoclick_application.h"  // nogncheck
+#include "ash/mus/window_manager_application.h"       // nogncheck
+#include "ash/public/interfaces/constants.mojom.h"    // nogncheck
+#include "ash/touch_hud/mus/touch_hud_application.h"  // nogncheck
+#endif                                                // defined(OS_CHROMEOS)
+
+#if defined(OS_LINUX) && !defined(OS_ANDROID)
+#include "components/font_service/font_service_app.h"
+#endif  // defined(OS_LINUX) && !defined(OS_ANDROID)
+
+std::unique_ptr<service_manager::Service> CreateEmbeddedMashService(
+    const std::string& service_name) {
+#if defined(OS_CHROMEOS)
+  if (service_name == ash::mojom::kServiceName)
+    return base::MakeUnique<ash::mus::WindowManagerApplication>();
+  if (service_name == "accessibility_autoclick")
+    return base::MakeUnique<ash::autoclick::AutoclickApplication>();
+  if (service_name == "touch_hud")
+    return base::MakeUnique<ash::touch_hud::TouchHudApplication>();
+#endif  // defined(OS_CHROMEOS)
+  if (service_name == mash::catalog_viewer::mojom::kServiceName)
+    return base::MakeUnique<mash::catalog_viewer::CatalogViewer>();
+  if (service_name == mash::session::mojom::kServiceName)
+    return base::MakeUnique<mash::session::Session>();
+  if (service_name == ui::mojom::kServiceName)
+    return base::MakeUnique<ui::Service>();
+  if (service_name == mash::quick_launch::mojom::kServiceName)
+    return base::MakeUnique<mash::quick_launch::QuickLaunch>();
+  if (service_name == mash::task_viewer::mojom::kServiceName)
+    return base::MakeUnique<mash::task_viewer::TaskViewer>();
+  if (service_name == "test_ime_driver")
+    return base::MakeUnique<ui::test::TestIMEApplication>();
+#if defined(OS_LINUX) && !defined(OS_ANDROID)
+  if (service_name == "font_service")
+    return base::MakeUnique<font_service::FontServiceApp>();
+#endif  // defined(OS_LINUX) && !defined(OS_ANDROID)
+
+  return nullptr;
+}
diff --git a/chrome/app/mash/embedded_services.h b/chrome/app/mash/embedded_services.h
new file mode 100644
index 0000000..6eba944
--- /dev/null
+++ b/chrome/app/mash/embedded_services.h
@@ -0,0 +1,16 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_APP_MASH_EMBEDDED_SERVICES_H_
+#define CHROME_APP_MASH_EMBEDDED_SERVICES_H_
+
+#include <memory>
+
+#include "services/service_manager/public/cpp/service.h"
+
+// Starts one of Mash's embedded services.
+std::unique_ptr<service_manager::Service> CreateEmbeddedMashService(
+    const std::string& service_name);
+
+#endif  // CHROME_APP_MASH_EMBEDDED_SERVICES_H_
diff --git a/chrome/app/mash/mash_runner.cc b/chrome/app/mash/mash_runner.cc
deleted file mode 100644
index a50a807..0000000
--- a/chrome/app/mash/mash_runner.cc
+++ /dev/null
@@ -1,348 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/app/mash/mash_runner.h"
-
-#include <string>
-
-#include "base/at_exit.h"
-#include "base/base_paths.h"
-#include "base/base_switches.h"
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/debug/debugger.h"
-#include "base/files/file_path.h"
-#include "base/files/file_util.h"
-#include "base/i18n/icu_util.h"
-#include "base/logging.h"
-#include "base/memory/ptr_util.h"
-#include "base/message_loop/message_loop.h"
-#include "base/path_service.h"
-#include "base/process/launch.h"
-#include "base/process/process.h"
-#include "base/run_loop.h"
-#include "base/task_scheduler/task_scheduler.h"
-#include "base/threading/sequenced_worker_pool.h"
-#include "base/threading/thread.h"
-#include "base/trace_event/trace_event.h"
-#include "chrome/app/mash/chrome_mash_catalog.h"
-#include "chrome/common/chrome_switches.h"
-#include "components/tracing/common/trace_to_console.h"
-#include "components/tracing/common/tracing_switches.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/common/service_names.mojom.h"
-#include "mash/common/config.h"
-#include "mash/package/mash_packaged_service.h"
-#include "mash/quick_launch/public/interfaces/constants.mojom.h"
-#include "mojo/edk/embedder/embedder.h"
-#include "mojo/edk/embedder/scoped_ipc_support.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
-#include "services/catalog/public/interfaces/catalog.mojom.h"
-#include "services/catalog/public/interfaces/constants.mojom.h"
-#include "services/service_manager/background/background_service_manager.h"
-#include "services/service_manager/public/cpp/connector.h"
-#include "services/service_manager/public/cpp/identity.h"
-#include "services/service_manager/public/cpp/service.h"
-#include "services/service_manager/public/cpp/service_context.h"
-#include "services/service_manager/public/cpp/standalone_service/standalone_service.h"
-#include "services/service_manager/public/interfaces/service_factory.mojom.h"
-#include "services/service_manager/runner/common/client_util.h"
-#include "services/service_manager/runner/common/switches.h"
-#include "services/service_manager/runner/init.h"
-#include "services/ui/public/interfaces/constants.mojom.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/base/ui_base_paths.h"
-#include "ui/base/ui_base_switches.h"
-
-#if defined(OS_POSIX)
-#include <signal.h>
-
-#include "base/threading/thread_task_runner_handle.h"
-#include "chrome/app/shutdown_signal_handlers_posix.h"
-#endif  // defined(OS_POSIX)
-
-#if defined(OS_CHROMEOS)
-#include "chrome/app/mash/chrome_mus_catalog.h"
-#endif
-
-using service_manager::mojom::ServiceFactory;
-
-namespace {
-
-// kProcessType used to identify child processes.
-const char* kMashChild = "mash-child";
-
-const char kChromeMashServiceName[] = "chrome_mash";
-
-// Name used for --mus. This is only applicable to ChromeOS. it is placed
-// outside of ifdefs to make code slightly more readable.
-const char kChromeMusServiceName[] = "chrome_mus";
-
-bool IsChild() {
-  return base::CommandLine::ForCurrentProcess()->HasSwitch(
-             switches::kProcessType) &&
-         base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
-             switches::kProcessType) == kMashChild;
-}
-
-void InitializeResources() {
-  ui::RegisterPathProvider();
-  const std::string locale =
-      base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
-          switches::kLang);
-  // This loads the Chrome's resources (chrome_100_percent.pak etc.)
-  ui::ResourceBundle::InitSharedInstanceWithLocale(
-      locale, nullptr, ui::ResourceBundle::LOAD_COMMON_RESOURCES);
-}
-
-class ServiceProcessLauncherDelegateImpl
-    : public service_manager::ServiceProcessLauncher::Delegate {
- public:
-  ServiceProcessLauncherDelegateImpl() {}
-  ~ServiceProcessLauncherDelegateImpl() override {}
-
- private:
-  // service_manager::ServiceProcessLauncher::Delegate:
-  void AdjustCommandLineArgumentsForTarget(
-        const service_manager::Identity& target,
-        base::CommandLine* command_line) override {
-    if (target.name() == kChromeMashServiceName ||
-        target.name() == kChromeMusServiceName ||
-        target.name() == content::mojom::kPackagedServicesServiceName) {
-      base::FilePath exe_path;
-      base::PathService::Get(base::FILE_EXE, &exe_path);
-      command_line->SetProgram(exe_path);
-    }
-    if (target.name() != content::mojom::kPackagedServicesServiceName) {
-      // If running anything other than the browser process, launch a mash
-      // child process. The new process will execute MashRunner::RunChild().
-      command_line->AppendSwitchASCII(switches::kProcessType, kMashChild);
-#if defined(OS_WIN)
-      command_line->AppendArg(switches::kPrefetchArgumentOther);
-#endif
-      return;
-    }
-
-    // When launching the browser process, ensure that we don't inherit the
-    // the mash/mus flag so it proceeds with the normal content/browser startup
-    // path.
-    const bool is_mash = command_line->HasSwitch(switches::kMash);
-    base::CommandLine::SwitchMap new_switches = command_line->GetSwitches();
-    new_switches.erase(switches::kMash);
-    new_switches.erase(switches::kMus);
-    *command_line = base::CommandLine(command_line->GetProgram());
-    for (const std::pair<std::string, base::CommandLine::StringType>& sw :
-         new_switches) {
-      command_line->AppendSwitchNative(sw.first, sw.second);
-    }
-    // Add kMusConfig so that launched processes know what config they are
-    // running in.
-    command_line->AppendSwitchASCII(switches::kMusConfig,
-                                    is_mash ? switches::kMash : switches::kMus);
-  }
-
-  DISALLOW_COPY_AND_ASSIGN(ServiceProcessLauncherDelegateImpl);
-};
-
-// Quits |run_loop| if the |identity| of the quitting service is critical to the
-// system (e.g. the window manager). Used in the main process.
-void OnInstanceQuitInMain(base::RunLoop* run_loop,
-                          int* exit_value,
-                          const service_manager::Identity& identity) {
-  DCHECK(exit_value);
-  DCHECK(run_loop);
-
-  if (identity.name() != mash::common::GetWindowManagerServiceName() &&
-      identity.name() != ui::mojom::kServiceName &&
-      identity.name() != content::mojom::kPackagedServicesServiceName) {
-    return;
-  }
-
-  LOG(ERROR) << "Main process exiting because service " << identity.name()
-             << " quit unexpectedly.";
-  *exit_value = 1;
-  run_loop->Quit();
-}
-
-}  // namespace
-
-MashRunner::MashRunner() {}
-
-MashRunner::~MashRunner() {}
-
-int MashRunner::Run() {
-  base::TaskScheduler::CreateAndSetSimpleTaskScheduler("MashRunner");
-
-  if (IsChild())
-    return RunChild();
-
-  return RunMain();
-}
-
-int MashRunner::RunMain() {
-  base::MessageLoop message_loop(base::MessageLoop::TYPE_UI);
-
-  base::SequencedWorkerPool::EnableWithRedirectionToTaskSchedulerForProcess();
-
-  mojo::edk::Init();
-
-  base::Thread ipc_thread("IPC thread");
-  ipc_thread.StartWithOptions(
-      base::Thread::Options(base::MessageLoop::TYPE_IO, 0));
-  mojo::edk::ScopedIPCSupport ipc_support(
-      ipc_thread.task_runner(),
-      mojo::edk::ScopedIPCSupport::ShutdownPolicy::FAST);
-
-  int exit_value = RunServiceManagerInMain();
-
-  ipc_thread.Stop();
-  base::TaskScheduler::GetInstance()->Shutdown();
-  return exit_value;
-}
-
-int MashRunner::RunServiceManagerInMain() {
-  // TODO(sky): refactor BackgroundServiceManager so can supply own context, we
-  // shouldn't we using context as it has a lot of stuff we don't really want
-  // in chrome.
-  ServiceProcessLauncherDelegateImpl service_process_launcher_delegate;
-  const bool is_mash =
-      base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kMash);
-#if defined(OS_CHROMEOS)
-  service_manager::BackgroundServiceManager background_service_manager(
-      &service_process_launcher_delegate,
-      is_mash ? CreateChromeMashCatalog() : CreateChromeMusCatalog());
-#else
-  service_manager::BackgroundServiceManager background_service_manager(
-      &service_process_launcher_delegate, CreateChromeMashCatalog());
-#endif
-  service_manager::mojom::ServicePtr service;
-  service_manager::ServiceContext context(
-      base::MakeUnique<mash::MashPackagedService>(),
-      service_manager::mojom::ServiceRequest(&service));
-  background_service_manager.RegisterService(
-      service_manager::Identity(
-          is_mash ? kChromeMashServiceName : kChromeMusServiceName,
-          service_manager::mojom::kRootUserID),
-      std::move(service), nullptr);
-
-  // Quit the main process if an important child (e.g. window manager) dies.
-  // On Chrome OS the OS-level session_manager will restart the main process.
-  base::RunLoop run_loop;
-  int exit_value = 0;
-  background_service_manager.SetInstanceQuitCallback(
-      base::Bind(&OnInstanceQuitInMain, &run_loop, &exit_value));
-
-#if defined(OS_POSIX)
-  // Quit the main process in response to shutdown signals (like SIGTERM).
-  // These signals are used by Linux distributions to request clean shutdown.
-  // On Chrome OS the SIGTERM signal is sent by session_manager.
-  InstallShutdownSignalHandlers(run_loop.QuitClosure(),
-                                base::ThreadTaskRunnerHandle::Get());
-#endif
-
-  // Ping services that we know we want to launch on startup (UI service,
-  // window manager, quick launch app).
-  context.connector()->StartService(ui::mojom::kServiceName);
-  context.connector()->StartService(
-      content::mojom::kPackagedServicesServiceName);
-  if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kMash)) {
-    context.connector()->StartService(
-        mash::common::GetWindowManagerServiceName());
-    context.connector()->StartService(mash::quick_launch::mojom::kServiceName);
-  }
-
-  run_loop.Run();
-
-  // |context| must be destroyed before the message loop.
-  return exit_value;
-}
-
-int MashRunner::RunChild() {
-  service_manager::WaitForDebuggerIfNecessary();
-
-  base::i18n::InitializeICU();
-  InitializeResources();
-  service_manager::RunStandaloneService(
-      base::Bind(&MashRunner::StartChildApp, base::Unretained(this)));
-  return 0;
-}
-
-void MashRunner::StartChildApp(
-    service_manager::mojom::ServiceRequest service_request) {
-  // TODO(sad): Normally, this would be a TYPE_DEFAULT message loop. However,
-  // TYPE_UI is needed for mojo:ui. But it is not known whether the child app is
-  // going to be mojo:ui at this point. So always create a TYPE_UI message loop
-  // for now.
-  base::MessageLoop message_loop(base::MessageLoop::TYPE_UI);
-  base::RunLoop run_loop;
-  service_manager::ServiceContext context(
-      base::MakeUnique<mash::MashPackagedService>(),
-      std::move(service_request));
-  // Quit the child process when the service quits.
-  context.SetQuitClosure(run_loop.QuitClosure());
-  run_loop.Run();
-  // |context| must be destroyed before |message_loop|.
-}
-
-int MashMain() {
-#if !defined(OFFICIAL_BUILD) && defined(OS_WIN)
-  base::RouteStdioToConsole(false);
-#endif
-
-#if defined(OS_POSIX)
-  // We inherit the signal mask of our parent process, which might block signals
-  // like SIGTERM that we need in order to cleanly shut down. Reset the signal
-  // mask to unblock all signals. http://crbug.com/699777
-  sigset_t empty_signal_set;
-  CHECK_EQ(0, sigemptyset(&empty_signal_set));
-  CHECK_EQ(0, sigprocmask(SIG_SETMASK, &empty_signal_set, nullptr));
-#endif
-
-  // TODO(sky): wire this up correctly.
-  service_manager::InitializeLogging();
-
-#if defined(OS_LINUX)
-  base::AtExitManager exit_manager;
-#endif
-
-#if !defined(OFFICIAL_BUILD)
-  // Initialize stack dumping before initializing sandbox to make sure symbol
-  // names in all loaded libraries will be cached.
-  // NOTE: On Chrome OS, crash reporting for the root process and non-browser
-  // service processes is handled by the OS-level crash_reporter.
-  base::debug::EnableInProcessStackDumping();
-#endif
-
-  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
-          switches::kTraceToConsole)) {
-    base::trace_event::TraceConfig trace_config =
-        tracing::GetConfigForTraceToConsole();
-    base::trace_event::TraceLog::GetInstance()->SetEnabled(
-        trace_config,
-        base::trace_event::TraceLog::RECORDING_MODE);
-  }
-
-  MashRunner mash_runner;
-  return mash_runner.Run();
-}
-
-void WaitForMashDebuggerIfNecessary() {
-  if (!service_manager::ServiceManagerIsRemote())
-    return;
-
-  const base::CommandLine* command_line =
-      base::CommandLine::ForCurrentProcess();
-  const std::string service_name =
-      command_line->GetSwitchValueASCII(switches::kProcessServiceName);
-  if (service_name !=
-      command_line->GetSwitchValueASCII(switches::kWaitForDebugger)) {
-    return;
-  }
-
-  // Include the pid as logging may not have been initialized yet (the pid
-  // printed out by logging is wrong).
-  LOG(WARNING) << "waiting for debugger to attach for service " << service_name
-               << " pid=" << base::Process::Current().Pid();
-  base::debug::WaitForDebugger(120, true);
-}
diff --git a/chrome/app/mash/mash_runner.h b/chrome/app/mash/mash_runner.h
deleted file mode 100644
index db5c0956..0000000
--- a/chrome/app/mash/mash_runner.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_APP_MASH_MASH_RUNNER_H_
-#define CHROME_APP_MASH_MASH_RUNNER_H_
-
-#include <memory>
-
-#include "base/macros.h"
-#include "services/service_manager/public/interfaces/service.mojom.h"
-
-// Responsible for running mash, both child and main processes.
-class MashRunner {
- public:
-  MashRunner();
-  ~MashRunner();
-
-  // Returns 0 if the process was initialized correctly, or error code on
-  // failure.
-  int Run();
-
- private:
-  // Runs the main process, including the service manager. Returns the exit
-  // value for the process.
-  int RunMain();
-
-  // Runs a background service manager in the main process. Returns the exit
-  // value for the process.
-  int RunServiceManagerInMain();
-
-  // Returns 0 if the child process was initialized correctly, or error code on
-  // failure.
-  int RunChild();
-
-  void StartChildApp(service_manager::mojom::ServiceRequest service_request);
-
-  DISALLOW_COPY_AND_ASSIGN(MashRunner);
-};
-
-// Called during chrome --mash startup instead of ContentMain().
-int MashMain();
-
-// Called if the command line isn't mash to potentially wait for a debugger
-// to attach.
-void WaitForMashDebuggerIfNecessary();
-
-#endif  // CHROME_APP_MASH_MASH_RUNNER_H_
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 2d402198..e160fe9c 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -166,12 +166,7 @@
     "browsing_data/browsing_data_quota_helper.h",
     "browsing_data/browsing_data_quota_helper_impl.cc",
     "browsing_data/browsing_data_quota_helper_impl.h",
-    "browsing_data/browsing_data_remover.h",
     "browsing_data/browsing_data_remover_delegate.h",
-    "browsing_data/browsing_data_remover_factory.cc",
-    "browsing_data/browsing_data_remover_factory.h",
-    "browsing_data/browsing_data_remover_impl.cc",
-    "browsing_data/browsing_data_remover_impl.h",
     "browsing_data/browsing_data_service_worker_helper.cc",
     "browsing_data/browsing_data_service_worker_helper.h",
     "browsing_data/cache_counter.cc",
@@ -180,6 +175,8 @@
     "browsing_data/canonical_cookie_hash.h",
     "browsing_data/chrome_browsing_data_remover_delegate.cc",
     "browsing_data/chrome_browsing_data_remover_delegate.h",
+    "browsing_data/chrome_browsing_data_remover_delegate_factory.cc",
+    "browsing_data/chrome_browsing_data_remover_delegate_factory.h",
     "browsing_data/cookies_tree_model.cc",
     "browsing_data/cookies_tree_model.h",
     "browsing_data/downloads_counter.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 8b843be..07a8c596 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2823,6 +2823,15 @@
   }
 #endif  // OS_ANDROID
 
+#if defined(OS_CHROMEOS)
+  // Don't expose --mash outside of Canary or developer builds.
+  if (!strcmp("mash", entry.internal_name) &&
+      channel != version_info::Channel::DEV &&
+      channel != version_info::Channel::UNKNOWN) {
+    return true;
+  }
+#endif  // defined(OS_CHROMEOS)
+
   // data-reduction-proxy-lo-fi and enable-data-reduction-proxy-lite-page
   // are only available for Chromium builds and the Canary/Dev/Beta channels.
   if ((!strcmp("data-reduction-proxy-lo-fi", entry.internal_name) ||
diff --git a/chrome/browser/android/browsing_data/browsing_data_bridge.cc b/chrome/browser/android/browsing_data/browsing_data_bridge.cc
index 170a27f59..5cf8c81 100644
--- a/chrome/browser/android/browsing_data/browsing_data_bridge.cc
+++ b/chrome/browser/android/browsing_data/browsing_data_bridge.cc
@@ -19,7 +19,6 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/scoped_observer.h"
 #include "base/values.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/engagement/important_sites_util.h"
 #include "chrome/browser/history/web_history_service_factory.h"
@@ -29,7 +28,9 @@
 #include "components/browser_sync/profile_sync_service.h"
 #include "components/browsing_data/core/history_notice_utils.h"
 #include "components/prefs/pref_service.h"
+#include "content/public/browser/browser_context.h"
 #include "content/public/browser/browsing_data_filter_builder.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "jni/BrowsingDataBridge_jni.h"
 
 using base::android::AttachCurrentThread;
@@ -37,6 +38,7 @@
 using base::android::JavaRef;
 using base::android::ScopedJavaLocalRef;
 using base::android::ScopedJavaGlobalRef;
+using content::BrowsingDataRemover;
 
 namespace {
 
@@ -101,7 +103,7 @@
     const JavaParamRef<jobjectArray>& jignoring_domains,
     const JavaParamRef<jintArray>& jignoring_domain_reasons) {
   BrowsingDataRemover* browsing_data_remover =
-      BrowsingDataRemoverFactory::GetForBrowserContext(GetOriginalProfile());
+      content::BrowserContext::GetBrowsingDataRemover(GetOriginalProfile());
 
   std::vector<int> data_types_vector;
   base::android::JavaIntArrayToIntVector(env, data_types, &data_types_vector);
diff --git a/chrome/browser/android/signin/signin_manager_android.cc b/chrome/browser/android/signin/signin_manager_android.cc
index 7fc387d..c2d7593 100644
--- a/chrome/browser/android/signin/signin_manager_android.cc
+++ b/chrome/browser/android/signin/signin_manager_android.cc
@@ -19,8 +19,7 @@
 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
+
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h"
 #include "chrome/browser/policy/cloud/user_policy_signin_service_factory.h"
@@ -43,6 +42,7 @@
 #include "components/signin/core/browser/signin_metrics.h"
 #include "components/signin/core/common/profile_management_switches.h"
 #include "components/signin/core/common/signin_pref_names.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "google_apis/gaia/gaia_auth_util.h"
 #include "google_apis/gaia/gaia_constants.h"
 #include "jni/SigninManager_jni.h"
@@ -55,12 +55,12 @@
 
 // A BrowsingDataRemover::Observer that clears all Profile data and then
 // invokes a callback and deletes itself.
-class ProfileDataRemover : public BrowsingDataRemover::Observer {
+class ProfileDataRemover : public content::BrowsingDataRemover::Observer {
  public:
   ProfileDataRemover(Profile* profile, const base::Closure& callback)
       : callback_(callback),
         origin_runner_(base::ThreadTaskRunnerHandle::Get()),
-        remover_(BrowsingDataRemoverFactory::GetForBrowserContext(profile)) {
+        remover_(content::BrowserContext::GetBrowsingDataRemover(profile)) {
     remover_->AddObserver(this);
     remover_->RemoveAndReply(
         base::Time(), base::Time::Max(),
@@ -79,7 +79,7 @@
  private:
   base::Closure callback_;
   scoped_refptr<base::SingleThreadTaskRunner> origin_runner_;
-  BrowsingDataRemover* remover_;
+  content::BrowsingDataRemover* remover_;
 
   DISALLOW_COPY_AND_ASSIGN(ProfileDataRemover);
 };
diff --git a/chrome/browser/android/webapk/webapk_installer.cc b/chrome/browser/android/webapk/webapk_installer.cc
index 5e999a28..5f913577502 100644
--- a/chrome/browser/android/webapk/webapk_installer.cc
+++ b/chrome/browser/android/webapk/webapk_installer.cc
@@ -16,6 +16,7 @@
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task_runner_util.h"
+#include "base/task_scheduler/post_task.h"
 #include "base/threading/sequenced_worker_pool.h"
 #include "base/timer/elapsed_timer.h"
 #include "chrome/browser/android/shortcut_helper.h"
@@ -113,8 +114,6 @@
     const SkBitmap& badge_icon,
     const std::map<std::string, std::string>& icon_url_to_murmur2_hash,
     bool is_manifest_stale) {
-  DCHECK(content::BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread());
-
   std::unique_ptr<webapk::WebApk> webapk(new webapk::WebApk);
   webapk->set_manifest_url(shortcut_info.manifest_url.spec());
   webapk->set_requester_application_package(
@@ -180,9 +179,11 @@
 
 // Returns task runner for running background tasks.
 scoped_refptr<base::TaskRunner> GetBackgroundTaskRunner() {
-  return content::BrowserThread::GetBlockingPool()
-      ->GetTaskRunnerWithShutdownBehavior(
-          base::SequencedWorkerPool::SKIP_ON_SHUTDOWN);
+  return base::CreateTaskRunnerWithTraits(
+      base::TaskTraits()
+          .MayBlock()
+          .WithPriority(base::TaskPriority::BACKGROUND)
+          .WithShutdownBehavior(base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN));
 }
 
 }  // anonymous namespace
diff --git a/chrome/browser/browsing_data/browsing_data_remover_browsertest.cc b/chrome/browser/browsing_data/browsing_data_remover_browsertest.cc
index d2bce37..70250bc 100644
--- a/chrome/browser/browsing_data/browsing_data_remover_browsertest.cc
+++ b/chrome/browser/browsing_data/browsing_data_remover_browsertest.cc
@@ -11,9 +11,7 @@
 #include "base/path_service.h"
 #include "base/run_loop.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_test_util.h"
+
 #include "chrome/browser/browsing_data/cache_counter.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/chrome_notification_types.h"
@@ -29,10 +27,12 @@
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/browsing_data_filter_builder.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/download_manager.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/common/content_paths.h"
 #include "content/public/test/browser_test_utils.h"
+#include "content/public/test/browsing_data_remover_test_util.h"
 #include "content/public/test/download_test_observer.h"
 #include "net/dns/mock_host_resolver.h"
 #include "net/http/transport_security_state.h"
@@ -116,24 +116,25 @@
   }
 
   void RemoveAndWait(int remove_mask) {
-    BrowsingDataRemover* remover =
-        BrowsingDataRemoverFactory::GetForBrowserContext(browser()->profile());
-    BrowsingDataRemoverCompletionObserver completion_observer(remover);
-    remover->RemoveAndReply(base::Time(), base::Time::Max(), remove_mask,
-                            BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
-                            &completion_observer);
+    content::BrowsingDataRemover* remover =
+        content::BrowserContext::GetBrowsingDataRemover(browser()->profile());
+    content::BrowsingDataRemoverCompletionObserver completion_observer(remover);
+    remover->RemoveAndReply(
+        base::Time(), base::Time::Max(), remove_mask,
+        content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+        &completion_observer);
     completion_observer.BlockUntilCompletion();
   }
 
   void RemoveWithFilterAndWait(
       int remove_mask,
       std::unique_ptr<BrowsingDataFilterBuilder> filter_builder) {
-    BrowsingDataRemover* remover =
-        BrowsingDataRemoverFactory::GetForBrowserContext(browser()->profile());
-    BrowsingDataRemoverCompletionObserver completion_observer(remover);
+    content::BrowsingDataRemover* remover =
+        content::BrowserContext::GetBrowsingDataRemover(browser()->profile());
+    content::BrowsingDataRemoverCompletionObserver completion_observer(remover);
     remover->RemoveWithFilterAndReply(
         base::Time(), base::Time::Max(), remove_mask,
-        BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+        content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
         std::move(filter_builder), &completion_observer);
     completion_observer.BlockUntilCompletion();
   }
@@ -195,7 +196,7 @@
 // Test BrowsingDataRemover for downloads.
 IN_PROC_BROWSER_TEST_F(BrowsingDataRemoverBrowserTest, Download) {
   DownloadAnItem();
-  RemoveAndWait(BrowsingDataRemover::DATA_TYPE_DOWNLOADS);
+  RemoveAndWait(content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS);
   VerifyDownloadCount(0u);
 }
 
@@ -209,7 +210,7 @@
   prefs->SetBoolean(prefs::kAllowDeletingBrowserHistory, false);
 
   DownloadAnItem();
-  RemoveAndWait(BrowsingDataRemover::DATA_TYPE_DOWNLOADS);
+  RemoveAndWait(content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS);
   VerifyDownloadCount(1u);
 }
 #endif
@@ -255,7 +256,7 @@
   std::unique_ptr<BrowsingDataFilterBuilder> filter_builder =
       BrowsingDataFilterBuilder::Create(BrowsingDataFilterBuilder::WHITELIST);
   filter_builder->AddOrigin(url::Origin(url1));
-  RemoveWithFilterAndWait(BrowsingDataRemover::DATA_TYPE_CACHE,
+  RemoveWithFilterAndWait(content::BrowsingDataRemover::DATA_TYPE_CACHE,
                           std::move(filter_builder));
 
   // After the partial deletion, the cache should be smaller but still nonempty.
@@ -266,12 +267,12 @@
   filter_builder =
       BrowsingDataFilterBuilder::Create(BrowsingDataFilterBuilder::WHITELIST);
   filter_builder->AddOrigin(url::Origin(url1));
-  RemoveWithFilterAndWait(BrowsingDataRemover::DATA_TYPE_CACHE,
+  RemoveWithFilterAndWait(content::BrowsingDataRemover::DATA_TYPE_CACHE,
                           std::move(filter_builder));
   EXPECT_EQ(new_size, GetCacheSize());
 
   // Delete the remaining data.
-  RemoveAndWait(BrowsingDataRemover::DATA_TYPE_CACHE);
+  RemoveAndWait(content::BrowsingDataRemover::DATA_TYPE_CACHE);
 
   // The cache is empty.
   EXPECT_EQ(0, GetCacheSize());
@@ -294,7 +295,7 @@
 // Verify that TransportSecurityState data is cleared for REMOVE_CACHE.
 IN_PROC_BROWSER_TEST_F(BrowsingDataRemoverTransportSecurityStateBrowserTest,
                        ClearTransportSecurityState) {
-  RemoveAndWait(BrowsingDataRemover::DATA_TYPE_CACHE);
+  RemoveAndWait(content::BrowsingDataRemover::DATA_TYPE_CACHE);
   base::RunLoop run_loop;
   BrowserThread::PostTaskAndReply(
       BrowserThread::IO, FROM_HERE,
diff --git a/chrome/browser/browsing_data/browsing_data_remover_factory.h b/chrome/browser/browsing_data/browsing_data_remover_factory.h
deleted file mode 100644
index 4d24d07..0000000
--- a/chrome/browser/browsing_data/browsing_data_remover_factory.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_FACTORY_H_
-#define CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_FACTORY_H_
-
-#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
-
-namespace base {
-template <typename T>
-struct DefaultSingletonTraits;
-}
-
-class BrowsingDataRemover;
-
-class BrowsingDataRemoverFactory : public BrowserContextKeyedServiceFactory {
- public:
-  // Returns the singleton instance of BrowsingDataRemoverFactory.
-  static BrowsingDataRemoverFactory* GetInstance();
-
-  // Returns the BrowsingDataRemover associated with |context|.
-  static BrowsingDataRemover* GetForBrowserContext(
-      content::BrowserContext* context);
-
- private:
-  friend struct base::DefaultSingletonTraits<BrowsingDataRemoverFactory>;
-
-  BrowsingDataRemoverFactory();
-  ~BrowsingDataRemoverFactory() override;
-
-  // BrowserContextKeyedServiceFactory overrides:
-  content::BrowserContext* GetBrowserContextToUse(
-      content::BrowserContext* context) const override;
-  KeyedService* BuildServiceInstanceFor(
-      content::BrowserContext* context) const override;
-
-  DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverFactory);
-};
-
-#endif  // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_FACTORY_H_
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
index 3452790..23d309a 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
@@ -334,14 +334,20 @@
 #endif
       weak_ptr_factory_(this) {}
 
-ChromeBrowsingDataRemoverDelegate::~ChromeBrowsingDataRemoverDelegate() {
+ChromeBrowsingDataRemoverDelegate::~ChromeBrowsingDataRemoverDelegate() {}
+
+void ChromeBrowsingDataRemoverDelegate::Shutdown() {
   history_task_tracker_.TryCancelAll();
   template_url_sub_.reset();
 }
 
-BrowsingDataRemoverDelegate::EmbedderOriginTypeMatcher
+content::BrowsingDataRemoverDelegate::EmbedderOriginTypeMatcher
 ChromeBrowsingDataRemoverDelegate::GetOriginTypeMatcher() const {
-  return base::Bind(DoesOriginMatchEmbedderMask);
+  return base::Bind(&DoesOriginMatchEmbedderMask);
+}
+
+bool ChromeBrowsingDataRemoverDelegate::MayRemoveDownloadHistory() const {
+  return profile_->GetPrefs()->GetBoolean(prefs::kAllowDeletingBrowserHistory);
 }
 
 void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
@@ -356,15 +362,18 @@
 
   // Embedder-defined DOM-accessible storage currently contains only
   // one datatype, which is the durable storage permission.
-  if (remove_mask & BrowsingDataRemover::DATA_TYPE_EMBEDDER_DOM_STORAGE) {
+  if (remove_mask &
+      content::BrowsingDataRemover::DATA_TYPE_EMBEDDER_DOM_STORAGE) {
     remove_mask |= DATA_TYPE_DURABLE_PERMISSION;
   }
 
-  if (origin_type_mask & BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB) {
+  if (origin_type_mask &
+      content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB) {
     base::RecordAction(
         UserMetricsAction("ClearBrowsingData_MaskContainsUnprotectedWeb"));
   }
-  if (origin_type_mask & BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB) {
+  if (origin_type_mask &
+      content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB) {
     base::RecordAction(
         UserMetricsAction("ClearBrowsingData_MaskContainsProtectedWeb"));
   }
@@ -377,11 +386,12 @@
   // If this fires, we added a new BrowsingDataHelper::OriginTypeMask without
   // updating the user metrics above.
   static_assert(
-      ALL_ORIGIN_TYPES == (BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB |
+      ALL_ORIGIN_TYPES ==
+          (content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB |
 #if BUILDFLAG(ENABLE_EXTENSIONS)
-                           ORIGIN_TYPE_EXTENSION |
+           ORIGIN_TYPE_EXTENSION |
 #endif
-                           BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB),
+           content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB),
       "OriginTypeMask has been updated without updating user metrics");
 
   //////////////////////////////////////////////////////////////////////////////
@@ -410,9 +420,9 @@
   // All the UI entry points into the BrowsingDataRemoverImpl should be
   // disabled, but this will fire if something was missed or added.
   DCHECK(may_delete_history ||
-         (remove_mask & BrowsingDataRemover::DATA_TYPE_NO_CHECKS) ||
+         (remove_mask & content::BrowsingDataRemover::DATA_TYPE_NO_CHECKS) ||
          (!(remove_mask & DATA_TYPE_HISTORY) &&
-          !(remove_mask & BrowsingDataRemover::DATA_TYPE_DOWNLOADS)));
+          !(remove_mask & content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS)));
 
   //////////////////////////////////////////////////////////////////////////////
   // DATA_TYPE_HISTORY
@@ -643,7 +653,7 @@
 
   //////////////////////////////////////////////////////////////////////////////
   // DATA_TYPE_DOWNLOADS
-  if ((remove_mask & BrowsingDataRemover::DATA_TYPE_DOWNLOADS) &&
+  if ((remove_mask & content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS) &&
       may_delete_history) {
     DownloadPrefs* download_prefs = DownloadPrefs::FromDownloadManager(
         BrowserContext::GetDownloadManager(profile_));
@@ -657,8 +667,9 @@
   // don't accidentally remove the cookies that are associated with the
   // UNPROTECTED_WEB origin. This is necessary because cookies are not separated
   // between UNPROTECTED_WEB and PROTECTED_WEB.
-  if (remove_mask & BrowsingDataRemover::DATA_TYPE_COOKIES &&
-      origin_type_mask & BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB) {
+  if ((remove_mask & content::BrowsingDataRemover::DATA_TYPE_COOKIES) &&
+      (origin_type_mask &
+       content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB)) {
     base::RecordAction(UserMetricsAction("ClearBrowsingData_Cookies"));
 
     // Clear the safebrowsing cookies only if time period is for "all time".  It
@@ -753,7 +764,7 @@
         clear_http_auth_cache_.GetCompletionCallback());
   }
 
-  if (remove_mask & BrowsingDataRemover::DATA_TYPE_COOKIES) {
+  if (remove_mask & content::BrowsingDataRemover::DATA_TYPE_COOKIES) {
     password_manager::PasswordStore* password_store =
         PasswordStoreFactory::GetForProfile(profile_,
                                             ServiceAccessType::EXPLICIT_ACCESS)
@@ -809,7 +820,7 @@
 
   //////////////////////////////////////////////////////////////////////////////
   // DATA_TYPE_CACHE
-  if (remove_mask & BrowsingDataRemover::DATA_TYPE_CACHE) {
+  if (remove_mask & content::BrowsingDataRemover::DATA_TYPE_CACHE) {
     // Tell the renderers to clear their cache.
     // TODO(crbug.com/668114): Renderer cache is a platform concept, and should
     // live in BrowsingDataRemoverImpl. However, WebCacheManager itself is
@@ -873,7 +884,7 @@
 #if defined(OS_ANDROID)
     // For now we're considering offline pages as cache, so if we're removing
     // cache we should remove offline pages as well.
-    if ((remove_mask & BrowsingDataRemover::DATA_TYPE_CACHE)) {
+    if ((remove_mask & content::BrowsingDataRemover::DATA_TYPE_CACHE)) {
       clear_offline_page_data_.Start();
       offline_pages::OfflinePageModelFactory::GetForBrowserContext(profile_)
           ->DeleteCachedPagesByURLPredicate(
@@ -897,8 +908,9 @@
 #if BUILDFLAG(ENABLE_PLUGINS)
   // Plugin is data not separated for protected and unprotected web origins. We
   // check the origin_type_mask_ to prevent unintended deletion.
-  if (remove_mask & DATA_TYPE_PLUGIN_DATA &&
-      origin_type_mask & BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB) {
+  if ((remove_mask & DATA_TYPE_PLUGIN_DATA) &&
+      (origin_type_mask &
+       content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB)) {
     base::RecordAction(UserMetricsAction("ClearBrowsingData_LSOData"));
     clear_plugin_data_count_ = 1;
 
@@ -926,7 +938,7 @@
 
   //////////////////////////////////////////////////////////////////////////////
   // DATA_TYPE_MEDIA_LICENSES
-  if (remove_mask & BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES) {
+  if (remove_mask & content::BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES) {
     // TODO(jrummell): This UMA should be renamed to indicate it is for Media
     // Licenses.
     base::RecordAction(UserMetricsAction("ClearBrowsingData_ContentLicenses"));
@@ -967,21 +979,21 @@
   // Remove omnibox zero-suggest cache results. Filtering is not supported.
   // This is not a problem, as deleting more data than necessary will just cause
   // another server round-trip; no data is actually lost.
-  if ((remove_mask & (BrowsingDataRemover::DATA_TYPE_CACHE |
-                      BrowsingDataRemover::DATA_TYPE_COOKIES))) {
+  if ((remove_mask & (content::BrowsingDataRemover::DATA_TYPE_CACHE |
+                      content::BrowsingDataRemover::DATA_TYPE_COOKIES))) {
     prefs->SetString(omnibox::kZeroSuggestCachedResults, std::string());
   }
 
   //////////////////////////////////////////////////////////////////////////////
   // Domain reliability service.
   if (remove_mask &
-      (BrowsingDataRemover::DATA_TYPE_COOKIES | DATA_TYPE_HISTORY)) {
+      (content::BrowsingDataRemover::DATA_TYPE_COOKIES | DATA_TYPE_HISTORY)) {
     domain_reliability::DomainReliabilityService* service =
       domain_reliability::DomainReliabilityServiceFactory::
           GetForBrowserContext(profile_);
     if (service) {
       domain_reliability::DomainReliabilityClearMode mode;
-      if (remove_mask & BrowsingDataRemover::DATA_TYPE_COOKIES)
+      if (remove_mask & content::BrowsingDataRemover::DATA_TYPE_COOKIES)
         mode = domain_reliability::CLEAR_CONTEXTS;
       else
         mode = domain_reliability::CLEAR_BEACONS;
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h
index ef048e8..26d4ea0 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h
@@ -12,12 +12,13 @@
 #include "base/memory/weak_ptr.h"
 #include "base/synchronization/waitable_event_watcher.h"
 #include "base/task/cancelable_task_tracker.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_delegate.h"
 #include "chrome/common/features.h"
 #include "components/browsing_data/core/browsing_data_utils.h"
+#include "components/keyed_service/core/keyed_service.h"
 #include "components/offline_pages/core/offline_page_model.h"
 #include "components/search_engines/template_url_service.h"
+#include "content/public/browser/browsing_data_remover.h"
+#include "content/public/browser/browsing_data_remover_delegate.h"
 #include "extensions/features/features.h"
 #include "media/media_features.h"
 #include "ppapi/features/features.h"
@@ -41,19 +42,23 @@
 
 // A delegate used by BrowsingDataRemover to delete data specific to Chrome
 // as the embedder.
-class ChromeBrowsingDataRemoverDelegate : public BrowsingDataRemoverDelegate
+class ChromeBrowsingDataRemoverDelegate
+    : public content::BrowsingDataRemoverDelegate,
+      public KeyedService
 #if BUILDFLAG(ENABLE_PLUGINS)
-    , public PepperFlashSettingsManager::Client
+      ,
+      public PepperFlashSettingsManager::Client
 #endif
 {
  public:
-  // This is an extension of BrowsingDataRemover::RemoveDataMask which includes
-  // all datatypes therefrom and adds additional Chrome-specific ones.
+  // This is an extension of content::BrowsingDataRemover::RemoveDataMask which
+  // includes all datatypes therefrom and adds additional Chrome-specific ones.
   // TODO(crbug.com/668114): Extend this to uint64_t to ensure that we won't
   // run out of space anytime soon.
   enum DataType {
     // Embedder can start adding datatypes after the last platform datatype.
-    DATA_TYPE_EMBEDDER_BEGIN = BrowsingDataRemover::DATA_TYPE_CONTENT_END << 1,
+    DATA_TYPE_EMBEDDER_BEGIN =
+        content::BrowsingDataRemover::DATA_TYPE_CONTENT_END << 1,
 
     // Chrome-specific datatypes.
     DATA_TYPE_HISTORY = DATA_TYPE_EMBEDDER_BEGIN,
@@ -72,57 +77,60 @@
 
     // "Site data" includes storage backend accessible to websites and some
     // additional metadata kept by the browser (e.g. site usage data).
-    DATA_TYPE_SITE_DATA = BrowsingDataRemover::DATA_TYPE_APP_CACHE |
-                          BrowsingDataRemover::DATA_TYPE_COOKIES |
-                          BrowsingDataRemover::DATA_TYPE_FILE_SYSTEMS |
-                          BrowsingDataRemover::DATA_TYPE_INDEXED_DB |
-                          BrowsingDataRemover::DATA_TYPE_LOCAL_STORAGE |
-                          BrowsingDataRemover::DATA_TYPE_SERVICE_WORKERS |
-                          BrowsingDataRemover::DATA_TYPE_CACHE_STORAGE |
-                          BrowsingDataRemover::DATA_TYPE_WEB_SQL |
-                          BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
-                          DATA_TYPE_PLUGIN_DATA |
+    DATA_TYPE_SITE_DATA =
+        content::BrowsingDataRemover::DATA_TYPE_APP_CACHE |
+        content::BrowsingDataRemover::DATA_TYPE_COOKIES |
+        content::BrowsingDataRemover::DATA_TYPE_FILE_SYSTEMS |
+        content::BrowsingDataRemover::DATA_TYPE_INDEXED_DB |
+        content::BrowsingDataRemover::DATA_TYPE_LOCAL_STORAGE |
+        content::BrowsingDataRemover::DATA_TYPE_SERVICE_WORKERS |
+        content::BrowsingDataRemover::DATA_TYPE_CACHE_STORAGE |
+        content::BrowsingDataRemover::DATA_TYPE_WEB_SQL |
+        content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
+        DATA_TYPE_PLUGIN_DATA |
 #if defined(OS_ANDROID)
-                          DATA_TYPE_WEB_APP_DATA |
+        DATA_TYPE_WEB_APP_DATA |
 #endif
-                          DATA_TYPE_SITE_USAGE_DATA |
-                          DATA_TYPE_DURABLE_PERMISSION |
-                          DATA_TYPE_EXTERNAL_PROTOCOL_DATA,
+        DATA_TYPE_SITE_USAGE_DATA |
+        DATA_TYPE_DURABLE_PERMISSION |
+        DATA_TYPE_EXTERNAL_PROTOCOL_DATA,
 
     // Datatypes protected by Important Sites.
     IMPORTANT_SITES_DATA_TYPES =
-        DATA_TYPE_SITE_DATA | BrowsingDataRemover::DATA_TYPE_CACHE,
+        DATA_TYPE_SITE_DATA | content::BrowsingDataRemover::DATA_TYPE_CACHE,
 
     // Datatypes that can be deleted partially per URL / origin / domain,
     // whichever makes sense.
     FILTERABLE_DATA_TYPES = DATA_TYPE_SITE_DATA |
-                            BrowsingDataRemover::DATA_TYPE_CACHE |
-                            BrowsingDataRemover::DATA_TYPE_DOWNLOADS,
+                            content::BrowsingDataRemover::DATA_TYPE_CACHE |
+                            content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS,
 
     // Includes all the available remove options. Meant to be used by clients
     // that wish to wipe as much data as possible from a Profile, to make it
     // look like a new Profile.
     ALL_DATA_TYPES = DATA_TYPE_SITE_DATA |
-                     BrowsingDataRemover::DATA_TYPE_CACHE |
-                     BrowsingDataRemover::DATA_TYPE_DOWNLOADS |
+                     content::BrowsingDataRemover::DATA_TYPE_CACHE |
+                     content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS |
                      DATA_TYPE_FORM_DATA |
                      DATA_TYPE_HISTORY |
                      DATA_TYPE_PASSWORDS |
-                     BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES,
+                     content::BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES,
 
     // Includes all available remove options. Meant to be used when the Profile
     // is scheduled to be deleted, and all possible data should be wiped from
     // disk as soon as possible.
-    WIPE_PROFILE = ALL_DATA_TYPES | BrowsingDataRemover::DATA_TYPE_NO_CHECKS,
+    WIPE_PROFILE =
+        ALL_DATA_TYPES | content::BrowsingDataRemover::DATA_TYPE_NO_CHECKS,
   };
 
-  // This is an extension of BrowsingDataRemover::OriginType which includes all
-  // origin types therefrom and adds additional Chrome-specific ones.
+  // This is an extension of content::BrowsingDataRemover::OriginType which
+  // includes all origin types therefrom and adds additional Chrome-specific
+  // ones.
   enum OriginType {
     // Embedder can start adding origin types after the last
     // platform origin type.
-    ORIGIN_TYPE_EMBEDDER_BEGIN = BrowsingDataRemover::ORIGIN_TYPE_CONTENT_END
-                                 << 1,
+    ORIGIN_TYPE_EMBEDDER_BEGIN =
+        content::BrowsingDataRemover::ORIGIN_TYPE_CONTENT_END << 1,
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
     // Packaged apps and extensions (chrome-extension://*).
@@ -130,11 +138,12 @@
 #endif
 
     // All origin types.
-    ALL_ORIGIN_TYPES = BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB |
+    ALL_ORIGIN_TYPES =
+        content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB |
 #if BUILDFLAG(ENABLE_EXTENSIONS)
-                       ORIGIN_TYPE_EXTENSION |
+        ORIGIN_TYPE_EXTENSION |
 #endif
-                       BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB,
+        content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB,
   };
 
   // Important sites protect a small set of sites from the deletion of certain
@@ -172,9 +181,13 @@
   ChromeBrowsingDataRemoverDelegate(content::BrowserContext* browser_context);
   ~ChromeBrowsingDataRemoverDelegate() override;
 
+  // KeyedService:
+  void Shutdown() override;
+
   // BrowsingDataRemoverDelegate:
-  BrowsingDataRemoverDelegate::EmbedderOriginTypeMatcher GetOriginTypeMatcher()
-      const override;
+  content::BrowsingDataRemoverDelegate::EmbedderOriginTypeMatcher
+  GetOriginTypeMatcher() const override;
+  bool MayRemoveDownloadHistory() const override;
   void RemoveEmbedderData(
       const base::Time& delete_begin,
       const base::Time& delete_end,
diff --git a/chrome/browser/browsing_data/browsing_data_remover_factory.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_factory.cc
similarity index 75%
rename from chrome/browser/browsing_data/browsing_data_remover_factory.cc
rename to chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_factory.cc
index d9edc87..91911e4 100644
--- a/chrome/browser/browsing_data/browsing_data_remover_factory.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_factory.cc
@@ -1,13 +1,12 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
+// Copyright 2017 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
+#include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_factory.h"
 
 #include "base/memory/ptr_util.h"
 #include "base/memory/singleton.h"
 #include "chrome/browser/autofill/personal_data_manager_factory.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_impl.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 #include "chrome/browser/domain_reliability/service_factory.h"
@@ -39,18 +38,20 @@
 #endif
 
 // static
-BrowsingDataRemoverFactory* BrowsingDataRemoverFactory::GetInstance() {
-  return base::Singleton<BrowsingDataRemoverFactory>::get();
+ChromeBrowsingDataRemoverDelegateFactory*
+ChromeBrowsingDataRemoverDelegateFactory::GetInstance() {
+  return base::Singleton<ChromeBrowsingDataRemoverDelegateFactory>::get();
 }
 
 // static
-BrowsingDataRemover* BrowsingDataRemoverFactory::GetForBrowserContext(
-    content::BrowserContext* context) {
-  return static_cast<BrowsingDataRemover*>(
-      GetInstance()->GetServiceForBrowserContext(context, true));
+ChromeBrowsingDataRemoverDelegate*
+ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(Profile* profile) {
+  return static_cast<ChromeBrowsingDataRemoverDelegate*>(
+      GetInstance()->GetServiceForBrowserContext(profile, true));
 }
 
-BrowsingDataRemoverFactory::BrowsingDataRemoverFactory()
+ChromeBrowsingDataRemoverDelegateFactory::
+    ChromeBrowsingDataRemoverDelegateFactory()
     : BrowserContextKeyedServiceFactory(
           "BrowsingDataRemover",
           BrowserContextDependencyManager::GetInstance()) {
@@ -81,9 +82,11 @@
 #endif
 }
 
-BrowsingDataRemoverFactory::~BrowsingDataRemoverFactory() {}
+ChromeBrowsingDataRemoverDelegateFactory::
+    ~ChromeBrowsingDataRemoverDelegateFactory() {}
 
-content::BrowserContext* BrowsingDataRemoverFactory::GetBrowserContextToUse(
+content::BrowserContext*
+ChromeBrowsingDataRemoverDelegateFactory::GetBrowserContextToUse(
     content::BrowserContext* context) const {
   // For guest profiles the browsing data is in the OTR profile.
   Profile* profile = static_cast<Profile*>(context);
@@ -92,10 +95,7 @@
   return profile;
 }
 
-KeyedService* BrowsingDataRemoverFactory::BuildServiceInstanceFor(
+KeyedService* ChromeBrowsingDataRemoverDelegateFactory::BuildServiceInstanceFor(
     content::BrowserContext* context) const {
-  BrowsingDataRemoverImpl* remover = new BrowsingDataRemoverImpl(context);
-  remover->SetEmbedderDelegate(
-      base::MakeUnique<ChromeBrowsingDataRemoverDelegate>(context));
-  return remover;
+  return new ChromeBrowsingDataRemoverDelegate(context);
 }
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_factory.h b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_factory.h
new file mode 100644
index 0000000..9617eb4
--- /dev/null
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_factory.h
@@ -0,0 +1,43 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_BROWSING_DATA_CHROME_BROWSING_DATA_REMOVER_DELEGATE_FACTORY_H_
+#define CHROME_BROWSER_BROWSING_DATA_CHROME_BROWSING_DATA_REMOVER_DELEGATE_FACTORY_H_
+
+#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
+
+namespace base {
+template <typename T>
+struct DefaultSingletonTraits;
+}
+
+class ChromeBrowsingDataRemoverDelegate;
+class Profile;
+
+class ChromeBrowsingDataRemoverDelegateFactory
+    : public BrowserContextKeyedServiceFactory {
+ public:
+  // Returns the singleton instance of ChromeBrowsingDataRemoverDelegateFactory.
+  static ChromeBrowsingDataRemoverDelegateFactory* GetInstance();
+
+  // Returns the ChromeBrowsingDataRemoverDelegate associated with |profile|.
+  static ChromeBrowsingDataRemoverDelegate* GetForProfile(Profile* profile);
+
+ private:
+  friend struct base::DefaultSingletonTraits<
+      ChromeBrowsingDataRemoverDelegateFactory>;
+
+  ChromeBrowsingDataRemoverDelegateFactory();
+  ~ChromeBrowsingDataRemoverDelegateFactory() override;
+
+  // BrowserContextKeyedServiceFactory overrides:
+  content::BrowserContext* GetBrowserContextToUse(
+      content::BrowserContext* context) const override;
+  KeyedService* BuildServiceInstanceFor(
+      content::BrowserContext* context) const override;
+
+  DISALLOW_COPY_AND_ASSIGN(ChromeBrowsingDataRemoverDelegateFactory);
+};
+
+#endif  // CHROME_BROWSER_BROWSING_DATA_CHROME_BROWSING_DATA_REMOVER_DELEGATE_FACTORY_H_
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
index 349cb18..82e1efa 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
@@ -14,11 +14,7 @@
 #include "chrome/browser/autofill/personal_data_manager_factory.h"
 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_impl.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_test_util.h"
-#include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
+#include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_factory.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 #include "chrome/browser/domain_reliability/service_factory.h"
 #include "chrome/browser/download/chrome_download_manager_delegate.h"
@@ -59,6 +55,8 @@
 #include "components/prefs/testing_pref_service.h"
 #include "components/translate/core/browser/language_model.h"
 #include "content/public/browser/browsing_data_filter_builder.h"
+#include "content/public/browser/browsing_data_remover.h"
+#include "content/public/test/browsing_data_remover_test_util.h"
 #include "content/public/test/mock_download_manager.h"
 #include "content/public/test/test_browser_thread_bundle.h"
 #include "content/public/test/test_utils.h"
@@ -142,8 +140,9 @@
 #if BUILDFLAG(ENABLE_EXTENSIONS)
 const int kExtension = ChromeBrowsingDataRemoverDelegate::ORIGIN_TYPE_EXTENSION;
 #endif
-const int kProtected = BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB;
-const int kUnprotected = BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB;
+const int kProtected = content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB;
+const int kUnprotected =
+    content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB;
 
 // Testers --------------------------------------------------------------------
 
@@ -632,8 +631,8 @@
   explicit RemovePluginDataTester(TestingProfile* profile)
       : helper_(new TestBrowsingDataFlashLSOHelper(profile)) {
     static_cast<ChromeBrowsingDataRemoverDelegate*>(
-        BrowsingDataRemoverFactory::GetForBrowserContext(profile)
-            ->GetEmbedderDelegate())->OverrideFlashLSOHelperForTesting(helper_);
+        profile->GetBrowsingDataRemoverDelegate())
+        ->OverrideFlashLSOHelperForTesting(helper_);
   }
 
   void AddDomain(const std::string& domain) {
@@ -752,6 +751,21 @@
   DISALLOW_COPY_AND_ASSIGN(RemoveDownloadsTester);
 };
 
+// TestingProfile does not contain ChromeBrowsingDataRemoverDelegate. Add it
+// for the purpose of this test.
+class TestingProfileWithDelegate : public TestingProfile {
+ public:
+  TestingProfileWithDelegate() : delegate_(this) {}
+
+  content::BrowsingDataRemoverDelegate* GetBrowsingDataRemoverDelegate()
+      override {
+    return &delegate_;
+  }
+
+ private:
+  ChromeBrowsingDataRemoverDelegate delegate_;
+};
+
 }  // namespace
 
 // RemoveAutofillTester is not a part of the anonymous namespace above, as
@@ -846,13 +860,14 @@
 class ChromeBrowsingDataRemoverDelegateTest : public testing::Test {
  public:
   ChromeBrowsingDataRemoverDelegateTest()
-      : profile_(new TestingProfile()),
+      : profile_(new TestingProfileWithDelegate()),
         clear_domain_reliability_tester_(profile_.get()) {
-    remover_ = BrowsingDataRemoverFactory::GetForBrowserContext(profile_.get());
+    remover_ = content::BrowserContext::GetBrowsingDataRemover(profile_.get());
 
 #if defined(OS_ANDROID)
     static_cast<ChromeBrowsingDataRemoverDelegate*>(
-        remover_->GetEmbedderDelegate())->OverrideWebappRegistryForTesting(
+        profile_->GetBrowsingDataRemoverDelegate())
+        ->OverrideWebappRegistryForTesting(
             base::WrapUnique<WebappRegistry>(new TestWebappRegistry()));
 #endif
   }
@@ -875,12 +890,15 @@
                                      const base::Time& delete_end,
                                      int remove_mask,
                                      bool include_protected_origins) {
-    int origin_type_mask = BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB;
+    int origin_type_mask =
+        content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB;
     if (include_protected_origins) {
-      origin_type_mask |= BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB;
+      origin_type_mask |=
+          content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB;
     }
 
-    BrowsingDataRemoverCompletionObserver completion_observer(remover_);
+    content::BrowsingDataRemoverCompletionObserver completion_observer(
+        remover_);
     remover_->RemoveAndReply(
         delete_begin, delete_end, remove_mask, origin_type_mask,
         &completion_observer);
@@ -892,10 +910,11 @@
       const base::Time& delete_end,
       int remove_mask,
       std::unique_ptr<BrowsingDataFilterBuilder> filter_builder) {
-    BrowsingDataRemoverCompletionObserver completion_observer(remover_);
-    static_cast<BrowsingDataRemoverImpl*>(remover_)->RemoveWithFilterAndReply(
+    content::BrowsingDataRemoverCompletionObserver completion_observer(
+        remover_);
+    remover_->RemoveWithFilterAndReply(
         delete_begin, delete_end, remove_mask,
-        BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+        content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
         std::move(filter_builder), &completion_observer);
     completion_observer.BlockUntilCompletion();
   }
@@ -927,8 +946,8 @@
   }
 
  private:
-  // Cached pointer to BrowsingDataRemoverImpl for access to testing methods.
-  BrowsingDataRemover* remover_;
+  // Cached pointer to BrowsingDataRemover for access to testing methods.
+  content::BrowsingDataRemover* remover_;
 
   content::TestBrowserThreadBundle thread_bundle_;
   std::unique_ptr<TestingProfile> profile_;
@@ -946,10 +965,11 @@
   ASSERT_TRUE(tester.ContainsCookie());
 
   BlockUntilBrowsingDataRemoved(base::Time(), base::Time::Max(),
-                                BrowsingDataRemover::DATA_TYPE_COOKIES, false);
+                                content::BrowsingDataRemover::DATA_TYPE_COOKIES,
+                                false);
 
-  EXPECT_EQ(BrowsingDataRemover::DATA_TYPE_COOKIES, GetRemovalMask());
-  EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  EXPECT_EQ(content::BrowsingDataRemover::DATA_TYPE_COOKIES, GetRemovalMask());
+  EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
   EXPECT_FALSE(tester.ContainsCookie());
 }
@@ -962,10 +982,11 @@
   ASSERT_TRUE(tester.ContainsCookie());
 
   BlockUntilBrowsingDataRemoved(AnHourAgo(), base::Time::Max(),
-                                BrowsingDataRemover::DATA_TYPE_COOKIES, false);
+                                content::BrowsingDataRemover::DATA_TYPE_COOKIES,
+                                false);
 
-  EXPECT_EQ(BrowsingDataRemover::DATA_TYPE_COOKIES, GetRemovalMask());
-  EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  EXPECT_EQ(content::BrowsingDataRemover::DATA_TYPE_COOKIES, GetRemovalMask());
+  EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
   // Removing with time period other than all time should not clear safe
   // browsing cookies.
@@ -982,11 +1003,11 @@
       BrowsingDataFilterBuilder::Create(BrowsingDataFilterBuilder::BLACKLIST));
   filter->AddRegisterableDomain(kTestRegisterableDomain1);
   BlockUntilOriginDataRemoved(base::Time(), base::Time::Max(),
-                              BrowsingDataRemover::DATA_TYPE_COOKIES,
+                              content::BrowsingDataRemover::DATA_TYPE_COOKIES,
                               std::move(filter));
 
-  EXPECT_EQ(BrowsingDataRemover::DATA_TYPE_COOKIES, GetRemovalMask());
-  EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  EXPECT_EQ(content::BrowsingDataRemover::DATA_TYPE_COOKIES, GetRemovalMask());
+  EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
   EXPECT_TRUE(tester.ContainsCookie());
 
@@ -994,7 +1015,7 @@
       BrowsingDataFilterBuilder::Create(BrowsingDataFilterBuilder::WHITELIST));
   filter2->AddRegisterableDomain(kTestRegisterableDomain1);
   BlockUntilOriginDataRemoved(base::Time(), base::Time::Max(),
-                              BrowsingDataRemover::DATA_TYPE_COOKIES,
+                              content::BrowsingDataRemover::DATA_TYPE_COOKIES,
                               std::move(filter2));
   EXPECT_FALSE(tester.ContainsCookie());
 }
@@ -1012,7 +1033,7 @@
 
   EXPECT_EQ(ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY,
             GetRemovalMask());
-  EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
   EXPECT_FALSE(tester.HistoryContainsURL(kOrigin1));
 }
@@ -1034,7 +1055,7 @@
 
   EXPECT_EQ(ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY,
             GetRemovalMask());
-  EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
   EXPECT_FALSE(tester.HistoryContainsURL(kOrigin1));
   EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2));
@@ -1063,7 +1084,7 @@
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY, false);
   EXPECT_EQ(ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY,
             GetRemovalMask());
-  EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
 
   // Nothing should have been deleted.
@@ -1093,7 +1114,7 @@
   BlockUntilBrowsingDataRemoved(AnHourAgo(), base::Time::Max(),
                                 removal_mask, false);
   EXPECT_EQ(removal_mask, GetRemovalMask());
-  EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
 
   // Verify that history was not deleted.
@@ -1187,7 +1208,7 @@
 
   EXPECT_EQ(ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY,
             GetRemovalMask());
-  EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
   EXPECT_FALSE(tester.HistoryContainsURL(kOrigin1));
   EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2));
@@ -1208,7 +1229,7 @@
 
   EXPECT_EQ(ChromeBrowsingDataRemoverDelegate::DATA_TYPE_FORM_DATA,
             GetRemovalMask());
-  EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
   ASSERT_FALSE(tester.HasProfile());
 }
@@ -1227,7 +1248,7 @@
 
   EXPECT_EQ(ChromeBrowsingDataRemoverDelegate::DATA_TYPE_FORM_DATA,
             GetRemovalMask());
-  EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
   ASSERT_FALSE(tester.HasProfile());
 }
@@ -1249,7 +1270,7 @@
 
   EXPECT_EQ(ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY,
             GetRemovalMask());
-  EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
   EXPECT_TRUE(tester.HasOrigin(std::string()));
   EXPECT_FALSE(tester.HasOrigin(kWebOrigin));
@@ -1261,12 +1282,13 @@
   prefs->SetString(omnibox::kZeroSuggestCachedResults,
                    "[\"\", [\"foo\", \"bar\"]]");
   BlockUntilBrowsingDataRemoved(base::Time(), base::Time::Max(),
-                                BrowsingDataRemover::DATA_TYPE_COOKIES, false);
+                                content::BrowsingDataRemover::DATA_TYPE_COOKIES,
+                                false);
 
   // Expect the prefs to be cleared when cookies are removed.
   EXPECT_TRUE(prefs->GetString(omnibox::kZeroSuggestCachedResults).empty());
-  EXPECT_EQ(BrowsingDataRemover::DATA_TYPE_COOKIES, GetRemovalMask());
-  EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  EXPECT_EQ(content::BrowsingDataRemover::DATA_TYPE_COOKIES, GetRemovalMask());
+  EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
 }
 
@@ -1293,9 +1315,9 @@
   EXPECT_CALL(*cryptohome_client, TpmAttestationDeleteKeys(_, _, _, _))
       .WillOnce(WithArgs<3>(Invoke(FakeDBusCall)));
 
-  BlockUntilBrowsingDataRemoved(base::Time(), base::Time::Max(),
-                                BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES,
-                                false);
+  BlockUntilBrowsingDataRemoved(
+      base::Time(), base::Time::Max(),
+      content::BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES, false);
 
   chromeos::DBusThreadManager::Shutdown();
 }
@@ -1346,7 +1368,8 @@
       clear_domain_reliability_tester();
 
   BlockUntilBrowsingDataRemoved(base::Time(), base::Time::Max(),
-                                BrowsingDataRemover::DATA_TYPE_COOKIES, false);
+                                content::BrowsingDataRemover::DATA_TYPE_COOKIES,
+                                false);
   EXPECT_EQ(1u, tester.clear_count());
   EXPECT_EQ(CLEAR_CONTEXTS, tester.last_clear_mode());
   EXPECT_TRUE(ProbablySameFilters(
@@ -1363,7 +1386,7 @@
   builder->AddRegisterableDomain(kTestRegisterableDomain1);
 
   BlockUntilOriginDataRemoved(base::Time(), base::Time::Max(),
-                              BrowsingDataRemover::DATA_TYPE_COOKIES,
+                              content::BrowsingDataRemover::DATA_TYPE_COOKIES,
                               builder->Copy());
   EXPECT_EQ(1u, tester.clear_count());
   EXPECT_EQ(CLEAR_CONTEXTS, tester.last_clear_mode());
@@ -1378,7 +1401,7 @@
   BlockUntilBrowsingDataRemoved(
       base::Time(), base::Time::Max(),
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY |
-          BrowsingDataRemover::DATA_TYPE_COOKIES,
+          content::BrowsingDataRemover::DATA_TYPE_COOKIES,
       false);
   EXPECT_EQ(1u, tester.clear_count());
   EXPECT_EQ(CLEAR_CONTEXTS, tester.last_clear_mode());
@@ -1390,7 +1413,8 @@
       clear_domain_reliability_tester();
 
   BlockUntilBrowsingDataRemoved(base::Time(), base::Time::Max(),
-                                BrowsingDataRemover::DATA_TYPE_COOKIES, true);
+                                content::BrowsingDataRemover::DATA_TYPE_COOKIES,
+                                true);
   EXPECT_EQ(1u, tester.clear_count());
   EXPECT_EQ(CLEAR_CONTEXTS, tester.last_clear_mode());
 }
@@ -1404,7 +1428,7 @@
   BlockUntilBrowsingDataRemoved(
       base::Time(), base::Time::Max(),
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY |
-          BrowsingDataRemover::DATA_TYPE_COOKIES,
+          content::BrowsingDataRemover::DATA_TYPE_COOKIES,
       false);
 }
 
@@ -1416,9 +1440,9 @@
   EXPECT_CALL(
       *tester.download_manager(), RemoveDownloadsByURLAndTime(_, _, _));
 
-  BlockUntilBrowsingDataRemoved(base::Time(), base::Time::Max(),
-                                BrowsingDataRemover::DATA_TYPE_DOWNLOADS,
-                                false);
+  BlockUntilBrowsingDataRemoved(
+      base::Time(), base::Time::Max(),
+      content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS, false);
 }
 
 TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemovePasswordStatistics) {
@@ -1494,7 +1518,8 @@
       .WillOnce(Return(password_manager::PasswordStoreChangeList()));
 
   BlockUntilBrowsingDataRemoved(base::Time(), base::Time::Max(),
-                                BrowsingDataRemover::DATA_TYPE_COOKIES, false);
+                                content::BrowsingDataRemover::DATA_TYPE_COOKIES,
+                                false);
 }
 
 TEST_F(ChromeBrowsingDataRemoverDelegateTest,
@@ -1512,7 +1537,7 @@
 
   BlockUntilBrowsingDataRemoved(
       base::Time(), base::Time::Max(),
-      BrowsingDataRemover::DATA_TYPE_COOKIES |
+      content::BrowsingDataRemover::DATA_TYPE_COOKIES |
           ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PASSWORDS,
       false);
 }
@@ -1547,7 +1572,7 @@
 
   EXPECT_EQ(ChromeBrowsingDataRemoverDelegate::DATA_TYPE_SITE_USAGE_DATA,
             GetRemovalMask());
-  EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
 
   // Verify we only have true, and they're origin1, origin3, and origin4.
@@ -1589,7 +1614,7 @@
 
   EXPECT_EQ(ChromeBrowsingDataRemoverDelegate::DATA_TYPE_DURABLE_PERMISSION,
             GetRemovalMask());
-  EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
 
   // Verify we only have allow for the first origin.
@@ -1625,7 +1650,7 @@
 
   BlockUntilBrowsingDataRemoved(
       base::Time(), base::Time::Max(),
-      BrowsingDataRemover::DATA_TYPE_EMBEDDER_DOM_STORAGE, false);
+      content::BrowsingDataRemover::DATA_TYPE_EMBEDDER_DOM_STORAGE, false);
 
   // After the deletion, only the wildcard should remain.
   host_content_settings_map->GetSettingsForOneType(
@@ -1833,11 +1858,10 @@
 // helper).
 TEST_F(ChromeBrowsingDataRemoverDelegateTest,
        BookmarkLastVisitDatesGetCleared) {
-  TestingProfile profile;
-  profile.CreateBookmarkModel(true);
+  GetProfile()->CreateBookmarkModel(true);
 
   bookmarks::BookmarkModel* bookmark_model =
-      BookmarkModelFactory::GetForBrowserContext(&profile);
+      BookmarkModelFactory::GetForBrowserContext(GetProfile());
   bookmarks::test::WaitForBookmarkModelToLoad(bookmark_model);
 
   const base::Time delete_begin =
@@ -1876,10 +1900,10 @@
               Not(IsEmpty()));
 
   // Inject the bookmark model into the remover.
-  BrowsingDataRemover* remover =
-      BrowsingDataRemoverFactory::GetForBrowserContext(&profile);
+  content::BrowsingDataRemover* remover =
+      content::BrowserContext::GetBrowsingDataRemover(GetProfile());
 
-  BrowsingDataRemoverCompletionObserver completion_observer(remover);
+  content::BrowsingDataRemoverCompletionObserver completion_observer(remover);
   remover->RemoveAndReply(delete_begin, base::Time::Max(),
                           ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY,
                           ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES,
diff --git a/chrome/browser/browsing_data/mock_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/mock_browsing_data_remover_delegate.cc
index ff46b00..9c3e6e5 100644
--- a/chrome/browser/browsing_data/mock_browsing_data_remover_delegate.cc
+++ b/chrome/browser/browsing_data/mock_browsing_data_remover_delegate.cc
@@ -14,9 +14,13 @@
   DCHECK(!expected_calls_.size()) << "Expectations were set but not verified.";
 }
 
-BrowsingDataRemoverDelegate::EmbedderOriginTypeMatcher
+content::BrowsingDataRemoverDelegate::EmbedderOriginTypeMatcher
 MockBrowsingDataRemoverDelegate::GetOriginTypeMatcher() const {
-  return BrowsingDataRemoverDelegate::EmbedderOriginTypeMatcher();
+  return content::BrowsingDataRemoverDelegate::EmbedderOriginTypeMatcher();
+}
+
+bool MockBrowsingDataRemoverDelegate::MayRemoveDownloadHistory() const {
+  return true;
 }
 
 void MockBrowsingDataRemoverDelegate::RemoveEmbedderData(
diff --git a/chrome/browser/browsing_data/mock_browsing_data_remover_delegate.h b/chrome/browser/browsing_data/mock_browsing_data_remover_delegate.h
index 6f69e288..dc960f5 100644
--- a/chrome/browser/browsing_data/mock_browsing_data_remover_delegate.h
+++ b/chrome/browser/browsing_data/mock_browsing_data_remover_delegate.h
@@ -9,18 +9,20 @@
 #include <memory>
 
 #include "base/time/time.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_delegate.h"
 #include "content/public/browser/browsing_data_filter_builder.h"
+#include "content/public/browser/browsing_data_remover_delegate.h"
 
 // A BrowsingDataRemoverDelegate that only records RemoveEmbedderData() calls.
-class MockBrowsingDataRemoverDelegate : public BrowsingDataRemoverDelegate {
+class MockBrowsingDataRemoverDelegate
+    : public content::BrowsingDataRemoverDelegate {
  public:
   MockBrowsingDataRemoverDelegate();
   ~MockBrowsingDataRemoverDelegate() override;
 
   // BrowsingDataRemoverDelegate:
-  BrowsingDataRemoverDelegate::EmbedderOriginTypeMatcher GetOriginTypeMatcher()
-      const override;
+  content::BrowsingDataRemoverDelegate::EmbedderOriginTypeMatcher
+  GetOriginTypeMatcher() const override;
+  bool MayRemoveDownloadHistory() const override;
   void RemoveEmbedderData(
       const base::Time& delete_begin,
       const base::Time& delete_end,
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 53ed1cef..9228141 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -35,8 +35,6 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/browser_shutdown.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/budget_service/budget_service_impl.h"
 #include "chrome/browser/chrome_content_browser_client_parts.h"
@@ -164,6 +162,7 @@
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/browser_url_handler.h"
 #include "content/public/browser/browsing_data_filter_builder.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/child_process_data.h"
 #include "content/public/browser/child_process_security_policy.h"
 #include "content/public/browser/client_certificate_delegate.h"
@@ -930,9 +929,9 @@
 // A BrowsingDataRemover::Observer that waits for |count|
 // OnBrowsingDataRemoverDone() callbacks, translates them into
 // one base::Closure, and then destroys itself.
-class ClearSiteDataObserver : public BrowsingDataRemover::Observer {
+class ClearSiteDataObserver : public content::BrowsingDataRemover::Observer {
  public:
-  explicit ClearSiteDataObserver(BrowsingDataRemover* remover,
+  explicit ClearSiteDataObserver(content::BrowsingDataRemover* remover,
                                  const base::Closure& callback,
                                  int count)
       : remover_(remover), callback_(callback), count_(count) {
@@ -952,7 +951,7 @@
   }
 
  private:
-  BrowsingDataRemover* remover_;
+  content::BrowsingDataRemover* remover_;
   base::Closure callback_;
   int count_;
 };
@@ -2770,13 +2769,12 @@
 }
 
 void ChromeContentBrowserClient::ClearCache(RenderFrameHost* rfh) {
-  Profile* profile = Profile::FromBrowserContext(
-      rfh->GetSiteInstance()->GetProcess()->GetBrowserContext());
-  BrowsingDataRemover* remover =
-      BrowsingDataRemoverFactory::GetForBrowserContext(profile);
+  content::BrowsingDataRemover* remover =
+      content::BrowserContext::GetBrowsingDataRemover(
+          rfh->GetSiteInstance()->GetProcess()->GetBrowserContext());
   remover->Remove(base::Time(), base::Time::Max(),
-                  BrowsingDataRemover::DATA_TYPE_CACHE,
-                  BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB);
+                  content::BrowsingDataRemover::DATA_TYPE_CACHE,
+                  content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB);
 }
 
 void ChromeContentBrowserClient::ClearSiteData(
@@ -2786,8 +2784,8 @@
     bool remove_storage,
     bool remove_cache,
     const base::Closure& callback) {
-  BrowsingDataRemover* remover =
-      BrowsingDataRemoverFactory::GetForBrowserContext(browser_context);
+  content::BrowsingDataRemover* remover =
+      content::BrowserContext::GetBrowsingDataRemover(browser_context);
 
   // ClearSiteDataObserver deletes itself when callbacks from both removal
   // tasks are received.
@@ -2814,8 +2812,8 @@
 
     remover->RemoveWithFilterAndReply(
         base::Time(), base::Time::Max(),
-        BrowsingDataRemover::DATA_TYPE_COOKIES |
-            BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
+        content::BrowsingDataRemover::DATA_TYPE_COOKIES |
+            content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
             ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA,
         ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES,
         std::move(domain_filter_builder), observer);
@@ -2827,9 +2825,9 @@
   // Delete origin-scoped data.
   int remove_mask = 0;
   if (remove_storage)
-    remove_mask |= BrowsingDataRemover::DATA_TYPE_DOM_STORAGE;
+    remove_mask |= content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE;
   if (remove_cache)
-    remove_mask |= BrowsingDataRemover::DATA_TYPE_CACHE;
+    remove_mask |= content::BrowsingDataRemover::DATA_TYPE_CACHE;
 
   if (remove_mask) {
     std::unique_ptr<BrowsingDataFilterBuilder> origin_filter_builder(
diff --git a/chrome/browser/chrome_content_browser_client_unittest.cc b/chrome/browser/chrome_content_browser_client_unittest.cc
index e09b076f..e300d12 100644
--- a/chrome/browser/chrome_content_browser_client_unittest.cc
+++ b/chrome/browser/chrome_content_browser_client_unittest.cc
@@ -19,7 +19,6 @@
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/browsing_data/mock_browsing_data_remover_delegate.h"
 #include "chrome/browser/search_engines/template_url_service_factory.h"
@@ -30,6 +29,7 @@
 #include "components/variations/variations_associated_data.h"
 #include "components/version_info/version_info.h"
 #include "content/public/browser/browsing_data_filter_builder.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/navigation_controller.h"
 #include "content/public/browser/navigation_entry.h"
 #include "content/public/browser/storage_partition.h"
@@ -350,19 +350,14 @@
 class ChromeContentBrowserClientClearSiteDataTest : public testing::Test {
  public:
   void SetUp() override {
-    BrowsingDataRemoverFactory::GetForBrowserContext(profile())
-        ->SetEmbedderDelegate(
-            base::MakeUnique<MockBrowsingDataRemoverDelegate>());
+    content::BrowserContext::GetBrowsingDataRemover(profile())
+        ->SetEmbedderDelegate(&mock_delegate_);
     run_loop_.reset(new base::RunLoop());
   }
 
   content::BrowserContext* profile() { return &profile_; }
 
-  MockBrowsingDataRemoverDelegate* delegate() {
-    return static_cast<MockBrowsingDataRemoverDelegate*>(
-        BrowsingDataRemoverFactory::GetForBrowserContext(profile())
-            ->GetEmbedderDelegate());
-  }
+  MockBrowsingDataRemoverDelegate* delegate() { return &mock_delegate_; }
 
   void OnClearingFinished() { run_loop_->Quit(); }
 
@@ -373,6 +368,7 @@
 
  private:
   std::unique_ptr<base::RunLoop> run_loop_;
+  MockBrowsingDataRemoverDelegate mock_delegate_;
   content::TestBrowserThreadBundle thread_bundle_;
   TestingProfile profile_;
 };
@@ -392,30 +388,30 @@
   } test_cases[] = {
       {false, false, false, 0},
       {true, false, false,
-       BrowsingDataRemover::DATA_TYPE_COOKIES |
-           BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
+       content::BrowsingDataRemover::DATA_TYPE_COOKIES |
+           content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
            ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA},
-      {false, true, false, BrowsingDataRemover::DATA_TYPE_DOM_STORAGE},
-      {false, false, true, BrowsingDataRemover::DATA_TYPE_CACHE},
+      {false, true, false, content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE},
+      {false, false, true, content::BrowsingDataRemover::DATA_TYPE_CACHE},
       {true, true, false,
-       BrowsingDataRemover::DATA_TYPE_COOKIES |
-           BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
+       content::BrowsingDataRemover::DATA_TYPE_COOKIES |
+           content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
            ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA |
-           BrowsingDataRemover::DATA_TYPE_DOM_STORAGE},
+           content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE},
       {true, false, true,
-       BrowsingDataRemover::DATA_TYPE_COOKIES |
-           BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
+       content::BrowsingDataRemover::DATA_TYPE_COOKIES |
+           content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
            ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA |
-           BrowsingDataRemover::DATA_TYPE_CACHE},
+           content::BrowsingDataRemover::DATA_TYPE_CACHE},
       {false, true, true,
-       BrowsingDataRemover::DATA_TYPE_DOM_STORAGE |
-           BrowsingDataRemover::DATA_TYPE_CACHE},
+       content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE |
+           content::BrowsingDataRemover::DATA_TYPE_CACHE},
       {true, true, true,
-       BrowsingDataRemover::DATA_TYPE_COOKIES |
-           BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
+       content::BrowsingDataRemover::DATA_TYPE_COOKIES |
+           content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
            ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA |
-           BrowsingDataRemover::DATA_TYPE_DOM_STORAGE |
-           BrowsingDataRemover::DATA_TYPE_CACHE},
+           content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE |
+           content::BrowsingDataRemover::DATA_TYPE_CACHE},
   };
 
   for (unsigned int i = 0; i < arraysize(test_cases); ++i) {
@@ -430,8 +426,8 @@
     // calls. In the latter case, the removal mask will be split into two
     // parts - one for the origin deletion and one for the registrable domain.
     const int domain_scoped_types =
-        BrowsingDataRemover::DATA_TYPE_COOKIES |
-        BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
+        content::BrowsingDataRemover::DATA_TYPE_COOKIES |
+        content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
         ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA;
     int registrable_domain_deletion_mask = test_case.mask & domain_scoped_types;
     int origin_deletion_mask = test_case.mask & ~domain_scoped_types;
@@ -513,8 +509,8 @@
 
     delegate()->ExpectCall(
         base::Time(), base::Time::Max(),
-        BrowsingDataRemover::DATA_TYPE_COOKIES |
-            BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
+        content::BrowsingDataRemover::DATA_TYPE_COOKIES |
+            content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS |
             ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA,
         ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES,
         *registrable_domain_filter_builder);
@@ -525,7 +521,7 @@
     origin_filter_builder->AddOrigin(url::Origin(GURL(test_case.origin)));
 
     delegate()->ExpectCall(base::Time(), base::Time::Max(),
-                           BrowsingDataRemover::DATA_TYPE_CACHE,
+                           content::BrowsingDataRemover::DATA_TYPE_CACHE,
                            ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES,
                            *origin_filter_builder);
 
diff --git a/chrome/browser/chromeos/profiles/profile_helper.cc b/chrome/browser/chromeos/profiles/profile_helper.cc
index a319f9b..ce167e6 100644
--- a/chrome/browser/chromeos/profiles/profile_helper.cc
+++ b/chrome/browser/chromeos/profiles/profile_helper.cc
@@ -10,8 +10,7 @@
 #include "base/strings/string_util.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
+
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/chromeos/base/file_flusher.h"
 #include "chrome/browser/chromeos/login/helper.h"
@@ -30,6 +29,7 @@
 #include "components/user_manager/user.h"
 #include "components/user_manager/user_manager.h"
 #include "content/public/browser/browser_thread.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/storage_partition.h"
 #include "content/public/browser/web_contents.h"
 #include "extensions/browser/guest_view/web_view/web_view_guest.h"
@@ -261,7 +261,7 @@
   if (profile_manager->GetProfileByPath(GetSigninProfileDir())) {
     LOG_ASSERT(!browsing_data_remover_);
     browsing_data_remover_ =
-        BrowsingDataRemoverFactory::GetForBrowserContext(GetSigninProfile());
+        content::BrowserContext::GetBrowsingDataRemover(GetSigninProfile());
     browsing_data_remover_->AddObserver(this);
     browsing_data_remover_->RemoveAndReply(
         base::Time(), base::Time::Max(),
@@ -403,7 +403,7 @@
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-// ProfileHelper, BrowsingDataRemover::Observer implementation:
+// ProfileHelper, content::BrowsingDataRemover::Observer implementation:
 
 void ProfileHelper::OnBrowsingDataRemoverDone() {
   LOG_ASSERT(browsing_data_remover_);
diff --git a/chrome/browser/chromeos/profiles/profile_helper.h b/chrome/browser/chromeos/profiles/profile_helper.h
index 31db3be..5684a6d4 100644
--- a/chrome/browser/chromeos/profiles/profile_helper.h
+++ b/chrome/browser/chromeos/profiles/profile_helper.h
@@ -14,9 +14,9 @@
 #include "base/files/file_path.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
 #include "chrome/browser/chromeos/login/signin/oauth2_login_manager.h"
 #include "components/user_manager/user_manager.h"
+#include "content/public/browser/browsing_data_remover.h"
 
 class ArcActiveDirectoryEnrollmentTokenFetcherBrowserTest;
 class ArcAppTest;
@@ -61,7 +61,7 @@
 //    GetActiveUserProfileDir()
 // 3. Get mapping from user_id_hash to Profile instance/profile path etc.
 class ProfileHelper
-    : public BrowsingDataRemover::Observer,
+    : public content::BrowsingDataRemover::Observer,
       public OAuth2LoginManager::Observer,
       public user_manager::UserManager::UserSessionStateObserver {
  public:
@@ -216,7 +216,7 @@
   base::Closure on_clear_profile_stage_finished_;
 
   // A currently running browsing data remover.
-  BrowsingDataRemover* browsing_data_remover_;
+  content::BrowsingDataRemover* browsing_data_remover_;
 
   // Used for testing by unit tests and FakeUserManager/MockUserManager.
   std::map<const user_manager::User*, Profile*> user_to_profile_for_testing_;
diff --git a/chrome/browser/extensions/api/browsing_data/browsing_data_api.cc b/chrome/browser/extensions/api/browsing_data/browsing_data_api.cc
index ca2d39c..b875323 100644
--- a/chrome/browser/extensions/api/browsing_data/browsing_data_api.cc
+++ b/chrome/browser/extensions/api/browsing_data/browsing_data_api.cc
@@ -13,8 +13,7 @@
 
 #include "base/values.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
+
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/plugins/plugin_data_remover_helper.h"
 #include "chrome/browser/plugins/plugin_prefs.h"
@@ -24,6 +23,7 @@
 #include "components/browsing_data/core/browsing_data_utils.h"
 #include "components/browsing_data/core/pref_names.h"
 #include "content/public/browser/browser_thread.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "extensions/common/error_utils.h"
 #include "extensions/common/extension.h"
 
@@ -72,38 +72,38 @@
 namespace {
 int MaskForKey(const char* key) {
   if (strcmp(key, extension_browsing_data_api_constants::kAppCacheKey) == 0)
-    return BrowsingDataRemover::DATA_TYPE_APP_CACHE;
+    return content::BrowsingDataRemover::DATA_TYPE_APP_CACHE;
   if (strcmp(key, extension_browsing_data_api_constants::kCacheKey) == 0)
-    return BrowsingDataRemover::DATA_TYPE_CACHE;
+    return content::BrowsingDataRemover::DATA_TYPE_CACHE;
   if (strcmp(key, extension_browsing_data_api_constants::kCookiesKey) == 0) {
-    return BrowsingDataRemover::DATA_TYPE_COOKIES;
+    return content::BrowsingDataRemover::DATA_TYPE_COOKIES;
   }
   if (strcmp(key, extension_browsing_data_api_constants::kDownloadsKey) == 0)
-    return BrowsingDataRemover::DATA_TYPE_DOWNLOADS;
+    return content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS;
   if (strcmp(key, extension_browsing_data_api_constants::kFileSystemsKey) == 0)
-    return BrowsingDataRemover::DATA_TYPE_FILE_SYSTEMS;
+    return content::BrowsingDataRemover::DATA_TYPE_FILE_SYSTEMS;
   if (strcmp(key, extension_browsing_data_api_constants::kFormDataKey) == 0)
     return ChromeBrowsingDataRemoverDelegate::DATA_TYPE_FORM_DATA;
   if (strcmp(key, extension_browsing_data_api_constants::kHistoryKey) == 0)
     return ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY;
   if (strcmp(key, extension_browsing_data_api_constants::kIndexedDBKey) == 0)
-    return BrowsingDataRemover::DATA_TYPE_INDEXED_DB;
+    return content::BrowsingDataRemover::DATA_TYPE_INDEXED_DB;
   if (strcmp(key, extension_browsing_data_api_constants::kLocalStorageKey) == 0)
-    return BrowsingDataRemover::DATA_TYPE_LOCAL_STORAGE;
+    return content::BrowsingDataRemover::DATA_TYPE_LOCAL_STORAGE;
   if (strcmp(key,
              extension_browsing_data_api_constants::kChannelIDsKey) == 0)
-    return BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS;
+    return content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS;
   if (strcmp(key, extension_browsing_data_api_constants::kPasswordsKey) == 0)
     return ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PASSWORDS;
   if (strcmp(key, extension_browsing_data_api_constants::kPluginDataKey) == 0)
     return ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA;
   if (strcmp(key, extension_browsing_data_api_constants::kServiceWorkersKey) ==
       0)
-    return BrowsingDataRemover::DATA_TYPE_SERVICE_WORKERS;
+    return content::BrowsingDataRemover::DATA_TYPE_SERVICE_WORKERS;
   if (strcmp(key, extension_browsing_data_api_constants::kCacheStorageKey) == 0)
-    return BrowsingDataRemover::DATA_TYPE_CACHE_STORAGE;
+    return content::BrowsingDataRemover::DATA_TYPE_CACHE_STORAGE;
   if (strcmp(key, extension_browsing_data_api_constants::kWebSQLKey) == 0)
-    return BrowsingDataRemover::DATA_TYPE_WEB_SQL;
+    return content::BrowsingDataRemover::DATA_TYPE_WEB_SQL;
 
   return 0;
 }
@@ -114,7 +114,7 @@
   // Enterprise policy or user preference might prohibit deleting browser or
   // download history.
   if ((removal_mask & ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY) ||
-      (removal_mask & BrowsingDataRemover::DATA_TYPE_DOWNLOADS)) {
+      (removal_mask & content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS)) {
     return prefs->GetBoolean(prefs::kAllowDeletingBrowserHistory);
   }
   return true;
@@ -309,8 +309,8 @@
 }
 
 void BrowsingDataRemoverFunction::StartRemoving() {
-  BrowsingDataRemover* remover =
-      BrowsingDataRemoverFactory::GetForBrowserContext(GetProfile());
+  content::BrowsingDataRemover* remover =
+      content::BrowserContext::GetBrowsingDataRemover(GetProfile());
   // Add a ref (Balanced in OnBrowsingDataRemoverDone)
   AddRef();
 
@@ -329,7 +329,7 @@
     int* origin_type_mask) {
   // Parse the |options| dictionary to generate the origin set mask. Default to
   // UNPROTECTED_WEB if the developer doesn't specify anything.
-  *origin_type_mask = BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB;
+  *origin_type_mask = content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB;
 
   const base::DictionaryValue* d = NULL;
   if (options.HasKey(extension_browsing_data_api_constants::kOriginTypesKey)) {
@@ -350,7 +350,7 @@
         return false;
       }
       *origin_type_mask |=
-          value ? BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB : 0;
+          value ? content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB : 0;
     }
 
     // Protected web.
@@ -361,7 +361,7 @@
         return false;
       }
       *origin_type_mask |=
-          value ? BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB : 0;
+          value ? content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB : 0;
     }
 
     // Extensions.
@@ -401,28 +401,28 @@
 }
 
 bool BrowsingDataRemoveAppcacheFunction::GetRemovalMask(int* removal_mask) {
-  *removal_mask = BrowsingDataRemover::DATA_TYPE_APP_CACHE;
+  *removal_mask = content::BrowsingDataRemover::DATA_TYPE_APP_CACHE;
   return true;
 }
 
 bool BrowsingDataRemoveCacheFunction::GetRemovalMask(int* removal_mask) {
-  *removal_mask = BrowsingDataRemover::DATA_TYPE_CACHE;
+  *removal_mask = content::BrowsingDataRemover::DATA_TYPE_CACHE;
   return true;
 }
 
 bool BrowsingDataRemoveCookiesFunction::GetRemovalMask(int* removal_mask) {
-  *removal_mask = BrowsingDataRemover::DATA_TYPE_COOKIES |
-                  BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS;
+  *removal_mask = content::BrowsingDataRemover::DATA_TYPE_COOKIES |
+                  content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS;
   return true;
 }
 
 bool BrowsingDataRemoveDownloadsFunction::GetRemovalMask(int* removal_mask) {
-  *removal_mask = BrowsingDataRemover::DATA_TYPE_DOWNLOADS;
+  *removal_mask = content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS;
   return true;
 }
 
 bool BrowsingDataRemoveFileSystemsFunction::GetRemovalMask(int* removal_mask) {
-  *removal_mask = BrowsingDataRemover::DATA_TYPE_FILE_SYSTEMS;
+  *removal_mask = content::BrowsingDataRemover::DATA_TYPE_FILE_SYSTEMS;
   return true;
 }
 
@@ -437,12 +437,12 @@
 }
 
 bool BrowsingDataRemoveIndexedDBFunction::GetRemovalMask(int* removal_mask) {
-  *removal_mask = BrowsingDataRemover::DATA_TYPE_INDEXED_DB;
+  *removal_mask = content::BrowsingDataRemover::DATA_TYPE_INDEXED_DB;
   return true;
 }
 
 bool BrowsingDataRemoveLocalStorageFunction::GetRemovalMask(int* removal_mask) {
-  *removal_mask = BrowsingDataRemover::DATA_TYPE_LOCAL_STORAGE;
+  *removal_mask = content::BrowsingDataRemover::DATA_TYPE_LOCAL_STORAGE;
   return true;
 }
 
@@ -458,16 +458,16 @@
 
 bool BrowsingDataRemoveServiceWorkersFunction::GetRemovalMask(
     int* removal_mask) {
-  *removal_mask = BrowsingDataRemover::DATA_TYPE_SERVICE_WORKERS;
+  *removal_mask = content::BrowsingDataRemover::DATA_TYPE_SERVICE_WORKERS;
   return true;
 }
 
 bool BrowsingDataRemoveCacheStorageFunction::GetRemovalMask(int* removal_mask) {
-  *removal_mask = BrowsingDataRemover::DATA_TYPE_CACHE_STORAGE;
+  *removal_mask = content::BrowsingDataRemover::DATA_TYPE_CACHE_STORAGE;
   return true;
 }
 
 bool BrowsingDataRemoveWebSQLFunction::GetRemovalMask(int* removal_mask) {
-  *removal_mask = BrowsingDataRemover::DATA_TYPE_WEB_SQL;
+  *removal_mask = content::BrowsingDataRemover::DATA_TYPE_WEB_SQL;
   return true;
 }
diff --git a/chrome/browser/extensions/api/browsing_data/browsing_data_api.h b/chrome/browser/extensions/api/browsing_data/browsing_data_api.h
index 8ffab0f2..ac01ad0 100644
--- a/chrome/browser/extensions/api/browsing_data/browsing_data_api.h
+++ b/chrome/browser/extensions/api/browsing_data/browsing_data_api.h
@@ -12,8 +12,8 @@
 #include <string>
 
 #include "base/scoped_observer.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
 #include "chrome/browser/extensions/chrome_extension_function.h"
+#include "content/public/browser/browsing_data_remover.h"
 
 class PluginPrefs;
 class PrefService;
@@ -84,8 +84,9 @@
 //
 // Each child class must implement GetRemovalMask(), which returns the bitmask
 // of data types to remove.
-class BrowsingDataRemoverFunction : public ChromeAsyncExtensionFunction,
-                                    public BrowsingDataRemover::Observer {
+class BrowsingDataRemoverFunction
+    : public ChromeAsyncExtensionFunction,
+      public content::BrowsingDataRemover::Observer {
  public:
   BrowsingDataRemoverFunction();
 
@@ -122,7 +123,9 @@
   base::Time remove_since_;
   int removal_mask_;
   int origin_type_mask_;
-  ScopedObserver<BrowsingDataRemover, BrowsingDataRemover::Observer> observer_;
+  ScopedObserver<content::BrowsingDataRemover,
+                 content::BrowsingDataRemover::Observer>
+      observer_;
 };
 
 class BrowsingDataRemoveAppcacheFunction : public BrowsingDataRemoverFunction {
diff --git a/chrome/browser/extensions/api/browsing_data/browsing_data_test.cc b/chrome/browser/extensions/api/browsing_data/browsing_data_test.cc
index e4843473..300f0a7 100644
--- a/chrome/browser/extensions/api/browsing_data/browsing_data_test.cc
+++ b/chrome/browser/extensions/api/browsing_data/browsing_data_test.cc
@@ -11,8 +11,7 @@
 #include "base/strings/string_util.h"
 #include "base/values.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
+
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/extensions/api/browsing_data/browsing_data_api.h"
 #include "chrome/browser/extensions/extension_function_test_utils.h"
@@ -23,6 +22,7 @@
 #include "components/browsing_data/core/browsing_data_utils.h"
 #include "components/browsing_data/core/pref_names.h"
 #include "components/prefs/pref_service.h"
+#include "content/public/browser/browsing_data_remover.h"
 
 using extension_function_test_utils::RunFunctionAndReturnError;
 using extension_function_test_utils::RunFunctionAndReturnSingleResult;
@@ -30,8 +30,8 @@
 namespace {
 
 enum OriginTypeMask {
-  UNPROTECTED_WEB = BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
-  PROTECTED_WEB = BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB,
+  UNPROTECTED_WEB = content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+  PROTECTED_WEB = content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB,
   EXTENSION = ChromeBrowsingDataRemoverDelegate::ORIGIN_TYPE_EXTENSION
 };
 
@@ -62,7 +62,7 @@
  protected:
   void SetUpOnMainThread() override {
     remover_ =
-        BrowsingDataRemoverFactory::GetForBrowserContext(browser()->profile());
+        content::BrowserContext::GetBrowsingDataRemover(browser()->profile());
   }
 
   int GetAsMask(const base::DictionaryValue* dict, std::string path,
@@ -156,10 +156,10 @@
     PrefService* prefs = browser()->profile()->GetPrefs();
     prefs->SetBoolean(
         browsing_data::prefs::kDeleteCache,
-        !!(data_type_flags & BrowsingDataRemover::DATA_TYPE_CACHE));
+        !!(data_type_flags & content::BrowsingDataRemover::DATA_TYPE_CACHE));
     prefs->SetBoolean(
         browsing_data::prefs::kDeleteCookies,
-        !!(data_type_flags & BrowsingDataRemover::DATA_TYPE_COOKIES));
+        !!(data_type_flags & content::BrowsingDataRemover::DATA_TYPE_COOKIES));
     prefs->SetBoolean(browsing_data::prefs::kDeleteBrowsingHistory,
                       !!(data_type_flags &
                          ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY));
@@ -167,9 +167,9 @@
         browsing_data::prefs::kDeleteFormData,
         !!(data_type_flags &
            ChromeBrowsingDataRemoverDelegate::DATA_TYPE_FORM_DATA));
-    prefs->SetBoolean(
-        browsing_data::prefs::kDeleteDownloadHistory,
-        !!(data_type_flags & BrowsingDataRemover::DATA_TYPE_DOWNLOADS));
+    prefs->SetBoolean(browsing_data::prefs::kDeleteDownloadHistory,
+                      !!(data_type_flags &
+                         content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS));
     prefs->SetBoolean(
         browsing_data::prefs::kDeleteHostedAppsData,
         !!(data_type_flags & ChromeBrowsingDataRemoverDelegate::
@@ -207,35 +207,35 @@
     EXPECT_TRUE(result->GetDictionary("dataToRemove", &data_to_remove));
     int removal_mask =
         GetAsMask(data_to_remove, "appcache",
-                  BrowsingDataRemover::DATA_TYPE_APP_CACHE) |
+                  content::BrowsingDataRemover::DATA_TYPE_APP_CACHE) |
         GetAsMask(data_to_remove, "cache",
-                  BrowsingDataRemover::DATA_TYPE_CACHE) |
+                  content::BrowsingDataRemover::DATA_TYPE_CACHE) |
         GetAsMask(data_to_remove, "cookies",
-                  BrowsingDataRemover::DATA_TYPE_COOKIES) |
+                  content::BrowsingDataRemover::DATA_TYPE_COOKIES) |
         GetAsMask(data_to_remove, "downloads",
-                  BrowsingDataRemover::DATA_TYPE_DOWNLOADS) |
+                  content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS) |
         GetAsMask(data_to_remove, "fileSystems",
-                  BrowsingDataRemover::DATA_TYPE_FILE_SYSTEMS) |
+                  content::BrowsingDataRemover::DATA_TYPE_FILE_SYSTEMS) |
         GetAsMask(data_to_remove, "formData",
                   ChromeBrowsingDataRemoverDelegate::DATA_TYPE_FORM_DATA) |
         GetAsMask(data_to_remove, "history",
                   ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY) |
         GetAsMask(data_to_remove, "indexedDB",
-                  BrowsingDataRemover::DATA_TYPE_INDEXED_DB) |
+                  content::BrowsingDataRemover::DATA_TYPE_INDEXED_DB) |
         GetAsMask(data_to_remove, "localStorage",
-                  BrowsingDataRemover::DATA_TYPE_LOCAL_STORAGE) |
+                  content::BrowsingDataRemover::DATA_TYPE_LOCAL_STORAGE) |
         GetAsMask(data_to_remove, "pluginData",
                   ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA) |
         GetAsMask(data_to_remove, "passwords",
                   ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PASSWORDS) |
         GetAsMask(data_to_remove, "serviceWorkers",
-                  BrowsingDataRemover::DATA_TYPE_SERVICE_WORKERS) |
+                  content::BrowsingDataRemover::DATA_TYPE_SERVICE_WORKERS) |
         GetAsMask(data_to_remove, "cacheStorage",
-                  BrowsingDataRemover::DATA_TYPE_CACHE_STORAGE) |
+                  content::BrowsingDataRemover::DATA_TYPE_CACHE_STORAGE) |
         GetAsMask(data_to_remove, "webSQL",
-                  BrowsingDataRemover::DATA_TYPE_WEB_SQL) |
+                  content::BrowsingDataRemover::DATA_TYPE_WEB_SQL) |
         GetAsMask(data_to_remove, "serverBoundCertificates",
-                  BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS);
+                  content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS);
 
     EXPECT_EQ(expected_removal_mask, removal_mask);
   }
@@ -260,7 +260,7 @@
 
  private:
   // Cached pointer to BrowsingDataRemover for access to testing methods.
-  BrowsingDataRemover* remover_;
+  content::BrowsingDataRemover* remover_;
 };
 
 }  // namespace
@@ -305,8 +305,8 @@
   EXPECT_EQ(base::Time::FromDoubleT(1.0), GetBeginTime());
   EXPECT_EQ(
       (ChromeBrowsingDataRemoverDelegate::DATA_TYPE_SITE_DATA |
-       BrowsingDataRemover::DATA_TYPE_CACHE |
-       BrowsingDataRemover::DATA_TYPE_DOWNLOADS |
+       content::BrowsingDataRemover::DATA_TYPE_CACHE |
+       content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS |
        ChromeBrowsingDataRemoverDelegate::DATA_TYPE_FORM_DATA |
        ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY |
        ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PASSWORDS) &
@@ -353,34 +353,36 @@
 IN_PROC_BROWSER_TEST_F(ExtensionBrowsingDataTest,
                        BrowsingDataRemovalMask) {
   RunBrowsingDataRemoveWithKeyAndCompareRemovalMask(
-      "appcache", BrowsingDataRemover::DATA_TYPE_APP_CACHE);
+      "appcache", content::BrowsingDataRemover::DATA_TYPE_APP_CACHE);
   RunBrowsingDataRemoveWithKeyAndCompareRemovalMask(
-      "cache", BrowsingDataRemover::DATA_TYPE_CACHE);
+      "cache", content::BrowsingDataRemover::DATA_TYPE_CACHE);
   RunBrowsingDataRemoveWithKeyAndCompareRemovalMask(
-      "cookies", BrowsingDataRemover::DATA_TYPE_COOKIES);
+      "cookies", content::BrowsingDataRemover::DATA_TYPE_COOKIES);
   RunBrowsingDataRemoveWithKeyAndCompareRemovalMask(
-      "downloads", BrowsingDataRemover::DATA_TYPE_DOWNLOADS);
+      "downloads", content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS);
   RunBrowsingDataRemoveWithKeyAndCompareRemovalMask(
-      "fileSystems", BrowsingDataRemover::DATA_TYPE_FILE_SYSTEMS);
+      "fileSystems", content::BrowsingDataRemover::DATA_TYPE_FILE_SYSTEMS);
   RunBrowsingDataRemoveWithKeyAndCompareRemovalMask(
       "formData", ChromeBrowsingDataRemoverDelegate::DATA_TYPE_FORM_DATA);
   RunBrowsingDataRemoveWithKeyAndCompareRemovalMask(
       "history", ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY);
   RunBrowsingDataRemoveWithKeyAndCompareRemovalMask(
-      "indexedDB", BrowsingDataRemover::DATA_TYPE_INDEXED_DB);
+      "indexedDB", content::BrowsingDataRemover::DATA_TYPE_INDEXED_DB);
   RunBrowsingDataRemoveWithKeyAndCompareRemovalMask(
-      "localStorage", BrowsingDataRemover::DATA_TYPE_LOCAL_STORAGE);
+      "localStorage", content::BrowsingDataRemover::DATA_TYPE_LOCAL_STORAGE);
   RunBrowsingDataRemoveWithKeyAndCompareRemovalMask(
-      "serverBoundCertificates", BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS);
+      "serverBoundCertificates",
+      content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS);
   RunBrowsingDataRemoveWithKeyAndCompareRemovalMask(
       "passwords", ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PASSWORDS);
   // We can't remove plugin data inside a test profile.
   RunBrowsingDataRemoveWithKeyAndCompareRemovalMask(
-      "serviceWorkers", BrowsingDataRemover::DATA_TYPE_SERVICE_WORKERS);
+      "serviceWorkers",
+      content::BrowsingDataRemover::DATA_TYPE_SERVICE_WORKERS);
   RunBrowsingDataRemoveWithKeyAndCompareRemovalMask(
-      "cacheStorage", BrowsingDataRemover::DATA_TYPE_CACHE_STORAGE);
+      "cacheStorage", content::BrowsingDataRemover::DATA_TYPE_CACHE_STORAGE);
   RunBrowsingDataRemoveWithKeyAndCompareRemovalMask(
-      "webSQL", BrowsingDataRemover::DATA_TYPE_WEB_SQL);
+      "webSQL", content::BrowsingDataRemover::DATA_TYPE_WEB_SQL);
 }
 
 // Test an arbitrary combination of data types.
@@ -388,8 +390,8 @@
                        BrowsingDataRemovalMaskCombination) {
   RunBrowsingDataRemoveFunctionAndCompareRemovalMask(
       "{\"appcache\": true, \"cookies\": true, \"history\": true}",
-      BrowsingDataRemover::DATA_TYPE_APP_CACHE |
-          BrowsingDataRemover::DATA_TYPE_COOKIES |
+      content::BrowsingDataRemover::DATA_TYPE_APP_CACHE |
+          content::BrowsingDataRemover::DATA_TYPE_COOKIES |
           ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY);
 }
 
@@ -405,8 +407,8 @@
   prefs->SetBoolean(browsing_data::prefs::kDeleteHostedAppsData, false);
   prefs->SetBoolean(browsing_data::prefs::kDeletePasswords, false);
   prefs->SetBoolean(prefs::kClearPluginLSODataEnabled, false);
-  int expected_mask = BrowsingDataRemover::DATA_TYPE_CACHE |
-                      BrowsingDataRemover::DATA_TYPE_DOWNLOADS |
+  int expected_mask = content::BrowsingDataRemover::DATA_TYPE_CACHE |
+                      content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS |
                       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY;
   std::string json;
   // Scoping for the traces.
@@ -440,31 +442,31 @@
 
 IN_PROC_BROWSER_TEST_F(ExtensionBrowsingDataTest, ShortcutFunctionRemovalMask) {
   RunAndCompareRemovalMask<BrowsingDataRemoveAppcacheFunction>(
-      BrowsingDataRemover::DATA_TYPE_APP_CACHE);
+      content::BrowsingDataRemover::DATA_TYPE_APP_CACHE);
   RunAndCompareRemovalMask<BrowsingDataRemoveCacheFunction>(
-      BrowsingDataRemover::DATA_TYPE_CACHE);
+      content::BrowsingDataRemover::DATA_TYPE_CACHE);
   RunAndCompareRemovalMask<BrowsingDataRemoveCookiesFunction>(
-      BrowsingDataRemover::DATA_TYPE_COOKIES |
-      BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS);
+      content::BrowsingDataRemover::DATA_TYPE_COOKIES |
+      content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS);
   RunAndCompareRemovalMask<BrowsingDataRemoveDownloadsFunction>(
-      BrowsingDataRemover::DATA_TYPE_DOWNLOADS);
+      content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS);
   RunAndCompareRemovalMask<BrowsingDataRemoveFileSystemsFunction>(
-      BrowsingDataRemover::DATA_TYPE_FILE_SYSTEMS);
+      content::BrowsingDataRemover::DATA_TYPE_FILE_SYSTEMS);
   RunAndCompareRemovalMask<BrowsingDataRemoveFormDataFunction>(
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_FORM_DATA);
   RunAndCompareRemovalMask<BrowsingDataRemoveHistoryFunction>(
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY);
   RunAndCompareRemovalMask<BrowsingDataRemoveIndexedDBFunction>(
-      BrowsingDataRemover::DATA_TYPE_INDEXED_DB);
+      content::BrowsingDataRemover::DATA_TYPE_INDEXED_DB);
   RunAndCompareRemovalMask<BrowsingDataRemoveLocalStorageFunction>(
-      BrowsingDataRemover::DATA_TYPE_LOCAL_STORAGE);
+      content::BrowsingDataRemover::DATA_TYPE_LOCAL_STORAGE);
   // We can't remove plugin data inside a test profile.
   RunAndCompareRemovalMask<BrowsingDataRemovePasswordsFunction>(
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PASSWORDS);
   RunAndCompareRemovalMask<BrowsingDataRemoveServiceWorkersFunction>(
-      BrowsingDataRemover::DATA_TYPE_SERVICE_WORKERS);
+      content::BrowsingDataRemover::DATA_TYPE_SERVICE_WORKERS);
   RunAndCompareRemovalMask<BrowsingDataRemoveWebSQLFunction>(
-      BrowsingDataRemover::DATA_TYPE_WEB_SQL);
+      content::BrowsingDataRemover::DATA_TYPE_WEB_SQL);
 }
 
 // Test the processing of the 'delete since' preference.
@@ -482,16 +484,17 @@
 
 // Test straightforward settings, mapped 1:1 to data types.
 IN_PROC_BROWSER_TEST_F(ExtensionBrowsingDataTest, SettingsFunctionSimple) {
-  SetPrefsAndVerifySettings(BrowsingDataRemover::DATA_TYPE_CACHE, 0,
-                            BrowsingDataRemover::DATA_TYPE_CACHE);
+  SetPrefsAndVerifySettings(content::BrowsingDataRemover::DATA_TYPE_CACHE, 0,
+                            content::BrowsingDataRemover::DATA_TYPE_CACHE);
   SetPrefsAndVerifySettings(
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY, 0,
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY);
   SetPrefsAndVerifySettings(
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_FORM_DATA, 0,
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_FORM_DATA);
-  SetPrefsAndVerifySettings(BrowsingDataRemover::DATA_TYPE_DOWNLOADS, 0,
-                            BrowsingDataRemover::DATA_TYPE_DOWNLOADS);
+  SetPrefsAndVerifySettings(content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS,
+                            0,
+                            content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS);
   SetPrefsAndVerifySettings(
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PASSWORDS, 0,
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PASSWORDS);
@@ -508,19 +511,19 @@
       site_data_no_durable_or_usage_or_external &
       ~ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA;
 
-  SetPrefsAndVerifySettings(BrowsingDataRemover::DATA_TYPE_COOKIES,
+  SetPrefsAndVerifySettings(content::BrowsingDataRemover::DATA_TYPE_COOKIES,
                             UNPROTECTED_WEB,
                             site_data_no_plugins_durable_usage_external);
   SetPrefsAndVerifySettings(
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HOSTED_APP_DATA_TEST_ONLY,
       PROTECTED_WEB, site_data_no_plugins_durable_usage_external);
-  SetPrefsAndVerifySettings(BrowsingDataRemover::DATA_TYPE_COOKIES |
+  SetPrefsAndVerifySettings(content::BrowsingDataRemover::DATA_TYPE_COOKIES |
                                 ChromeBrowsingDataRemoverDelegate::
                                     DATA_TYPE_HOSTED_APP_DATA_TEST_ONLY,
                             PROTECTED_WEB | UNPROTECTED_WEB,
                             site_data_no_plugins_durable_usage_external);
   SetPrefsAndVerifySettings(
-      BrowsingDataRemover::DATA_TYPE_COOKIES |
+      content::BrowsingDataRemover::DATA_TYPE_COOKIES |
           ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA,
       UNPROTECTED_WEB, site_data_no_durable_or_usage_or_external);
 }
@@ -535,11 +538,11 @@
       ~ChromeBrowsingDataRemoverDelegate::DATA_TYPE_EXTERNAL_PROTOCOL_DATA;
 
   SetPrefsAndVerifySettings(
-      BrowsingDataRemover::DATA_TYPE_COOKIES |
+      content::BrowsingDataRemover::DATA_TYPE_COOKIES |
           ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY |
-          BrowsingDataRemover::DATA_TYPE_DOWNLOADS,
+          content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS,
       UNPROTECTED_WEB,
       site_data_no_plugins_durable_usage_external |
           ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY |
-          BrowsingDataRemover::DATA_TYPE_DOWNLOADS);
+          content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS);
 }
diff --git a/chrome/browser/net/errorpage_browsertest.cc b/chrome/browser/net/errorpage_browsertest.cc
index 7b7b299..ec51d3b 100644
--- a/chrome/browser/net/errorpage_browsertest.cc
+++ b/chrome/browser/net/errorpage_browsertest.cc
@@ -21,8 +21,7 @@
 #include "base/values.h"
 #include "build/build_config.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
+
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/net/net_error_diagnostics_dialog.h"
 #include "chrome/browser/net/url_request_mock_util.h"
@@ -45,6 +44,7 @@
 #include "components/prefs/pref_service.h"
 #include "components/strings/grit/components_strings.h"
 #include "content/public/browser/browser_thread.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/navigation_handle.h"
 #include "content/public/browser/notification_service.h"
 #include "content/public/browser/notification_types.h"
@@ -1007,11 +1007,11 @@
 
   // Clear the cache and reload the same URL; confirm the error page is told
   // that there is no cached copy.
-  BrowsingDataRemover* remover =
-      BrowsingDataRemoverFactory::GetForBrowserContext(browser()->profile());
+  content::BrowsingDataRemover* remover =
+      content::BrowserContext::GetBrowsingDataRemover(browser()->profile());
   remover->Remove(base::Time(), base::Time::Max(),
-                  BrowsingDataRemover::DATA_TYPE_CACHE,
-                  BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB);
+                  content::BrowsingDataRemover::DATA_TYPE_CACHE,
+                  content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB);
   ui_test_utils::NavigateToURL(browser(), test_url);
   EXPECT_TRUE(ProbeStaleCopyValue(false));
   EXPECT_FALSE(IsDisplayingText(browser(), GetShowSavedButtonLabel()));
@@ -1279,11 +1279,11 @@
 
   // Clear the cache and reload the same URL; confirm the error page is told
   // that there is no cached copy.
-  BrowsingDataRemover* remover =
-      BrowsingDataRemoverFactory::GetForBrowserContext(browser()->profile());
+  content::BrowsingDataRemover* remover =
+      content::BrowserContext::GetBrowsingDataRemover(browser()->profile());
   remover->Remove(base::Time(), base::Time::Max(),
-                  BrowsingDataRemover::DATA_TYPE_CACHE,
-                  BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB);
+                  content::BrowsingDataRemover::DATA_TYPE_CACHE,
+                  content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB);
   ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(
       browser(), test_url, 2);
   EXPECT_TRUE(ProbeStaleCopyValue(false));
diff --git a/chrome/browser/net/predictor_browsertest.cc b/chrome/browser/net/predictor_browsertest.cc
index de34b2e..85c5f63db 100644
--- a/chrome/browser/net/predictor_browsertest.cc
+++ b/chrome/browser/net/predictor_browsertest.cc
@@ -24,8 +24,6 @@
 #include "build/build_config.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/net/predictor.h"
 #include "chrome/browser/profiles/profile.h"
@@ -35,6 +33,7 @@
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/prefs/pref_service.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/common/content_switches.h"
 #include "content/public/test/browser_test_utils.h"
 #include "content/public/test/test_utils.h"
@@ -1410,11 +1409,11 @@
   EXPECT_THAT(cleared_referral_list, HasSubstr(target_url_.host()));
 
   // Clear cache which should clear all prefs.
-  BrowsingDataRemover* remover =
-      BrowsingDataRemoverFactory::GetForBrowserContext(browser()->profile());
+  content::BrowsingDataRemover* remover =
+      content::BrowserContext::GetBrowsingDataRemover(browser()->profile());
   remover->Remove(base::Time(), base::Time::Max(),
                   ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY,
-                  BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB);
+                  content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB);
 
   GetListFromPrefsAsString(prefs::kDnsPrefetchingStartupList,
                            &cleared_startup_list);
diff --git a/chrome/browser/net/sdch_browsertest.cc b/chrome/browser/net/sdch_browsertest.cc
index 016ff00a3..f05bf94b 100644
--- a/chrome/browser/net/sdch_browsertest.cc
+++ b/chrome/browser/net/sdch_browsertest.cc
@@ -23,9 +23,6 @@
 #include "build/build_config.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_test_util.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_manager.h"
@@ -37,8 +34,10 @@
 #include "chrome/test/base/in_process_browser_test.h"
 #include "components/browsing_data/core/browsing_data_utils.h"
 #include "content/public/browser/browser_thread.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/common/content_switches.h"
 #include "content/public/test/browser_test_utils.h"
+#include "content/public/test/browsing_data_remover_test_util.h"
 #include "content/public/test/test_utils.h"
 #include "crypto/sha2.h"
 #include "net/base/sdch_manager.h"
@@ -404,16 +403,16 @@
   }
 
   void BrowsingDataRemoveAndWait(int remove_mask) {
-    BrowsingDataRemover* remover =
-        BrowsingDataRemoverFactory::GetForBrowserContext(browser()->profile());
-    BrowsingDataRemoverCompletionObserver completion_observer(remover);
-    remover->RemoveAndReply(browsing_data::CalculateBeginDeleteTime(
-                                browsing_data::TimePeriod::LAST_HOUR),
-                            browsing_data::CalculateEndDeleteTime(
-                                browsing_data::TimePeriod::LAST_HOUR),
-                            remove_mask,
-                            BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
-                            &completion_observer);
+    content::BrowsingDataRemover* remover =
+        content::BrowserContext::GetBrowsingDataRemover(browser()->profile());
+    content::BrowsingDataRemoverCompletionObserver completion_observer(remover);
+    remover->RemoveAndReply(
+        browsing_data::CalculateBeginDeleteTime(
+            browsing_data::TimePeriod::LAST_HOUR),
+        browsing_data::CalculateEndDeleteTime(
+            browsing_data::TimePeriod::LAST_HOUR),
+        remove_mask, content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+        &completion_observer);
     completion_observer.BlockUntilCompletion();
   }
 
@@ -705,13 +704,13 @@
   // Confirm browsing data remover without removing the cache leaves
   // SDCH alone.
   BrowsingDataRemoveAndWait(ChromeBrowsingDataRemoverDelegate::ALL_DATA_TYPES &
-                            ~BrowsingDataRemover::DATA_TYPE_CACHE);
+                            ~content::BrowsingDataRemover::DATA_TYPE_CACHE);
   bool sdch_encoding_used = false;
   ASSERT_TRUE(GetData(&sdch_encoding_used));
   EXPECT_TRUE(sdch_encoding_used);
 
   // Confirm browsing data remover removing the cache clears SDCH state.
-  BrowsingDataRemoveAndWait(BrowsingDataRemover::DATA_TYPE_CACHE);
+  BrowsingDataRemoveAndWait(content::BrowsingDataRemover::DATA_TYPE_CACHE);
   sdch_encoding_used = false;
   ASSERT_TRUE(GetData(&sdch_encoding_used));
   EXPECT_FALSE(sdch_encoding_used);
diff --git a/chrome/browser/policy/cloud/cloud_policy_invalidator.cc b/chrome/browser/policy/cloud/cloud_policy_invalidator.cc
index 71a376d..90ce6ed 100644
--- a/chrome/browser/policy/cloud/cloud_policy_invalidator.cc
+++ b/chrome/browser/policy/cloud/cloud_policy_invalidator.cc
@@ -266,10 +266,9 @@
   // Schedule the policy to be refreshed.
   task_runner_->PostDelayedTask(
       FROM_HERE,
-      base::Bind(
-          &CloudPolicyInvalidator::RefreshPolicy,
-          weak_factory_.GetWeakPtr(),
-          payload.empty() /* is_missing_payload */),
+      base::BindOnce(&CloudPolicyInvalidator::RefreshPolicy,
+                     weak_factory_.GetWeakPtr(),
+                     payload.empty() /* is_missing_payload */),
       delay);
 }
 
diff --git a/chrome/browser/policy/cloud/test_request_interceptor.cc b/chrome/browser/policy/cloud/test_request_interceptor.cc
index 53ee897..40e42f5 100644
--- a/chrome/browser/policy/cloud/test_request_interceptor.cc
+++ b/chrome/browser/policy/cloud/test_request_interceptor.cc
@@ -232,8 +232,8 @@
         new std::vector<base::Closure>);
     callbacks->swap(request_serviced_callbacks_);
     io_task_runner_->PostTask(
-        FROM_HERE, base::Bind(&Delegate::InvokeRequestServicedCallbacks,
-                              base::Passed(&callbacks)));
+        FROM_HERE, base::BindOnce(&Delegate::InvokeRequestServicedCallbacks,
+                                  base::Passed(&callbacks)));
   }
 
   JobCallback callback = pending_job_callbacks_.front();
@@ -344,12 +344,9 @@
   io_task_runner_->PostTask(FROM_HERE, task);
   base::RunLoop run_loop;
   io_task_runner_->PostTask(
-      FROM_HERE,
-      base::Bind(
-          base::IgnoreResult(&base::TaskRunner::PostTask),
-          base::ThreadTaskRunnerHandle::Get(),
-          FROM_HERE,
-          run_loop.QuitClosure()));
+      FROM_HERE, base::BindOnce(base::IgnoreResult(&base::TaskRunner::PostTask),
+                                base::ThreadTaskRunnerHandle::Get(), FROM_HERE,
+                                run_loop.QuitClosure()));
   run_loop.Run();
 }
 
diff --git a/chrome/browser/policy/cloud/user_policy_signin_service_base.cc b/chrome/browser/policy/cloud/user_policy_signin_service_base.cc
index f66bfa561..4f0bfb4 100644
--- a/chrome/browser/policy/cloud/user_policy_signin_service_base.cc
+++ b/chrome/browser/policy/cloud/user_policy_signin_service_base.cc
@@ -120,7 +120,7 @@
       // the CloudPolicyClient, so queue up a task to do the shutdown.
       base::ThreadTaskRunnerHandle::Get()->PostTask(
           FROM_HERE,
-          base::Bind(
+          base::BindOnce(
               &UserPolicySigninServiceBase::ShutdownUserCloudPolicyManager,
               weak_factory_.GetWeakPtr()));
     } else {
diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc
index 021efe75..a6c6d0fe 100644
--- a/chrome/browser/policy/policy_browsertest.cc
+++ b/chrome/browser/policy/policy_browsertest.cc
@@ -342,14 +342,15 @@
   // Sets up the filter on IO thread such that requests to |host| fail.
   explicit MakeRequestFail(const std::string& host) : host_(host) {
     BrowserThread::PostTaskAndReply(BrowserThread::IO, FROM_HERE,
-                                    base::Bind(MakeRequestFailOnIO, host_),
+                                    base::BindOnce(MakeRequestFailOnIO, host_),
                                     base::MessageLoop::QuitWhenIdleClosure());
     content::RunMessageLoop();
   }
   ~MakeRequestFail() {
-    BrowserThread::PostTaskAndReply(BrowserThread::IO, FROM_HERE,
-                                    base::Bind(UndoMakeRequestFailOnIO, host_),
-                                    base::MessageLoop::QuitWhenIdleClosure());
+    BrowserThread::PostTaskAndReply(
+        BrowserThread::IO, FROM_HERE,
+        base::BindOnce(UndoMakeRequestFailOnIO, host_),
+        base::MessageLoop::QuitWhenIdleClosure());
     content::RunMessageLoop();
   }
 
@@ -637,7 +638,7 @@
   void SetUpOnMainThread() override {
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(chrome_browser_net::SetUrlRequestMocksEnabled, true));
+        base::BindOnce(chrome_browser_net::SetUrlRequestMocksEnabled, true));
     if (extension_service()->updater()) {
       extension_service()->updater()->SetExtensionCacheForTesting(
           test_extension_cache_.get());
@@ -651,8 +652,8 @@
     PathService::Get(content::DIR_TEST_DATA, &root_http);
     BrowserThread::PostTaskAndReply(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(URLRequestMockHTTPJob::AddUrlHandlers, root_http,
-                   make_scoped_refptr(BrowserThread::GetBlockingPool())),
+        base::BindOnce(URLRequestMockHTTPJob::AddUrlHandlers, root_http,
+                       make_scoped_refptr(BrowserThread::GetBlockingPool())),
         base::MessageLoop::current()->QuitWhenIdleClosure());
     content::RunMessageLoop();
   }
@@ -1247,8 +1248,9 @@
   base::RunLoop loop;
   BrowserThread::PostTaskAndReply(
       BrowserThread::IO, FROM_HERE,
-      base::Bind(&GetPacHttpsUrlStrippingEnabledOnIOThread,
-                 g_browser_process->io_thread(), base::Unretained(&enabled)),
+      base::BindOnce(&GetPacHttpsUrlStrippingEnabledOnIOThread,
+                     g_browser_process->io_thread(),
+                     base::Unretained(&enabled)),
       loop.QuitClosure());
   loop.Run();
   return enabled;
@@ -2352,7 +2354,7 @@
     base::RunLoop loop;
     BrowserThread::PostTaskAndReply(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(RedirectHostsToTestData, kURLS, arraysize(kURLS)),
+        base::BindOnce(RedirectHostsToTestData, kURLS, arraysize(kURLS)),
         loop.QuitClosure());
     loop.Run();
   }
@@ -2390,7 +2392,7 @@
     base::RunLoop loop;
     BrowserThread::PostTaskAndReply(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(UndoRedirectHostsToTestData, kURLS, arraysize(kURLS)),
+        base::BindOnce(UndoRedirectHostsToTestData, kURLS, arraysize(kURLS)),
         loop.QuitClosure());
     loop.Run();
   }
@@ -2961,10 +2963,9 @@
 
   void SetUpOnMainThread() override {
     BrowserThread::PostTask(
-        BrowserThread::IO,
-        FROM_HERE,
-        base::Bind(
-            RedirectHostsToTestData, kRestoredURLs, arraysize(kRestoredURLs)));
+        BrowserThread::IO, FROM_HERE,
+        base::BindOnce(RedirectHostsToTestData, kRestoredURLs,
+                       arraysize(kRestoredURLs)));
   }
 
   void ListOfURLs() {
@@ -3272,11 +3273,12 @@
 
   content::BrowserThread::PostTaskAndReply(
       content::BrowserThread::IO, FROM_HERE,
-      base::Bind(&MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices,
-                 base::Unretained(MediaCaptureDevicesDispatcher::GetInstance()),
-                 audio_devices),
-      base::Bind(&MediaStreamDevicesControllerBrowserTest::FinishAudioTest,
-                 base::Unretained(this)));
+      base::BindOnce(
+          &MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices,
+          base::Unretained(MediaCaptureDevicesDispatcher::GetInstance()),
+          audio_devices),
+      base::BindOnce(&MediaStreamDevicesControllerBrowserTest::FinishAudioTest,
+                     base::Unretained(this)));
 
   base::RunLoop().Run();
 }
@@ -3304,11 +3306,11 @@
 
     content::BrowserThread::PostTaskAndReply(
         content::BrowserThread::IO, FROM_HERE,
-        base::Bind(
+        base::BindOnce(
             &MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices,
             base::Unretained(MediaCaptureDevicesDispatcher::GetInstance()),
             audio_devices),
-        base::Bind(
+        base::BindOnce(
             &MediaStreamDevicesControllerBrowserTest::FinishAudioTest,
             base::Unretained(this)));
 
@@ -3329,11 +3331,12 @@
 
   content::BrowserThread::PostTaskAndReply(
       content::BrowserThread::IO, FROM_HERE,
-      base::Bind(&MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices,
-                 base::Unretained(MediaCaptureDevicesDispatcher::GetInstance()),
-                 video_devices),
-      base::Bind(&MediaStreamDevicesControllerBrowserTest::FinishVideoTest,
-                 base::Unretained(this)));
+      base::BindOnce(
+          &MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices,
+          base::Unretained(MediaCaptureDevicesDispatcher::GetInstance()),
+          video_devices),
+      base::BindOnce(&MediaStreamDevicesControllerBrowserTest::FinishVideoTest,
+                     base::Unretained(this)));
 
   base::RunLoop().Run();
 }
@@ -3361,10 +3364,11 @@
 
     content::BrowserThread::PostTaskAndReply(
         content::BrowserThread::IO, FROM_HERE,
-        base::Bind(&MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices,
+        base::BindOnce(
+            &MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices,
             base::Unretained(MediaCaptureDevicesDispatcher::GetInstance()),
             video_devices),
-        base::Bind(
+        base::BindOnce(
             &MediaStreamDevicesControllerBrowserTest::FinishVideoTest,
             base::Unretained(this)));
 
@@ -3443,8 +3447,8 @@
   // Require CT for all hosts (in the absence of policy).
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      base::Bind(net::TransportSecurityState::SetShouldRequireCTForTesting,
-                 base::Owned(new bool(true))));
+      base::BindOnce(net::TransportSecurityState::SetShouldRequireCTForTesting,
+                     base::Owned(new bool(true))));
 
   ui_test_utils::NavigateToURL(browser(), https_server_ok.GetURL("/"));
 
@@ -3896,7 +3900,7 @@
 
 void ComponentUpdaterPolicyTest::CallAsync(TestCaseAction action) {
   BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
-                          base::Bind(action, base::Unretained(this)));
+                          base::BindOnce(action, base::Unretained(this)));
 }
 
 void ComponentUpdaterPolicyTest::OnDemandComplete(update_client::Error error) {
diff --git a/chrome/browser/policy/policy_network_browsertest.cc b/chrome/browser/policy/policy_network_browsertest.cc
index 38aca74..732158b 100644
--- a/chrome/browser/policy/policy_network_browsertest.cc
+++ b/chrome/browser/policy/policy_network_browsertest.cc
@@ -57,8 +57,8 @@
   bool is_quic_enabled = false;
   content::BrowserThread::PostTaskAndReply(
       content::BrowserThread::IO, FROM_HERE,
-      base::Bind(IsQuicEnabledOnIOThread, request_context_getter,
-                 &is_quic_enabled),
+      base::BindOnce(IsQuicEnabledOnIOThread, request_context_getter,
+                     &is_quic_enabled),
       run_loop.QuitClosure());
   run_loop.Run();
   return is_quic_enabled;
diff --git a/chrome/browser/predictors/resource_prefetch_predictor_browsertest.cc b/chrome/browser/predictors/resource_prefetch_predictor_browsertest.cc
index cf9bbc2..55caa43 100644
--- a/chrome/browser/predictors/resource_prefetch_predictor_browsertest.cc
+++ b/chrome/browser/predictors/resource_prefetch_predictor_browsertest.cc
@@ -12,8 +12,7 @@
 #include "base/strings/string_util.h"
 #include "base/test/histogram_tester.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
+
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/predictors/resource_prefetch_predictor.h"
 #include "chrome/browser/predictors/resource_prefetch_predictor_factory.h"
@@ -24,6 +23,7 @@
 #include "chrome/common/chrome_switches.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "net/base/host_port_pair.h"
 #include "net/base/url_util.h"
 #include "net/dns/mock_host_resolver.h"
@@ -126,9 +126,10 @@
   DISALLOW_COPY_AND_ASSIGN(InitializationObserver);
 };
 
-class BrowsingDataRemoverObserver : public BrowsingDataRemover::Observer {
+class BrowsingDataRemoverObserver
+    : public content::BrowsingDataRemover::Observer {
  public:
-  explicit BrowsingDataRemoverObserver(BrowsingDataRemover* remover)
+  explicit BrowsingDataRemoverObserver(content::BrowsingDataRemover* remover)
       : remover_(remover) {
     remover_->AddObserver(this);
   }
@@ -139,7 +140,7 @@
   void Wait() { run_loop_.Run(); }
 
  private:
-  BrowsingDataRemover* remover_;
+  content::BrowsingDataRemover* remover_;
   base::RunLoop run_loop_;
 
   DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverObserver);
@@ -491,12 +492,13 @@
   void ClearResources() { resources_.clear(); }
 
   void ClearCache() {
-    BrowsingDataRemover* remover =
-        BrowsingDataRemoverFactory::GetForBrowserContext(browser()->profile());
+    content::BrowsingDataRemover* remover =
+        content::BrowserContext::GetBrowsingDataRemover(browser()->profile());
     BrowsingDataRemoverObserver observer(remover);
     remover->RemoveAndReply(
-        base::Time(), base::Time::Max(), BrowsingDataRemover::DATA_TYPE_CACHE,
-        BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB, &observer);
+        base::Time(), base::Time::Max(),
+        content::BrowsingDataRemover::DATA_TYPE_CACHE,
+        content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB, &observer);
     observer.Wait();
 
     for (auto& kv : resources_)
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
index 0c13cbc..647c65e 100644
--- a/chrome/browser/prerender/prerender_browsertest.cc
+++ b/chrome/browser/prerender/prerender_browsertest.cc
@@ -30,9 +30,7 @@
 #include "base/values.h"
 #include "build/build_config.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_test_util.h"
+
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/chrome_content_browser_client.h"
 #include "chrome/browser/chrome_notification_types.h"
@@ -87,6 +85,7 @@
 #include "components/variations/entropy_provider.h"
 #include "components/variations/variations_associated_data.h"
 #include "content/public/browser/browser_message_filter.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/devtools_agent_host.h"
 #include "content/public/browser/navigation_controller.h"
 #include "content/public/browser/navigation_entry.h"
@@ -102,6 +101,7 @@
 #include "content/public/common/resource_request_body.h"
 #include "content/public/common/url_constants.h"
 #include "content/public/test/browser_test_utils.h"
+#include "content/public/test/browsing_data_remover_test_util.h"
 #include "content/public/test/ppapi_test_utils.h"
 #include "content/public/test/test_navigation_observer.h"
 #include "content/public/test/test_utils.h"
@@ -237,12 +237,12 @@
 
 // Clears the specified data using BrowsingDataRemover.
 void ClearBrowsingData(Browser* browser, int remove_mask) {
-  BrowsingDataRemover* remover =
-      BrowsingDataRemoverFactory::GetForBrowserContext(browser->profile());
-  BrowsingDataRemoverCompletionObserver observer(remover);
-  remover->RemoveAndReply(base::Time(), base::Time::Max(), remove_mask,
-                          BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
-                          &observer);
+  content::BrowsingDataRemover* remover =
+      content::BrowserContext::GetBrowsingDataRemover(browser->profile());
+  content::BrowsingDataRemoverCompletionObserver observer(remover);
+  remover->RemoveAndReply(
+      base::Time(), base::Time::Max(), remove_mask,
+      content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB, &observer);
   observer.BlockUntilCompletion();
   // BrowsingDataRemover deletes itself.
 }
@@ -2533,7 +2533,8 @@
       PrerenderTestURL("/prerender/prerender_page.html",
                        FINAL_STATUS_CACHE_OR_HISTORY_CLEARED, 1);
 
-  ClearBrowsingData(current_browser(), BrowsingDataRemover::DATA_TYPE_CACHE);
+  ClearBrowsingData(current_browser(),
+                    content::BrowsingDataRemover::DATA_TYPE_CACHE);
   prerender->WaitForStop();
 
   // Make sure prerender history was not cleared.  Not a vital behavior, but
diff --git a/chrome/browser/profile_resetter/profile_resetter.cc b/chrome/browser/profile_resetter/profile_resetter.cc
index b23f2d4..9b78bbb 100644
--- a/chrome/browser/profile_resetter/profile_resetter.cc
+++ b/chrome/browser/profile_resetter/profile_resetter.cc
@@ -13,8 +13,7 @@
 #include "base/synchronization/cancellation_flag.h"
 #include "build/build_config.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
+
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 #include "chrome/browser/extensions/extension_service.h"
@@ -37,6 +36,7 @@
 #include "components/search_engines/template_url_prepopulate_data.h"
 #include "components/search_engines/template_url_service.h"
 #include "content/public/browser/browser_thread.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_system.h"
 #include "extensions/browser/management_policy.h"
@@ -237,10 +237,10 @@
   DCHECK(CalledOnValidThread());
   DCHECK(!cookies_remover_);
 
-  cookies_remover_ = BrowsingDataRemoverFactory::GetForBrowserContext(profile_);
+  cookies_remover_ = content::BrowserContext::GetBrowsingDataRemover(profile_);
   cookies_remover_->AddObserver(this);
   int remove_mask = ChromeBrowsingDataRemoverDelegate::DATA_TYPE_SITE_DATA |
-                    BrowsingDataRemover::DATA_TYPE_CACHE;
+                    content::BrowsingDataRemover::DATA_TYPE_CACHE;
   PrefService* prefs = profile_->GetPrefs();
   DCHECK(prefs);
 
@@ -249,7 +249,7 @@
     remove_mask &= ~ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA;
   cookies_remover_->RemoveAndReply(
       base::Time(), base::Time::Max(), remove_mask,
-      BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB, this);
+      content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB, this);
 }
 
 void ProfileResetter::ResetExtensions() {
diff --git a/chrome/browser/profile_resetter/profile_resetter.h b/chrome/browser/profile_resetter/profile_resetter.h
index f7226ee..68eeae6 100644
--- a/chrome/browser/profile_resetter/profile_resetter.h
+++ b/chrome/browser/profile_resetter/profile_resetter.h
@@ -18,9 +18,9 @@
 #include "base/memory/weak_ptr.h"
 #include "base/strings/string16.h"
 #include "base/threading/non_thread_safe.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
 #include "chrome/browser/profile_resetter/brandcoded_default_settings.h"
 #include "components/search_engines/template_url_service.h"
+#include "content/public/browser/browsing_data_remover.h"
 
 class Profile;
 
@@ -32,7 +32,7 @@
 // It is used in case the profile has been damaged due to malware or bad user
 // settings.
 class ProfileResetter : public base::NonThreadSafe,
-                        public BrowsingDataRemover::Observer {
+                        public content::BrowsingDataRemover::Observer {
  public:
   // Flags indicating what aspects of a profile shall be reset.
   enum Resettable {
@@ -102,7 +102,7 @@
 
   // If non-null it means removal is in progress. BrowsingDataRemover takes care
   // of deleting itself when done.
-  BrowsingDataRemover* cookies_remover_;
+  content::BrowsingDataRemover* cookies_remover_;
 
   std::unique_ptr<TemplateURLService::Subscription> template_url_service_sub_;
 
diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
index fa17e77c..c9ddbbb 100644
--- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
@@ -13,7 +13,7 @@
 #include "chrome/browser/autofill/personal_data_manager_factory.h"
 #include "chrome/browser/background/background_contents_service_factory.h"
 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
+#include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_factory.h"
 #include "chrome/browser/chrome_browser_main.h"
 #include "chrome/browser/content_settings/cookie_settings_factory.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
@@ -195,7 +195,6 @@
 #endif
   BookmarkModelFactory::GetInstance();
   BookmarkUndoServiceFactory::GetInstance();
-  BrowsingDataRemoverFactory::GetInstance();
 #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION)
   CaptivePortalServiceFactory::GetInstance();
 #endif
@@ -203,14 +202,14 @@
 #if defined(OS_ANDROID)
   chrome::android::DataUseUITabModelFactory::GetInstance();
 #endif
-  UINetworkQualityEstimatorServiceFactory::GetInstance();
+  ChromeBrowsingDataRemoverDelegateFactory::GetInstance();
+#if !defined(OS_ANDROID)
+  ChromeCryptAuthServiceFactory::GetInstance();
+#endif
 #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
   CloudPrintProxyServiceFactory::GetInstance();
 #endif
   CookieSettingsFactory::GetInstance();
-#if !defined(OS_ANDROID)
-  ChromeCryptAuthServiceFactory::GetInstance();
-#endif
 #if BUILDFLAG(ENABLE_EXTENSIONS)
   ExtensionWelcomeNotificationFactory::GetInstance();
 #endif
@@ -335,6 +334,7 @@
 #if defined(OS_WIN)
   TriggeredProfileResetterFactory::GetInstance();
 #endif
+  UINetworkQualityEstimatorServiceFactory::GetInstance();
 #if !defined(OS_ANDROID)
   UsbChooserContextFactory::GetInstance();
 #endif
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
index d3f0653..86d3fb6 100644
--- a/chrome/browser/profiles/profile_impl.cc
+++ b/chrome/browser/profiles/profile_impl.cc
@@ -36,6 +36,8 @@
 #include "chrome/browser/background_sync/background_sync_controller_impl.h"
 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "chrome/browser/browser_process.h"
+#include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
+#include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_factory.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/content_settings/cookie_settings_factory.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
@@ -1028,6 +1030,11 @@
   return ChromeSSLHostStateDelegateFactory::GetForProfile(this);
 }
 
+content::BrowsingDataRemoverDelegate*
+ProfileImpl::GetBrowsingDataRemoverDelegate() {
+  return ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(this);
+}
+
 // TODO(mlamouri): we should all these BrowserContext implementation to Profile
 // instead of repeating them inside all Profile implementations.
 content::PermissionManager* ProfileImpl::GetPermissionManager() {
diff --git a/chrome/browser/profiles/profile_impl.h b/chrome/browser/profiles/profile_impl.h
index d2cd7334..f948a4d 100644
--- a/chrome/browser/profiles/profile_impl.h
+++ b/chrome/browser/profiles/profile_impl.h
@@ -83,6 +83,8 @@
   storage::SpecialStoragePolicy* GetSpecialStoragePolicy() override;
   content::PushMessagingService* GetPushMessagingService() override;
   content::SSLHostStateDelegate* GetSSLHostStateDelegate() override;
+  content::BrowsingDataRemoverDelegate* GetBrowsingDataRemoverDelegate()
+      override;
   content::PermissionManager* GetPermissionManager() override;
   content::BackgroundSyncController* GetBackgroundSyncController() override;
   net::URLRequestContextGetter* CreateRequestContext(
diff --git a/chrome/browser/profiles/profile_manager_browsertest.cc b/chrome/browser/profiles/profile_manager_browsertest.cc
index b9eb5d539..bfb4cdc 100644
--- a/chrome/browser/profiles/profile_manager_browsertest.cc
+++ b/chrome/browser/profiles/profile_manager_browsertest.cc
@@ -12,8 +12,6 @@
 #include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
 #include "chrome/browser/lifetime/keep_alive_types.h"
 #include "chrome/browser/lifetime/scoped_keep_alive.h"
 #include "chrome/browser/password_manager/password_store_factory.h"
@@ -32,6 +30,7 @@
 #include "components/password_manager/core/browser/password_store.h"
 #include "components/password_manager/core/browser/password_store_consumer.h"
 #include "components/prefs/pref_service.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/test/test_utils.h"
 
 #if defined(OS_CHROMEOS)
@@ -85,7 +84,7 @@
                        OnBrowsingDataRemoverWouldComplete,
                    base::Unretained(this));
     for (Profile* profile : profile_manager->GetLoadedProfiles()) {
-      BrowsingDataRemoverFactory::GetForBrowserContext(profile)
+      content::BrowserContext::GetBrowsingDataRemover(profile)
           ->SetWouldCompleteCallbackForTesting(would_complete_callback);
     }
   }
diff --git a/chrome/browser/profiles/profiles_state.cc b/chrome/browser/profiles/profiles_state.cc
index 1edfad6..2d86e39 100644
--- a/chrome/browser/profiles/profiles_state.cc
+++ b/chrome/browser/profiles/profiles_state.cc
@@ -11,8 +11,7 @@
 #include "build/build_config.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
+
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/profiles/gaia_info_update_service.h"
 #include "chrome/browser/profiles/gaia_info_update_service_factory.h"
@@ -30,6 +29,7 @@
 #include "components/prefs/pref_service.h"
 #include "components/signin/core/browser/profile_oauth2_token_service.h"
 #include "components/signin/core/common/signin_pref_names.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/resource_dispatcher_host.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/gfx/text_elider.h"
@@ -235,7 +235,7 @@
   if (profile->IsGuestSession())
     profile = profile->GetOffTheRecordProfile();
 
-  BrowsingDataRemoverFactory::GetForBrowserContext(profile)->Remove(
+  content::BrowserContext::GetBrowsingDataRemover(profile)->Remove(
       base::Time(), base::Time::Max(),
       ChromeBrowsingDataRemoverDelegate::WIPE_PROFILE,
       ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES);
diff --git a/chrome/browser/push_messaging/push_messaging_browsertest.cc b/chrome/browser/push_messaging/push_messaging_browsertest.cc
index 6b2cdbf..da7a2cf 100644
--- a/chrome/browser/push_messaging/push_messaging_browsertest.cc
+++ b/chrome/browser/push_messaging/push_messaging_browsertest.cc
@@ -19,9 +19,6 @@
 #include "build/build_config.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_test_util.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 #include "chrome/browser/engagement/site_engagement_score.h"
@@ -54,10 +51,12 @@
 #include "components/gcm_driver/gcm_client.h"
 #include "components/gcm_driver/instance_id/fake_gcm_driver_for_instance_id.h"
 #include "components/gcm_driver/instance_id/instance_id_driver.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/common/content_switches.h"
 #include "content/public/common/push_subscription_options.h"
 #include "content/public/test/browser_test_utils.h"
+#include "content/public/test/browsing_data_remover_test_util.h"
 #include "content/public/test/test_utils.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -2194,13 +2193,13 @@
   ASSERT_NO_FATAL_FAILURE(SetupOrphanedPushSubscription(&app_id));
 
   // Simulate a user clearing site data (including Service Workers, crucially).
-  BrowsingDataRemover* remover =
-      BrowsingDataRemoverFactory::GetForBrowserContext(GetBrowser()->profile());
-  BrowsingDataRemoverCompletionObserver observer(remover);
+  content::BrowsingDataRemover* remover =
+      content::BrowserContext::GetBrowsingDataRemover(GetBrowser()->profile());
+  content::BrowsingDataRemoverCompletionObserver observer(remover);
   remover->RemoveAndReply(
       base::Time(), base::Time::Max(),
       ChromeBrowsingDataRemoverDelegate::DATA_TYPE_SITE_DATA,
-      BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB, &observer);
+      content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB, &observer);
   observer.BlockUntilCompletion();
 
   base::RunLoop run_loop;
diff --git a/chrome/browser/ssl/chrome_ssl_host_state_delegate_test.cc b/chrome/browser/ssl/chrome_ssl_host_state_delegate_test.cc
index 9dae48a..10193b9c 100644
--- a/chrome/browser/ssl/chrome_ssl_host_state_delegate_test.cc
+++ b/chrome/browser/ssl/chrome_ssl_host_state_delegate_test.cc
@@ -12,9 +12,7 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/test/simple_test_clock.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_test_util.h"
+
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 #include "chrome/browser/profiles/profile.h"
@@ -25,10 +23,12 @@
 #include "components/browsing_data/core/browsing_data_utils.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/content_settings/core/common/content_settings_pattern.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/ssl_host_state_delegate.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/common/content_switches.h"
 #include "content/public/test/browser_test_utils.h"
+#include "content/public/test/browsing_data_remover_test_util.h"
 #include "net/test/cert_test_util.h"
 #include "net/test/test_data_directory.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -617,16 +617,17 @@
     : public ChromeSSLHostStateDelegateTest {
  public:
   void RemoveAndWait(Profile* profile) {
-    BrowsingDataRemover* remover =
-        BrowsingDataRemoverFactory::GetForBrowserContext(profile);
-    BrowsingDataRemoverCompletionObserver completion_observer(remover);
+    content::BrowsingDataRemover* remover =
+        content::BrowserContext::GetBrowsingDataRemover(profile);
+    content::BrowsingDataRemoverCompletionObserver completion_observer(remover);
     remover->RemoveAndReply(
         browsing_data::CalculateBeginDeleteTime(
             browsing_data::TimePeriod::LAST_HOUR),
         browsing_data::CalculateEndDeleteTime(
             browsing_data::TimePeriod::LAST_HOUR),
         ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY,
-        BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB, &completion_observer);
+        content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
+        &completion_observer);
     completion_observer.BlockUntilCompletion();
   }
 };
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index ddf2bba7..377aee2 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -1346,8 +1346,6 @@
       "ash/launcher/chrome_launcher_controller.h",
       "ash/launcher/chrome_launcher_controller_impl.cc",
       "ash/launcher/chrome_launcher_controller_impl.h",
-      "ash/launcher/chrome_launcher_controller_mus.cc",
-      "ash/launcher/chrome_launcher_controller_mus.h",
       "ash/launcher/chrome_launcher_controller_util.cc",
       "ash/launcher/chrome_launcher_controller_util.h",
       "ash/launcher/desktop_shell_launcher_context_menu.cc",
diff --git a/chrome/browser/ui/ash/launcher/app_window_launcher_controller.cc b/chrome/browser/ui/ash/launcher/app_window_launcher_controller.cc
index c211d772..75a18ff 100644
--- a/chrome/browser/ui/ash/launcher/app_window_launcher_controller.cc
+++ b/chrome/browser/ui/ash/launcher/app_window_launcher_controller.cc
@@ -6,11 +6,11 @@
 
 #include "ash/shell.h"
 #include "chrome/browser/ui/ash/launcher/app_window_launcher_item_controller.h"
-#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
+#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h"
 #include "ui/wm/public/activation_client.h"
 
 AppWindowLauncherController::AppWindowLauncherController(
-    ChromeLauncherController* owner)
+    ChromeLauncherControllerImpl* owner)
     : owner_(owner) {
   if (ash::Shell::HasInstance()) {
     if (ash::Shell::Get()->GetPrimaryRootWindow()) {
diff --git a/chrome/browser/ui/ash/launcher/app_window_launcher_controller.h b/chrome/browser/ui/ash/launcher/app_window_launcher_controller.h
index 9bdb6b9..75c19927 100644
--- a/chrome/browser/ui/ash/launcher/app_window_launcher_controller.h
+++ b/chrome/browser/ui/ash/launcher/app_window_launcher_controller.h
@@ -20,7 +20,7 @@
 }
 
 class AppWindowLauncherItemController;
-class ChromeLauncherController;
+class ChromeLauncherControllerImpl;
 class Profile;
 
 class AppWindowLauncherController
@@ -28,7 +28,7 @@
  public:
   ~AppWindowLauncherController() override;
 
-  // Called by ChromeLauncherController when the active user changed and the
+  // Called by ChromeLauncherControllerImpl when the active user changed and the
   // items need to be updated.
   virtual void ActiveUserChanged(const std::string& user_email) {}
 
@@ -43,16 +43,16 @@
       aura::Window* lost_active) override;
 
  protected:
-  explicit AppWindowLauncherController(ChromeLauncherController* owner);
+  explicit AppWindowLauncherController(ChromeLauncherControllerImpl* owner);
 
-  ChromeLauncherController* owner() { return owner_; }
+  ChromeLauncherControllerImpl* owner() { return owner_; }
 
   virtual AppWindowLauncherItemController* ControllerForWindow(
       aura::Window* window) = 0;
 
  private:
   // Unowned pointers.
-  ChromeLauncherController* owner_;
+  ChromeLauncherControllerImpl* owner_;
   aura::client::ActivationClient* activation_client_ = nullptr;
 
   DISALLOW_COPY_AND_ASSIGN(AppWindowLauncherController);
diff --git a/chrome/browser/ui/ash/launcher/arc_app_deferred_launcher_controller.cc b/chrome/browser/ui/ash/launcher/arc_app_deferred_launcher_controller.cc
index 14af509..ec8abca 100644
--- a/chrome/browser/ui/ash/launcher/arc_app_deferred_launcher_controller.cc
+++ b/chrome/browser/ui/ash/launcher/arc_app_deferred_launcher_controller.cc
@@ -5,7 +5,6 @@
 #include "chrome/browser/ui/ash/launcher/arc_app_deferred_launcher_controller.h"
 
 #include "ash/shelf/shelf_model.h"
-#include "ash/shell.h"
 #include "base/memory/ptr_util.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
@@ -113,9 +112,8 @@
     return;
 
   const ash::ShelfID shelf_id = owner_->GetShelfIDForAppID(shelf_app_id);
-  ash::ShelfModel* shelf_model = ash::Shell::Get()->shelf_model();
   const bool need_close_item =
-      it->second == shelf_model->GetShelfItemDelegate(shelf_id);
+      it->second == owner_->shelf_model()->GetShelfItemDelegate(shelf_id);
   app_controller_map_.erase(it);
   if (need_close_item)
     owner_->CloseLauncherItem(shelf_id);
@@ -213,8 +211,8 @@
   if (shelf_id == 0) {
     owner_->CreateAppLauncherItem(std::move(controller), ash::STATUS_RUNNING);
   } else {
-    ash::ShelfModel* shelf_model = ash::Shell::Get()->shelf_model();
-    shelf_model->SetShelfItemDelegate(shelf_id, std::move(controller));
+    owner_->shelf_model()->SetShelfItemDelegate(shelf_id,
+                                                std::move(controller));
     owner_->SetItemStatus(shelf_id, ash::STATUS_RUNNING);
   }
 
diff --git a/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.cc b/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.cc
index bed6d5e..4b7973f 100644
--- a/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.cc
+++ b/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.cc
@@ -22,7 +22,7 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
 #include "chrome/browser/ui/ash/launcher/arc_app_window_launcher_item_controller.h"
-#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
+#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h"
 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h"
 #include "components/arc/arc_bridge_service.h"
 #include "components/exo/shell_surface.h"
@@ -248,7 +248,7 @@
 };
 
 ArcAppWindowLauncherController::ArcAppWindowLauncherController(
-    ChromeLauncherController* owner)
+    ChromeLauncherControllerImpl* owner)
     : AppWindowLauncherController(owner) {
   if (arc::IsArcAllowedForProfile(owner->profile())) {
     observed_profile_ = owner->profile();
diff --git a/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.h b/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.h
index 77101b8..b399496 100644
--- a/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.h
+++ b/chrome/browser/ui/ash/launcher/arc_app_window_launcher_controller.h
@@ -23,7 +23,7 @@
 }
 
 class ArcAppWindowLauncherItemController;
-class ChromeLauncherController;
+class ChromeLauncherControllerImpl;
 
 class Profile;
 
@@ -33,7 +33,7 @@
                                        public ash::ShellObserver,
                                        public ArcAppListPrefs::Observer {
  public:
-  explicit ArcAppWindowLauncherController(ChromeLauncherController* owner);
+  explicit ArcAppWindowLauncherController(ChromeLauncherControllerImpl* owner);
   ~ArcAppWindowLauncherController() override;
 
   // Returns shelf app id. Play Store app is mapped to ARC platform host app.
diff --git a/chrome/browser/ui/ash/launcher/browser_shortcut_launcher_item_controller.cc b/chrome/browser/ui/ash/launcher/browser_shortcut_launcher_item_controller.cc
index 2f47003..6a00eb3 100644
--- a/chrome/browser/ui/ash/launcher/browser_shortcut_launcher_item_controller.cc
+++ b/chrome/browser/ui/ash/launcher/browser_shortcut_launcher_item_controller.cc
@@ -9,9 +9,7 @@
 
 #include "ash/resources/grit/ash_resources.h"
 #include "ash/shelf/shelf_model.h"
-#include "ash/shell.h"
 #include "ash/wm/window_properties.h"
-#include "ash/wm/window_util.h"
 #include "ash/wm_window.h"
 #include "base/memory/ptr_util.h"
 #include "chrome/browser/chrome_notification_types.h"
@@ -23,6 +21,7 @@
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_commands.h"
 #include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/browser_list.h"
 #include "chrome/browser/ui/browser_window.h"
 #include "chrome/browser/ui/chrome_pages.h"
 #include "chrome/browser/ui/settings_window_manager.h"
@@ -130,23 +129,21 @@
   ash::ShelfItem browser_item = shelf_model_->items()[browser_index];
   ash::ShelfItemStatus browser_status = ash::STATUS_CLOSED;
 
-  aura::Window* window = ash::wm::GetActiveWindow();
-  if (window) {
+  Browser* browser = BrowserList::GetInstance()->GetLastActive();
+  if (browser && browser->window()->IsActive() &&
+      IsBrowserRepresentedInBrowserList(browser)) {
     // Check if the active browser / tab is a browser which is not an app,
     // a windowed app, a popup or any other item which is not a browser of
     // interest.
-    Browser* browser = chrome::FindBrowserWithWindow(window);
-    if (IsBrowserRepresentedInBrowserList(browser)) {
-      browser_status = ash::STATUS_ACTIVE;
-      // If an app that has item is running in active WebContents, browser item
-      // status cannot be active.
-      content::WebContents* contents =
-          browser->tab_strip_model()->GetActiveWebContents();
-      if (contents &&
-          (ChromeLauncherController::instance()->GetShelfIDForWebContents(
-               contents) != browser_item.id))
-        browser_status = ash::STATUS_RUNNING;
-    }
+    browser_status = ash::STATUS_ACTIVE;
+    // If an app that has item is running in active WebContents, browser item
+    // status cannot be active.
+    content::WebContents* contents =
+        browser->tab_strip_model()->GetActiveWebContents();
+    if (contents &&
+        (ChromeLauncherController::instance()->GetShelfIDForWebContents(
+             contents) != browser_item.id))
+      browser_status = ash::STATUS_RUNNING;
   }
 
   if (browser_status == ash::STATUS_CLOSED) {
@@ -322,12 +319,12 @@
     chrome::NewEmptyWindow(ChromeLauncherController::instance()->profile());
     return ash::SHELF_ACTION_NEW_WINDOW_CREATED;
   }
-  Browser* browser = chrome::FindBrowserWithWindow(ash::wm::GetActiveWindow());
+  Browser* browser = BrowserList::GetInstance()->GetLastActive();
   if (items.size() == 1) {
     // If there is only one suitable browser, we can either activate it, or
     // bounce it (if it is already active).
-    if (browser == items[0]) {
-      AnimateWindow(browser->window()->GetNativeWindow(),
+    if (items[0]->window()->IsActive()) {
+      AnimateWindow(items[0]->window()->GetNativeWindow(),
                     wm::WINDOW_ANIMATION_TYPE_BOUNCE);
       return ash::SHELF_ACTION_NONE;
     }
@@ -339,7 +336,8 @@
     std::vector<Browser*>::iterator i =
         std::find(items.begin(), items.end(), browser);
     if (i != items.end()) {
-      browser = (++i == items.end()) ? items[0] : *i;
+      if (browser->window()->IsActive())
+        browser = (++i == items.end()) ? items[0] : *i;
     } else {
       browser = chrome::FindTabbedBrowser(
           ChromeLauncherController::instance()->profile(), true);
@@ -360,10 +358,10 @@
     return false;
 
   // v1 App popup windows with a valid app id have their own icon.
-  ash::ShelfModel* model = ash::Shell::Get()->shelf_model();
   if (browser->is_app() && browser->is_type_popup() &&
-      model->GetShelfIDForAppID(web_app::GetExtensionIdFromApplicationName(
-          browser->app_name())) > 0) {
+      shelf_model_->GetShelfIDForAppID(
+          web_app::GetExtensionIdFromApplicationName(browser->app_name())) !=
+          ash::kInvalidShelfID) {
     return false;
   }
 
diff --git a/chrome/browser/ui/ash/launcher/browser_status_monitor.cc b/chrome/browser/ui/ash/launcher/browser_status_monitor.cc
index 56d11171..49c615b 100644
--- a/chrome/browser/ui/ash/launcher/browser_status_monitor.cc
+++ b/chrome/browser/ui/ash/launcher/browser_status_monitor.cc
@@ -8,6 +8,7 @@
 #include "ash/wm/window_util.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
+#include "chrome/browser/ui/ash/ash_util.h"
 #include "chrome/browser/ui/ash/launcher/browser_shortcut_launcher_item_controller.h"
 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_util.h"
@@ -82,11 +83,14 @@
     : launcher_controller_(launcher_controller),
       browser_tab_strip_tracker_(this, this, this) {
   DCHECK(launcher_controller_);
-  ash::Shell::Get()->activation_client()->AddObserver(this);
+  // TODO(crbug.com/557406): Fix this interaction pattern in Mash.
+  if (!ash_util::IsRunningInMash())
+    ash::Shell::Get()->activation_client()->AddObserver(this);
 }
 
 BrowserStatusMonitor::~BrowserStatusMonitor() {
-  ash::Shell::Get()->activation_client()->RemoveObserver(this);
+  if (!ash_util::IsRunningInMash())
+    ash::Shell::Get()->activation_client()->RemoveObserver(this);
   browser_tab_strip_tracker_.StopObservingAndSendOnBrowserRemoved();
 }
 
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc
index f4c7e83d..66741b9c 100644
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.cc
@@ -41,6 +41,7 @@
 #include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
 #include "chrome/browser/ui/ash/app_sync_ui_state.h"
+#include "chrome/browser/ui/ash/ash_util.h"
 #include "chrome/browser/ui/ash/chrome_shell_delegate.h"
 #include "chrome/browser/ui/ash/launcher/app_shortcut_launcher_item_controller.h"
 #include "chrome/browser/ui/ash/launcher/app_window_launcher_controller.h"
@@ -538,11 +539,14 @@
   // Restore the order of running, but unpinned applications for the activated
   // user.
   RestoreUnpinnedRunningApplicationOrder(user_email);
-  // Inform the system tray of the change.
-  ash::Shell::Get()->system_tray_delegate()->ActiveUserWasChanged();
-  // Force on-screen keyboard to reset.
-  if (keyboard::IsKeyboardEnabled())
-    ash::Shell::Get()->CreateKeyboard();
+  // TODO(crbug.com/557406): Fix this interaction pattern in Mash.
+  if (!ash_util::IsRunningInMash()) {
+    // Inform the system tray of the change.
+    ash::Shell::Get()->system_tray_delegate()->ActiveUserWasChanged();
+    // Force on-screen keyboard to reset.
+    if (keyboard::IsKeyboardEnabled())
+      ash::Shell::Get()->CreateKeyboard();
+  }
 }
 
 void ChromeLauncherControllerImpl::AdditionalUserAddedToSession(
@@ -1058,11 +1062,14 @@
         enable ? keyboard::KEYBOARD_SHOW_OVERRIDE_ENABLED
                : keyboard::KEYBOARD_SHOW_OVERRIDE_DISABLED);
   }
-  const bool is_enabled = keyboard::IsKeyboardEnabled();
-  if (was_enabled && !is_enabled)
-    ash::Shell::Get()->DeactivateKeyboard();
-  else if (is_enabled && !was_enabled)
-    ash::Shell::Get()->CreateKeyboard();
+  // TODO(crbug.com/557406): Fix this interaction pattern in Mash.
+  if (!ash_util::IsRunningInMash()) {
+    const bool is_enabled = keyboard::IsKeyboardEnabled();
+    if (was_enabled && !is_enabled)
+      ash::Shell::Get()->DeactivateKeyboard();
+    else if (is_enabled && !was_enabled)
+      ash::Shell::Get()->CreateKeyboard();
+  }
 }
 
 ash::ShelfItemStatus ChromeLauncherControllerImpl::GetAppState(
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h
index aa870347..c994378f 100644
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h
@@ -104,6 +104,8 @@
   const std::string& GetLaunchIDForShelfID(ash::ShelfID id) override;
   void AttachProfile(Profile* profile_to_attach) override;
 
+  ash::ShelfModel* shelf_model() const { return model_; }
+
   // Access to the BrowserStatusMonitor for tests.
   BrowserStatusMonitor* browser_status_monitor_for_test() {
     return browser_status_monitor_.get();
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_mus.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_mus.cc
deleted file mode 100644
index b213808..0000000
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_mus.cc
+++ /dev/null
@@ -1,231 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_mus.h"
-
-#include "ash/public/cpp/app_launch_id.h"
-#include "base/strings/string_util.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/ui/ash/chrome_launcher_prefs.h"
-#include "chrome/browser/ui/ash/launcher/launcher_controller_helper.h"
-#include "extensions/grit/extensions_browser_resources.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/events/event_constants.h"
-
-ChromeLauncherControllerMus::ChromeLauncherControllerMus() {
-  AttachProfile(ProfileManager::GetActiveUserProfile());
-}
-
-ChromeLauncherControllerMus::~ChromeLauncherControllerMus() {}
-
-ash::ShelfID ChromeLauncherControllerMus::CreateAppLauncherItem(
-    std::unique_ptr<ash::ShelfItemDelegate> item_delegate,
-    ash::ShelfItemStatus status) {
-  NOTIMPLEMENTED();
-  return ash::TYPE_UNDEFINED;
-}
-
-const ash::ShelfItem* ChromeLauncherControllerMus::GetItem(
-    ash::ShelfID id) const {
-  NOTIMPLEMENTED();
-  return nullptr;
-}
-
-void ChromeLauncherControllerMus::SetItemType(ash::ShelfID id,
-                                              ash::ShelfItemType type) {
-  NOTIMPLEMENTED();
-}
-
-void ChromeLauncherControllerMus::SetItemStatus(ash::ShelfID id,
-                                                ash::ShelfItemStatus status) {
-  NOTIMPLEMENTED();
-}
-
-void ChromeLauncherControllerMus::CloseLauncherItem(ash::ShelfID id) {
-  NOTIMPLEMENTED();
-}
-
-bool ChromeLauncherControllerMus::IsPinned(ash::ShelfID id) {
-  NOTIMPLEMENTED();
-  return false;
-}
-
-void ChromeLauncherControllerMus::SetV1AppStatus(const std::string& app_id,
-                                                 ash::ShelfItemStatus status) {
-  NOTIMPLEMENTED();
-}
-
-void ChromeLauncherControllerMus::Launch(ash::ShelfID id, int event_flags) {
-  NOTIMPLEMENTED();
-}
-
-void ChromeLauncherControllerMus::Close(ash::ShelfID id) {
-  NOTIMPLEMENTED();
-}
-
-bool ChromeLauncherControllerMus::IsOpen(ash::ShelfID id) {
-  NOTIMPLEMENTED();
-  return false;
-}
-
-bool ChromeLauncherControllerMus::IsPlatformApp(ash::ShelfID id) {
-  NOTIMPLEMENTED();
-  return false;
-}
-
-void ChromeLauncherControllerMus::ActivateApp(const std::string& app_id,
-                                              ash::ShelfLaunchSource source,
-                                              int event_flags) {
-  NOTIMPLEMENTED();
-}
-
-void ChromeLauncherControllerMus::SetLauncherItemImage(
-    ash::ShelfID shelf_id,
-    const gfx::ImageSkia& image) {
-  NOTIMPLEMENTED();
-}
-
-void ChromeLauncherControllerMus::UpdateAppState(content::WebContents* contents,
-                                                 AppState app_state) {
-  NOTIMPLEMENTED();
-}
-
-ash::ShelfID ChromeLauncherControllerMus::GetShelfIDForWebContents(
-    content::WebContents* contents) {
-  NOTIMPLEMENTED();
-  return ash::TYPE_UNDEFINED;
-}
-
-void ChromeLauncherControllerMus::SetRefocusURLPatternForTest(ash::ShelfID id,
-                                                              const GURL& url) {
-  NOTIMPLEMENTED();
-}
-
-ash::ShelfAction ChromeLauncherControllerMus::ActivateWindowOrMinimizeIfActive(
-    ui::BaseWindow* window,
-    bool allow_minimize) {
-  NOTIMPLEMENTED();
-  return ash::SHELF_ACTION_NONE;
-}
-
-void ChromeLauncherControllerMus::ActiveUserChanged(
-    const std::string& user_email) {
-  NOTIMPLEMENTED();
-}
-
-void ChromeLauncherControllerMus::AdditionalUserAddedToSession(
-    Profile* profile) {
-  NOTIMPLEMENTED();
-}
-
-ash::MenuItemList ChromeLauncherControllerMus::GetAppMenuItemsForTesting(
-    const ash::ShelfItem& item) {
-  NOTIMPLEMENTED();
-  return ash::MenuItemList();
-}
-
-std::vector<content::WebContents*>
-ChromeLauncherControllerMus::GetV1ApplicationsFromAppId(
-    const std::string& app_id) {
-  NOTIMPLEMENTED();
-  return std::vector<content::WebContents*>();
-}
-
-void ChromeLauncherControllerMus::ActivateShellApp(const std::string& app_id,
-                                                   int window_index) {
-  NOTIMPLEMENTED();
-}
-
-bool ChromeLauncherControllerMus::IsWebContentHandledByApplication(
-    content::WebContents* web_contents,
-    const std::string& app_id) {
-  NOTIMPLEMENTED();
-  return false;
-}
-
-bool ChromeLauncherControllerMus::ContentCanBeHandledByGmailApp(
-    content::WebContents* web_contents) {
-  NOTIMPLEMENTED();
-  return false;
-}
-
-gfx::Image ChromeLauncherControllerMus::GetAppListIcon(
-    content::WebContents* web_contents) const {
-  NOTIMPLEMENTED();
-  return gfx::Image();
-}
-
-base::string16 ChromeLauncherControllerMus::GetAppListTitle(
-    content::WebContents* web_contents) const {
-  NOTIMPLEMENTED();
-  return base::string16();
-}
-
-BrowserShortcutLauncherItemController*
-ChromeLauncherControllerMus::GetBrowserShortcutLauncherItemController() {
-  NOTIMPLEMENTED();
-  return nullptr;
-}
-
-bool ChromeLauncherControllerMus::ShelfBoundsChangesProbablyWithUser(
-    ash::WmShelf* shelf,
-    const AccountId& account_id) const {
-  NOTIMPLEMENTED();
-  return false;
-}
-
-void ChromeLauncherControllerMus::OnUserProfileReadyToSwitch(Profile* profile) {
-  NOTIMPLEMENTED();
-}
-
-ArcAppDeferredLauncherController*
-ChromeLauncherControllerMus::GetArcDeferredLauncher() {
-  NOTIMPLEMENTED();
-  return nullptr;
-}
-
-const std::string& ChromeLauncherControllerMus::GetLaunchIDForShelfID(
-    ash::ShelfID id) {
-  NOTIMPLEMENTED();
-  return base::EmptyString();
-}
-
-void ChromeLauncherControllerMus::OnAppImageUpdated(
-    const std::string& app_id,
-    const gfx::ImageSkia& image) {
-  if (ConnectToShelfController())
-    shelf_controller()->SetItemImage(app_id, *image.bitmap());
-}
-
-void ChromeLauncherControllerMus::OnInit() {}
-
-void ChromeLauncherControllerMus::PinAppsFromPrefs() {
-  if (!ConnectToShelfController())
-    return;
-
-  std::vector<ash::AppLaunchId> pinned_apps =
-      ash::launcher::GetPinnedAppsFromPrefs(profile()->GetPrefs(),
-                                            launcher_controller_helper());
-
-  for (const auto& app_launch_id : pinned_apps) {
-    const std::string app_id = app_launch_id.app_id();
-    if (app_launch_id.app_id() == ash::launcher::kPinnedAppsPlaceholder)
-      continue;
-
-    ash::mojom::ShelfItemPtr item(ash::mojom::ShelfItem::New());
-    item->app_id = app_id;
-    item->title = launcher_controller_helper()->GetAppTitle(profile(), app_id);
-    ResourceBundle& rb = ResourceBundle::GetSharedInstance();
-    const gfx::Image& image = rb.GetImageNamed(IDR_APP_DEFAULT_ICON);
-    item->image = *image.ToSkBitmap();
-    // TOOD(msw): Actually pin the item and install its delegate; this code is
-    // unused at the moment. See http://crbug.com/647879
-    AppIconLoader* app_icon_loader = GetAppIconLoaderForApp(app_id);
-    if (app_icon_loader) {
-      app_icon_loader->FetchImage(app_id);
-      app_icon_loader->UpdateImage(app_id);
-    }
-  }
-}
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_mus.h b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_mus.h
deleted file mode 100644
index 51babed9..0000000
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_mus.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_ASH_LAUNCHER_CHROME_LAUNCHER_CONTROLLER_MUS_H_
-#define CHROME_BROWSER_UI_ASH_LAUNCHER_CHROME_LAUNCHER_CONTROLLER_MUS_H_
-
-#include <string>
-
-#include "base/macros.h"
-#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
-
-class ChromeLauncherControllerMus : public ChromeLauncherController {
- public:
-  ChromeLauncherControllerMus();
-  ~ChromeLauncherControllerMus() override;
-
-  // ChromeLauncherController:
-  ash::ShelfID CreateAppLauncherItem(
-      std::unique_ptr<ash::ShelfItemDelegate> item_delegate,
-      ash::ShelfItemStatus status) override;
-  const ash::ShelfItem* GetItem(ash::ShelfID id) const override;
-  void SetItemType(ash::ShelfID id, ash::ShelfItemType type) override;
-  void SetItemStatus(ash::ShelfID id, ash::ShelfItemStatus status) override;
-  void CloseLauncherItem(ash::ShelfID id) override;
-  bool IsPinned(ash::ShelfID id) override;
-  void SetV1AppStatus(const std::string& app_id,
-                      ash::ShelfItemStatus status) override;
-  void Launch(ash::ShelfID id, int event_flags) override;
-  void Close(ash::ShelfID id) override;
-  bool IsOpen(ash::ShelfID id) override;
-  bool IsPlatformApp(ash::ShelfID id) override;
-  void ActivateApp(const std::string& app_id,
-                   ash::ShelfLaunchSource source,
-                   int event_flags) override;
-  void SetLauncherItemImage(ash::ShelfID shelf_id,
-                            const gfx::ImageSkia& image) override;
-  void UpdateAppState(content::WebContents* contents,
-                      AppState app_state) override;
-  ash::ShelfID GetShelfIDForWebContents(
-      content::WebContents* contents) override;
-  void SetRefocusURLPatternForTest(ash::ShelfID id, const GURL& url) override;
-  ash::ShelfAction ActivateWindowOrMinimizeIfActive(
-      ui::BaseWindow* window,
-      bool allow_minimize) override;
-  void ActiveUserChanged(const std::string& user_email) override;
-  void AdditionalUserAddedToSession(Profile* profile) override;
-  ash::MenuItemList GetAppMenuItemsForTesting(
-      const ash::ShelfItem& item) override;
-  std::vector<content::WebContents*> GetV1ApplicationsFromAppId(
-      const std::string& app_id) override;
-  void ActivateShellApp(const std::string& app_id, int window_index) override;
-  bool IsWebContentHandledByApplication(content::WebContents* web_contents,
-                                        const std::string& app_id) override;
-  bool ContentCanBeHandledByGmailApp(
-      content::WebContents* web_contents) override;
-  gfx::Image GetAppListIcon(content::WebContents* web_contents) const override;
-  base::string16 GetAppListTitle(
-      content::WebContents* web_contents) const override;
-  BrowserShortcutLauncherItemController*
-  GetBrowserShortcutLauncherItemController() override;
-  bool ShelfBoundsChangesProbablyWithUser(
-      ash::WmShelf* shelf,
-      const AccountId& account_id) const override;
-  void OnUserProfileReadyToSwitch(Profile* profile) override;
-  ArcAppDeferredLauncherController* GetArcDeferredLauncher() override;
-  const std::string& GetLaunchIDForShelfID(ash::ShelfID id) override;
-
-  // AppIconLoaderDelegate:
-  void OnAppImageUpdated(const std::string& app_id,
-                         const gfx::ImageSkia& image) override;
-
- protected:
-  // ChromeLauncherController:
-  void OnInit() override;
-
- private:
-  // Pin the items set in the current profile's preferences.
-  void PinAppsFromPrefs();
-
-  DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerMus);
-};
-
-#endif  // CHROME_BROWSER_UI_ASH_LAUNCHER_CHROME_LAUNCHER_CONTROLLER_MUS_H_
diff --git a/chrome/browser/ui/ash/launcher/extension_app_window_launcher_controller.cc b/chrome/browser/ui/ash/launcher/extension_app_window_launcher_controller.cc
index efca8c0..7e5db0b 100644
--- a/chrome/browser/ui/ash/launcher/extension_app_window_launcher_controller.cc
+++ b/chrome/browser/ui/ash/launcher/extension_app_window_launcher_controller.cc
@@ -5,14 +5,13 @@
 #include "chrome/browser/ui/ash/launcher/extension_app_window_launcher_controller.h"
 
 #include "ash/shelf/shelf_model.h"
-#include "ash/shell.h"
 #include "ash/wm/window_properties.h"
 #include "ash/wm/window_util.h"
 #include "ash/wm_window.h"
 #include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
+#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h"
 #include "chrome/browser/ui/ash/launcher/extension_app_window_launcher_item_controller.h"
 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h"
 #include "extensions/browser/app_window/app_window.h"
@@ -51,7 +50,7 @@
 }  // namespace
 
 ExtensionAppWindowLauncherController::ExtensionAppWindowLauncherController(
-    ChromeLauncherController* owner)
+    ChromeLauncherControllerImpl* owner)
     : AppWindowLauncherController(owner) {
   AppWindowRegistry* registry = AppWindowRegistry::Get(owner->profile());
   registry_.insert(registry);
@@ -168,8 +167,7 @@
     controller->AddAppWindow(app_window);
     // If there is already a shelf id mapped to this AppLaunchId (e.g. pinned),
     // use that shelf item.
-    shelf_id = ash::Shell::Get()->shelf_model()->GetShelfIDForAppIDAndLaunchID(
-        app_id, launch_id);
+    shelf_id = owner()->GetShelfIDForAppIDAndLaunchID(app_id, launch_id);
 
     if (shelf_id == 0) {
       shelf_id = owner()->CreateAppLauncherItem(std::move(controller), status);
@@ -180,8 +178,8 @@
         item_controller->set_image_set_by_controller(true);
       }
     } else {
-      ash::ShelfModel* shelf_model = ash::Shell::Get()->shelf_model();
-      shelf_model->SetShelfItemDelegate(shelf_id, std::move(controller));
+      owner()->shelf_model()->SetShelfItemDelegate(shelf_id,
+                                                   std::move(controller));
     }
 
     // We need to change the controller associated with app_shelf_id.
diff --git a/chrome/browser/ui/ash/launcher/extension_app_window_launcher_controller.h b/chrome/browser/ui/ash/launcher/extension_app_window_launcher_controller.h
index 920c13a0..d463ea09 100644
--- a/chrome/browser/ui/ash/launcher/extension_app_window_launcher_controller.h
+++ b/chrome/browser/ui/ash/launcher/extension_app_window_launcher_controller.h
@@ -22,20 +22,20 @@
 class AppWindow;
 }
 
-class ChromeLauncherController;
+class ChromeLauncherControllerImpl;
 class Profile;
 class ExtensionAppWindowLauncherItemController;
 
 // AppWindowLauncherController observes the app window registry and the
 // aura window manager. It handles adding and removing launcher items from
-// ChromeLauncherController.
+// ChromeLauncherControllerImpl.
 class ExtensionAppWindowLauncherController
     : public AppWindowLauncherController,
       public extensions::AppWindowRegistry::Observer,
       public aura::WindowObserver {
  public:
   explicit ExtensionAppWindowLauncherController(
-      ChromeLauncherController* owner);
+      ChromeLauncherControllerImpl* owner);
   ~ExtensionAppWindowLauncherController() override;
 
   // AppWindowLauncherController:
diff --git a/chrome/browser/ui/ash/launcher/extension_launcher_context_menu.cc b/chrome/browser/ui/ash/launcher/extension_launcher_context_menu.cc
index 86c82de1..0214be50 100644
--- a/chrome/browser/ui/ash/launcher/extension_launcher_context_menu.cc
+++ b/chrome/browser/ui/ash/launcher/extension_launcher_context_menu.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/ui/ash/launcher/extension_launcher_context_menu.h"
 
-#include "ash/shell.h"
 #include "base/bind.h"
 #include "chrome/browser/extensions/context_menu_matcher.h"
 #include "chrome/browser/extensions/extension_util.h"
@@ -83,7 +82,7 @@
       AddItemWithStringId(MENU_NEW_INCOGNITO_WINDOW,
                           IDS_APP_LIST_NEW_INCOGNITO_WINDOW);
     }
-    if (!BrowserShortcutLauncherItemController(ash::Shell::Get()->shelf_model())
+    if (!BrowserShortcutLauncherItemController(controller()->shelf_model())
              .IsListOfActiveBrowserEmpty()) {
       AddItem(MENU_CLOSE,
               l10n_util::GetStringUTF16(IDS_LAUNCHER_CONTEXT_MENU_CLOSE));
diff --git a/chrome/browser/ui/ash/launcher/launcher_context_menu.cc b/chrome/browser/ui/ash/launcher/launcher_context_menu.cc
index 337b3c8..56633d0 100644
--- a/chrome/browser/ui/ash/launcher/launcher_context_menu.cc
+++ b/chrome/browser/ui/ash/launcher/launcher_context_menu.cc
@@ -116,7 +116,7 @@
     case MENU_CLOSE:
       if (item_.type == ash::TYPE_DIALOG) {
         ash::ShelfItemDelegate* item_delegate =
-            ash::Shell::Get()->shelf_model()->GetShelfItemDelegate(item_.id);
+            controller_->shelf_model()->GetShelfItemDelegate(item_.id);
         DCHECK(item_delegate);
         item_delegate->Close();
       } else {
diff --git a/chrome/browser/ui/ash/launcher/multi_profile_app_window_launcher_controller.cc b/chrome/browser/ui/ash/launcher/multi_profile_app_window_launcher_controller.cc
index f57876e..2eefa3fb 100644
--- a/chrome/browser/ui/ash/launcher/multi_profile_app_window_launcher_controller.cc
+++ b/chrome/browser/ui/ash/launcher/multi_profile_app_window_launcher_controller.cc
@@ -6,7 +6,7 @@
 
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
+#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h"
 #include "chrome/browser/ui/ash/multi_user/multi_user_util.h"
 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h"
 #include "components/signin/core/account_id/account_id.h"
@@ -15,7 +15,7 @@
 #include "ui/aura/window.h"
 
 MultiProfileAppWindowLauncherController::
-    MultiProfileAppWindowLauncherController(ChromeLauncherController* owner)
+    MultiProfileAppWindowLauncherController(ChromeLauncherControllerImpl* owner)
     : ExtensionAppWindowLauncherController(owner) {
   // We might have already active windows.
   extensions::AppWindowRegistry* registry =
diff --git a/chrome/browser/ui/ash/launcher/multi_profile_app_window_launcher_controller.h b/chrome/browser/ui/ash/launcher/multi_profile_app_window_launcher_controller.h
index e910158d..3638aa68 100644
--- a/chrome/browser/ui/ash/launcher/multi_profile_app_window_launcher_controller.h
+++ b/chrome/browser/ui/ash/launcher/multi_profile_app_window_launcher_controller.h
@@ -14,7 +14,7 @@
     : public ExtensionAppWindowLauncherController {
  public:
   explicit MultiProfileAppWindowLauncherController(
-      ChromeLauncherController* owner);
+      ChromeLauncherControllerImpl* owner);
   ~MultiProfileAppWindowLauncherController() override;
 
   // Overridden from AppWindowLauncherController:
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_window_manager.cc b/chrome/browser/ui/ash/multi_user/multi_user_window_manager.cc
index 9fcf0e8a9..cfc9964 100644
--- a/chrome/browser/ui/ash/multi_user/multi_user_window_manager.cc
+++ b/chrome/browser/ui/ash/multi_user/multi_user_window_manager.cc
@@ -9,6 +9,7 @@
 #include "ash/shell_delegate.h"
 #include "base/logging.h"
 #include "build/build_config.h"
+#include "chrome/browser/ui/ash/ash_util.h"
 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h"
 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_stub.h"
 #include "components/signin/core/account_id/account_id.h"
@@ -37,7 +38,9 @@
   multi_user_mode_ = MULTI_PROFILE_MODE_OFF;
   ash::MultiProfileUMA::SessionMode mode =
       ash::MultiProfileUMA::SESSION_SINGLE_USER_MODE;
-  if (ash::Shell::Get()->shell_delegate()->IsMultiProfilesEnabled()) {
+  // TODO(crbug.com/557406): Enable this component in Mash.
+  if (!ash_util::IsRunningInMash() &&
+      ash::Shell::Get()->shell_delegate()->IsMultiProfilesEnabled()) {
     if (!g_instance) {
       MultiUserWindowManagerChromeOS* manager =
           new MultiUserWindowManagerChromeOS(user_manager::UserManager::Get()
diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_commands.cc
index b144197..b8c0b13 100644
--- a/chrome/browser/ui/browser_commands.cc
+++ b/chrome/browser/ui/browser_commands.cc
@@ -13,8 +13,7 @@
 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
+
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/devtools/devtools_window.h"
@@ -73,6 +72,7 @@
 #include "components/web_modal/web_contents_modal_dialog_manager.h"
 #include "components/zoom/page_zoom.h"
 #include "components/zoom/zoom_controller.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/devtools_agent_host.h"
 #include "content/public/browser/navigation_controller.h"
 #include "content/public/browser/navigation_entry.h"
@@ -1188,11 +1188,11 @@
 }
 
 void ClearCache(Browser* browser) {
-  BrowsingDataRemover* remover =
-      BrowsingDataRemoverFactory::GetForBrowserContext(browser->profile());
+  content::BrowsingDataRemover* remover =
+      content::BrowserContext::GetBrowsingDataRemover(browser->profile());
   remover->Remove(base::Time(), base::Time::Max(),
-                  BrowsingDataRemover::DATA_TYPE_CACHE,
-                  BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB);
+                  content::BrowsingDataRemover::DATA_TYPE_CACHE,
+                  content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB);
   // BrowsingDataRemover takes care of deleting itself when done.
 }
 
diff --git a/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.cc b/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.cc
index e9c4df7..f04f0dd 100644
--- a/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.cc
+++ b/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.cc
@@ -9,6 +9,7 @@
 #include "ash/public/cpp/window_properties.h"
 #include "ash/public/interfaces/window_pin_type.mojom.h"
 #include "ash/root_window_controller.h"
+#include "ash/shelf/shelf_model.h"
 #include "ash/shell.h"
 #include "base/memory/ptr_util.h"
 #include "chrome/browser/chrome_browser_main.h"
@@ -17,7 +18,7 @@
 #include "chrome/browser/ui/ash/cast_config_client_media_router.h"
 #include "chrome/browser/ui/ash/chrome_new_window_client.h"
 #include "chrome/browser/ui/ash/chrome_shell_content_state.h"
-#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_mus.h"
+#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h"
 #include "chrome/browser/ui/ash/media_client.h"
 #include "chrome/browser/ui/ash/session_controller_client.h"
 #include "chrome/browser/ui/ash/system_tray_client.h"
@@ -95,9 +96,12 @@
   if (ash_util::IsRunningInMash()) {
     DCHECK(!ash::Shell::HasInstance());
     DCHECK(!ChromeLauncherController::instance());
-    chrome_launcher_controller_mus_ =
-        base::MakeUnique<ChromeLauncherControllerMus>();
-    chrome_launcher_controller_mus_->Init();
+    // TODO(crbug.com/557406): Synchronize this ShelfModel with the one in Ash.
+    chrome_shelf_model_ = base::MakeUnique<ash::ShelfModel>();
+    chrome_launcher_controller_ =
+        base::MakeUnique<ChromeLauncherControllerImpl>(
+            nullptr, chrome_shelf_model_.get());
+    chrome_launcher_controller_->Init();
     chrome_shell_content_state_ = base::MakeUnique<ChromeShellContentState>();
   }
 
@@ -117,6 +121,8 @@
 }
 
 void ChromeBrowserMainExtraPartsAsh::PostMainMessageLoopRun() {
+  chrome_launcher_controller_.reset();
+  chrome_shelf_model_.reset();
   vpn_list_forwarder_.reset();
   volume_controller_.reset();
   new_window_client_.reset();
diff --git a/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.h b/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.h
index 5052b65..552c0b0 100644
--- a/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.h
+++ b/chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.h
@@ -10,9 +10,13 @@
 #include "base/macros.h"
 #include "chrome/browser/chrome_browser_main_extra_parts.h"
 
+namespace ash {
+class ShelfModel;
+}
+
 class AshInit;
 class CastConfigClientMediaRouter;
-class ChromeLauncherControllerMus;
+class ChromeLauncherControllerImpl;
 class ChromeNewWindowClient;
 class ChromeShellContentState;
 class ImmersiveContextMus;
@@ -38,7 +42,6 @@
   void PostMainMessageLoopRun() override;
 
  private:
-  std::unique_ptr<ChromeLauncherControllerMus> chrome_launcher_controller_mus_;
   std::unique_ptr<ChromeShellContentState> chrome_shell_content_state_;
   std::unique_ptr<CastConfigClientMediaRouter> cast_config_client_media_router_;
   std::unique_ptr<MediaClient> media_client_;
@@ -51,6 +54,11 @@
   std::unique_ptr<VpnListForwarder> vpn_list_forwarder_;
   std::unique_ptr<AshInit> ash_init_;
 
+  // These are only used in Mash; corresponding instances are owned by Ash's
+  // ShelfController and ChromeShellDelegate in classic Ash.
+  std::unique_ptr<ash::ShelfModel> chrome_shelf_model_;
+  std::unique_ptr<ChromeLauncherControllerImpl> chrome_launcher_controller_;
+
   DISALLOW_COPY_AND_ASSIGN(ChromeBrowserMainExtraPartsAsh);
 };
 
diff --git a/chrome/browser/ui/views/confirm_bubble_views.cc b/chrome/browser/ui/views/confirm_bubble_views.cc
index 0f86435..161a1f8 100644
--- a/chrome/browser/ui/views/confirm_bubble_views.cc
+++ b/chrome/browser/ui/views/confirm_bubble_views.cc
@@ -14,7 +14,6 @@
 #include "ui/views/controls/label.h"
 #include "ui/views/controls/link.h"
 #include "ui/views/layout/grid_layout.h"
-#include "ui/views/layout/layout_constants.h"
 #include "ui/views/widget/widget.h"
 
 ConfirmBubbleViews::ConfirmBubbleViews(
diff --git a/chrome/browser/ui/views/content_setting_bubble_contents.cc b/chrome/browser/ui/views/content_setting_bubble_contents.cc
index 88e65c8..980ad5f 100644
--- a/chrome/browser/ui/views/content_setting_bubble_contents.cc
+++ b/chrome/browser/ui/views/content_setting_bubble_contents.cc
@@ -44,7 +44,6 @@
 #include "ui/views/controls/menu/menu_runner.h"
 #include "ui/views/controls/separator.h"
 #include "ui/views/layout/grid_layout.h"
-#include "ui/views/layout/layout_constants.h"
 #include "ui/views/native_cursor.h"
 #include "ui/views/window/dialog_client_view.h"
 
diff --git a/chrome/browser/ui/views/create_application_shortcut_view.cc b/chrome/browser/ui/views/create_application_shortcut_view.cc
index f50d347..fd2698cf 100644
--- a/chrome/browser/ui/views/create_application_shortcut_view.cc
+++ b/chrome/browser/ui/views/create_application_shortcut_view.cc
@@ -8,6 +8,7 @@
 #include "base/bind_helpers.h"
 #include "build/build_config.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/views/harmony/chrome_layout_provider.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/constrained_window/constrained_window_views.h"
@@ -98,6 +99,8 @@
       profile_->GetPrefs()->GetBoolean(prefs::kWebAppCreateInAppsMenu));
 #endif
 
+  ChromeLayoutProvider* provider = ChromeLayoutProvider::Get();
+
   // Layout controls
   views::GridLayout* layout = views::GridLayout::CreatePanel(this);
 
@@ -108,7 +111,8 @@
 
   static const int kTableColumnSetId = 1;
   column_set = layout->AddColumnSet(kTableColumnSetId);
-  column_set->AddPaddingColumn(0, views::kCheckboxIndent);
+  column_set->AddPaddingColumn(
+      0, provider->GetDistanceMetric(DISTANCE_SUBSECTION_HORIZONTAL_INDENT));
   column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL,
                         100.0f, views::GridLayout::USE_PREF, 0, 0);
 
@@ -119,14 +123,16 @@
   layout->StartRow(0, kTableColumnSetId);
   layout->AddView(desktop_check_box_);
 
+  const int vertical_spacing =
+      provider->GetDistanceMetric(DISTANCE_RELATED_CONTROL_VERTICAL_SMALL);
   if (menu_check_box_ != nullptr) {
-    layout->AddPaddingRow(0, views::kRelatedControlSmallVerticalSpacing);
+    layout->AddPaddingRow(0, vertical_spacing);
     layout->StartRow(0, kTableColumnSetId);
     layout->AddView(menu_check_box_);
   }
 
   if (quick_launch_check_box_ != nullptr) {
-    layout->AddPaddingRow(0, views::kRelatedControlSmallVerticalSpacing);
+    layout->AddPaddingRow(0, vertical_spacing);
     layout->StartRow(0, kTableColumnSetId);
     layout->AddView(quick_launch_check_box_);
   }
diff --git a/chrome/browser/ui/views/crypto_module_password_dialog_view.cc b/chrome/browser/ui/views/crypto_module_password_dialog_view.cc
index aaf7ce3..736c541 100644
--- a/chrome/browser/ui/views/crypto_module_password_dialog_view.cc
+++ b/chrome/browser/ui/views/crypto_module_password_dialog_view.cc
@@ -6,6 +6,7 @@
 
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/ui/browser_dialogs.h"
+#include "chrome/browser/ui/views/harmony/chrome_layout_provider.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/strings/grit/components_strings.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -13,7 +14,6 @@
 #include "ui/views/controls/label.h"
 #include "ui/views/controls/textfield/textfield.h"
 #include "ui/views/layout/grid_layout.h"
-#include "ui/views/layout/layout_constants.h"
 #include "ui/views/widget/widget.h"
 
 namespace chrome {
@@ -123,6 +123,8 @@
   password_entry_->SetTextInputType(ui::TEXT_INPUT_TYPE_PASSWORD);
   password_entry_->set_controller(this);
 
+  ChromeLayoutProvider* provider = ChromeLayoutProvider::Get();
+
   views::GridLayout* layout = views::GridLayout::CreatePanel(this);
 
   views::ColumnSet* reason_column_set = layout->AddColumnSet(0);
@@ -135,13 +137,15 @@
                         views::GridLayout::LEADING, 0,
                         views::GridLayout::USE_PREF, 0, 0);
   column_set->AddPaddingColumn(
-      0, views::kUnrelatedControlLargeHorizontalSpacing);
+      0,
+      provider->GetDistanceMetric(DISTANCE_UNRELATED_CONTROL_HORIZONTAL_LARGE));
   column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1,
                         views::GridLayout::USE_PREF, 0, 0);
 
   layout->StartRow(0, 0);
   layout->AddView(reason_label_);
-  layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
+  layout->AddPaddingRow(
+      0, provider->GetDistanceMetric(DISTANCE_UNRELATED_CONTROL_VERTICAL));
 
   layout->StartRow(0, 1);
   layout->AddView(password_label_);
diff --git a/chrome/browser/ui/views/crypto_module_password_dialog_view_unittest.cc b/chrome/browser/ui/views/crypto_module_password_dialog_view_unittest.cc
index beae053..357ea4a 100644
--- a/chrome/browser/ui/views/crypto_module_password_dialog_view_unittest.cc
+++ b/chrome/browser/ui/views/crypto_module_password_dialog_view_unittest.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/ui/crypto_module_password_dialog.h"
+#include "chrome/browser/ui/views/harmony/chrome_layout_provider.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/views/controls/textfield/textfield.h"
 #include "ui/views/test/views_test_base.h"
@@ -20,6 +21,14 @@
   CryptoModulePasswordDialogViewTest() {}
   ~CryptoModulePasswordDialogViewTest() override {}
 
+  // Overrides from views::ViewsTestBase:
+  void SetUp() override {
+    ViewsTestBase::SetUp();
+    // Set the ChromeLayoutProvider as the default layout provider.
+    test_views_delegate()->set_layout_provider(
+        ChromeLayoutProvider::CreateLayoutProvider());
+  }
+
   void Capture(const std::string& text) {
     text_ = text;
   }
diff --git a/chrome/browser/ui/views/first_run_bubble.cc b/chrome/browser/ui/views/first_run_bubble.cc
index 4b047648..684c9dc1 100644
--- a/chrome/browser/ui/views/first_run_bubble.cc
+++ b/chrome/browser/ui/views/first_run_bubble.cc
@@ -10,6 +10,7 @@
 #include "chrome/browser/ui/browser_dialogs.h"
 #include "chrome/browser/ui/chrome_pages.h"
 #include "chrome/browser/ui/layout_constants.h"
+#include "chrome/browser/ui/views/harmony/chrome_layout_provider.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/search_engines/util.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -18,7 +19,6 @@
 #include "ui/views/controls/link.h"
 #include "ui/views/event_monitor.h"
 #include "ui/views/layout/grid_layout.h"
-#include "ui/views/layout/layout_constants.h"
 #include "ui/views/widget/widget.h"
 
 namespace {
@@ -65,10 +65,13 @@
   views::GridLayout* layout = views::GridLayout::CreatePanel(this);
   layout->SetInsets(kTopInset, kLeftInset, kBottomInset, kRightInset);
 
+  ChromeLayoutProvider* provider = ChromeLayoutProvider::Get();
+
   views::ColumnSet* columns = layout->AddColumnSet(0);
   columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::LEADING, 0,
                      views::GridLayout::USE_PREF, 0, 0);
-  columns->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing);
+  columns->AddPaddingColumn(0, provider->GetDistanceMetric(
+                                   views::DISTANCE_RELATED_CONTROL_HORIZONTAL));
   columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::LEADING, 0,
                      views::GridLayout::USE_PREF, 0, 0);
   columns->AddPaddingColumn(1, 0);
@@ -76,8 +79,9 @@
   layout->StartRow(0, 0);
   layout->AddView(title);
   layout->AddView(change);
-  layout->StartRowWithPadding(0, 0, 0,
-      views::kRelatedControlSmallVerticalSpacing);
+  layout->StartRowWithPadding(
+      0, 0, 0,
+      provider->GetDistanceMetric(DISTANCE_RELATED_CONTROL_VERTICAL_SMALL));
   layout->AddView(subtext, columns->num_columns(), 1);
 }
 
diff --git a/chrome/browser/ui/views/first_run_bubble_unittest.cc b/chrome/browser/ui/views/first_run_bubble_unittest.cc
index 26d0570..c3b0add 100644
--- a/chrome/browser/ui/views/first_run_bubble_unittest.cc
+++ b/chrome/browser/ui/views/first_run_bubble_unittest.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/ui/views/first_run_bubble.h"
 #include "base/macros.h"
 #include "chrome/browser/search_engines/template_url_service_factory.h"
+#include "chrome/browser/ui/views/harmony/chrome_layout_provider.h"
 #include "chrome/test/base/testing_profile.h"
 #include "components/search_engines/template_url.h"
 #include "components/search_engines/template_url_service.h"
@@ -82,6 +83,9 @@
 
 void FirstRunBubbleTest::SetUp() {
   ViewsTestBase::SetUp();
+  // Set the ChromeLayoutProvider as the default layout provider.
+  test_views_delegate()->set_layout_provider(
+      ChromeLayoutProvider::CreateLayoutProvider());
   TemplateURLServiceFactory::GetInstance()->SetTestingFactoryAndUse(
       profile(), &TemplateURLServiceFactory::BuildInstanceFor);
   TemplateURLService* turl_model =
diff --git a/chrome/browser/ui/views/first_run_dialog.cc b/chrome/browser/ui/views/first_run_dialog.cc
index 75cb969..62db3dc 100644
--- a/chrome/browser/ui/views/first_run_dialog.cc
+++ b/chrome/browser/ui/views/first_run_dialog.cc
@@ -13,6 +13,7 @@
 #include "chrome/browser/metrics/metrics_reporting_state.h"
 #include "chrome/browser/platform_util.h"
 #include "chrome/browser/shell_integration.h"
+#include "chrome/browser/ui/views/harmony/chrome_layout_provider.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/grit/chromium_strings.h"
 #include "chrome/grit/generated_resources.h"
@@ -25,7 +26,6 @@
 #include "ui/views/controls/button/checkbox.h"
 #include "ui/views/controls/link.h"
 #include "ui/views/layout/grid_layout.h"
-#include "ui/views/layout/layout_constants.h"
 #include "ui/views/widget/widget.h"
 #include "ui/views/window/dialog_delegate.h"
 
@@ -82,8 +82,6 @@
       report_crashes_(NULL) {
   GridLayout* layout = GridLayout::CreatePanel(this);
 
-  const int related_y = views::kRelatedControlVerticalSpacing;
-
   views::ColumnSet* column_set = layout->AddColumnSet(0);
   column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 0,
                         GridLayout::USE_PREF, 0, 0);
@@ -94,7 +92,9 @@
   make_default_->SetChecked(true);
   layout->AddView(make_default_);
 
-  layout->StartRowWithPadding(0, 0, 0, related_y);
+  layout->StartRowWithPadding(0, 0, 0,
+                              ChromeLayoutProvider::Get()->GetDistanceMetric(
+                                  views::DISTANCE_RELATED_CONTROL_VERTICAL));
   report_crashes_ = new views::Checkbox(l10n_util::GetStringUTF16(
       IDS_OPTIONS_ENABLE_LOGGING));
   // Having this box checked means the user has to opt-out of metrics recording.
diff --git a/chrome/browser/ui/views/network_profile_bubble_view.cc b/chrome/browser/ui/views/network_profile_bubble_view.cc
index fa94d7d..9f0621e4 100644
--- a/chrome/browser/ui/views/network_profile_bubble_view.cc
+++ b/chrome/browser/ui/views/network_profile_bubble_view.cc
@@ -22,7 +22,6 @@
 #include "ui/views/controls/link.h"
 #include "ui/views/controls/link_listener.h"
 #include "ui/views/layout/fill_layout.h"
-#include "ui/views/layout/layout_constants.h"
 
 namespace {
 
diff --git a/chrome/browser/ui/views/outdated_upgrade_bubble_view.cc b/chrome/browser/ui/views/outdated_upgrade_bubble_view.cc
index dce918de..28d4eafb 100644
--- a/chrome/browser/ui/views/outdated_upgrade_bubble_view.cc
+++ b/chrome/browser/ui/views/outdated_upgrade_bubble_view.cc
@@ -21,7 +21,6 @@
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/views/controls/label.h"
 #include "ui/views/layout/fill_layout.h"
-#include "ui/views/layout/layout_constants.h"
 #include "ui/views/widget/widget.h"
 #include "url/gurl.h"
 
diff --git a/chrome/browser/ui/views/session_crashed_bubble_view.cc b/chrome/browser/ui/views/session_crashed_bubble_view.cc
index 441c54b..da87ad7 100644
--- a/chrome/browser/ui/views/session_crashed_bubble_view.cc
+++ b/chrome/browser/ui/views/session_crashed_bubble_view.cc
@@ -38,7 +38,6 @@
 #include "ui/views/controls/styled_label.h"
 #include "ui/views/layout/fill_layout.h"
 #include "ui/views/layout/grid_layout.h"
-#include "ui/views/layout/layout_constants.h"
 #include "ui/views/widget/widget.h"
 
 using views::GridLayout;
diff --git a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc b/chrome/browser/ui/webui/net_internals/net_internals_ui.cc
index 12110edd..39c227f 100644
--- a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc
+++ b/chrome/browser/ui/webui/net_internals/net_internals_ui.cc
@@ -33,8 +33,6 @@
 #include "build/build_config.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/download/download_prefs.h"
@@ -52,6 +50,7 @@
 #include "components/url_formatter/url_fixer.h"
 #include "components/version_info/version_info.h"
 #include "content/public/browser/browser_thread.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/notification_details.h"
 #include "content/public/browser/resource_dispatcher_host.h"
 #include "content/public/browser/storage_partition.h"
@@ -502,12 +501,11 @@
 
 void NetInternalsMessageHandler::OnClearBrowserCache(
     const base::ListValue* list) {
-  BrowsingDataRemover* remover =
-      BrowsingDataRemoverFactory::GetForBrowserContext(
-          Profile::FromWebUI(web_ui()));
+  content::BrowsingDataRemover* remover =
+      Profile::GetBrowsingDataRemover(Profile::FromWebUI(web_ui()));
   remover->Remove(base::Time(), base::Time::Max(),
-                  BrowsingDataRemover::DATA_TYPE_CACHE,
-                  BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB);
+                  content::BrowsingDataRemover::DATA_TYPE_CACHE,
+                  content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB);
   // BrowsingDataRemover deletes itself.
 }
 
diff --git a/chrome/browser/ui/webui/options/clear_browser_data_browsertest.cc b/chrome/browser/ui/webui/options/clear_browser_data_browsertest.cc
index 6d49702..7806323 100644
--- a/chrome/browser/ui/webui/options/clear_browser_data_browsertest.cc
+++ b/chrome/browser/ui/webui/options/clear_browser_data_browsertest.cc
@@ -6,15 +6,14 @@
 
 #include "base/macros.h"
 #include "build/build_config.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_test_util.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/webui/options/options_ui_browsertest.h"
 #include "chrome/common/url_constants.h"
 #include "components/prefs/pref_service.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/test/browser_test_utils.h"
+#include "content/public/test/browsing_data_remover_test_util.h"
 
 namespace options {
 
@@ -59,8 +58,8 @@
 IN_PROC_BROWSER_TEST_F(ClearBrowserDataBrowserTest,
                        MAYBE_CommitButtonDisabledWhileDeletionInProgress) {
   const char kCommitButtonId[] = "#clear-browser-data-commit";
-  BrowsingDataRemoverCompletionInhibitor completion_inhibitor(
-      BrowsingDataRemoverFactory::GetForBrowserContext(browser()->profile()));
+  content::BrowsingDataRemoverCompletionInhibitor completion_inhibitor(
+      content::BrowserContext::GetBrowsingDataRemover(browser()->profile()));
 
   // Navigate to the Clear Browsing Data dialog to ensure that the commit button
   // is initially enabled, usable, and gets disabled after having been pressed.
diff --git a/chrome/browser/ui/webui/options/clear_browser_data_handler.cc b/chrome/browser/ui/webui/options/clear_browser_data_handler.cc
index 527531cc..0c3e07d 100644
--- a/chrome/browser/ui/webui/options/clear_browser_data_handler.cc
+++ b/chrome/browser/ui/webui/options/clear_browser_data_handler.cc
@@ -24,8 +24,6 @@
 #include "chrome/browser/browsing_data/browsing_data_counter_factory.h"
 #include "chrome/browser/browsing_data/browsing_data_counter_utils.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/history/web_history_service_factory.h"
 #include "chrome/browser/prefs/incognito_mode_prefs.h"
@@ -41,6 +39,7 @@
 #include "components/browsing_data/core/pref_names.h"
 #include "components/google/core/browser/google_util.h"
 #include "components/prefs/pref_service.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/notification_details.h"
 #include "content/public/browser/web_ui.h"
 #include "ui/base/accelerators/accelerator.h"
@@ -260,38 +259,38 @@
   }
   if (prefs->GetBoolean(browsing_data::prefs::kDeleteDownloadHistory) &&
       *allow_deleting_browser_history_) {
-    remove_mask |= BrowsingDataRemover::DATA_TYPE_DOWNLOADS;
+    remove_mask |= content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS;
   }
   if (prefs->GetBoolean(browsing_data::prefs::kDeleteCache))
-    remove_mask |= BrowsingDataRemover::DATA_TYPE_CACHE;
+    remove_mask |= content::BrowsingDataRemover::DATA_TYPE_CACHE;
   if (prefs->GetBoolean(browsing_data::prefs::kDeleteCookies)) {
     remove_mask |= site_data_mask;
-    origin_mask |= BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB;
+    origin_mask |= content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB;
   }
   if (prefs->GetBoolean(browsing_data::prefs::kDeletePasswords))
     remove_mask |= ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PASSWORDS;
   if (prefs->GetBoolean(browsing_data::prefs::kDeleteFormData))
     remove_mask |= ChromeBrowsingDataRemoverDelegate::DATA_TYPE_FORM_DATA;
   if (prefs->GetBoolean(browsing_data::prefs::kDeleteMediaLicenses))
-    remove_mask |= BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES;
+    remove_mask |= content::BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES;
   if (prefs->GetBoolean(browsing_data::prefs::kDeleteHostedAppsData)) {
     remove_mask |= site_data_mask;
-    origin_mask |= BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB;
+    origin_mask |= content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB;
   }
 
   // Record the deletion of cookies and cache.
-  BrowsingDataRemover::CookieOrCacheDeletionChoice choice =
-      BrowsingDataRemover::NEITHER_COOKIES_NOR_CACHE;
+  content::BrowsingDataRemover::CookieOrCacheDeletionChoice choice =
+      content::BrowsingDataRemover::NEITHER_COOKIES_NOR_CACHE;
   if (prefs->GetBoolean(browsing_data::prefs::kDeleteCookies)) {
     choice = prefs->GetBoolean(browsing_data::prefs::kDeleteCache)
-                 ? BrowsingDataRemover::BOTH_COOKIES_AND_CACHE
-                 : BrowsingDataRemover::ONLY_COOKIES;
+                 ? content::BrowsingDataRemover::BOTH_COOKIES_AND_CACHE
+                 : content::BrowsingDataRemover::ONLY_COOKIES;
   } else if (prefs->GetBoolean(browsing_data::prefs::kDeleteCache)) {
-    choice = BrowsingDataRemover::ONLY_CACHE;
+    choice = content::BrowsingDataRemover::ONLY_CACHE;
   }
   UMA_HISTOGRAM_ENUMERATION(
-      "History.ClearBrowsingData.UserDeletedCookieOrCacheFromDialog",
-      choice, BrowsingDataRemover::MAX_CHOICE_VALUE);
+      "History.ClearBrowsingData.UserDeletedCookieOrCacheFromDialog", choice,
+      content::BrowsingDataRemover::MAX_CHOICE_VALUE);
 
   // Record the circumstances under which passwords are deleted.
   if (prefs->GetBoolean(browsing_data::prefs::kDeletePasswords)) {
@@ -314,7 +313,7 @@
         checked_other_types);
   }
 
-  remover_ = BrowsingDataRemoverFactory::GetForBrowserContext(profile);
+  remover_ = content::BrowserContext::GetBrowsingDataRemover(profile);
   remover_->AddObserver(this);
   int period_selected =
       prefs->GetInteger(browsing_data::prefs::kDeleteTimePeriod);
diff --git a/chrome/browser/ui/webui/options/clear_browser_data_handler.h b/chrome/browser/ui/webui/options/clear_browser_data_handler.h
index e074946..8c6a259 100644
--- a/chrome/browser/ui/webui/options/clear_browser_data_handler.h
+++ b/chrome/browser/ui/webui/options/clear_browser_data_handler.h
@@ -9,17 +9,17 @@
 #include <vector>
 
 #include "base/macros.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
 #include "chrome/browser/ui/webui/options/options_ui.h"
 #include "components/browser_sync/profile_sync_service.h"
 #include "components/browsing_data/core/counters/browsing_data_counter.h"
 #include "components/prefs/pref_member.h"
+#include "content/public/browser/browsing_data_remover.h"
 
 namespace options {
 
 // Clear browser data handler page UI handler.
 class ClearBrowserDataHandler : public OptionsPageUIHandler,
-                                public BrowsingDataRemover::Observer,
+                                public content::BrowsingDataRemover::Observer,
                                 public syncer::SyncServiceObserver {
  public:
   ClearBrowserDataHandler();
@@ -76,7 +76,7 @@
   void UpdateHistoryDeletionDialog(bool show);
 
   // If non-null it means removal is in progress.
-  BrowsingDataRemover* remover_;
+  content::BrowsingDataRemover* remover_;
 
   // Keeps track of whether clearing LSO data is supported.
   BooleanPrefMember clear_plugin_lso_data_enabled_;
diff --git a/chrome/browser/ui/webui/profile_helper_browsertest.cc b/chrome/browser/ui/webui/profile_helper_browsertest.cc
index ae889fc..9f95578 100644
--- a/chrome/browser/ui/webui/profile_helper_browsertest.cc
+++ b/chrome/browser/ui/webui/profile_helper_browsertest.cc
@@ -6,9 +6,6 @@
 #include "base/run_loop.h"
 #include "base/scoped_observer.h"
 #include "chrome/browser/browser_process.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_test_util.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/profiles/profile_attributes_storage.h"
 #include "chrome/browser/profiles/profile_manager.h"
@@ -17,7 +14,9 @@
 #include "chrome/browser/ui/browser_list_observer.h"
 #include "chrome/browser/ui/webui/profile_helper.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/notification_service.h"
+#include "content/public/test/browsing_data_remover_test_util.h"
 #include "content/public/test/test_utils.h"
 #include "content/public/test/test_web_ui.h"
 
@@ -184,8 +183,8 @@
   Profile* additional_profile = CreateProfile();
   EXPECT_EQ(2u, storage.GetNumberOfProfiles());
 
-  BrowsingDataRemoverCompletionInhibitor inhibitor(
-      BrowsingDataRemoverFactory::GetForBrowserContext(additional_profile));
+  content::BrowsingDataRemoverCompletionInhibitor inhibitor(
+      content::BrowserContext::GetBrowsingDataRemover(additional_profile));
   webui::DeleteProfileAtPath(additional_profile->GetPath(), &web_ui,
                              ProfileMetrics::DELETE_PROFILE_SETTINGS);
   inhibitor.BlockUntilNearCompletion();
diff --git a/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc b/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
index 2c47be3..25da43e 100644
--- a/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
+++ b/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
@@ -13,7 +13,6 @@
 #include "chrome/browser/browsing_data/browsing_data_counter_factory.h"
 #include "chrome/browser/browsing_data/browsing_data_counter_utils.h"
 #include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/history/web_history_service_factory.h"
 #include "chrome/browser/sync/profile_sync_service_factory.h"
@@ -46,25 +45,27 @@
 // TaskObserver ----------------------------------------------------------------
 
 class ClearBrowsingDataHandler::TaskObserver
-    : public BrowsingDataRemover::Observer {
+    : public content::BrowsingDataRemover::Observer {
  public:
-  TaskObserver(BrowsingDataRemover* remover, const base::Closure& callback);
+  TaskObserver(content::BrowsingDataRemover* remover,
+               const base::Closure& callback);
   ~TaskObserver() override;
 
   void OnBrowsingDataRemoverDone() override;
 
  private:
   base::Closure callback_;
-  ScopedObserver<BrowsingDataRemover, BrowsingDataRemover::Observer>
+  ScopedObserver<content::BrowsingDataRemover,
+                 content::BrowsingDataRemover::Observer>
       remover_observer_;
 
   DISALLOW_COPY_AND_ASSIGN(TaskObserver);
 };
 
 ClearBrowsingDataHandler::TaskObserver::TaskObserver(
-    BrowsingDataRemover* remover, const base::Closure& callback)
-    : callback_(callback),
-      remover_observer_(this) {
+    content::BrowsingDataRemover* remover,
+    const base::Closure& callback)
+    : callback_(callback), remover_observer_(this) {
   remover_observer_.Add(remover);
 }
 
@@ -133,16 +134,16 @@
     if (prefs->GetBoolean(browsing_data::prefs::kDeleteBrowsingHistory))
       remove_mask |= ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY;
     if (prefs->GetBoolean(browsing_data::prefs::kDeleteDownloadHistory))
-      remove_mask |= BrowsingDataRemover::DATA_TYPE_DOWNLOADS;
+      remove_mask |= content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS;
   }
 
   if (prefs->GetBoolean(browsing_data::prefs::kDeleteCache))
-    remove_mask |= BrowsingDataRemover::DATA_TYPE_CACHE;
+    remove_mask |= content::BrowsingDataRemover::DATA_TYPE_CACHE;
 
   int origin_mask = 0;
   if (prefs->GetBoolean(browsing_data::prefs::kDeleteCookies)) {
     remove_mask |= site_data_mask;
-    origin_mask |= BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB;
+    origin_mask |= content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB;
   }
 
   if (prefs->GetBoolean(browsing_data::prefs::kDeletePasswords))
@@ -152,27 +153,27 @@
     remove_mask |= ChromeBrowsingDataRemoverDelegate::DATA_TYPE_FORM_DATA;
 
   if (prefs->GetBoolean(browsing_data::prefs::kDeleteMediaLicenses))
-    remove_mask |= BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES;
+    remove_mask |= content::BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES;
 
   if (prefs->GetBoolean(browsing_data::prefs::kDeleteHostedAppsData)) {
     remove_mask |= site_data_mask;
-    origin_mask |= BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB;
+    origin_mask |= content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB;
   }
 
   // Record the deletion of cookies and cache.
-  BrowsingDataRemover::CookieOrCacheDeletionChoice choice =
-      BrowsingDataRemover::NEITHER_COOKIES_NOR_CACHE;
+  content::BrowsingDataRemover::CookieOrCacheDeletionChoice choice =
+      content::BrowsingDataRemover::NEITHER_COOKIES_NOR_CACHE;
   if (prefs->GetBoolean(browsing_data::prefs::kDeleteCookies)) {
     choice = prefs->GetBoolean(browsing_data::prefs::kDeleteCache)
-                 ? BrowsingDataRemover::BOTH_COOKIES_AND_CACHE
-                 : BrowsingDataRemover::ONLY_COOKIES;
+                 ? content::BrowsingDataRemover::BOTH_COOKIES_AND_CACHE
+                 : content::BrowsingDataRemover::ONLY_COOKIES;
   } else if (prefs->GetBoolean(browsing_data::prefs::kDeleteCache)) {
-    choice = BrowsingDataRemover::ONLY_CACHE;
+    choice = content::BrowsingDataRemover::ONLY_CACHE;
   }
 
   UMA_HISTOGRAM_ENUMERATION(
       "History.ClearBrowsingData.UserDeletedCookieOrCacheFromDialog", choice,
-      BrowsingDataRemover::MAX_CHOICE_VALUE);
+      content::BrowsingDataRemover::MAX_CHOICE_VALUE);
 
   // Record the circumstances under which passwords are deleted.
   if (prefs->GetBoolean(browsing_data::prefs::kDeletePasswords)) {
@@ -201,8 +202,8 @@
   CHECK_EQ(1U, args->GetSize());
   CHECK(args->GetString(0, &webui_callback_id));
 
-  BrowsingDataRemover* remover =
-      BrowsingDataRemoverFactory::GetForBrowserContext(profile_);
+  content::BrowsingDataRemover* remover =
+      content::BrowserContext::GetBrowsingDataRemover(profile_);
   task_observer_ = base::MakeUnique<TaskObserver>(
       remover,
       base::Bind(&ClearBrowsingDataHandler::OnClearingTaskFinished,
diff --git a/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.h b/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.h
index a713bff..6137c84 100644
--- a/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.h
+++ b/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.h
@@ -11,7 +11,6 @@
 
 #include "base/macros.h"
 #include "base/scoped_observer.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/webui/settings/settings_page_ui_handler.h"
 #include "components/browser_sync/profile_sync_service.h"
diff --git a/chrome/renderer/extensions/automation_internal_custom_bindings.cc b/chrome/renderer/extensions/automation_internal_custom_bindings.cc
index 5c7fe9c..9241f85 100644
--- a/chrome/renderer/extensions/automation_internal_custom_bindings.cc
+++ b/chrome/renderer/extensions/automation_internal_custom_bindings.cc
@@ -24,6 +24,7 @@
 #include "extensions/common/manifest_handlers/background_info.h"
 #include "extensions/renderer/extension_bindings_system.h"
 #include "extensions/renderer/script_context.h"
+#include "gin/converter.h"
 #include "ipc/message_filter.h"
 #include "ui/accessibility/ax_enums.h"
 #include "ui/accessibility/ax_node.h"
@@ -47,28 +48,43 @@
              << automation_bindings->context()->GetStackTraceAsString();
 }
 
-v8::Local<v8::Value> CreateV8String(v8::Isolate* isolate, const char* str) {
-  return v8::String::NewFromUtf8(isolate, str, v8::String::kNormalString,
-                                 strlen(str));
+v8::Local<v8::String> CreateV8String(v8::Isolate* isolate,
+                                     base::StringPiece str) {
+  return gin::StringToSymbol(isolate, str);
 }
 
-v8::Local<v8::Value> CreateV8String(v8::Isolate* isolate,
-                                    const std::string& str) {
-  return v8::String::NewFromUtf8(isolate, str.c_str(),
-                                 v8::String::kNormalString, str.length());
+// Note: when building up an object to return from one of the
+// automation API bindings like a rect ({left: 0, top: 0, ...}) or
+// something like that, we should use this function instead of
+// v8::Object::Set, because a malicious extension author could use
+// Object.defineProperty to override a setter and trigger all sorts of
+// things to happen in the middle of one of our functions below.
+//
+// This is only safe when we're creating the object to return and
+// we're setting properties on it before it's been exposed to
+// untrusted scripts.
+void SafeSetV8Property(v8::Isolate* isolate,
+                       v8::Local<v8::Object> object,
+                       base::StringPiece key,
+                       v8::Local<v8::Value> value) {
+  v8::Maybe<bool> maybe = object->CreateDataProperty(
+      isolate->GetCurrentContext(), CreateV8String(isolate, key), value);
+
+  // There's no legit reason CreateDataProperty should fail.
+  CHECK(maybe.IsJust() && maybe.FromJust());
 }
 
 v8::Local<v8::Object> RectToV8Object(v8::Isolate* isolate,
                                      const gfx::Rect& rect) {
   v8::Local<v8::Object> result(v8::Object::New(isolate));
-  result->Set(CreateV8String(isolate, "left"),
-              v8::Integer::New(isolate, rect.x()));
-  result->Set(CreateV8String(isolate, "top"),
-              v8::Integer::New(isolate, rect.y()));
-  result->Set(CreateV8String(isolate, "width"),
-              v8::Integer::New(isolate, rect.width()));
-  result->Set(CreateV8String(isolate, "height"),
-              v8::Integer::New(isolate, rect.height()));
+  SafeSetV8Property(isolate, result, "left",
+                    v8::Integer::New(isolate, rect.x()));
+  SafeSetV8Property(isolate, result, "top",
+                    v8::Integer::New(isolate, rect.y()));
+  SafeSetV8Property(isolate, result, "width",
+                    v8::Integer::New(isolate, rect.width()));
+  SafeSetV8Property(isolate, result, "height",
+                    v8::Integer::New(isolate, rect.height()));
   return result;
 }
 
@@ -945,10 +961,10 @@
 
   v8::Isolate* isolate = GetIsolate();
   v8::Local<v8::Object> result(v8::Object::New(isolate));
-  result->Set(CreateV8String(isolate, "treeId"),
-              v8::Integer::New(isolate, focused_tree_cache->tree_id));
-  result->Set(CreateV8String(isolate, "nodeId"),
-              v8::Integer::New(isolate, focused_node->id()));
+  SafeSetV8Property(isolate, result, "treeId",
+                    v8::Integer::New(isolate, focused_tree_cache->tree_id));
+  SafeSetV8Property(isolate, result, "nodeId",
+                    v8::Integer::New(isolate, focused_node->id()));
   args.GetReturnValue().Set(result);
 }
 
@@ -974,7 +990,7 @@
   for (size_t i = 0; i < src.size(); i++) {
     std::string& key = src[i].first;
     std::string& value = src[i].second;
-    dst->Set(CreateV8String(isolate, key), CreateV8String(isolate, value));
+    SafeSetV8Property(isolate, dst, key, CreateV8String(isolate, value));
   }
   args.GetReturnValue().Set(dst);
 }
@@ -1001,7 +1017,7 @@
   while (state_shifter) {
     if (state_shifter & 1) {
       std::string key = ToString(static_cast<ui::AXState>(state_pos));
-      state->Set(CreateV8String(isolate, key), v8::Boolean::New(isolate, true));
+      SafeSetV8Property(isolate, state, key, v8::Boolean::New(isolate, true));
     }
     state_shifter = state_shifter >> 1;
     state_pos++;
@@ -1014,13 +1030,13 @@
   ui::AXNode* focused_node = nullptr;
   if (GetFocusInternal(top_cache, &focused_cache, &focused_node)) {
     if (focused_cache == cache && focused_node == node) {
-      state->Set(CreateV8String(isolate, "focused"),
-                 v8::Boolean::New(isolate, true));
+      SafeSetV8Property(isolate, state, "focused",
+                        v8::Boolean::New(isolate, true));
     }
   }
   if (cache->tree.data().focus_id == node->id()) {
-    state->Set(CreateV8String(isolate, "focused"),
-               v8::Boolean::New(isolate, true));
+    SafeSetV8Property(isolate, state, "focused",
+                      v8::Boolean::New(isolate, true));
   }
 
   args.GetReturnValue().Set(state);
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index c62ecb1..e529237 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -1169,7 +1169,7 @@
     ]
 
     deps += [
-      "//mash/package",
+      "//chrome/app/mash:embedded_services",
       "//mash/session/public/interfaces:constants",
       "//services/service_manager/background:lib",
     ]
@@ -1315,8 +1315,6 @@
       "../browser/browsing_data/browsing_data_indexed_db_helper_browsertest.cc",
       "../browser/browsing_data/browsing_data_local_storage_helper_browsertest.cc",
       "../browser/browsing_data/browsing_data_remover_browsertest.cc",
-      "../browser/browsing_data/browsing_data_remover_test_util.cc",
-      "../browser/browsing_data/browsing_data_remover_test_util.h",
       "../browser/browsing_data/cache_counter_browsertest.cc",
       "../browser/browsing_data/conditional_cache_counting_helper_browsertest.cc",
       "../browser/browsing_data/downloads_counter_browsertest.cc",
@@ -3118,9 +3116,6 @@
     "../browser/browsing_data/browsing_data_local_storage_helper_unittest.cc",
     "../browser/browsing_data/browsing_data_media_license_helper_unittest.cc",
     "../browser/browsing_data/browsing_data_quota_helper_unittest.cc",
-    "../browser/browsing_data/browsing_data_remover_impl_unittest.cc",
-    "../browser/browsing_data/browsing_data_remover_test_util.cc",
-    "../browser/browsing_data/browsing_data_remover_test_util.h",
     "../browser/browsing_data/browsing_data_service_worker_helper_unittest.cc",
     "../browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc",
     "../browser/browsing_data/cookies_tree_model_unittest.cc",
@@ -5158,36 +5153,19 @@
     testonly = true
     data_deps = [
       ":browser_tests",
-      "//chrome/app/mash:mash_service_overrides",
     ]
   }
 
   service_manifest("mash_browser_tests_manifest") {
     name = "mash_browser_tests"
-
     source = "base/mash_browser_tests_manifest.json"
-    packaged_services = [
-      "//ash/autoclick/mus:manifest",
-      "//ash/mus:manifest",
-      "//ash/touch_hud/mus:manifest",
-      "//mash/catalog_viewer:manifest",
-      "//mash/quick_launch:manifest",
-      "//mash/session:manifest",
-      "//mash/task_viewer:manifest",
-      "//services/ui:manifest",
-      "//services/ui/ime/test_ime_driver:manifest",
-    ]
-
-    if (is_linux && !is_android) {
-      packaged_services += [ "//components/font_service:manifest" ]
-    }
   }
 
   catalog("mash_browser_tests_catalog") {
     testonly = true
     embedded_services = [ ":mash_browser_tests_manifest" ]
     standalone_services = [ "//services/tracing:manifest" ]
-    catalog_deps = [ "//chrome/app:catalog_for_mash" ]
+    catalog_deps = [ "//chrome/app/mash:catalog" ]
   }
 
   copy("mash_browser_tests_catalog_copy") {
@@ -5212,22 +5190,19 @@
     testonly = true
     data_deps = [
       ":browser_tests",
-      "//chrome/app/mash:mash_service_overrides",
     ]
   }
 
   service_manifest("mus_browser_tests_manifest") {
     name = "mus_browser_tests"
-
     source = "base/mus_browser_tests_manifest.json"
-    packaged_services = [ "//services/ui:manifest" ]
   }
 
   catalog("mus_browser_tests_catalog") {
     testonly = true
     embedded_services = [ ":mus_browser_tests_manifest" ]
     standalone_services = [ "//services/tracing:manifest" ]
-    catalog_deps = [ "//chrome/app:catalog" ]
+    catalog_deps = [ "//chrome/app/mash:catalog_mus" ]
   }
 
   copy("mus_browser_tests_catalog_copy") {
diff --git a/chrome/test/DEPS b/chrome/test/DEPS
index cfc1016..5123256 100644
--- a/chrome/test/DEPS
+++ b/chrome/test/DEPS
@@ -9,7 +9,6 @@
   "+device/bluetooth/dbus",
   "+device/geolocation",
   "+extensions",
-  "+mash/package",
   "+mash/session/public/interfaces",
   "+mojo",
   "+rlz/features",
diff --git a/chrome/test/base/mash_browser_tests_main.cc b/chrome/test/base/mash_browser_tests_main.cc
index d17a0b7..3d8f1c8 100644
--- a/chrome/test/base/mash_browser_tests_main.cc
+++ b/chrome/test/base/mash_browser_tests_main.cc
@@ -20,13 +20,13 @@
 #include "base/sys_info.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/values.h"
+#include "chrome/app/mash/embedded_services.h"
 #include "chrome/test/base/chrome_test_launcher.h"
 #include "chrome/test/base/chrome_test_suite.h"
 #include "chrome/test/base/mojo_test_connector.h"
 #include "content/public/app/content_main.h"
 #include "content/public/common/service_manager_connection.h"
 #include "content/public/test/test_launcher.h"
-#include "mash/package/mash_packaged_service.h"
 #include "mash/session/public/interfaces/constants.mojom.h"
 #include "services/service_manager/public/cpp/connector.h"
 #include "services/service_manager/public/cpp/service.h"
@@ -45,10 +45,6 @@
 const base::FilePath::CharType kMusCatalogFilename[] =
     FILE_PATH_LITERAL("mus_browser_tests_catalog.json");
 
-void ConnectToDefaultApps(service_manager::Connector* connector) {
-  connector->StartService(mash::session::mojom::kServiceName);
-}
-
 class MashTestSuite : public ChromeTestSuite {
  public:
   MashTestSuite(int argc, char** argv) : ChromeTestSuite(argc, argv) {}
@@ -111,9 +107,7 @@
     if (!mojo_test_connector_) {
       mojo_test_connector_ =
           base::MakeUnique<MojoTestConnector>(ReadCatalogManifest(), config_);
-      context_.reset(new service_manager::ServiceContext(
-          base::MakeUnique<mash::MashPackagedService>(),
-          mojo_test_connector_->Init()));
+      mojo_test_connector_->Init();
     }
     std::unique_ptr<content::TestState> test_state =
         mojo_test_connector_->PrepareForTest(command_line, test_launch_options);
@@ -121,14 +115,13 @@
     // Start default apps after chrome, as they may try to connect to chrome on
     // startup. Attempt to connect once per test in case a previous test crashed
     // mash_session.
-    ConnectToDefaultApps(context_->connector());
+    mojo_test_connector_->StartService(mash::session::mojom::kServiceName);
     return test_state;
   }
 
   void OnDoneRunningTests() override {
     // We have to shutdown this state here, while an AtExitManager is still
     // valid.
-    context_.reset();
     mojo_test_connector_.reset();
   }
 
@@ -151,7 +144,6 @@
 
   std::unique_ptr<MashTestSuite> test_suite_;
   std::unique_ptr<MojoTestConnector> mojo_test_connector_;
-  std::unique_ptr<service_manager::ServiceContext> context_;
 
   DISALLOW_COPY_AND_ASSIGN(MashTestLauncherDelegate);
 };
@@ -163,18 +155,20 @@
           delegate->GetMojoTestConnectorForSingleProcess()->Init(),
           base::ThreadTaskRunnerHandle::Get()));
   connection->Start();
-  ConnectToDefaultApps(connection->GetConnector());
+  connection->GetConnector()->StartService(mash::session::mojom::kServiceName);
   return connection;
 }
 
-void StartChildApp(service_manager::mojom::ServiceRequest service_request) {
-  // The UI service requires this to be TYPE_UI. We don't know which service
-  // we're going to run yet, so we just always use TYPE_UI for now.
+void StartEmbeddedService(service_manager::mojom::ServiceRequest request) {
+  // The UI service requires this to be TYPE_UI, so we just always use TYPE_UI
+  // for now.
   base::MessageLoop message_loop(base::MessageLoop::TYPE_UI);
   base::RunLoop run_loop;
   service_manager::ServiceContext context(
-      base::MakeUnique<mash::MashPackagedService>(),
-      std::move(service_request));
+      CreateEmbeddedMashService(
+          base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+              service_manager::switches::kServiceName)),
+      std::move(request));
   context.SetQuitClosure(run_loop.QuitClosure());
   run_loop.Run();
 }
@@ -200,20 +194,19 @@
 #endif
 
     command_line->AppendSwitch(ui::switches::kUseTestConfig);
-    service_manager::RunStandaloneService(base::Bind(&StartChildApp));
+    service_manager::RunStandaloneService(base::Bind(&StartEmbeddedService));
     *exit_code = 0;
     return true;
   }
 
   int default_jobs = std::max(1, base::SysInfo::NumberOfProcessors() / 2);
   MashTestLauncherDelegate delegate;
-  // --single_process and no primoridal pipe token indicate we were run directly
+  // --single_process and no service pipe token indicate we were run directly
   // from the command line. In this case we have to start up
-  // ServiceManagerConnection
-  // as though we were embedded.
+  // ServiceManagerConnection as though we were embedded.
   content::ServiceManagerConnection::Factory service_manager_connection_factory;
   if (command_line->HasSwitch(content::kSingleProcessTestsFlag) &&
-      !command_line->HasSwitch(switches::kPrimordialPipeToken)) {
+      !command_line->HasSwitch(service_manager::switches::kServicePipeToken)) {
     service_manager_connection_factory =
         base::Bind(&CreateServiceManagerConnection, &delegate);
     content::ServiceManagerConnection::SetFactoryForTest(
diff --git a/chrome/test/base/mash_browser_tests_manifest.json b/chrome/test/base/mash_browser_tests_manifest.json
index 22872c8..e6bfadd 100644
--- a/chrome/test/base/mash_browser_tests_manifest.json
+++ b/chrome/test/base/mash_browser_tests_manifest.json
@@ -3,17 +3,7 @@
   "display_name": "Mash Browser Tests",
   "interface_provider_specs": {
     "service_manager:connector": {
-      "provides": {
-        "service_manager:service_factory": [
-          "service_manager::mojom::ServiceFactory"
-        ]
-      },
-      "requires": {
-        "*": [ "app" ],
-        "service_manager": [
-           "service_manager:instance_per_child"
-        ]
-      }
+      "requires": { "*": [ "app" ] }
     }
   }
 }
diff --git a/chrome/test/base/mojo_test_connector.cc b/chrome/test/base/mojo_test_connector.cc
index 129bcb7..50a619a5 100644
--- a/chrome/test/base/mojo_test_connector.cc
+++ b/chrome/test/base/mojo_test_connector.cc
@@ -53,7 +53,6 @@
             base::TestLauncher::LaunchOptions* test_launch_options,
             const std::string& mus_config_switch) {
     command_line->AppendSwitch(MojoTestConnector::kTestSwitch);
-    command_line->AppendSwitch(switches::kChildProcess);
     command_line->AppendSwitchASCII(switches::kMusConfig, mus_config_switch);
 
     platform_channel_ = base::MakeUnique<mojo::edk::PlatformChannelPair>();
@@ -245,3 +244,8 @@
                                                               : switches::kMus);
   return test_state;
 }
+
+void MojoTestConnector::StartService(const std::string& service_name) {
+  background_service_manager_->StartService(service_manager::Identity(
+      service_name, service_manager::mojom::kRootUserID));
+}
diff --git a/chrome/test/base/mojo_test_connector.h b/chrome/test/base/mojo_test_connector.h
index 6c9b565..86de0977 100644
--- a/chrome/test/base/mojo_test_connector.h
+++ b/chrome/test/base/mojo_test_connector.h
@@ -64,6 +64,8 @@
       base::CommandLine* command_line,
       base::TestLauncher::LaunchOptions* test_launch_options);
 
+  void StartService(const std::string& service_name);
+
  private:
   class ServiceProcessLauncherDelegateImpl;
 
diff --git a/chrome/test/base/mus_browser_tests_manifest.json b/chrome/test/base/mus_browser_tests_manifest.json
index c64633b..46c027e 100644
--- a/chrome/test/base/mus_browser_tests_manifest.json
+++ b/chrome/test/base/mus_browser_tests_manifest.json
@@ -3,17 +3,7 @@
   "display_name": "Mus Browser Tests",
   "interface_provider_specs": {
     "service_manager:connector": {
-      "provides": {
-        "service_manager:service_factory": [
-          "service_manager::mojom::ServiceFactory"
-        ]
-      },
-      "requires": {
-        "*": [ "app" ],
-        "service_manager": [
-           "service_manager:instance_per_child"
-        ]
-      }
+      "requires": { "*": [ "app" ] }
     }
   }
 }
diff --git a/components/offline_pages/core/BUILD.gn b/components/offline_pages/core/BUILD.gn
index 84bedc69..a933f50 100644
--- a/components/offline_pages/core/BUILD.gn
+++ b/components/offline_pages/core/BUILD.gn
@@ -20,7 +20,6 @@
     "offline_page_client_policy.h",
     "offline_page_item.cc",
     "offline_page_item.h",
-    "offline_page_metadata_store.cc",
     "offline_page_metadata_store.h",
     "offline_page_metadata_store_sql.cc",
     "offline_page_metadata_store_sql.h",
@@ -95,7 +94,7 @@
     "archive_manager_unittest.cc",
     "client_policy_controller_unittest.cc",
     "offline_event_logger_unittest.cc",
-    "offline_page_metadata_store_impl_unittest.cc",
+    "offline_page_metadata_store_unittest.cc",
     "offline_page_model_event_logger_unittest.cc",
     "offline_page_model_impl_unittest.cc",
     "offline_page_storage_manager_unittest.cc",
diff --git a/components/offline_pages/core/offline_page_metadata_store.cc b/components/offline_pages/core/offline_page_metadata_store.cc
deleted file mode 100644
index 761d3498..0000000
--- a/components/offline_pages/core/offline_page_metadata_store.cc
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/offline_pages/core/offline_page_metadata_store.h"
-
-namespace offline_pages {
-
-template class StoreUpdateResult<OfflinePageItem>;
-
-OfflinePageMetadataStore::~OfflinePageMetadataStore() {
-}
-
-}  // namespace offline_pages
diff --git a/components/offline_pages/core/offline_page_metadata_store.h b/components/offline_pages/core/offline_page_metadata_store.h
index d96fce75..fdc1f4e8 100644
--- a/components/offline_pages/core/offline_page_metadata_store.h
+++ b/components/offline_pages/core/offline_page_metadata_store.h
@@ -44,7 +44,7 @@
   typedef base::Callback<void(std::unique_ptr<OfflinePagesUpdateResult>)>
       UpdateCallback;
 
-  virtual ~OfflinePageMetadataStore();
+  virtual ~OfflinePageMetadataStore(){};
 
   // Initializes the store. Should be called before any other methods.
   virtual void Initialize(const InitializeCallback& callback) = 0;
diff --git a/components/offline_pages/core/offline_page_metadata_store_impl_unittest.cc b/components/offline_pages/core/offline_page_metadata_store_unittest.cc
similarity index 100%
rename from components/offline_pages/core/offline_page_metadata_store_impl_unittest.cc
rename to components/offline_pages/core/offline_page_metadata_store_unittest.cc
diff --git a/content/app/BUILD.gn b/content/app/BUILD.gn
index 292e42b..b7240fca 100644
--- a/content/app/BUILD.gn
+++ b/content/app/BUILD.gn
@@ -26,6 +26,7 @@
     "//content:export",
     "//content:sandbox_helper_win",
     "//content/public/common:common_sources",
+    "//content/public/common:service_names",
     "//crypto",
     "//services/service_manager/embedder",
     "//services/service_manager/public/interfaces",
diff --git a/content/app/android/child_process_service_impl.cc b/content/app/android/child_process_service_impl.cc
index ebfc18f6..5f5fca29 100644
--- a/content/app/android/child_process_service_impl.cc
+++ b/content/app/android/child_process_service_impl.cc
@@ -148,7 +148,7 @@
   std::map<int, std::string> ids_to_keys;
   std::string file_switch_value =
       base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
-          switches::kSharedFiles);
+          service_manager::switches::kSharedFiles);
   if (!file_switch_value.empty()) {
     base::Optional<std::map<int, std::string>> ids_to_keys_from_command_line =
         service_manager::ParseSharedFileSwitchValue(file_switch_value);
diff --git a/content/app/content_main_runner.cc b/content/app/content_main_runner.cc
index 4f0877a9..dffa556 100644
--- a/content/app/content_main_runner.cc
+++ b/content/app/content_main_runner.cc
@@ -233,33 +233,6 @@
     g_empty_content_utility_client = LAZY_INSTANCE_INITIALIZER;
 #endif  // !CHROME_MULTIPLE_DLL_BROWSER
 
-void CommonSubprocessInit() {
-#if defined(OS_WIN)
-  // HACK: Let Windows know that we have started.  This is needed to suppress
-  // the IDC_APPSTARTING cursor from being displayed for a prolonged period
-  // while a subprocess is starting.
-  PostThreadMessage(GetCurrentThreadId(), WM_NULL, 0, 0);
-  MSG msg;
-  PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
-#endif
-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
-  // Various things break when you're using a locale where the decimal
-  // separator isn't a period.  See e.g. bugs 22782 and 39964.  For
-  // all processes except the browser process (where we call system
-  // APIs that may rely on the correct locale for formatting numbers
-  // when presenting them to the user), reset the locale for numeric
-  // formatting.
-  // Note that this is not correct for plugin processes -- they can
-  // surface UI -- but it's likely they get this wrong too so why not.
-  setlocale(LC_NUMERIC, "C");
-#endif
-
-#if !defined(OFFICIAL_BUILD) && defined(OS_WIN)
-  base::RouteStdioToConsole(false);
-  LoadLibraryA("dbghelp.dll");
-#endif
-}
-
 class ContentClientInitializer {
  public:
   static void Set(const std::string& process_type,
@@ -560,12 +533,6 @@
       SetContentClient(&empty_content_client_);
     ContentClientInitializer::Set(process_type, delegate_);
 
-#if defined(OS_WIN)
-    // Route stdio to parent console (if any) or create one.
-    if (command_line.HasSwitch(switches::kEnableLogging))
-      base::RouteStdioToConsole(true);
-#endif
-
 #if !defined(OS_ANDROID)
     // Enable startup tracing asap to avoid early TRACE_EVENT calls being
     // ignored. For Android, startup tracing is enabled in an even earlier place
@@ -677,9 +644,6 @@
     if (delegate_)
       delegate_->PreSandboxStartup();
 
-    if (!process_type.empty())
-      CommonSubprocessInit();
-
 #if defined(OS_WIN)
     CHECK(InitializeSandbox(params.sandbox_info));
 #elif defined(OS_MACOSX)
diff --git a/content/app/content_service_manager_main_delegate.cc b/content/app/content_service_manager_main_delegate.cc
index 6cd34e28..12ff4572 100644
--- a/content/app/content_service_manager_main_delegate.cc
+++ b/content/app/content_service_manager_main_delegate.cc
@@ -4,7 +4,11 @@
 
 #include "content/app/content_service_manager_main_delegate.h"
 
+#include "base/command_line.h"
+#include "content/public/app/content_main_delegate.h"
 #include "content/public/app/content_main_runner.h"
+#include "content/public/common/content_switches.h"
+#include "content/public/common/service_names.mojom.h"
 
 namespace content {
 
@@ -32,14 +36,70 @@
   return content_main_runner_->Initialize(content_main_params_);
 }
 
-int ContentServiceManagerMainDelegate::Run() {
+int ContentServiceManagerMainDelegate::RunEmbedderProcess() {
   return content_main_runner_->Run();
 }
 
-void ContentServiceManagerMainDelegate::ShutDown() {
+void ContentServiceManagerMainDelegate::ShutDownEmbedderProcess() {
 #if !defined(OS_ANDROID)
   content_main_runner_->Shutdown();
 #endif
 }
 
+service_manager::ProcessType
+ContentServiceManagerMainDelegate::OverrideProcessType() {
+  return content_main_params_.delegate->OverrideProcessType();
+}
+
+std::unique_ptr<base::Value>
+ContentServiceManagerMainDelegate::CreateServiceCatalog() {
+  return content_main_params_.delegate->CreateServiceCatalog();
+}
+
+bool ContentServiceManagerMainDelegate::ShouldLaunchAsServiceProcess(
+    const service_manager::Identity& identity) {
+  return identity.name() != mojom::kPackagedServicesServiceName;
+}
+
+void ContentServiceManagerMainDelegate::AdjustServiceProcessCommandLine(
+    const service_manager::Identity& identity,
+    base::CommandLine* command_line) {
+  if (identity.name() == mojom::kPackagedServicesServiceName) {
+    // When launching the browser process, ensure that we don't inherit any
+    // process type flag. When content embeds Service Manager, a process with no
+    // type is launched as a browser process.
+    base::CommandLine::SwitchMap switches = command_line->GetSwitches();
+    switches.erase(switches::kProcessType);
+    *command_line = base::CommandLine(command_line->GetProgram());
+    for (const auto& sw : switches)
+      command_line->AppendSwitchNative(sw.first, sw.second);
+  }
+
+  content_main_params_.delegate->AdjustServiceProcessCommandLine(identity,
+                                                                 command_line);
+}
+
+bool ContentServiceManagerMainDelegate::
+    ShouldTerminateServiceManagerOnInstanceQuit(
+        const service_manager::Identity& identity,
+        int* exit_code) {
+  return content_main_params_.delegate
+      ->ShouldTerminateServiceManagerOnInstanceQuit(identity, exit_code);
+}
+
+void ContentServiceManagerMainDelegate::OnServiceManagerInitialized(
+    const base::Closure& quit_closure,
+    service_manager::BackgroundServiceManager* service_manager) {
+  return content_main_params_.delegate->OnServiceManagerInitialized(
+      quit_closure, service_manager);
+}
+
+std::unique_ptr<service_manager::Service>
+ContentServiceManagerMainDelegate::CreateEmbeddedService(
+    const std::string& service_name) {
+  // TODO
+
+  return content_main_params_.delegate->CreateEmbeddedService(service_name);
+}
+
 }  // namespace content
diff --git a/content/app/content_service_manager_main_delegate.h b/content/app/content_service_manager_main_delegate.h
index 9f8f6a49..cba873e 100644
--- a/content/app/content_service_manager_main_delegate.h
+++ b/content/app/content_service_manager_main_delegate.h
@@ -18,13 +18,28 @@
 
 class ContentServiceManagerMainDelegate : public service_manager::MainDelegate {
  public:
-  ContentServiceManagerMainDelegate(const ContentMainParams& params);
+  explicit ContentServiceManagerMainDelegate(const ContentMainParams& params);
   ~ContentServiceManagerMainDelegate() override;
 
   // service_manager::MainDelegate:
   int Initialize(const InitializeParams& params) override;
-  int Run() override;
-  void ShutDown() override;
+  int RunEmbedderProcess() override;
+  void ShutDownEmbedderProcess() override;
+  service_manager::ProcessType OverrideProcessType() override;
+  std::unique_ptr<base::Value> CreateServiceCatalog() override;
+  bool ShouldLaunchAsServiceProcess(
+      const service_manager::Identity& identity) override;
+  void AdjustServiceProcessCommandLine(
+      const service_manager::Identity& identity,
+      base::CommandLine* command_line) override;
+  bool ShouldTerminateServiceManagerOnInstanceQuit(
+      const service_manager::Identity& identity,
+      int* exit_code) override;
+  void OnServiceManagerInitialized(
+      const base::Closure& quit_closure,
+      service_manager::BackgroundServiceManager* service_manager) override;
+  std::unique_ptr<service_manager::Service> CreateEmbeddedService(
+      const std::string& service_name) override;
 
  private:
   ContentMainParams content_main_params_;
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index eb0ac5e1..b626316 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -411,6 +411,8 @@
     "browser_url_handler_impl.h",
     "browsing_data/browsing_data_filter_builder_impl.cc",
     "browsing_data/browsing_data_filter_builder_impl.h",
+    "browsing_data/browsing_data_remover_impl.cc",
+    "browsing_data/browsing_data_remover_impl.h",
     "browsing_data/clear_site_data_throttle.cc",
     "browsing_data/clear_site_data_throttle.h",
     "browsing_data/conditional_cache_deletion_helper.cc",
diff --git a/content/browser/android/content_view_core_impl.cc b/content/browser/android/content_view_core_impl.cc
index e285775..f79636db 100644
--- a/content/browser/android/content_view_core_impl.cc
+++ b/content/browser/android/content_view_core_impl.cc
@@ -409,8 +409,7 @@
     const gfx::SizeF& viewport_size,
     const float top_controls_height,
     const float top_controls_shown_ratio,
-    bool is_mobile_optimized_hint,
-    const gfx::SelectionBound& selection_start) {
+    bool is_mobile_optimized_hint) {
   JNIEnv* env = AttachCurrentThread();
   ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
   if (obj.is_null() || !GetWindowAndroid())
@@ -421,26 +420,12 @@
 
   page_scale_ = page_scale_factor;
 
-  // The CursorAnchorInfo API in Android only supports zero width selection
-  // bounds.
-  const jboolean has_insertion_marker =
-      selection_start.type() == gfx::SelectionBound::CENTER;
-  const jboolean is_insertion_marker_visible = selection_start.visible();
-  const jfloat insertion_marker_horizontal =
-      has_insertion_marker ? selection_start.edge_top().x() : 0.0f;
-  const jfloat insertion_marker_top =
-      has_insertion_marker ? selection_start.edge_top().y() : 0.0f;
-  const jfloat insertion_marker_bottom =
-      has_insertion_marker ? selection_start.edge_bottom().y() : 0.0f;
-
   Java_ContentViewCore_updateFrameInfo(
       env, obj, scroll_offset.x(), scroll_offset.y(), page_scale_factor,
       page_scale_factor_limits.x(), page_scale_factor_limits.y(),
       content_size.width(), content_size.height(), viewport_size.width(),
       viewport_size.height(), top_controls_height, top_controls_shown_ratio,
-      is_mobile_optimized_hint, has_insertion_marker,
-      is_insertion_marker_visible, insertion_marker_horizontal,
-      insertion_marker_top, insertion_marker_bottom);
+      is_mobile_optimized_hint);
 }
 
 void ContentViewCoreImpl::ShowSelectPopupMenu(
diff --git a/content/browser/android/content_view_core_impl.h b/content/browser/android/content_view_core_impl.h
index 3d35d8f..f4a2fef 100644
--- a/content/browser/android/content_view_core_impl.h
+++ b/content/browser/android/content_view_core_impl.h
@@ -260,8 +260,7 @@
                        const gfx::SizeF& viewport_size,
                        const float top_controls_height,
                        const float top_controls_shown_ratio,
-                       bool is_mobile_optimized_hint,
-                       const gfx::SelectionBound& selection_start);
+                       bool is_mobile_optimized_hint);
 
   bool HasFocus();
   void RequestDisallowInterceptTouchEvent();
diff --git a/content/browser/android/ime_adapter_android.cc b/content/browser/android/ime_adapter_android.cc
index 1a92e3c3..bbb0ec9 100644
--- a/content/browser/android/ime_adapter_android.cc
+++ b/content/browser/android/ime_adapter_android.cc
@@ -157,6 +157,33 @@
                               state.composition_end, state.reply_to_request);
 }
 
+void ImeAdapterAndroid::UpdateFrameInfo(
+    const gfx::SelectionBound& selection_start,
+    float dip_scale,
+    float content_offset_ypix) {
+  JNIEnv* env = AttachCurrentThread();
+  ScopedJavaLocalRef<jobject> obj = java_ime_adapter_.get(env);
+  if (obj.is_null())
+    return;
+
+  // The CursorAnchorInfo API in Android only supports zero width selection
+  // bounds.
+  const jboolean has_insertion_marker =
+      selection_start.type() == gfx::SelectionBound::CENTER;
+  const jboolean is_insertion_marker_visible = selection_start.visible();
+  const jfloat insertion_marker_horizontal =
+      has_insertion_marker ? selection_start.edge_top().x() : 0.0f;
+  const jfloat insertion_marker_top =
+      has_insertion_marker ? selection_start.edge_top().y() : 0.0f;
+  const jfloat insertion_marker_bottom =
+      has_insertion_marker ? selection_start.edge_bottom().y() : 0.0f;
+
+  Java_ImeAdapter_updateFrameInfo(
+      env, obj, dip_scale, content_offset_ypix, has_insertion_marker,
+      is_insertion_marker_visible, insertion_marker_horizontal,
+      insertion_marker_top, insertion_marker_bottom);
+}
+
 bool ImeAdapterAndroid::SendKeyEvent(
     JNIEnv* env,
     const JavaParamRef<jobject>&,
diff --git a/content/browser/android/ime_adapter_android.h b/content/browser/android/ime_adapter_android.h
index 46cf13a..efe4fbb 100644
--- a/content/browser/android/ime_adapter_android.h
+++ b/content/browser/android/ime_adapter_android.h
@@ -90,6 +90,10 @@
       RenderWidgetHostViewAndroid* old_rwhva,
       RenderWidgetHostViewAndroid* new_rhwva) override;
 
+  void UpdateFrameInfo(const gfx::SelectionBound& selection_start,
+                       float dip_scale,
+                       float content_offset_ypix);
+
   // Called from native -> java
   void CancelComposition();
   void FocusedNodeChanged(bool is_editable_node);
diff --git a/content/browser/browser_context.cc b/content/browser/browser_context.cc
index db0260b..8755124 100644
--- a/content/browser/browser_context.cc
+++ b/content/browser/browser_context.cc
@@ -24,6 +24,7 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "build/build_config.h"
 #include "content/browser/blob_storage/chrome_blob_storage_context.h"
+#include "content/browser/browsing_data/browsing_data_remover_impl.h"
 #include "content/browser/download/download_manager_impl.h"
 #include "content/browser/indexed_db/indexed_db_context_impl.h"
 #include "content/browser/loader/resource_dispatcher_host_impl.h"
@@ -75,6 +76,7 @@
 };
 
 // Key names on BrowserContext.
+const char kBrowsingDataRemoverKey[] = "browsing-data-remover";
 const char kDownloadManagerKeyName[] = "download_manager";
 const char kMojoWasInitialized[] = "mojo-was-initialized";
 const char kServiceManagerConnection[] = "service-manager-connection";
@@ -234,6 +236,22 @@
 #endif
 }
 
+// static
+content::BrowsingDataRemover* content::BrowserContext::GetBrowsingDataRemover(
+    BrowserContext* context) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
+  if (!context->GetUserData(kBrowsingDataRemoverKey)) {
+    std::unique_ptr<BrowsingDataRemoverImpl> remover =
+        base::MakeUnique<BrowsingDataRemoverImpl>(context);
+    remover->SetEmbedderDelegate(context->GetBrowsingDataRemoverDelegate());
+    context->SetUserData(kBrowsingDataRemoverKey, std::move(remover));
+  }
+
+  return static_cast<BrowsingDataRemoverImpl*>(
+      context->GetUserData(kBrowsingDataRemoverKey));
+}
+
 StoragePartition* BrowserContext::GetStoragePartition(
     BrowserContext* browser_context,
     SiteInstance* site_instance) {
@@ -548,4 +566,8 @@
   return salt;
 }
 
+BrowsingDataRemoverDelegate* BrowserContext::GetBrowsingDataRemoverDelegate() {
+  return nullptr;
+}
+
 }  // namespace content
diff --git a/chrome/browser/browsing_data/browsing_data_remover_impl.cc b/content/browser/browsing_data/browsing_data_remover_impl.cc
similarity index 85%
rename from chrome/browser/browsing_data/browsing_data_remover_impl.cc
rename to content/browser/browsing_data/browsing_data_remover_impl.cc
index 606147bc..db9e312 100644
--- a/chrome/browser/browsing_data/browsing_data_remover_impl.cc
+++ b/content/browser/browsing_data/browsing_data_remover_impl.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/browsing_data/browsing_data_remover_impl.h"
+#include "content/browser/browsing_data/browsing_data_remover_impl.h"
 
 #include <map>
 #include <set>
@@ -16,13 +16,11 @@
 #include "base/memory/ptr_util.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/user_metrics.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_delegate.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/common/pref_names.h"
-#include "components/prefs/pref_service.h"
+#include "content/browser/browsing_data/storage_partition_http_cache_data_remover.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/browsing_data_filter_builder.h"
+#include "content/public/browser/browsing_data_remover_delegate.h"
 #include "content/public/browser/content_browser_client.h"
 #include "content/public/browser/download_manager.h"
 #include "content/public/browser/notification_service.h"
@@ -41,10 +39,8 @@
 #include "url/origin.h"
 
 using base::UserMetricsAction;
-using content::BrowserContext;
-using content::BrowserThread;
-using content::BrowsingDataFilterBuilder;
-using content::DOMStorageContext;
+
+namespace content {
 
 namespace {
 
@@ -167,7 +163,7 @@
 }
 
 BrowsingDataRemoverImpl::BrowsingDataRemoverImpl(
-    content::BrowserContext* browser_context)
+    BrowserContext* browser_context)
     : browser_context_(browser_context),
       remove_mask_(-1),
       origin_type_mask_(-1),
@@ -203,23 +199,14 @@
   }
 }
 
-void BrowsingDataRemoverImpl::Shutdown() {
-  embedder_delegate_.reset();
-}
-
 void BrowsingDataRemoverImpl::SetRemoving(bool is_removing) {
   DCHECK_NE(is_removing_, is_removing);
   is_removing_ = is_removing;
 }
 
 void BrowsingDataRemoverImpl::SetEmbedderDelegate(
-    std::unique_ptr<BrowsingDataRemoverDelegate> embedder_delegate) {
-  embedder_delegate_ = std::move(embedder_delegate);
-}
-
-BrowsingDataRemoverDelegate*
-BrowsingDataRemoverImpl::GetEmbedderDelegate() const {
-  return embedder_delegate_.get();
+    BrowsingDataRemoverDelegate* embedder_delegate) {
+  embedder_delegate_ = embedder_delegate;
 }
 
 bool BrowsingDataRemoverImpl::DoesOriginMatchMask(
@@ -236,19 +223,18 @@
 }
 
 void BrowsingDataRemoverImpl::Remove(const base::Time& delete_begin,
-                                 const base::Time& delete_end,
-                                 int remove_mask,
-                                 int origin_type_mask) {
+                                     const base::Time& delete_end,
+                                     int remove_mask,
+                                     int origin_type_mask) {
   RemoveInternal(delete_begin, delete_end, remove_mask, origin_type_mask,
                  std::unique_ptr<BrowsingDataFilterBuilder>(), nullptr);
 }
 
-void BrowsingDataRemoverImpl::RemoveAndReply(
-    const base::Time& delete_begin,
-    const base::Time& delete_end,
-    int remove_mask,
-    int origin_type_mask,
-    Observer* observer) {
+void BrowsingDataRemoverImpl::RemoveAndReply(const base::Time& delete_begin,
+                                             const base::Time& delete_end,
+                                             int remove_mask,
+                                             int origin_type_mask,
+                                             Observer* observer) {
   DCHECK(observer);
   RemoveInternal(delete_begin, delete_end, remove_mask, origin_type_mask,
                  std::unique_ptr<BrowsingDataFilterBuilder>(), observer);
@@ -292,18 +278,13 @@
   // Remove() and RemoveAndReply() pass a null pointer to indicate no filter.
   // No filter is equivalent to one that |IsEmptyBlacklist()|.
   if (!filter_builder) {
-    filter_builder = BrowsingDataFilterBuilder::Create(
-        BrowsingDataFilterBuilder::BLACKLIST);
+    filter_builder =
+        BrowsingDataFilterBuilder::Create(BrowsingDataFilterBuilder::BLACKLIST);
     DCHECK(filter_builder->IsEmptyBlacklist());
   }
 
-  task_queue_.emplace(
-      delete_begin,
-      delete_end,
-      remove_mask,
-      origin_type_mask,
-      std::move(filter_builder),
-      observer);
+  task_queue_.emplace(delete_begin, delete_end, remove_mask, origin_type_mask,
+                      std::move(filter_builder), observer);
 
   // If this is the only scheduled task, execute it immediately. Otherwise,
   // it will be automatically executed when all tasks scheduled before it
@@ -318,10 +299,8 @@
   DCHECK(!task_queue_.empty());
   const RemovalTask& removal_task = task_queue_.front();
 
-  RemoveImpl(removal_task.delete_begin,
-             removal_task.delete_end,
-             removal_task.remove_mask,
-             *removal_task.filter_builder,
+  RemoveImpl(removal_task.delete_begin, removal_task.delete_end,
+             removal_task.remove_mask, *removal_task.filter_builder,
              removal_task.origin_type_mask);
 }
 
@@ -363,17 +342,8 @@
   }
 
   UMA_HISTOGRAM_ENUMERATION(
-      "History.ClearBrowsingData.UserDeletedCookieOrCache",
-      choice, MAX_CHOICE_VALUE);
-
-  // Managed devices and supervised users can have restrictions on history
-  // deletion.
-  // TODO(crbug.com/668114): This should be provided via ContentBrowserClient
-  // once BrowsingDataRemoverImpl moves to content.
-  PrefService* prefs =
-      Profile::FromBrowserContext(browser_context_)->GetPrefs();
-  bool may_delete_history =
-      prefs->GetBoolean(prefs::kAllowDeletingBrowserHistory);
+      "History.ClearBrowsingData.UserDeletedCookieOrCache", choice,
+      MAX_CHOICE_VALUE);
 
   //////////////////////////////////////////////////////////////////////////////
   // INITIALIZATION
@@ -382,12 +352,13 @@
 
   //////////////////////////////////////////////////////////////////////////////
   // DATA_TYPE_DOWNLOADS
-  if ((remove_mask & DATA_TYPE_DOWNLOADS) && may_delete_history) {
+  if ((remove_mask & DATA_TYPE_DOWNLOADS) &&
+      (!embedder_delegate_ || embedder_delegate_->MayRemoveDownloadHistory())) {
     base::RecordAction(UserMetricsAction("ClearBrowsingData_Downloads"));
-    content::DownloadManager* download_manager =
+    DownloadManager* download_manager =
         BrowserContext::GetDownloadManager(browser_context_);
-    download_manager->RemoveDownloadsByURLAndTime(filter,
-                                                  delete_begin_, delete_end_);
+    download_manager->RemoveDownloadsByURLAndTime(filter, delete_begin_,
+                                                  delete_end_);
   }
 
   //////////////////////////////////////////////////////////////////////////////
@@ -399,8 +370,8 @@
     base::RecordAction(UserMetricsAction("ClearBrowsingData_ChannelIDs"));
     // Since we are running on the UI thread don't call GetURLRequestContext().
     scoped_refptr<net::URLRequestContextGetter> rq_context =
-        content::BrowserContext::GetDefaultStoragePartition(browser_context_)->
-          GetURLRequestContext();
+        BrowserContext::GetDefaultStoragePartition(browser_context_)
+            ->GetURLRequestContext();
     clear_channel_ids_.Start();
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
@@ -421,36 +392,34 @@
   // between UNPROTECTED_WEB and other origin types.
   if (remove_mask & DATA_TYPE_COOKIES &&
       origin_type_mask_ & ORIGIN_TYPE_UNPROTECTED_WEB) {
-    storage_partition_remove_mask |=
-        content::StoragePartition::REMOVE_DATA_MASK_COOKIES;
+    storage_partition_remove_mask |= StoragePartition::REMOVE_DATA_MASK_COOKIES;
   }
   if (remove_mask & DATA_TYPE_LOCAL_STORAGE) {
     storage_partition_remove_mask |=
-        content::StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE;
+        StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE;
   }
   if (remove_mask & DATA_TYPE_INDEXED_DB) {
     storage_partition_remove_mask |=
-        content::StoragePartition::REMOVE_DATA_MASK_INDEXEDDB;
+        StoragePartition::REMOVE_DATA_MASK_INDEXEDDB;
   }
   if (remove_mask & DATA_TYPE_WEB_SQL) {
-    storage_partition_remove_mask |=
-        content::StoragePartition::REMOVE_DATA_MASK_WEBSQL;
+    storage_partition_remove_mask |= StoragePartition::REMOVE_DATA_MASK_WEBSQL;
   }
   if (remove_mask & DATA_TYPE_APP_CACHE) {
     storage_partition_remove_mask |=
-        content::StoragePartition::REMOVE_DATA_MASK_APPCACHE;
+        StoragePartition::REMOVE_DATA_MASK_APPCACHE;
   }
   if (remove_mask & DATA_TYPE_SERVICE_WORKERS) {
     storage_partition_remove_mask |=
-        content::StoragePartition::REMOVE_DATA_MASK_SERVICE_WORKERS;
+        StoragePartition::REMOVE_DATA_MASK_SERVICE_WORKERS;
   }
   if (remove_mask & DATA_TYPE_CACHE_STORAGE) {
     storage_partition_remove_mask |=
-        content::StoragePartition::REMOVE_DATA_MASK_CACHE_STORAGE;
+        StoragePartition::REMOVE_DATA_MASK_CACHE_STORAGE;
   }
   if (remove_mask & DATA_TYPE_FILE_SYSTEMS) {
     storage_partition_remove_mask |=
-        content::StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS;
+        StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS;
   }
 
   // Content Decryption Modules used by Encrypted Media store licenses in a
@@ -458,10 +427,10 @@
   // Flash (which are deleted father down in this method).
   if (remove_mask & DATA_TYPE_MEDIA_LICENSES) {
     storage_partition_remove_mask |=
-        content::StoragePartition::REMOVE_DATA_MASK_PLUGIN_PRIVATE_DATA;
+        StoragePartition::REMOVE_DATA_MASK_PLUGIN_PRIVATE_DATA;
   }
 
-  content::StoragePartition* storage_partition;
+  StoragePartition* storage_partition;
   if (storage_partition_for_testing_) {
     storage_partition = storage_partition_for_testing_;
   } else {
@@ -473,22 +442,22 @@
     clear_storage_partition_data_.Start();
 
     uint32_t quota_storage_remove_mask =
-        ~content::StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT;
+        ~StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT;
 
     if (delete_begin_ == base::Time() ||
         ((origin_type_mask_ & ~ORIGIN_TYPE_UNPROTECTED_WEB) != 0)) {
       // If we're deleting since the beginning of time, or we're removing
       // protected origins, then remove persistent quota data.
       quota_storage_remove_mask |=
-          content::StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT;
+          StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT;
     }
 
     // If cookies are supposed to be conditionally deleted from the storage
     // partition, create a cookie matcher function.
-    content::StoragePartition::CookieMatcherFunction cookie_matcher;
+    StoragePartition::CookieMatcherFunction cookie_matcher;
     if (!filter_builder.IsEmptyBlacklist() &&
         (storage_partition_remove_mask &
-            content::StoragePartition::REMOVE_DATA_MASK_COOKIES)) {
+         StoragePartition::REMOVE_DATA_MASK_COOKIES)) {
       cookie_matcher = filter_builder.BuildCookieFilter();
     }
 
@@ -521,7 +490,7 @@
     // Tell the shader disk cache to clear.
     base::RecordAction(UserMetricsAction("ClearBrowsingData_ShaderCache"));
     storage_partition_remove_mask |=
-        content::StoragePartition::REMOVE_DATA_MASK_SHADER_CACHE;
+        StoragePartition::REMOVE_DATA_MASK_SHADER_CACHE;
   }
 
   //////////////////////////////////////////////////////////////////////////////
@@ -543,12 +512,8 @@
   if (embedder_delegate_) {
     clear_embedder_data_.Start();
     embedder_delegate_->RemoveEmbedderData(
-        delete_begin_,
-        delete_end_,
-        remove_mask,
-        filter_builder,
-        origin_type_mask,
-        clear_embedder_data_.GetCompletionCallback());
+        delete_begin_, delete_end_, remove_mask, filter_builder,
+        origin_type_mask, clear_embedder_data_.GetCompletionCallback());
   }
 
   // Notify in case all actions taken were synchronous.
@@ -570,7 +535,7 @@
 }
 
 void BrowsingDataRemoverImpl::OverrideStoragePartitionForTesting(
-    content::StoragePartition* storage_partition) {
+    StoragePartition* storage_partition) {
   storage_partition_for_testing_ = storage_partition;
 }
 
@@ -608,8 +573,7 @@
 
 bool BrowsingDataRemoverImpl::AllDone() {
   return !synchronous_clear_operations_.is_pending() &&
-         !clear_embedder_data_.is_pending() &&
-         !clear_cache_.is_pending() &&
+         !clear_embedder_data_.is_pending() && !clear_cache_.is_pending() &&
          !clear_channel_ids_.is_pending() &&
          !clear_http_auth_cache_.is_pending() &&
          !clear_storage_partition_data_.is_pending();
@@ -679,3 +643,5 @@
 
   return weak_ptr;
 }
+
+}  // namespace content
diff --git a/chrome/browser/browsing_data/browsing_data_remover_impl.h b/content/browser/browsing_data/browsing_data_remover_impl.h
similarity index 77%
rename from chrome/browser/browsing_data/browsing_data_remover_impl.h
rename to content/browser/browsing_data/browsing_data_remover_impl.h
index 3e87fa4..2085951 100644
--- a/chrome/browser/browsing_data/browsing_data_remover_impl.h
+++ b/content/browser/browsing_data/browsing_data_remover_impl.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_
-#define CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_
+#ifndef CONTENT_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_
+#define CONTENT_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_
 
 #include <stdint.h>
 
@@ -12,25 +12,26 @@
 
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
+#include "base/memory/weak_ptr.h"
 #include "base/observer_list.h"
+#include "base/supports_user_data.h"
 #include "base/synchronization/waitable_event_watcher.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/common/features.h"
-#include "ppapi/features/features.h"
+#include "content/common/content_export.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "storage/common/quota/quota_types.h"
 #include "url/gurl.h"
 
-class BrowsingDataRemoverFactory;
-
 namespace content {
+
 class BrowserContext;
 class BrowsingDataFilterBuilder;
 class StoragePartition;
-}
 
-class BrowsingDataRemoverImpl : public BrowsingDataRemover {
+class CONTENT_EXPORT BrowsingDataRemoverImpl
+    : public BrowsingDataRemover,
+      public base::SupportsUserData::Data {
  public:
   // Used to track the deletion of a single data storage backend.
   class SubTask {
@@ -58,13 +59,15 @@
     base::WeakPtrFactory<SubTask> weak_ptr_factory_;
   };
 
+  explicit BrowsingDataRemoverImpl(BrowserContext* browser_context);
+  ~BrowsingDataRemoverImpl() override;
+
   // Is the BrowsingDataRemoverImpl currently in the process of removing data?
   bool is_removing() { return is_removing_; }
 
   // BrowsingDataRemover implementation:
   void SetEmbedderDelegate(
-      std::unique_ptr<BrowsingDataRemoverDelegate> embedder_delegate) override;
-  BrowsingDataRemoverDelegate* GetEmbedderDelegate() const override;
+      BrowsingDataRemoverDelegate* embedder_delegate) override;
   bool DoesOriginMatchMask(
       int origin_type_mask,
       const GURL& origin,
@@ -83,14 +86,13 @@
       const base::Time& delete_end,
       int remove_mask,
       int origin_type_mask,
-      std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder)
-      override;
+      std::unique_ptr<BrowsingDataFilterBuilder> filter_builder) override;
   void RemoveWithFilterAndReply(
       const base::Time& delete_begin,
       const base::Time& delete_end,
       int remove_mask,
       int origin_type_mask,
-      std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder,
+      std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
       Observer* observer) override;
 
   void AddObserver(Observer* observer) override;
@@ -106,52 +108,42 @@
   int GetLastUsedOriginTypeMask() override;
 
   // Used for testing.
-  void OverrideStoragePartitionForTesting(
-      content::StoragePartition* storage_partition);
+  void OverrideStoragePartitionForTesting(StoragePartition* storage_partition);
 
  protected:
-  // Use BrowsingDataRemoverFactory::GetForBrowserContext to get an instance of
-  // this class. The constructor is protected so that the class is mockable.
-  explicit BrowsingDataRemoverImpl(content::BrowserContext* browser_context);
-  ~BrowsingDataRemoverImpl() override;
-
   // A common reduction of all public Remove[WithFilter][AndReply] methods.
   virtual void RemoveInternal(
       const base::Time& delete_begin,
       const base::Time& delete_end,
       int remove_mask,
       int origin_type_mask,
-      std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder,
+      std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
       Observer* observer);
 
  private:
   // Testing the private RemovalTask.
   FRIEND_TEST_ALL_PREFIXES(BrowsingDataRemoverImplTest, MultipleTasks);
 
-  friend class BrowsingDataRemoverFactory;
-
   // Represents a single removal task. Contains all parameters needed to execute
-  // it and a pointer to the observer that added it.
-  struct RemovalTask {
-    RemovalTask(
-        const base::Time& delete_begin,
-        const base::Time& delete_end,
-        int remove_mask,
-        int origin_type_mask,
-        std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder,
-        Observer* observer);
+  // it and a pointer to the observer that added it. CONTENT_EXPORTed to be
+  // visible in tests.
+  struct CONTENT_EXPORT RemovalTask {
+    RemovalTask(const base::Time& delete_begin,
+                const base::Time& delete_end,
+                int remove_mask,
+                int origin_type_mask,
+                std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
+                Observer* observer);
     ~RemovalTask();
 
     base::Time delete_begin;
     base::Time delete_end;
     int remove_mask;
     int origin_type_mask;
-    std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder;
+    std::unique_ptr<BrowsingDataFilterBuilder> filter_builder;
     Observer* observer;
   };
 
-  void Shutdown() override;
-
   // Setter for |is_removing_|; DCHECKs that we can only start removing if we're
   // not already removing, and vice-versa.
   void SetRemoving(bool is_removing);
@@ -171,7 +163,7 @@
   void RemoveImpl(const base::Time& delete_begin,
                   const base::Time& delete_end,
                   int remove_mask,
-                  const content::BrowsingDataFilterBuilder& filter_builder,
+                  const BrowsingDataFilterBuilder& filter_builder,
                   int origin_type_mask);
 
   // Notifies observers and transitions to the idle state.
@@ -188,10 +180,10 @@
   base::WeakPtr<BrowsingDataRemoverImpl> GetWeakPtr();
 
   // The browser context we're to remove from.
-  content::BrowserContext* browser_context_;
+  BrowserContext* browser_context_;
 
-  // A delegate to delete the embedder-specific data.
-  std::unique_ptr<BrowsingDataRemoverDelegate> embedder_delegate_;
+  // A delegate to delete the embedder-specific data. Owned by the embedder.
+  BrowsingDataRemoverDelegate* embedder_delegate_;
 
   // Start time to delete from.
   base::Time delete_begin_;
@@ -233,11 +225,13 @@
   base::ObserverList<Observer, true> observer_list_;
 
   // We do not own this.
-  content::StoragePartition* storage_partition_for_testing_;
+  StoragePartition* storage_partition_for_testing_;
 
   base::WeakPtrFactory<BrowsingDataRemoverImpl> weak_ptr_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverImpl);
 };
 
-#endif  // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_
+}  // namespace content
+
+#endif  // CONTENT_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_
diff --git a/chrome/browser/browsing_data/browsing_data_remover_impl_unittest.cc b/content/browser/browsing_data/browsing_data_remover_impl_unittest.cc
similarity index 90%
rename from chrome/browser/browsing_data/browsing_data_remover_impl_unittest.cc
rename to content/browser/browsing_data/browsing_data_remover_impl_unittest.cc
index 1655089e..762f38f8 100644
--- a/chrome/browser/browsing_data/browsing_data_remover_impl_unittest.cc
+++ b/content/browser/browsing_data/browsing_data_remover_impl_unittest.cc
@@ -28,23 +28,20 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
-#include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_impl.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_test_util.h"
-#include "chrome/test/base/testing_profile.h"
+#include "content/browser/browsing_data/browsing_data_remover_impl.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/browsing_data_filter_builder.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/cookie_store_factory.h"
 #include "content/public/browser/dom_storage_context.h"
 #include "content/public/browser/local_storage_usage_info.h"
 #include "content/public/browser/storage_partition.h"
+#include "content/public/test/browsing_data_remover_test_util.h"
 #include "content/public/test/mock_download_manager.h"
+#include "content/public/test/test_browser_context.h"
 #include "content/public/test/test_browser_thread.h"
 #include "content/public/test/test_browser_thread_bundle.h"
 #include "content/public/test/test_utils.h"
-#include "extensions/features/features.h"
 #include "net/cookies/cookie_store.h"
 #include "net/http/http_network_session.h"
 #include "net/http/http_transaction_factory.h"
@@ -59,10 +56,6 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/origin.h"
 
-using content::BrowserThread;
-using content::BrowserContext;
-using content::BrowsingDataFilterBuilder;
-using content::StoragePartition;
 using testing::_;
 using testing::ByRef;
 using testing::Eq;
@@ -77,6 +70,8 @@
 using testing::SizeIs;
 using testing::WithArgs;
 
+namespace content {
+
 namespace {
 
 const char kTestOrigin1[] = "http://host1.com:1/";
@@ -135,7 +130,7 @@
   TestStoragePartition() {}
   ~TestStoragePartition() override {}
 
-  // content::StoragePartition implementation.
+  // StoragePartition implementation.
   base::FilePath GetPath() override { return base::FilePath(); }
   net::URLRequestContextGetter* GetURLRequestContext() override {
     return nullptr;
@@ -144,32 +139,21 @@
     return nullptr;
   }
   storage::QuotaManager* GetQuotaManager() override { return nullptr; }
-  content::AppCacheService* GetAppCacheService() override { return nullptr; }
+  AppCacheService* GetAppCacheService() override { return nullptr; }
   storage::FileSystemContext* GetFileSystemContext() override {
     return nullptr;
   }
   storage::DatabaseTracker* GetDatabaseTracker() override { return nullptr; }
-  content::DOMStorageContext* GetDOMStorageContext() override {
+  DOMStorageContext* GetDOMStorageContext() override { return nullptr; }
+  IndexedDBContext* GetIndexedDBContext() override { return nullptr; }
+  ServiceWorkerContext* GetServiceWorkerContext() override { return nullptr; }
+  CacheStorageContext* GetCacheStorageContext() override { return nullptr; }
+  PlatformNotificationContext* GetPlatformNotificationContext() override {
     return nullptr;
   }
-  content::IndexedDBContext* GetIndexedDBContext() override { return nullptr; }
-  content::ServiceWorkerContext* GetServiceWorkerContext() override {
-    return nullptr;
-  }
-  content::CacheStorageContext* GetCacheStorageContext() override {
-    return nullptr;
-  }
-  content::PlatformNotificationContext* GetPlatformNotificationContext()
-      override {
-    return nullptr;
-  }
-  content::HostZoomMap* GetHostZoomMap() override { return nullptr; }
-  content::HostZoomLevelContext* GetHostZoomLevelContext() override {
-    return nullptr;
-  }
-  content::ZoomLevelDelegate* GetZoomLevelDelegate() override {
-    return nullptr;
-  }
+  HostZoomMap* GetHostZoomMap() override { return nullptr; }
+  HostZoomLevelContext* GetHostZoomLevelContext() override { return nullptr; }
+  ZoomLevelDelegate* GetZoomLevelDelegate() override { return nullptr; }
 
   void ClearDataForOrigin(uint32_t remove_mask,
                           uint32_t quota_storage_remove_mask,
@@ -242,9 +226,7 @@
   }
 
  private:
-  void AsyncRunCallback(const base::Closure& callback) {
-    callback.Run();
-  }
+  void AsyncRunCallback(const base::Closure& callback) { callback.Run(); }
 
   StoragePartitionRemovalData storage_partition_removal_data_;
 
@@ -267,8 +249,7 @@
  public:
   explicit ProbablySameFilterMatcher(
       const base::Callback<bool(const GURL&)>& filter)
-      : to_match_(filter) {
-  }
+      : to_match_(filter) {}
 
   virtual bool MatchAndExplain(const base::Callback<bool(const GURL&)>& filter,
                                MatchResultListener* listener) const {
@@ -277,8 +258,8 @@
     if (filter.is_null() != to_match_.is_null())
       return false;
 
-    const GURL urls_to_test_[] =
-        {kOrigin1, kOrigin2, kOrigin3, GURL("invalid spec")};
+    const GURL urls_to_test_[] = {kOrigin1, kOrigin2, kOrigin3,
+                                  GURL("invalid spec")};
     for (GURL url : urls_to_test_) {
       if (filter.Run(url) != to_match_.Run(url)) {
         if (listener)
@@ -320,8 +301,8 @@
 
   // Returns true, if the given cookie exists in the cookie store.
   bool ContainsCookie() {
-    scoped_refptr<content::MessageLoopRunner> message_loop_runner =
-        new content::MessageLoopRunner;
+    scoped_refptr<MessageLoopRunner> message_loop_runner =
+        new MessageLoopRunner();
     quit_closure_ = message_loop_runner->QuitClosure();
     get_cookie_success_ = false;
     cookie_store_->GetCookiesWithOptionsAsync(
@@ -333,8 +314,8 @@
   }
 
   void AddCookie() {
-    scoped_refptr<content::MessageLoopRunner> message_loop_runner =
-        new content::MessageLoopRunner;
+    scoped_refptr<MessageLoopRunner> message_loop_runner =
+        new MessageLoopRunner();
     quit_closure_ = message_loop_runner->QuitClosure();
     cookie_store_->SetCookieWithOptionsAsync(
         kOrigin1, "A=1", net::CookieOptions(),
@@ -377,9 +358,10 @@
  public:
   explicit RemoveChannelIDTester(BrowserContext* browser_context) {
     net::URLRequestContext* url_request_context =
-        content::BrowserContext::GetDefaultStoragePartition(browser_context)
-            ->GetURLRequestContext()->GetURLRequestContext();
-    channel_id_service_ = url_request_context-> channel_id_service();
+        BrowserContext::GetDefaultStoragePartition(browser_context)
+            ->GetURLRequestContext()
+            ->GetURLRequestContext();
+    channel_id_service_ = url_request_context->channel_id_service();
     ssl_config_service_ = url_request_context->ssl_config_service();
     ssl_config_service_->AddObserver(this);
   }
@@ -407,18 +389,15 @@
   }
 
   void GetChannelIDList(net::ChannelIDStore::ChannelIDList* channel_ids) {
-    GetChannelIDStore()->GetAllChannelIDs(
-        base::Bind(&RemoveChannelIDTester::GetAllChannelIDsCallback,
-                   channel_ids));
+    GetChannelIDStore()->GetAllChannelIDs(base::Bind(
+        &RemoveChannelIDTester::GetAllChannelIDsCallback, channel_ids));
   }
 
   net::ChannelIDStore* GetChannelIDStore() {
     return channel_id_service_->GetChannelIDStore();
   }
 
-  int ssl_config_changed_count() const {
-    return ssl_config_changed_count_;
-  }
+  int ssl_config_changed_count() const { return ssl_config_changed_count_; }
 
   // net::SSLConfigService::Observer implementation:
   void OnSSLConfigChanged() override { ssl_config_changed_count_++; }
@@ -442,14 +421,14 @@
   explicit RemoveLocalStorageTester(BrowserContext* browser_context)
       : browser_context_(browser_context) {
     dom_storage_context_ =
-        content::BrowserContext::GetDefaultStoragePartition(browser_context_)->
-            GetDOMStorageContext();
+        BrowserContext::GetDefaultStoragePartition(browser_context_)
+            ->GetDOMStorageContext();
   }
 
   // Returns true, if the given origin URL exists.
   bool DOMStorageExistsForOrigin(const GURL& origin) {
-    scoped_refptr<content::MessageLoopRunner> message_loop_runner =
-        new content::MessageLoopRunner;
+    scoped_refptr<MessageLoopRunner> message_loop_runner =
+        new MessageLoopRunner();
     quit_closure_ = message_loop_runner->QuitClosure();
     GetLocalStorageUsage();
     message_loop_runner->Run();
@@ -478,12 +457,12 @@
     base::TouchFile(storage_path.Append(kDomStorageOrigin1), now, now);
 
     base::Time one_day_ago = now - base::TimeDelta::FromDays(1);
-    base::TouchFile(storage_path.Append(kDomStorageOrigin2),
-                    one_day_ago, one_day_ago);
+    base::TouchFile(storage_path.Append(kDomStorageOrigin2), one_day_ago,
+                    one_day_ago);
 
     base::Time sixty_days_ago = now - base::TimeDelta::FromDays(60);
-    base::TouchFile(storage_path.Append(kDomStorageOrigin3),
-                    sixty_days_ago, sixty_days_ago);
+    base::TouchFile(storage_path.Append(kDomStorageOrigin3), sixty_days_ago,
+                    sixty_days_ago);
 
     base::TouchFile(storage_path.Append(kDomStorageExt), now, now);
   }
@@ -494,17 +473,16 @@
         base::Bind(&RemoveLocalStorageTester::OnGotLocalStorageUsage,
                    base::Unretained(this)));
   }
-  void OnGotLocalStorageUsage(
-      const std::vector<content::LocalStorageUsageInfo>& infos) {
+  void OnGotLocalStorageUsage(const std::vector<LocalStorageUsageInfo>& infos) {
     infos_ = infos;
     quit_closure_.Run();
   }
 
   // We don't own these pointers.
   BrowserContext* browser_context_;
-  content::DOMStorageContext* dom_storage_context_ = nullptr;
+  DOMStorageContext* dom_storage_context_ = nullptr;
 
-  std::vector<content::LocalStorageUsageInfo> infos_;
+  std::vector<LocalStorageUsageInfo> infos_;
   base::Closure quit_closure_;
 
   DISALLOW_COPY_AND_ASSIGN(RemoveLocalStorageTester);
@@ -513,20 +491,20 @@
 class RemoveDownloadsTester {
  public:
   explicit RemoveDownloadsTester(BrowserContext* browser_context)
-      : download_manager_(new content::MockDownloadManager()) {
-    content::BrowserContext::SetDownloadManagerForTesting(
+      : download_manager_(new MockDownloadManager()) {
+    BrowserContext::SetDownloadManagerForTesting(
         browser_context, base::WrapUnique(download_manager_));
     EXPECT_EQ(download_manager_,
-              content::BrowserContext::GetDownloadManager(browser_context));
+              BrowserContext::GetDownloadManager(browser_context));
     EXPECT_CALL(*download_manager_, Shutdown());
   }
 
   ~RemoveDownloadsTester() {}
 
-  content::MockDownloadManager* download_manager() { return download_manager_; }
+  MockDownloadManager* download_manager() { return download_manager_; }
 
  private:
-  content::MockDownloadManager* download_manager_;  // Owned by browser context.
+  MockDownloadManager* download_manager_;  // Owned by browser context.
 
   DISALLOW_COPY_AND_ASSIGN(RemoveDownloadsTester);
 };
@@ -535,18 +513,9 @@
 
 class BrowsingDataRemoverImplTest : public testing::Test {
  public:
-  BrowsingDataRemoverImplTest()
-      : browser_context_(new TestingProfile()) {
-    // TODO(crbug.com/668114): To create a BrowsingDataRemoverImpl, we currently
-    // need a BrowsingDataRemoverFactory which only exists for a Profile.
-    // Therefore, this test must use a TestingProfile for now. Switch it to
-    // a BrowserContext or TestBrowserContext when BrowsingDataRemoverImpl
-    // moves to content/. Furthermore, when in content/, BrowsingDataRemoverImpl
-    // will have no delegate. For now, explicitly set it to nullptr.
+  BrowsingDataRemoverImplTest() : browser_context_(new TestBrowserContext()) {
     remover_ = static_cast<BrowsingDataRemoverImpl*>(
-        BrowsingDataRemoverFactory::GetForBrowserContext(
-            browser_context_.get()));
-    remover_->SetEmbedderDelegate(nullptr);
+        BrowserContext::GetBrowsingDataRemover(browser_context_.get()));
   }
 
   ~BrowsingDataRemoverImplTest() override {}
@@ -575,9 +544,8 @@
       origin_type_mask |= BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB;
 
     BrowsingDataRemoverCompletionObserver completion_observer(remover_);
-    remover_->RemoveAndReply(
-        delete_begin, delete_end, remove_mask, origin_type_mask,
-        &completion_observer);
+    remover_->RemoveAndReply(delete_begin, delete_end, remove_mask,
+                             origin_type_mask, &completion_observer);
     completion_observer.BlockUntilCompletion();
 
     // Save so we can verify later.
@@ -605,36 +573,26 @@
         storage_partition.GetStoragePartitionRemovalData();
   }
 
-  BrowserContext* GetBrowserContext() {
-    return browser_context_.get();
-  }
+  BrowserContext* GetBrowserContext() { return browser_context_.get(); }
 
   void DestroyBrowserContext() { browser_context_.reset(); }
 
-  const base::Time& GetBeginTime() {
-    return remover_->GetLastUsedBeginTime();
-  }
+  const base::Time& GetBeginTime() { return remover_->GetLastUsedBeginTime(); }
 
-  int GetRemovalMask() {
-    return remover_->GetLastUsedRemovalMask();
-  }
+  int GetRemovalMask() { return remover_->GetLastUsedRemovalMask(); }
 
-  int GetOriginTypeMask() {
-    return remover_->GetLastUsedOriginTypeMask();
-  }
+  int GetOriginTypeMask() { return remover_->GetLastUsedOriginTypeMask(); }
 
   StoragePartitionRemovalData GetStoragePartitionRemovalData() {
     return storage_partition_removal_data_;
   }
 
-  content::MockSpecialStoragePolicy* CreateMockPolicy() {
-    mock_policy_ = new content::MockSpecialStoragePolicy();
+  MockSpecialStoragePolicy* CreateMockPolicy() {
+    mock_policy_ = new MockSpecialStoragePolicy();
     return mock_policy_.get();
   }
 
-  content::MockSpecialStoragePolicy* mock_policy() {
-    return mock_policy_.get();
-  }
+  MockSpecialStoragePolicy* mock_policy() { return mock_policy_.get(); }
 
   bool Match(const GURL& origin,
              int mask,
@@ -646,12 +604,12 @@
   // Cached pointer to BrowsingDataRemoverImpl for access to testing methods.
   BrowsingDataRemoverImpl* remover_;
 
-  content::TestBrowserThreadBundle thread_bundle_;
+  TestBrowserThreadBundle thread_bundle_;
   std::unique_ptr<BrowserContext> browser_context_;
 
   StoragePartitionRemovalData storage_partition_removal_data_;
 
-  scoped_refptr<content::MockSpecialStoragePolicy> mock_policy_;
+  scoped_refptr<MockSpecialStoragePolicy> mock_policy_;
 
   DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverImplTest);
 };
@@ -733,7 +691,7 @@
 // Test that removing cookies clears HTTP auth data.
 TEST_F(BrowsingDataRemoverImplTest, ClearHttpAuthCache_RemoveCookies) {
   net::HttpNetworkSession* http_session =
-      content::BrowserContext::GetDefaultStoragePartition(GetBrowserContext())
+      BrowserContext::GetDefaultStoragePartition(GetBrowserContext())
           ->GetURLRequestContext()
           ->GetURLRequestContext()
           ->http_transaction_factory()
@@ -821,7 +779,7 @@
 }
 
 TEST_F(BrowsingDataRemoverImplTest, RemoveUnprotectedLocalStorageForever) {
-  content::MockSpecialStoragePolicy* policy = CreateMockPolicy();
+  MockSpecialStoragePolicy* policy = CreateMockPolicy();
   // Protect kOrigin1.
   policy->AddProtected(kOrigin1.GetOrigin());
 
@@ -850,7 +808,7 @@
 
 TEST_F(BrowsingDataRemoverImplTest, RemoveProtectedLocalStorageForever) {
   // Protect kOrigin1.
-  content::MockSpecialStoragePolicy* policy = CreateMockPolicy();
+  MockSpecialStoragePolicy* policy = CreateMockPolicy();
   policy->AddProtected(kOrigin1.GetOrigin());
 
   BlockUntilBrowsingDataRemoved(base::Time(), base::Time::Max(),
@@ -879,9 +837,7 @@
 }
 
 TEST_F(BrowsingDataRemoverImplTest, RemoveLocalStorageForLastWeek) {
-#if BUILDFLAG(ENABLE_EXTENSIONS)
   CreateMockPolicy();
-#endif
 
   BlockUntilBrowsingDataRemoved(
       base::Time::Now() - base::TimeDelta::FromDays(7), base::Time::Max(),
@@ -917,8 +873,8 @@
   int removal_mask = BrowsingDataRemover::DATA_TYPE_DOWNLOADS |
                      BrowsingDataRemover::DATA_TYPE_COOKIES;
 
-  BlockUntilBrowsingDataRemoved(base::Time(), base::Time::Max(),
-                                removal_mask, false);
+  BlockUntilBrowsingDataRemoved(base::Time(), base::Time::Max(), removal_mask,
+                                false);
 
   EXPECT_EQ(removal_mask, GetRemovalMask());
   EXPECT_EQ(BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
@@ -969,9 +925,7 @@
 
 TEST_F(BrowsingDataRemoverImplTest,
        RemoveQuotaManagedDataForeverOnlyTemporary) {
-#if BUILDFLAG(ENABLE_EXTENSIONS)
   CreateMockPolicy();
-#endif
 
   BlockUntilBrowsingDataRemoved(
       base::Time(), base::Time::Max(),
@@ -1015,9 +969,7 @@
 
 TEST_F(BrowsingDataRemoverImplTest,
        RemoveQuotaManagedDataForeverOnlyPersistent) {
-#if BUILDFLAG(ENABLE_EXTENSIONS)
   CreateMockPolicy();
-#endif
 
   BlockUntilBrowsingDataRemoved(
       base::Time(), base::Time::Max(),
@@ -1060,9 +1012,7 @@
 }
 
 TEST_F(BrowsingDataRemoverImplTest, RemoveQuotaManagedDataForeverNeither) {
-#if BUILDFLAG(ENABLE_EXTENSIONS)
   CreateMockPolicy();
-#endif
 
   BlockUntilBrowsingDataRemoved(
       base::Time(), base::Time::Max(),
@@ -1231,7 +1181,7 @@
 }
 
 TEST_F(BrowsingDataRemoverImplTest, RemoveQuotaManagedUnprotectedOrigins) {
-  content::MockSpecialStoragePolicy* policy = CreateMockPolicy();
+  MockSpecialStoragePolicy* policy = CreateMockPolicy();
   // Protect kOrigin1.
   policy->AddProtected(kOrigin1.GetOrigin());
 
@@ -1275,7 +1225,7 @@
 }
 
 TEST_F(BrowsingDataRemoverImplTest, RemoveQuotaManagedProtectedSpecificOrigin) {
-  content::MockSpecialStoragePolicy* policy = CreateMockPolicy();
+  MockSpecialStoragePolicy* policy = CreateMockPolicy();
   // Protect kOrigin1.
   policy->AddProtected(kOrigin1.GetOrigin());
 
@@ -1326,7 +1276,7 @@
 }
 
 TEST_F(BrowsingDataRemoverImplTest, RemoveQuotaManagedProtectedOrigins) {
-  content::MockSpecialStoragePolicy* policy = CreateMockPolicy();
+  MockSpecialStoragePolicy* policy = CreateMockPolicy();
   // Protect kOrigin1.
   policy->AddProtected(kOrigin1.GetOrigin());
 
@@ -1374,9 +1324,7 @@
 
 TEST_F(BrowsingDataRemoverImplTest,
        RemoveQuotaManagedIgnoreExtensionsAndDevTools) {
-#if BUILDFLAG(ENABLE_EXTENSIONS)
   CreateMockPolicy();
-#endif
 
   BlockUntilBrowsingDataRemoved(
       base::Time(), base::Time::Max(),
@@ -1438,7 +1386,7 @@
 
 TEST_F(BrowsingDataRemoverImplTest, CompletionInhibition) {
   BrowsingDataRemoverImpl* remover = static_cast<BrowsingDataRemoverImpl*>(
-      BrowsingDataRemoverFactory::GetForBrowserContext(GetBrowserContext()));
+      BrowserContext::GetBrowsingDataRemover(GetBrowserContext()));
 
   // The |completion_inhibitor| on the stack should prevent removal sessions
   // from completing until after ContinueToCompletion() is called.
@@ -1470,7 +1418,7 @@
 
 TEST_F(BrowsingDataRemoverImplTest, EarlyShutdown) {
   BrowsingDataRemoverImpl* remover = static_cast<BrowsingDataRemoverImpl*>(
-      BrowsingDataRemoverFactory::GetForBrowserContext(GetBrowserContext()));
+      BrowserContext::GetBrowsingDataRemover(GetBrowserContext()));
   InspectableCompletionObserver completion_observer(remover);
   BrowsingDataRemoverCompletionInhibitor completion_inhibitor(remover);
   remover->RemoveAndReply(
@@ -1500,9 +1448,8 @@
   base::Callback<bool(const GURL&)> filter =
       BrowsingDataFilterBuilder::BuildNoopFilter();
 
-  EXPECT_CALL(
-      *tester.download_manager(),
-      RemoveDownloadsByURLAndTime(ProbablySameFilter(filter), _, _));
+  EXPECT_CALL(*tester.download_manager(),
+              RemoveDownloadsByURLAndTime(ProbablySameFilter(filter), _, _));
 
   BlockUntilBrowsingDataRemoved(base::Time(), base::Time::Max(),
                                 BrowsingDataRemover::DATA_TYPE_DOWNLOADS,
@@ -1516,9 +1463,8 @@
   builder->AddRegisterableDomain(kTestRegisterableDomain1);
   base::Callback<bool(const GURL&)> filter = builder->BuildGeneralFilter();
 
-  EXPECT_CALL(
-      *tester.download_manager(),
-      RemoveDownloadsByURLAndTime(ProbablySameFilter(filter), _, _));
+  EXPECT_CALL(*tester.download_manager(),
+              RemoveDownloadsByURLAndTime(ProbablySameFilter(filter), _, _));
 
   BlockUntilOriginDataRemoved(base::Time(), base::Time::Max(),
                               BrowsingDataRemover::DATA_TYPE_DOWNLOADS,
@@ -1533,8 +1479,7 @@
   class Target : public BrowsingDataRemover::Observer {
    public:
     Target(MultipleTasksObserver* parent, BrowsingDataRemover* remover)
-        : parent_(parent),
-          observer_(this) {
+        : parent_(parent), observer_(this) {
       observer_.Add(remover);
     }
     ~Target() override {}
@@ -1555,13 +1500,9 @@
         last_called_target_(nullptr) {}
   ~MultipleTasksObserver() {}
 
-  void ClearLastCalledTarget() {
-    last_called_target_ = nullptr;
-  }
+  void ClearLastCalledTarget() { last_called_target_ = nullptr; }
 
-  Target* GetLastCalledTarget() {
-    return last_called_target_;
-  }
+  Target* GetLastCalledTarget() { return last_called_target_; }
 
   Target* target_a() { return &target_a_; }
   Target* target_b() { return &target_b_; }
@@ -1580,7 +1521,7 @@
 
 TEST_F(BrowsingDataRemoverImplTest, MultipleTasks) {
   BrowsingDataRemoverImpl* remover = static_cast<BrowsingDataRemoverImpl*>(
-      BrowsingDataRemoverFactory::GetForBrowserContext(GetBrowserContext()));
+      BrowserContext::GetBrowsingDataRemover(GetBrowserContext()));
   EXPECT_FALSE(remover->is_removing());
 
   std::unique_ptr<BrowsingDataFilterBuilder> filter_builder_1(
@@ -1628,8 +1569,8 @@
     // Remove.* instead. This also serves as a test that those methods are all
     // correctly reduced to RemoveInternal().
     if (!task.observer && task.filter_builder->IsEmptyBlacklist()) {
-      remover->Remove(task.delete_begin, task.delete_end,
-                      task.remove_mask, task.origin_type_mask);
+      remover->Remove(task.delete_begin, task.delete_end, task.remove_mask,
+                      task.origin_type_mask);
     } else if (task.filter_builder->IsEmptyBlacklist()) {
       remover->RemoveAndReply(task.delete_begin, task.delete_end,
                               task.remove_mask, task.origin_type_mask,
@@ -1639,10 +1580,9 @@
                                 task.remove_mask, task.origin_type_mask,
                                 std::move(task.filter_builder));
     } else {
-      remover->RemoveWithFilterAndReply(task.delete_begin, task.delete_end,
-                                        task.remove_mask, task.origin_type_mask,
-                                        std::move(task.filter_builder),
-                                        task.observer);
+      remover->RemoveWithFilterAndReply(
+          task.delete_begin, task.delete_end, task.remove_mask,
+          task.origin_type_mask, std::move(task.filter_builder), task.observer);
     }
   }
 
@@ -1676,7 +1616,7 @@
 // inhibition is executed correctly and doesn't crash.
 TEST_F(BrowsingDataRemoverImplTest, MultipleTasksInQuickSuccession) {
   BrowsingDataRemoverImpl* remover = static_cast<BrowsingDataRemoverImpl*>(
-      BrowsingDataRemoverFactory::GetForBrowserContext(GetBrowserContext()));
+      BrowserContext::GetBrowsingDataRemover(GetBrowserContext()));
   EXPECT_FALSE(remover->is_removing());
 
   int test_removal_masks[] = {
@@ -1713,3 +1653,5 @@
 
   EXPECT_FALSE(remover->is_removing());
 }
+
+}  // namespace content
diff --git a/content/browser/child_process_launcher_helper_posix.cc b/content/browser/child_process_launcher_helper_posix.cc
index 06c54ce..96efa99 100644
--- a/content/browser/child_process_launcher_helper_posix.cc
+++ b/content/browser/child_process_launcher_helper_posix.cc
@@ -120,7 +120,7 @@
       key++;
       DCHECK(key < kContentDynamicDescriptorMax);
     }
-    command_line->AppendSwitchASCII(switches::kSharedFiles,
+    command_line->AppendSwitchASCII(service_manager::switches::kSharedFiles,
                                     file_switch_value_builder.switch_value());
   }
 
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index d9686c76..04f3a54 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -1984,7 +1984,7 @@
   }
 
   DCHECK(child_connection_);
-  renderer_cmd->AppendSwitchASCII(switches::kPrimordialPipeToken,
+  renderer_cmd->AppendSwitchASCII(service_manager::switches::kServicePipeToken,
                                   child_connection_->service_token());
 
 #if defined(OS_WIN) && !defined(OFFICIAL_BUILD)
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
index 628328ce..b88a806d 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -1370,6 +1370,15 @@
   bool is_mobile_optimized = IsMobileOptimizedFrame(frame_metadata);
   gesture_provider_.SetDoubleTapSupportForPageEnabled(!is_mobile_optimized);
 
+  float dip_scale = view_.GetDipScale();
+  float top_controls_pix = frame_metadata.top_controls_height * dip_scale;
+  float top_shown_pix =
+      top_controls_pix * frame_metadata.top_controls_shown_ratio;
+
+  if (ime_adapter_android_)
+    ime_adapter_android_->UpdateFrameInfo(frame_metadata.selection.start,
+                                          dip_scale, top_shown_pix);
+
   if (!content_view_core_)
     return;
 
@@ -1396,22 +1405,17 @@
       frame_metadata.top_controls_height *
           frame_metadata.top_controls_shown_ratio));
 
-  float dip_scale = view_.GetDipScale();
-  float top_controls_pix = frame_metadata.top_controls_height * dip_scale;
-  float top_shown_pix =
-      top_controls_pix * frame_metadata.top_controls_shown_ratio;
   bool top_changed = !FloatEquals(top_shown_pix, prev_top_shown_pix_);
-
-  float bottom_controls_pix = frame_metadata.bottom_controls_height * dip_scale;
-  float bottom_shown_pix =
-      bottom_controls_pix * frame_metadata.bottom_controls_shown_ratio;
-  bool bottom_changed = !FloatEquals(bottom_shown_pix, prev_bottom_shown_pix_);
-
   if (top_changed) {
     float translate = top_shown_pix - top_controls_pix;
     view_.OnTopControlsChanged(translate, top_shown_pix);
     prev_top_shown_pix_ = top_shown_pix;
   }
+
+  float bottom_controls_pix = frame_metadata.bottom_controls_height * dip_scale;
+  float bottom_shown_pix =
+      bottom_controls_pix * frame_metadata.bottom_controls_shown_ratio;
+  bool bottom_changed = !FloatEquals(bottom_shown_pix, prev_bottom_shown_pix_);
   if (bottom_changed) {
     float translate = bottom_controls_pix - bottom_shown_pix;
     view_.OnBottomControlsChanged(translate, bottom_shown_pix);
@@ -1420,16 +1424,12 @@
 
   // All offsets and sizes are in CSS pixels.
   content_view_core_->UpdateFrameInfo(
-      frame_metadata.root_scroll_offset,
-      frame_metadata.page_scale_factor,
+      frame_metadata.root_scroll_offset, frame_metadata.page_scale_factor,
       gfx::Vector2dF(frame_metadata.min_page_scale_factor,
                      frame_metadata.max_page_scale_factor),
-      frame_metadata.root_layer_size,
-      frame_metadata.scrollable_viewport_size,
+      frame_metadata.root_layer_size, frame_metadata.scrollable_viewport_size,
       frame_metadata.top_controls_height,
-      frame_metadata.top_controls_shown_ratio,
-      is_mobile_optimized,
-      frame_metadata.selection.start);
+      frame_metadata.top_controls_shown_ratio, is_mobile_optimized);
 }
 
 void RenderWidgetHostViewAndroid::ShowInternal() {
diff --git a/content/common/service_manager/child_connection.h b/content/common/service_manager/child_connection.h
index 4799df57..9fd5877 100644
--- a/content/common/service_manager/child_connection.h
+++ b/content/common/service_manager/child_connection.h
@@ -50,8 +50,8 @@
   }
 
   // A token which must be passed to the child process via
-  // |switches::kPrimordialPipeToken| in order for the child to initialize its
-  // end of the Service Manager connection pipe.
+  // |service_manager::switches::kServicePipeToken| in order for the child to
+  // initialize its end of the Service Manager connection pipe.
   std::string service_token() const { return service_token_; }
 
   // Sets the child connection's process handle. This should be called as soon
diff --git a/content/common/service_manager/service_manager_connection_impl.cc b/content/common/service_manager/service_manager_connection_impl.cc
index 24e96620..a12b3748 100644
--- a/content/common/service_manager/service_manager_connection_impl.cc
+++ b/content/common/service_manager/service_manager_connection_impl.cc
@@ -303,8 +303,10 @@
                      const std::string& name) override {
     DCHECK(io_thread_checker_.CalledOnValidThread());
     auto it = request_handlers_.find(name);
-    DCHECK(it != request_handlers_.end())
-        << "Can't create service " << name << ". No handler found.";
+    if (it == request_handlers_.end()) {
+      LOG(ERROR) << "Can't create service " << name << ". No handler found.";
+      return;
+    }
     it->second.Run(std::move(request));
   }
 
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
index a63e57a1..3de174c 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
@@ -1578,9 +1578,7 @@
             float minPageScaleFactor, float maxPageScaleFactor, float contentWidth,
             float contentHeight, float viewportWidth, float viewportHeight,
             float browserControlsHeightDp, float browserControlsShownRatio,
-            boolean isMobileOptimizedHint, boolean hasInsertionMarker,
-            boolean isInsertionMarkerVisible, float insertionMarkerHorizontal,
-            float insertionMarkerTop, float insertionMarkerBottom) {
+            boolean isMobileOptimizedHint) {
         TraceEvent.begin("ContentViewCore:updateFrameInfo");
         mIsMobileOptimizedHint = isMobileOptimizedHint;
         // Adjust contentWidth/Height to be always at least as big as
@@ -1645,10 +1643,6 @@
             mBrowserAccessibilityManager.notifyFrameInfoInitialized();
         }
 
-        mImeAdapter.onUpdateFrameInfo(mRenderCoordinates, hasInsertionMarker,
-                isInsertionMarkerVisible, insertionMarkerHorizontal, insertionMarkerTop,
-                insertionMarkerBottom);
-
         TraceEvent.end("ContentViewCore:updateFrameInfo");
     }
 
diff --git a/content/public/android/java/src/org/chromium/content/browser/input/CursorAnchorInfoController.java b/content/public/android/java/src/org/chromium/content/browser/input/CursorAnchorInfoController.java
index 718db16..3a3c420 100644
--- a/content/public/android/java/src/org/chromium/content/browser/input/CursorAnchorInfoController.java
+++ b/content/public/android/java/src/org/chromium/content/browser/input/CursorAnchorInfoController.java
@@ -12,7 +12,6 @@
 
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.SuppressFBWarnings;
-import org.chromium.content.browser.RenderCoordinates;
 
 import java.util.Arrays;
 
@@ -144,6 +143,8 @@
 
     /**
      * Sets coordinates system parameters and selection marker information.
+     * @param scale device scale factor.
+     * @param contentOffsetYPix Y offset below the browser controls.
      * @param hasInsertionMarker {@code true} if the insertion marker exists.
      * @param isInsertionMarkerVisible {@code true} if the insertion insertion marker is visible.
      * @param insertionMarkerHorizontal X coordinate of the top of the first selection marker.
@@ -152,10 +153,9 @@
      * @param view The attached view.
      */
     @SuppressFBWarnings("FE_FLOATING_POINT_EQUALITY")
-    public void onUpdateFrameInfo(@Nonnull RenderCoordinates renderCoordinates,
-            boolean hasInsertionMarker, boolean isInsertionMarkerVisible,
-            float insertionMarkerHorizontal, float insertionMarkerTop,
-            float insertionMarkerBottom, @Nonnull View view) {
+    public void onUpdateFrameInfo(float scale, float contentOffsetYPix, boolean hasInsertionMarker,
+            boolean isInsertionMarkerVisible, float insertionMarkerHorizontal,
+            float insertionMarkerTop, float insertionMarkerBottom, @Nonnull View view) {
         if (!mIsEditable) return;
 
         // Reuse {@param #mViewOrigin} to avoid object creation, as this method is supposed to be
@@ -168,10 +168,8 @@
         //
         // We need to prepare parameters that convert such values to physical pixels, in the
         // screen coordinate. Hence the following values are derived.
-        float scale = renderCoordinates.getDeviceScaleFactor();
         float translationX = mViewOrigin[0];
-        float translationY = mViewOrigin[1] + renderCoordinates.getContentOffsetYPix();
-
+        float translationY = mViewOrigin[1] + contentOffsetYPix;
         if (!mHasCoordinateInfo
                 || scale != mScale
                 || translationX != mTranslationX
diff --git a/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java b/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
index d9905d5..d7f7015 100644
--- a/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
+++ b/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
@@ -33,7 +33,6 @@
 import org.chromium.blink_public.web.WebInputEventModifier;
 import org.chromium.blink_public.web.WebInputEventType;
 import org.chromium.blink_public.web.WebTextInputMode;
-import org.chromium.content.browser.RenderCoordinates;
 import org.chromium.content.browser.ViewUtils;
 import org.chromium.content.browser.picker.InputDialogContainer;
 import org.chromium.content_public.browser.ImeEventObserver;
@@ -823,8 +822,8 @@
 
     /**
      * Notified when a frame has been produced by the renderer and all the associated metadata.
-     * @param renderCoordinates coordinate information to convert CSS (document) coordinates to
-     *                          View-local Physical (screen) coordinates
+     * @param scaleFactor device scale factor.
+     * @param contentOffsetYPix Y offset below the browser controls.
      * @param hasInsertionMarker Whether the insertion marker is visible or not.
      * @param insertionMarkerHorizontal X coordinates (in view-local DIP pixels) of the insertion
      *                                  marker if it exists. Will be ignored otherwise.
@@ -833,13 +832,15 @@
      * @param insertionMarkerBottom Y coordinates (in view-local DIP pixels) of the bottom of
      *                              the insertion marker if it exists. Will be ignored otherwise.
      */
-    public void onUpdateFrameInfo(RenderCoordinates renderCoordinates, boolean hasInsertionMarker,
-            boolean isInsertionMarkerVisible, float insertionMarkerHorizontal,
-            float insertionMarkerTop, float insertionMarkerBottom) {
+    @CalledByNative
+    private void updateFrameInfo(float scaleFactor, float contentOffsetYPix,
+            boolean hasInsertionMarker, boolean isInsertionMarkerVisible,
+            float insertionMarkerHorizontal, float insertionMarkerTop,
+            float insertionMarkerBottom) {
         if (mCursorAnchorInfoController == null) return;
-        mCursorAnchorInfoController.onUpdateFrameInfo(renderCoordinates, hasInsertionMarker,
-                isInsertionMarkerVisible, insertionMarkerHorizontal, insertionMarkerTop,
-                insertionMarkerBottom, mContainerView);
+        mCursorAnchorInfoController.onUpdateFrameInfo(scaleFactor, contentOffsetYPix,
+                hasInsertionMarker, isInsertionMarkerVisible, insertionMarkerHorizontal,
+                insertionMarkerTop, insertionMarkerBottom, mContainerView);
     }
 
     @CalledByNative
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/input/CursorAnchorInfoControllerTest.java b/content/public/android/javatests/src/org/chromium/content/browser/input/CursorAnchorInfoControllerTest.java
index 756e8b5..13409a4 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/input/CursorAnchorInfoControllerTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/input/CursorAnchorInfoControllerTest.java
@@ -19,7 +19,6 @@
 
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.MinAndroidSdkLevel;
-import org.chromium.content.browser.RenderCoordinates;
 import org.chromium.content.browser.test.ContentJUnit4ClassRunner;
 import org.chromium.content.browser.test.util.TestInputMethodManagerWrapper;
 
@@ -30,13 +29,6 @@
 @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP)
 @TargetApi(Build.VERSION_CODES.LOLLIPOP)
 public class CursorAnchorInfoControllerTest {
-    private static RenderCoordinates createRenderCoordinates(float deviceScaleFactor,
-            float contentOffsetYPix) {
-        RenderCoordinates renderCoordinates = new RenderCoordinates();
-        renderCoordinates.setFrameInfoForTest(deviceScaleFactor, contentOffsetYPix);
-        return renderCoordinates;
-    }
-
     private static final class TestViewDelegate implements CursorAnchorInfoController.ViewDelegate {
         public int locationX;
         public int locationY;
@@ -154,8 +146,7 @@
         // Make sure that the focused node is considered to be non-editable by default.
         controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f, 3.0f}, view);
         composingTextDelegate.updateTextAndSelection(controller, "0", 0, 1, 0, 1);
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(1.0f, 0.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(0, immw.getUpdateCursorAnchorInfoCounter());
 
         controller.focusedNodeChanged(false);
@@ -165,8 +156,7 @@
         // is not editable.
         controller.setCompositionCharacterBounds(new float[] {30.0f, 1.0f, 32.0f, 3.0f}, view);
         composingTextDelegate.updateTextAndSelection(controller, "1", 0, 1, 0, 1);
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 100.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(1.0f, 100.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(0, immw.getUpdateCursorAnchorInfoCounter());
     }
 
@@ -193,8 +183,7 @@
         controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f, 3.0f}, view);
         composingTextDelegate.updateTextAndSelection(controller, "0", 0, 1, 0, 1);
         Assert.assertEquals(0, immw.getUpdateCursorAnchorInfoCounter());
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(1.0f, 0.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(1, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo());
         AssertionHelper.assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
@@ -208,8 +197,7 @@
         immw.clearLastCursorAnchorInfo();
 
         // Make sure that 2nd call of #onUpdateFrameInfo() is ignored.
-        controller.onUpdateFrameInfo(createRenderCoordinates(2.0f, 0.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(2.0f, 0.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(1, immw.getUpdateCursorAnchorInfoCounter());
 
         // Make sure that #onUpdateFrameInfo() is immediately called because the matrix info is
@@ -235,8 +223,7 @@
         Assert.assertEquals(3, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertScaleAndTranslate(2.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo());
         immw.clearLastCursorAnchorInfo();
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(1.0f, 0.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(4, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo());
         AssertionHelper.assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
@@ -258,8 +245,7 @@
                 true /* immediate request */, false /* monitor request */, view));
         controller.focusedNodeChanged(false);
         composingTextDelegate.clearTextAndSelection(controller);
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 100.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(1.0f, 100.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(4, immw.getUpdateCursorAnchorInfoCounter());
 
         // Make sure that CURSOR_UPDATE_IMMEDIATE can be enabled again.
@@ -267,8 +253,7 @@
         composingTextDelegate.clearTextAndSelection(controller);
         Assert.assertTrue(controller.onRequestCursorUpdates(
                 true /* immediate request */, false /* monitor request */, view));
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(1.0f, 0.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(5, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo());
         AssertionHelper.assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
@@ -303,8 +288,7 @@
         controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f, 3.0f}, view);
         composingTextDelegate.updateTextAndSelection(controller, "0", 0, 1, 0, 1);
         Assert.assertEquals(0, immw.getUpdateCursorAnchorInfoCounter());
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(1.0f, 0.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(1, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo());
         AssertionHelper.assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
@@ -320,16 +304,14 @@
         // Make sure that #updateCursorAnchorInfo() is not be called if any coordinate parameter is
         // changed for better performance.
         controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f, 3.0f}, view);
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(1.0f, 0.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(1, immw.getUpdateCursorAnchorInfoCounter());
 
         // Make sure that #updateCursorAnchorInfo() is called if #setCompositionCharacterBounds()
         // is called with a different parameter.
         controller.setCompositionCharacterBounds(new float[] {30.0f, 1.0f, 32.0f, 3.0f}, view);
         Assert.assertEquals(2, immw.getUpdateCursorAnchorInfoCounter());
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(1.0f, 0.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(2, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo());
         AssertionHelper.assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
@@ -346,8 +328,7 @@
         // is called with a different parameter.
         composingTextDelegate.updateTextAndSelection(controller, "1", 0, 1, 0, 1);
         Assert.assertEquals(2, immw.getUpdateCursorAnchorInfoCounter());
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(1.0f, 0.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(3, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo());
         AssertionHelper.assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
@@ -362,8 +343,7 @@
 
         // Make sure that #updateCursorAnchorInfo() is called if #onUpdateFrameInfo()
         // is called with a different parameter.
-        controller.onUpdateFrameInfo(createRenderCoordinates(2.0f, 0.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(2.0f, 0.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(4, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertScaleAndTranslate(2.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo());
         AssertionHelper.assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
@@ -379,8 +359,7 @@
         // Make sure that #updateCursorAnchorInfo() is called when the view origin is changed.
         viewDelegate.locationX = 7;
         viewDelegate.locationY = 9;
-        controller.onUpdateFrameInfo(createRenderCoordinates(2.0f, 0.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(2.0f, 0.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(5, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertScaleAndTranslate(2.0f, 7.0f, 9.0f, immw.getLastCursorAnchorInfo());
         AssertionHelper.assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
@@ -404,8 +383,7 @@
         composingTextDelegate.clearTextAndSelection(controller);
         controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f, 3.0f}, view);
         composingTextDelegate.updateTextAndSelection(controller, "0", 0, 1, 0, 1);
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(1.0f, 0.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(5, immw.getUpdateCursorAnchorInfoCounter());
 
         // Make sure that CURSOR_UPDATE_MONITOR can be enabled again.
@@ -418,8 +396,7 @@
         Assert.assertEquals(5, immw.getUpdateCursorAnchorInfoCounter());
         viewDelegate.locationX = 0;
         viewDelegate.locationY = 0;
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                true, true, 2.0f, 0.0f, 3.0f, view);
+        controller.onUpdateFrameInfo(1.0f, 0.0f, true, true, 2.0f, 0.0f, 3.0f, view);
         Assert.assertEquals(6, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo());
         AssertionHelper.assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
@@ -455,8 +432,8 @@
         composingTextDelegate.updateTextAndSelection(controller, "01234", 1, 3, 1, 1);
         controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f, 3.0f,
                 4.0f, 1.1f, 6.0f, 2.9f}, view);
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                false, false, Float.NaN, Float.NaN, Float.NaN, view);
+        controller.onUpdateFrameInfo(
+                1.0f, 0.0f, false, false, Float.NaN, Float.NaN, Float.NaN, view);
         Assert.assertEquals(1, immw.getUpdateCursorAnchorInfoCounter());
         Assert.assertEquals(null, immw.getLastCursorAnchorInfo().getCharacterBounds(0));
         Assert.assertEquals(0, immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0));
@@ -494,8 +471,8 @@
                 false /* immediate request */, true /* monitor request */, view));
 
         composingTextDelegate.updateTextAndSelection(controller, "01234", 3, 3, 1, 1);
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                false, false, Float.NaN, Float.NaN, Float.NaN, view);
+        controller.onUpdateFrameInfo(
+                1.0f, 0.0f, false, false, Float.NaN, Float.NaN, Float.NaN, view);
         Assert.assertEquals(1, immw.getUpdateCursorAnchorInfoCounter());
         Assert.assertEquals(null, immw.getLastCursorAnchorInfo().getCharacterBounds(0));
         Assert.assertEquals(0, immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0));
@@ -528,23 +505,21 @@
                 false /* immediate request */, true /* monitor request */, view));
 
         // Test no insertion marker.
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                false, false, Float.NaN, Float.NaN, Float.NaN, view);
+        controller.onUpdateFrameInfo(
+                1.0f, 0.0f, false, false, Float.NaN, Float.NaN, Float.NaN, view);
         Assert.assertEquals(1, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertHasNoInsertionMarker(immw.getLastCursorAnchorInfo());
         immw.clearLastCursorAnchorInfo();
 
         // Test a visible insertion marker.
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                true, true, 10.0f, 23.0f, 29.0f, view);
+        controller.onUpdateFrameInfo(1.0f, 0.0f, true, true, 10.0f, 23.0f, 29.0f, view);
         Assert.assertEquals(2, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 10.0f,
                 23.0f, 29.0f, 29.0f, immw.getLastCursorAnchorInfo());
         immw.clearLastCursorAnchorInfo();
 
         // Test a invisible insertion marker.
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                true, false, 10.0f, 23.0f, 29.0f, view);
+        controller.onUpdateFrameInfo(1.0f, 0.0f, true, false, 10.0f, 23.0f, 29.0f, view);
         Assert.assertEquals(3, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_INVISIBLE_REGION, 10.0f,
                 23.0f, 29.0f, 29.0f, immw.getLastCursorAnchorInfo());
@@ -570,8 +545,8 @@
         // Test no transformation
         viewDelegate.locationX = 0;
         viewDelegate.locationY = 0;
-        controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f),
-                false, false, Float.NaN, Float.NaN, Float.NaN, view);
+        controller.onUpdateFrameInfo(
+                1.0f, 0.0f, false, false, Float.NaN, Float.NaN, Float.NaN, view);
         Assert.assertEquals(1, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo());
         immw.clearLastCursorAnchorInfo();
@@ -579,8 +554,8 @@
         // device scale factor == 2.0
         viewDelegate.locationX = 0;
         viewDelegate.locationY = 0;
-        controller.onUpdateFrameInfo(createRenderCoordinates(2.0f, 0.0f),
-                false, false, Float.NaN, Float.NaN, Float.NaN, view);
+        controller.onUpdateFrameInfo(
+                2.0f, 0.0f, false, false, Float.NaN, Float.NaN, Float.NaN, view);
         Assert.assertEquals(2, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertScaleAndTranslate(2.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo());
         immw.clearLastCursorAnchorInfo();
@@ -589,8 +564,8 @@
         // view origin == (10, 141)
         viewDelegate.locationX = 10;
         viewDelegate.locationY = 141;
-        controller.onUpdateFrameInfo(createRenderCoordinates(2.0f, 0.0f),
-                false, false, Float.NaN, Float.NaN, Float.NaN, view);
+        controller.onUpdateFrameInfo(
+                2.0f, 0.0f, false, false, Float.NaN, Float.NaN, Float.NaN, view);
         Assert.assertEquals(3, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertScaleAndTranslate(
                 2.0f, 10.0f, 141.0f, immw.getLastCursorAnchorInfo());
@@ -601,8 +576,8 @@
         // view origin == (10, 141)
         viewDelegate.locationX = 10;
         viewDelegate.locationY = 141;
-        controller.onUpdateFrameInfo(createRenderCoordinates(2.0f, 40.0f),
-                false, false, Float.NaN, Float.NaN, Float.NaN, view);
+        controller.onUpdateFrameInfo(
+                2.0f, 40.0f, false, false, Float.NaN, Float.NaN, Float.NaN, view);
         Assert.assertEquals(4, immw.getUpdateCursorAnchorInfoCounter());
         AssertionHelper.assertScaleAndTranslate(
                 2.0f, 10.0f, 181.0f, immw.getLastCursorAnchorInfo());
diff --git a/content/public/app/BUILD.gn b/content/public/app/BUILD.gn
index 82f65ba0..6ba7505c 100644
--- a/content/public/app/BUILD.gn
+++ b/content/public/app/BUILD.gn
@@ -38,6 +38,9 @@
   "//base:i18n",
   "//content:export",
   "//content/public/common:common_sources",
+  "//services/service_manager/background:lib",
+  "//services/service_manager/embedder",
+  "//services/service_manager/public/cpp",
 ]
 
 if (use_aura) {
diff --git a/content/public/app/DEPS b/content/public/app/DEPS
index 8fe7158..35f5311f 100644
--- a/content/public/app/DEPS
+++ b/content/public/app/DEPS
@@ -3,4 +3,5 @@
   "+content/public/gpu/content_gpu_client.h",
   "+content/public/renderer/content_renderer_client.h",
   "+content/public/utility/content_utility_client.h",
+  "+services/service_manager",
 ]
diff --git a/content/public/app/content_main_delegate.cc b/content/public/app/content_main_delegate.cc
index e46f80a..b024c52 100644
--- a/content/public/app/content_main_delegate.cc
+++ b/content/public/app/content_main_delegate.cc
@@ -53,6 +53,33 @@
   return false;
 }
 
+service_manager::ProcessType ContentMainDelegate::OverrideProcessType() {
+  return service_manager::ProcessType::kDefault;
+}
+
+std::unique_ptr<base::Value> ContentMainDelegate::CreateServiceCatalog() {
+  return nullptr;
+}
+
+void ContentMainDelegate::AdjustServiceProcessCommandLine(
+    const service_manager::Identity& identity,
+    base::CommandLine* command_line) {}
+
+bool ContentMainDelegate::ShouldTerminateServiceManagerOnInstanceQuit(
+    const service_manager::Identity& identity,
+    int* exit_code) {
+  return false;
+}
+
+void ContentMainDelegate::OnServiceManagerInitialized(
+    const base::Closure& quit_closure,
+    service_manager::BackgroundServiceManager* service_manager) {}
+
+std::unique_ptr<service_manager::Service>
+ContentMainDelegate::CreateEmbeddedService(const std::string& service_name) {
+  return nullptr;
+}
+
 ContentBrowserClient* ContentMainDelegate::CreateContentBrowserClient() {
 #if defined(CHROME_MULTIPLE_DLL_CHILD)
   return NULL;
diff --git a/content/public/app/content_main_delegate.h b/content/public/app/content_main_delegate.h
index a94502f..4bc14ff 100644
--- a/content/public/app/content_main_delegate.h
+++ b/content/public/app/content_main_delegate.h
@@ -11,6 +11,14 @@
 
 #include "build/build_config.h"
 #include "content/common/content_export.h"
+#include "services/service_manager/background/background_service_manager.h"
+#include "services/service_manager/embedder/process_type.h"
+#include "services/service_manager/public/cpp/identity.h"
+#include "services/service_manager/public/cpp/service.h"
+
+namespace base {
+class Value;
+}
 
 namespace content {
 
@@ -81,6 +89,41 @@
   // Returns whether or not profiler recording should be enabled.
   virtual bool ShouldEnableProfilerRecording();
 
+  // Overrides the Service Manager process type to use for the currently running
+  // process.
+  virtual service_manager::ProcessType OverrideProcessType();
+
+  // Creates a service catalog for the Service Manager to use when embedded by
+  // content.
+  virtual std::unique_ptr<base::Value> CreateServiceCatalog();
+
+  // Allows the content embedder to adjust arbitrary command line arguments for
+  // any service process started by the Service Manager.
+  virtual void AdjustServiceProcessCommandLine(
+      const service_manager::Identity& identity,
+      base::CommandLine* command_line);
+
+  // Indicates if the Service Manager should be terminated in response to a
+  // specific service instance quitting. If this returns |true|, the value in
+  // |*exit_code| will be returned from the Service Manager's process on exit.
+  virtual bool ShouldTerminateServiceManagerOnInstanceQuit(
+      const service_manager::Identity& identity,
+      int* exit_code);
+
+  // Allows the embedder to perform arbitrary initialization within the Service
+  // Manager process immediately before the Service Manager runs its main loop.
+  //
+  // |quit_closure| is a callback the embedder may retain and invoke at any time
+  // to cleanly terminate Service Manager execution.
+  virtual void OnServiceManagerInitialized(
+      const base::Closure& quit_closure,
+      service_manager::BackgroundServiceManager* service_manager);
+
+  // Allows the embedder to instantiate one of its own embedded services by
+  // name. If the named service is unknown, this should return null.
+  virtual std::unique_ptr<service_manager::Service> CreateEmbeddedService(
+      const std::string& service_name);
+
  protected:
   friend class ContentClientInitializer;
 
diff --git a/content/public/browser/BUILD.gn b/content/public/browser/BUILD.gn
index acbe740..2775d68 100644
--- a/content/public/browser/BUILD.gn
+++ b/content/public/browser/BUILD.gn
@@ -71,6 +71,8 @@
     "browser_thread_delegate.h",
     "browser_url_handler.h",
     "browsing_data_filter_builder.h",
+    "browsing_data_remover.h",
+    "browsing_data_remover_delegate.h",
     "cache_storage_context.h",
     "cache_storage_usage_info.h",
     "cdm_registry.h",
diff --git a/content/public/browser/browser_context.h b/content/public/browser/browser_context.h
index e06049b..f5cd8abf 100644
--- a/content/public/browser/browser_context.h
+++ b/content/public/browser/browser_context.h
@@ -53,6 +53,8 @@
 class BackgroundSyncController;
 class BlobHandle;
 class BrowserPluginGuestManager;
+class BrowsingDataRemover;
+class BrowsingDataRemoverDelegate;
 class DownloadManager;
 class DownloadManagerDelegate;
 class PermissionManager;
@@ -85,10 +87,15 @@
   // mount points. Currenty, non-nullptr value is returned only on ChromeOS.
   static storage::ExternalMountPoints* GetMountPoints(BrowserContext* context);
 
-  static content::StoragePartition* GetStoragePartition(
-      BrowserContext* browser_context, SiteInstance* site_instance);
-  static content::StoragePartition* GetStoragePartitionForSite(
-      BrowserContext* browser_context, const GURL& site);
+  // Returns a BrowsingDataRemover that can schedule data deletion tasks
+  // for this |context|.
+  static BrowsingDataRemover* GetBrowsingDataRemover(BrowserContext* context);
+
+  static StoragePartition* GetStoragePartition(BrowserContext* browser_context,
+                                               SiteInstance* site_instance);
+  static StoragePartition* GetStoragePartitionForSite(
+      BrowserContext* browser_context,
+      const GURL& site);
   using StoragePartitionCallback = base::Callback<void(StoragePartition*)>;
   static void ForEachStoragePartition(
       BrowserContext* browser_context,
@@ -105,7 +112,7 @@
       std::unique_ptr<base::hash_set<base::FilePath>> active_paths,
       const base::Closure& done);
 
-  static content::StoragePartition* GetDefaultStoragePartition(
+  static StoragePartition* GetDefaultStoragePartition(
       BrowserContext* browser_context);
 
   using BlobCallback = base::Callback<void(std::unique_ptr<BlobHandle>)>;
@@ -226,6 +233,10 @@
   // nullptr otherwise.
   virtual BackgroundSyncController* GetBackgroundSyncController() = 0;
 
+  // Returns the BrowsingDataRemoverDelegate for this context. This will be
+  // called once per context. It's valid to return nullptr.
+  virtual BrowsingDataRemoverDelegate* GetBrowsingDataRemoverDelegate();
+
   // Creates the main net::URLRequestContextGetter. It's called only once.
   virtual net::URLRequestContextGetter* CreateRequestContext(
       ProtocolHandlerMap* protocol_handlers,
diff --git a/chrome/browser/browsing_data/browsing_data_remover.h b/content/public/browser/browsing_data_remover.h
similarity index 87%
rename from chrome/browser/browsing_data/browsing_data_remover.h
rename to content/public/browser/browsing_data_remover.h
index 757d8a8..6414b28 100644
--- a/chrome/browser/browsing_data/browsing_data_remover.h
+++ b/content/public/browser/browsing_data_remover.h
@@ -2,20 +2,26 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_
-#define CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_
+#ifndef CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_H_
+#define CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_H_
 
 #include <memory>
+
 #include "base/callback_forward.h"
 #include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_delegate.h"
-#include "components/keyed_service/core/keyed_service.h"
+
+class GURL;
+
+namespace storage {
+class SpecialStoragePolicy;
+}
 
 namespace content {
+
 class BrowsingDataFilterBuilder;
-}
+class BrowsingDataRemoverDelegate;
 
 ////////////////////////////////////////////////////////////////////////////////
 // BrowsingDataRemover is responsible for removing data related to browsing:
@@ -25,8 +31,8 @@
 //
 //  0. Instantiation.
 //
-//       BrowsingDataRemover* remover =
-//           BrowsingDataRemoverFactory::GetForBrowserContext(browser_context);
+//       content::BrowsingDataRemover* remover =
+//           content::BrowserContext::GetBrowsingDataRemover(browser_context);
 //
 //  1. No observer.
 //
@@ -34,7 +40,7 @@
 //
 //  2. Using an observer to report when one's own removal task is finished.
 //
-//       class CookiesDeleter : public BrowsingDataRemover::Observer {
+//       class CookiesDeleter : public content::BrowsingDataRemover::Observer {
 //         CookiesDeleter() { remover->AddObserver(this); }
 //         ~CookiesDeleter() { remover->RemoveObserver(this); }
 //
@@ -52,7 +58,7 @@
 //
 // TODO(crbug.com/668114): BrowsingDataRemover does not currently support plugin
 // data deletion. Use PluginDataRemover instead.
-class BrowsingDataRemover : public KeyedService {
+class BrowsingDataRemover {
  public:
   // Mask used for Remove.
   enum DataType {
@@ -128,11 +134,9 @@
     virtual ~Observer() {}
   };
 
-  // Called by the embedder to provide the delegate that will take care of
-  // deleting embedder-specific data.
+  // A delegate that will take care of deleting embedder-specific data.
   virtual void SetEmbedderDelegate(
-      std::unique_ptr<BrowsingDataRemoverDelegate> embedder_delegate) = 0;
-  virtual BrowsingDataRemoverDelegate* GetEmbedderDelegate() const = 0;
+      BrowsingDataRemoverDelegate* embedder_delegate) = 0;
 
   // Determines whether |origin| matches the |origin_type_mask| according to
   // the |special_storage_policy|.
@@ -164,7 +168,7 @@
       const base::Time& delete_end,
       int remove_mask,
       int origin_type_mask,
-      std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder) = 0;
+      std::unique_ptr<BrowsingDataFilterBuilder> filter_builder) = 0;
 
   // A version of the above that in addition informs the |observer| when the
   // removal task is finished.
@@ -173,7 +177,7 @@
       const base::Time& delete_end,
       int remove_mask,
       int origin_type_mask,
-      std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder,
+      std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
       Observer* observer) = 0;
 
   // Observers.
@@ -200,4 +204,6 @@
   virtual int GetLastUsedOriginTypeMask() = 0;
 };
 
-#endif // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_H_
+}  // namespace content
+
+#endif  // CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_H_
diff --git a/chrome/browser/browsing_data/browsing_data_remover_delegate.h b/content/public/browser/browsing_data_remover_delegate.h
similarity index 77%
rename from chrome/browser/browsing_data/browsing_data_remover_delegate.h
rename to content/public/browser/browsing_data_remover_delegate.h
index 4483fd7..eaf0b94 100644
--- a/chrome/browser/browsing_data/browsing_data_remover_delegate.h
+++ b/content/public/browser/browsing_data_remover_delegate.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_DELEGATE_H_
-#define CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_DELEGATE_H_
+#ifndef CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_
+#define CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_
 
 #include "base/callback_forward.h"
 
@@ -13,14 +13,14 @@
 class Time;
 }
 
-namespace content {
-class BrowsingDataFilterBuilder;
-}
-
 namespace storage {
 class SpecialStoragePolicy;
 }
 
+namespace content {
+
+class BrowsingDataFilterBuilder;
+
 class BrowsingDataRemoverDelegate {
  public:
   // Determines whether |origin| matches |origin_type_mask| given
@@ -39,14 +39,19 @@
   // being called on the UI and IO thread.
   virtual EmbedderOriginTypeMatcher GetOriginTypeMatcher() const = 0;
 
+  // Whether the embedder allows the removal of download history.
+  virtual bool MayRemoveDownloadHistory() const = 0;
+
   // Removes embedder-specific data.
   virtual void RemoveEmbedderData(
       const base::Time& delete_begin,
       const base::Time& delete_end,
       int remove_mask,
-      const content::BrowsingDataFilterBuilder& filter_builder,
+      const BrowsingDataFilterBuilder& filter_builder,
       int origin_type_mask,
       const base::Closure& callback) = 0;
 };
 
-#endif  // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_DELEGATE_H_
+}  // namespace content
+
+#endif  // CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
index 0cfdf64..080a98d6 100644
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -540,15 +540,18 @@
   virtual void BrowserURLHandlerCreated(BrowserURLHandler* handler) {}
 
   // Clears browser cache.
+  // TODO(crbug.com/668114): Deprecated. Use BrowsingDataRemover instead.
   virtual void ClearCache(RenderFrameHost* rfh) {}
 
   // Clears browser cookies.
+  // TODO(crbug.com/668114): Deprecated. Use BrowsingDataRemover instead.
   virtual void ClearCookies(RenderFrameHost* rfh) {}
 
   // Clears |browser_context|'s data stored for the given |origin|.
   // The datatypes to be removed are specified by |remove_cookies|,
   // |remove_storage|, and |remove_cache|. Note that cookies should be removed
   // for the entire eTLD+1 of |origin|. Must call |callback| when finished.
+  // TODO(crbug.com/668114): Depreacated. Use BrowsingDataRemover instead.
   virtual void ClearSiteData(content::BrowserContext* browser_context,
                              const url::Origin& origin,
                              bool remove_cookies,
diff --git a/chrome/browser/browsing_data/browsing_data_remover_test_util.cc b/content/public/test/browsing_data_remover_test_util.cc
similarity index 89%
rename from chrome/browser/browsing_data/browsing_data_remover_test_util.cc
rename to content/public/test/browsing_data_remover_test_util.cc
index 6677ff7d..453fc9f 100644
--- a/chrome/browser/browsing_data/browsing_data_remover_test_util.cc
+++ b/content/public/test/browsing_data_remover_test_util.cc
@@ -2,11 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/browsing_data/browsing_data_remover_test_util.h"
+#include "content/public/test/browsing_data_remover_test_util.h"
+
+namespace content {
 
 BrowsingDataRemoverCompletionObserver::BrowsingDataRemoverCompletionObserver(
     BrowsingDataRemover* remover)
-    : message_loop_runner_(new content::MessageLoopRunner), observer_(this) {
+    : message_loop_runner_(new MessageLoopRunner()), observer_(this) {
   observer_.Add(remover);
 }
 
@@ -47,7 +49,7 @@
 
 void BrowsingDataRemoverCompletionInhibitor::BlockUntilNearCompletion() {
   message_loop_runner_->Run();
-  message_loop_runner_ = new content::MessageLoopRunner;
+  message_loop_runner_ = new MessageLoopRunner();
 }
 
 void BrowsingDataRemoverCompletionInhibitor::ContinueToCompletion() {
@@ -62,3 +64,5 @@
   continue_to_completion_callback_ = continue_to_completion;
   message_loop_runner_->Quit();
 }
+
+}  // namespace content
diff --git a/chrome/browser/browsing_data/browsing_data_remover_test_util.h b/content/public/test/browsing_data_remover_test_util.h
similarity index 85%
rename from chrome/browser/browsing_data/browsing_data_remover_test_util.h
rename to content/public/test/browsing_data_remover_test_util.h
index bb0847c..ac069b6 100644
--- a/chrome/browser/browsing_data/browsing_data_remover_test_util.h
+++ b/content/public/test/browsing_data_remover_test_util.h
@@ -2,15 +2,17 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_TEST_UTIL_H_
-#define CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_TEST_UTIL_H_
+#ifndef CONTENT_PUBLIC_TEST_BROWSING_DATA_REMOVER_TEST_UTIL_H_
+#define CONTENT_PUBLIC_TEST_BROWSING_DATA_REMOVER_TEST_UTIL_H_
 
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/scoped_observer.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
+#include "content/public/browser/browsing_data_remover.h"
 #include "content/public/test/test_utils.h"
 
+namespace content {
+
 // This class can be used to wait for a BrowsingDataRemover to complete
 // operation. It is not suitable for repeated use.
 class BrowsingDataRemoverCompletionObserver
@@ -26,7 +28,7 @@
   void OnBrowsingDataRemoverDone() override;
 
  private:
-  scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
+  scoped_refptr<MessageLoopRunner> message_loop_runner_;
   ScopedObserver<BrowsingDataRemover, BrowsingDataRemover::Observer> observer_;
 
   DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverCompletionObserver);
@@ -64,4 +66,6 @@
   DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverCompletionInhibitor);
 };
 
-#endif  // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_TEST_UTIL_H_
+}  // namespace content
+
+#endif  // CONTENT_PUBLIC_TEST_BROWSING_DATA_REMOVER_TEST_UTIL_H_
diff --git a/content/public/test/cache_test_util.h b/content/public/test/cache_test_util.h
index 01e97da..53f0019 100644
--- a/content/public/test/cache_test_util.h
+++ b/content/public/test/cache_test_util.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_BROWSING_DATA_CACHE_TEST_UTIL_H_
-#define CHROME_BROWSER_BROWSING_DATA_CACHE_TEST_UTIL_H_
+#ifndef CONTENT_BROWSER_BROWSING_DATA_CACHE_TEST_UTIL_H_
+#define CONTENT_BROWSER_BROWSING_DATA_CACHE_TEST_UTIL_H_
 
 #include <set>
 #include <vector>
@@ -17,7 +17,7 @@
 // A util class that can be used to create and retreive cache entries.
 class CacheTestUtil {
  public:
-  explicit CacheTestUtil(content::StoragePartition* partition_);
+  explicit CacheTestUtil(StoragePartition* partition_);
 
   ~CacheTestUtil();
 
@@ -25,7 +25,7 @@
 
   std::vector<std::string> GetEntryKeys();
 
-  content::StoragePartition* partition() { return partition_; }
+  StoragePartition* partition() { return partition_; }
   disk_cache::Backend* backend() { return backend_; }
 
  private:
@@ -45,7 +45,7 @@
 
   base::Callback<void(int)> done_callback_;
 
-  content::StoragePartition* partition_;
+  StoragePartition* partition_;
   disk_cache::Backend* backend_ = nullptr;
   std::vector<disk_cache::Entry*> entries_;
   std::unique_ptr<disk_cache::Backend::Iterator> iterator_;
@@ -57,6 +57,6 @@
   int remaining_tasks_;
 };
 
-}  // namespace content
+}  // content
 
-#endif  // CHROME_BROWSER_BROWSING_DATA_CACHE_TEST_UTIL_H_
+#endif  // CONTENT_BROWSER_BROWSING_DATA_CACHE_TEST_UTIL_H_
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index f2a8396..e20d9dfc 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -4616,17 +4616,13 @@
     observer.DidCreateScriptContext(context, world_id);
 }
 
-void RenderFrameImpl::WillReleaseScriptContext(blink::WebLocalFrame* frame,
-                                               v8::Local<v8::Context> context,
+void RenderFrameImpl::WillReleaseScriptContext(v8::Local<v8::Context> context,
                                                int world_id) {
-  DCHECK_EQ(frame_, frame);
-
   for (auto& observer : observers_)
     observer.WillReleaseScriptContext(context, world_id);
 }
 
-void RenderFrameImpl::DidChangeScrollOffset(blink::WebLocalFrame* frame) {
-  DCHECK_EQ(frame_, frame);
+void RenderFrameImpl::DidChangeScrollOffset() {
   render_view_->StartNavStateSyncTimerIfNecessary(this);
 
   for (auto& observer : observers_)
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 4678434e..4884aac 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -627,10 +627,9 @@
   void DidCreateScriptContext(blink::WebLocalFrame* frame,
                               v8::Local<v8::Context> context,
                               int world_id) override;
-  void WillReleaseScriptContext(blink::WebLocalFrame* frame,
-                                v8::Local<v8::Context> context,
+  void WillReleaseScriptContext(v8::Local<v8::Context> context,
                                 int world_id) override;
-  void DidChangeScrollOffset(blink::WebLocalFrame* frame) override;
+  void DidChangeScrollOffset() override;
   void WillInsertBody(blink::WebLocalFrame* frame) override;
   void ReportFindInPageMatchCount(int request_id,
                                   int count,
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index d64ba09..b6674d6 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -54,6 +54,8 @@
     "../public/test/browser_test_base.h",
     "../public/test/browser_test_utils.cc",
     "../public/test/browser_test_utils.h",
+    "../public/test/browsing_data_remover_test_util.cc",
+    "../public/test/browsing_data_remover_test_util.h",
     "../public/test/cache_test_util.cc",
     "../public/test/cache_test_util.h",
     "../public/test/content_test_suite_base.cc",
@@ -1052,6 +1054,7 @@
     "../browser/browser_thread_unittest.cc",
     "../browser/browser_url_handler_impl_unittest.cc",
     "../browser/browsing_data/browsing_data_filter_builder_impl_unittest.cc",
+    "../browser/browsing_data/browsing_data_remover_impl_unittest.cc",
     "../browser/browsing_data/clear_site_data_throttle_unittest.cc",
     "../browser/byte_stream_unittest.cc",
     "../browser/cache_storage/cache_storage_blob_to_disk_cache_unittest.cc",
diff --git a/content/test/gpu/gpu_tests/pixel_expectations.py b/content/test/gpu/gpu_tests/pixel_expectations.py
index 798ccc2..73ab14d 100644
--- a/content/test/gpu/gpu_tests/pixel_expectations.py
+++ b/content/test/gpu/gpu_tests/pixel_expectations.py
@@ -50,5 +50,5 @@
     self.Flaky('Pixel_OffscreenCanvas2DResizeOnWorker',
         ['win10', ('intel', 0x1912)], bug=690663)
 
-    # TODO(jbauman): Re-enable when references images created.
-    self.Fail('Pixel_DirectComposition_Video_*', ['win'], bug=704389)
+    # TODO(jbauman): Fix this.
+    self.Fail('Pixel_DirectComposition_Video_MP4', ['win', 'intel'], bug=704389)
diff --git a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
index ac7e78f..b2be761 100644
--- a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
+++ b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
@@ -1047,6 +1047,25 @@
         ['linux', 'amd'], bug=658844)
 
     # Linux AMD R7 240
+    self.Fail('conformance2/textures/canvas/' +
+        'tex-2d-rg8ui-rg_integer-unsigned_byte.html',
+        ['linux', ('amd', 0x6613)], bug=710392)
+    self.Fail('conformance2/textures/canvas/' +
+        'tex-2d-rgb8ui-rgb_integer-unsigned_byte.html',
+        ['linux', ('amd', 0x6613)], bug=710392)
+    self.Fail('conformance2/textures/canvas/' +
+        'tex-2d-rgba8ui-rgba_integer-unsigned_byte.html',
+        ['linux', ('amd', 0x6613)], bug=710392)
+    self.Fail('conformance2/textures/webgl_canvas/' +
+        'tex-2d-rg8ui-rg_integer-unsigned_byte.html',
+        ['linux', ('amd', 0x6613)], bug=710392)
+    self.Fail('conformance2/textures/webgl_canvas/' +
+        'tex-2d-rgb8ui-rgb_integer-unsigned_byte.html',
+        ['linux', ('amd', 0x6613)], bug=710392)
+    self.Fail('conformance2/textures/webgl_canvas/' +
+        'tex-2d-rgba8ui-rgba_integer-unsigned_byte.html',
+        ['linux', ('amd', 0x6613)], bug=710392)
+
     self.Fail('conformance2/textures/image_bitmap_from_video/' +
         'tex-2d-rgba16f-rgba-float.html',
         ['linux', ('amd', 0x6613)], bug=701138)
diff --git a/mash/package/BUILD.gn b/mash/package/BUILD.gn
deleted file mode 100644
index 7fe1221..0000000
--- a/mash/package/BUILD.gn
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-source_set("package") {
-  sources = [
-    "mash_packaged_service.cc",
-    "mash_packaged_service.h",
-  ]
-
-  deps = [
-    "//mash/catalog_viewer:lib",
-    "//mash/catalog_viewer/public/interfaces:constants",
-    "//mash/public/interfaces",
-    "//mash/quick_launch:lib",
-    "//mash/quick_launch/public/interfaces:constants",
-    "//mash/session:lib",
-    "//mash/session/public/interfaces:constants",
-    "//mash/task_viewer:lib",
-    "//mash/task_viewer/public/interfaces:constants",
-    "//services/service_manager/public/cpp",
-    "//services/service_manager/public/interfaces",
-    "//services/ui:lib",
-    "//services/ui/ime/test_ime_driver:lib",
-  ]
-
-  if (is_chromeos) {
-    deps += [
-      "//ash/autoclick/mus:lib",
-      "//ash/mus:lib",
-      "//ash/touch_hud/mus:lib",
-    ]
-  }
-
-  if (is_linux && !is_android) {
-    deps += [ "//components/font_service:lib" ]
-  }
-}
diff --git a/mash/package/DEPS b/mash/package/DEPS
deleted file mode 100644
index 1f9c06f2..0000000
--- a/mash/package/DEPS
+++ /dev/null
@@ -1,8 +0,0 @@
-include_rules = [
-  "+ash/autoclick",
-  "+ash/mus",
-  "+ash/touch_hud",
-  "+components/font_service",
-  "+services/ui/ime/test_ime_driver",
-  "+services/ui/service.h",
-]
diff --git a/mash/package/mash_packaged_service.cc b/mash/package/mash_packaged_service.cc
deleted file mode 100644
index b5f45e2d..0000000
--- a/mash/package/mash_packaged_service.cc
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "mash/package/mash_packaged_service.h"
-
-#include "base/base_switches.h"
-#include "base/command_line.h"
-#include "base/debug/debugger.h"
-#include "base/memory/ptr_util.h"
-#include "base/process/process.h"
-#include "mash/catalog_viewer/catalog_viewer.h"
-#include "mash/catalog_viewer/public/interfaces/constants.mojom.h"
-#include "mash/quick_launch/public/interfaces/constants.mojom.h"
-#include "mash/quick_launch/quick_launch.h"
-#include "mash/session/public/interfaces/constants.mojom.h"
-#include "mash/session/session.h"
-#include "mash/task_viewer/public/interfaces/constants.mojom.h"
-#include "mash/task_viewer/task_viewer.h"
-#include "services/service_manager/public/cpp/service_context.h"
-#include "services/ui/ime/test_ime_driver/test_ime_application.h"
-#include "services/ui/public/interfaces/constants.mojom.h"
-#include "services/ui/service.h"
-
-#if defined(OS_CHROMEOS)
-#include "ash/autoclick/mus/autoclick_application.h"  // nogncheck
-#include "ash/mus/window_manager_application.h"  // nogncheck
-#include "ash/public/interfaces/constants.mojom.h"    // nogncheck
-#include "ash/touch_hud/mus/touch_hud_application.h"  // nogncheck
-#endif
-
-#if defined(OS_LINUX)
-#include "components/font_service/font_service_app.h"
-#endif
-
-namespace mash {
-
-MashPackagedService::MashPackagedService() {
-  registry_.AddInterface<ServiceFactory>(this);
-}
-
-MashPackagedService::~MashPackagedService() {}
-
-void MashPackagedService::OnBindInterface(
-    const service_manager::ServiceInfo& source_info,
-    const std::string& interface_name,
-    mojo::ScopedMessagePipeHandle interface_pipe) {
-  registry_.BindInterface(source_info.identity, interface_name,
-                          std::move(interface_pipe));
-}
-
-void MashPackagedService::Create(
-    const service_manager::Identity& remote_identity,
-    mojo::InterfaceRequest<ServiceFactory> request) {
-  service_factory_bindings_.AddBinding(this, std::move(request));
-}
-
-void MashPackagedService::CreateService(
-    service_manager::mojom::ServiceRequest request,
-    const std::string& mojo_name) {
-  if (context_) {
-    LOG(ERROR) << "request to create additional service " << mojo_name;
-    return;
-  }
-  std::unique_ptr<service_manager::Service> service = CreateService(mojo_name);
-  if (service) {
-    context_.reset(new service_manager::ServiceContext(
-        std::move(service), std::move(request)));
-    return;
-  }
-  LOG(ERROR) << "unknown name " << mojo_name;
-  NOTREACHED();
-}
-
-// Please see header file for details on adding new services.
-std::unique_ptr<service_manager::Service> MashPackagedService::CreateService(
-    const std::string& name) {
-  const std::string debugger_target =
-      base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
-          switches::kWaitForDebugger);
-  if (!debugger_target.empty()) {
-    if (name == debugger_target) {
-      LOG(WARNING) << "waiting for debugger to attach for service " << name
-                   << " pid=" << base::Process::Current().Pid();
-      base::debug::WaitForDebugger(120, true);
-    }
-  }
-
-#if defined(OS_CHROMEOS)
-  if (name == ash::mojom::kServiceName)
-    return base::WrapUnique(new ash::mus::WindowManagerApplication);
-  if (name == "accessibility_autoclick")
-    return base::WrapUnique(new ash::autoclick::AutoclickApplication);
-  if (name == "touch_hud")
-    return base::WrapUnique(new ash::touch_hud::TouchHudApplication);
-#endif
-  if (name == catalog_viewer::mojom::kServiceName)
-    return base::WrapUnique(new mash::catalog_viewer::CatalogViewer);
-  if (name == session::mojom::kServiceName)
-    return base::WrapUnique(new mash::session::Session);
-  if (name == ui::mojom::kServiceName)
-    return base::WrapUnique(new ui::Service);
-  if (name == quick_launch::mojom::kServiceName)
-    return base::WrapUnique(new mash::quick_launch::QuickLaunch);
-  if (name == task_viewer::mojom::kServiceName)
-    return base::WrapUnique(new mash::task_viewer::TaskViewer);
-  if (name == "test_ime_driver")
-    return base::WrapUnique(new ui::test::TestIMEApplication);
-#if defined(OS_LINUX)
-  if (name == "font_service")
-    return base::WrapUnique(new font_service::FontServiceApp);
-#endif
-  return nullptr;
-}
-
-}  // namespace mash
diff --git a/mash/package/mash_packaged_service.h b/mash/package/mash_packaged_service.h
deleted file mode 100644
index a136e75..0000000
--- a/mash/package/mash_packaged_service.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef MASH_PACKAGE_MASH_PACKAGED_SERVICE_H_
-#define MASH_PACKAGE_MASH_PACKAGED_SERVICE_H_
-
-#include <memory>
-
-#include "mojo/public/cpp/bindings/binding_set.h"
-#include "services/service_manager/public/cpp/binder_registry.h"
-#include "services/service_manager/public/cpp/interface_factory.h"
-#include "services/service_manager/public/cpp/service.h"
-#include "services/service_manager/public/interfaces/service_factory.mojom.h"
-
-namespace service_manager {
-class ServiceContext;
-}
-
-namespace mash {
-
-// MashPackagedService is a Service implementation that starts all the mash
-// apps. It's used when mash is packaged inside chrome or tests. To use you'll
-// need a manifest similar to what is used by chrome and browser_tests.
-// Things to do when adding a new service/app:
-//   - Add a manifest to the new service.
-//   - Update manifests of services that are going to use this new service. e.g.
-//     chrome_manifest.
-//   - Add the new serivce to be a data_dep of the service that is using this
-//     new service.
-//   - Add the new service to chrome_mash's deps section and packaged_services
-//     section.
-//   - Add the new service to mash_browser_tests's deps section and
-//     packaged_services section.
-//   - Add an entry for the new service in MashPackagedService::CreateService().
-class MashPackagedService : public service_manager::Service,
-                            public service_manager::mojom::ServiceFactory,
-                            public service_manager::InterfaceFactory<
-                                service_manager::mojom::ServiceFactory> {
- public:
-  MashPackagedService();
-  ~MashPackagedService() override;
-
-  // service_manager::Service:
-  void OnBindInterface(const service_manager::ServiceInfo& source_info,
-                       const std::string& interface_name,
-                       mojo::ScopedMessagePipeHandle interface_pipe) override;
-
-  // service_manager::InterfaceFactory<ServiceFactory>
-  void Create(const service_manager::Identity& remote_identity,
-              mojo::InterfaceRequest<ServiceFactory> request) override;
-
-  // ServiceFactory:
-  void CreateService(service_manager::mojom::ServiceRequest request,
-                     const std::string& mojo_name) override;
-
- private:
-  std::unique_ptr<service_manager::Service> CreateService(
-      const std::string& name);
-
-  std::unique_ptr<service_manager::ServiceContext> context_;
-  service_manager::BinderRegistry registry_;
-  mojo::BindingSet<ServiceFactory> service_factory_bindings_;
-
-  DISALLOW_COPY_AND_ASSIGN(MashPackagedService);
-};
-
-}  // namespace mash
-
-#endif  // MASH_PACKAGE_MASH_PACKAGED_SERVICE_H_
diff --git a/net/quic/chromium/bidirectional_stream_quic_impl.cc b/net/quic/chromium/bidirectional_stream_quic_impl.cc
index 513b2e2..04278f1 100644
--- a/net/quic/chromium/bidirectional_stream_quic_impl.cc
+++ b/net/quic/chromium/bidirectional_stream_quic_impl.cc
@@ -73,10 +73,9 @@
   delegate_ = delegate;
   request_info_ = request_info;
 
-  int rv = stream_request_.StartRequest(
-      session_, &stream_,
-      base::Bind(&BidirectionalStreamQuicImpl::OnStreamReady,
-                 weak_factory_.GetWeakPtr()));
+  stream_request_ = session_->CreateStreamRequest();
+  int rv = stream_request_->StartRequest(base::Bind(
+      &BidirectionalStreamQuicImpl::OnStreamReady, weak_factory_.GetWeakPtr()));
   if (rv == OK) {
     OnStreamReady(rv);
   } else if (!was_handshake_confirmed_) {
@@ -306,6 +305,8 @@
   DCHECK_NE(ERR_IO_PENDING, rv);
   DCHECK(rv == OK || !stream_);
   if (rv == OK) {
+    stream_ = stream_request_->ReleaseStream();
+    stream_request_.reset();
     stream_->SetDelegate(this);
     if (!was_handshake_confirmed_ && request_info_->method == "POST") {
       waiting_for_confirmation_ = true;
diff --git a/net/quic/chromium/bidirectional_stream_quic_impl.h b/net/quic/chromium/bidirectional_stream_quic_impl.h
index 0c656521..38fb1ab 100644
--- a/net/quic/chromium/bidirectional_stream_quic_impl.h
+++ b/net/quic/chromium/bidirectional_stream_quic_impl.h
@@ -84,7 +84,7 @@
 
   base::WeakPtr<QuicChromiumClientSession> session_;
   bool was_handshake_confirmed_;  // True if the crypto handshake succeeded.
-  QuicChromiumClientSession::StreamRequest stream_request_;
+  std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request_;
   QuicChromiumClientStream* stream_;  // Non-owning.
 
   const BidirectionalStreamRequestInfo* request_info_;
diff --git a/net/quic/chromium/quic_chromium_client_session.cc b/net/quic/chromium/quic_chromium_client_session.cc
index e7a3342..0701f6a1 100644
--- a/net/quic/chromium/quic_chromium_client_session.cc
+++ b/net/quic/chromium/quic_chromium_client_session.cc
@@ -186,37 +186,43 @@
 
 }  // namespace
 
-QuicChromiumClientSession::StreamRequest::StreamRequest() : stream_(nullptr) {}
+QuicChromiumClientSession::StreamRequest::StreamRequest(
+    const base::WeakPtr<QuicChromiumClientSession>& session)
+    : session_(session), stream_(nullptr) {}
 
 QuicChromiumClientSession::StreamRequest::~StreamRequest() {
-  CancelRequest();
+  if (stream_)
+    stream_->Reset(QUIC_STREAM_CANCELLED);
+
+  if (session_)
+    session_->CancelRequest(this);
 }
 
 int QuicChromiumClientSession::StreamRequest::StartRequest(
-    const base::WeakPtr<QuicChromiumClientSession>& session,
-    QuicChromiumClientStream** stream,
     const CompletionCallback& callback) {
-  session_ = session;
-  stream_ = stream;
-  int rv = session_->TryCreateStream(this, stream_);
+  DCHECK(session_);
+  int rv = session_->TryCreateStream(this);
   if (rv == ERR_IO_PENDING) {
     callback_ = callback;
+  } else {
+    session_.reset();
   }
 
   return rv;
 }
 
-void QuicChromiumClientSession::StreamRequest::CancelRequest() {
-  if (session_)
-    session_->CancelRequest(this);
-  session_.reset();
-  callback_.Reset();
+QuicChromiumClientStream*
+QuicChromiumClientSession::StreamRequest::ReleaseStream() {
+  DCHECK(stream_);
+  QuicChromiumClientStream* stream = stream_;
+  stream_ = nullptr;
+  return stream;
 }
 
 void QuicChromiumClientSession::StreamRequest::OnRequestCompleteSuccess(
     QuicChromiumClientStream* stream) {
   session_.reset();
-  *stream_ = stream;
+  stream_ = stream;
   base::ResetAndReturn(&callback_).Run(OK);
 }
 
@@ -456,9 +462,15 @@
   observers_.erase(observer);
 }
 
-int QuicChromiumClientSession::TryCreateStream(
-    StreamRequest* request,
-    QuicChromiumClientStream** stream) {
+std::unique_ptr<QuicChromiumClientSession::StreamRequest>
+QuicChromiumClientSession::CreateStreamRequest() {
+  // base::MakeUnique does not work because the StreamRequest constructor
+  // is private.
+  return std::unique_ptr<StreamRequest>(
+      new StreamRequest(weak_factory_.GetWeakPtr()));
+}
+
+int QuicChromiumClientSession::TryCreateStream(StreamRequest* request) {
   if (goaway_received()) {
     DVLOG(1) << "Going away.";
     return ERR_CONNECTION_CLOSED;
@@ -475,7 +487,7 @@
   }
 
   if (GetNumOpenOutgoingStreams() < max_open_outgoing_streams()) {
-    *stream = CreateOutgoingReliableStreamImpl();
+    request->stream_ = CreateOutgoingReliableStreamImpl();
     return OK;
   }
 
diff --git a/net/quic/chromium/quic_chromium_client_session.h b/net/quic/chromium/quic_chromium_client_session.h
index dbc6b735..a4c07d1 100644
--- a/net/quic/chromium/quic_chromium_client_session.h
+++ b/net/quic/chromium/quic_chromium_client_session.h
@@ -78,24 +78,24 @@
   // A helper class used to manage a request to create a stream.
   class NET_EXPORT_PRIVATE StreamRequest {
    public:
-    StreamRequest();
+    // Cancels any pending stream creation request and resets |stream_| if
+    // it has not yet been released.
     ~StreamRequest();
 
     // Starts a request to create a stream.  If OK is returned, then
-    // |stream| will be updated with the newly created stream.  If
+    // |stream_| will be updated with the newly created stream.  If
     // ERR_IO_PENDING is returned, then when the request is eventuallly
     // complete |callback| will be called.
-    int StartRequest(const base::WeakPtr<QuicChromiumClientSession>& session,
-                     QuicChromiumClientStream** stream,
-                     const CompletionCallback& callback);
+    int StartRequest(const CompletionCallback& callback);
 
-    // Cancels any pending stream creation request. May be called
-    // repeatedly.
-    void CancelRequest();
+    // Releases |stream_| to the caller
+    QuicChromiumClientStream* ReleaseStream();
 
    private:
     friend class QuicChromiumClientSession;
 
+    StreamRequest(const base::WeakPtr<QuicChromiumClientSession>& session);
+
     // Called by |session_| for an asynchronous request when the stream
     // request has finished successfully.
     void OnRequestCompleteSuccess(QuicChromiumClientStream* stream);
@@ -107,7 +107,7 @@
 
     base::WeakPtr<QuicChromiumClientSession> session_;
     CompletionCallback callback_;
-    QuicChromiumClientStream** stream_;
+    QuicChromiumClientStream* stream_;
     // For tracking how much time pending stream requests wait.
     base::TimeTicks pending_start_time_;
 
@@ -147,6 +147,8 @@
   void AddObserver(Observer* observer);
   void RemoveObserver(Observer* observer);
 
+  std::unique_ptr<StreamRequest> CreateStreamRequest();
+
   // Attempts to create a new stream.  If the stream can be
   // created immediately, returns OK.  If the open stream limit
   // has been reached, returns ERR_IO_PENDING, and |request|
@@ -154,8 +156,7 @@
   // be completed asynchronously.
   // TODO(rch): remove |stream| from this and use setter on |request|
   // and fix in spdy too.
-  int TryCreateStream(StreamRequest* request,
-                      QuicChromiumClientStream** stream);
+  int TryCreateStream(StreamRequest* request);
 
   // Cancels the pending stream creation request.
   void CancelRequest(StreamRequest* request);
diff --git a/net/quic/chromium/quic_chromium_client_session_test.cc b/net/quic/chromium/quic_chromium_client_session_test.cc
index 2c4c5828..ffae007 100644
--- a/net/quic/chromium/quic_chromium_client_session_test.cc
+++ b/net/quic/chromium/quic_chromium_client_session_test.cc
@@ -18,6 +18,7 @@
 #include "net/log/test_net_log.h"
 #include "net/quic/chromium/crypto/proof_verifier_chromium.h"
 #include "net/quic/chromium/mock_crypto_client_stream_factory.h"
+#include "net/quic/chromium/mock_quic_data.h"
 #include "net/quic/chromium/quic_chromium_alarm_factory.h"
 #include "net/quic/chromium/quic_chromium_client_session_peer.h"
 #include "net/quic/chromium/quic_chromium_connection_helper.h"
@@ -103,7 +104,8 @@
   }
 
   void Initialize() {
-    socket_factory_.AddSocketDataProvider(socket_data_.get());
+    if (socket_data_)
+      socket_factory_.AddSocketDataProvider(socket_data_.get());
     std::unique_ptr<DatagramClientSocket> socket =
         socket_factory_.CreateDatagramClientSocket(DatagramSocket::DEFAULT_BIND,
                                                    base::Bind(&base::RandInt),
@@ -193,6 +195,129 @@
   CompleteCryptoHandshake();
 }
 
+TEST_P(QuicChromiumClientSessionTest, StreamRequest) {
+  MockQuicData quic_data;
+  quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
+  quic_data.AddRead(ASYNC, ERR_IO_PENDING);
+  quic_data.AddRead(ASYNC, OK);  // EOF
+  quic_data.AddSocketDataToFactory(&socket_factory_);
+
+  Initialize();
+  CompleteCryptoHandshake();
+
+  // Request a stream and verify that a stream was created.
+  std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
+      session_->CreateStreamRequest();
+  TestCompletionCallback callback;
+  ASSERT_EQ(OK, stream_request->StartRequest(callback.callback()));
+  EXPECT_TRUE(stream_request->ReleaseStream() != nullptr);
+
+  quic_data.Resume();
+  EXPECT_TRUE(quic_data.AllReadDataConsumed());
+  EXPECT_TRUE(quic_data.AllWriteDataConsumed());
+}
+
+TEST_P(QuicChromiumClientSessionTest, CancelStreamRequestBeforeRelease) {
+  MockQuicData quic_data;
+  quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
+  quic_data.AddWrite(client_maker_.MakeRstPacket(2, true, kClientDataStreamId1,
+                                                 QUIC_STREAM_CANCELLED));
+  quic_data.AddRead(ASYNC, ERR_IO_PENDING);
+  quic_data.AddRead(ASYNC, OK);  // EOF
+  quic_data.AddSocketDataToFactory(&socket_factory_);
+
+  Initialize();
+  CompleteCryptoHandshake();
+
+  // Request a stream and cancel it without releasing the stream.
+  std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
+      session_->CreateStreamRequest();
+  TestCompletionCallback callback;
+  ASSERT_EQ(OK, stream_request->StartRequest(callback.callback()));
+  stream_request.reset();
+
+  quic_data.Resume();
+  EXPECT_TRUE(quic_data.AllReadDataConsumed());
+  EXPECT_TRUE(quic_data.AllWriteDataConsumed());
+}
+
+TEST_P(QuicChromiumClientSessionTest, AsyncStreamRequest) {
+  MockQuicData quic_data;
+  quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
+  quic_data.AddWrite(client_maker_.MakeRstPacket(2, true, kClientDataStreamId1,
+                                                 QUIC_RST_ACKNOWLEDGEMENT));
+  quic_data.AddRead(ASYNC, ERR_IO_PENDING);
+  quic_data.AddRead(ASYNC, OK);  // EOF
+  quic_data.AddSocketDataToFactory(&socket_factory_);
+
+  Initialize();
+  CompleteCryptoHandshake();
+
+  // Open the maximum number of streams so that a subsequent request
+  // can not proceed immediately.
+  const size_t kMaxOpenStreams = session_->max_open_outgoing_streams();
+  for (size_t i = 0; i < kMaxOpenStreams; i++) {
+    session_->CreateOutgoingDynamicStream(kDefaultPriority);
+  }
+  EXPECT_EQ(kMaxOpenStreams, session_->GetNumOpenOutgoingStreams());
+
+  // Request a stream and verify that it's pending.
+  std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
+      session_->CreateStreamRequest();
+  TestCompletionCallback callback;
+  ASSERT_EQ(ERR_IO_PENDING, stream_request->StartRequest(callback.callback()));
+
+  // Close a stream and ensure the stream request completes.
+  QuicRstStreamFrame rst(kClientDataStreamId1, QUIC_STREAM_CANCELLED, 0);
+  session_->OnRstStream(rst);
+  ASSERT_TRUE(callback.have_result());
+  EXPECT_THAT(callback.WaitForResult(), IsOk());
+  EXPECT_TRUE(stream_request->ReleaseStream() != nullptr);
+
+  quic_data.Resume();
+  EXPECT_TRUE(quic_data.AllReadDataConsumed());
+  EXPECT_TRUE(quic_data.AllWriteDataConsumed());
+}
+
+TEST_P(QuicChromiumClientSessionTest, CancelPendingStreamRequest) {
+  MockQuicData quic_data;
+  quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
+  quic_data.AddWrite(client_maker_.MakeRstPacket(2, true, kClientDataStreamId1,
+                                                 QUIC_RST_ACKNOWLEDGEMENT));
+  quic_data.AddRead(ASYNC, ERR_IO_PENDING);
+  quic_data.AddRead(ASYNC, OK);  // EOF
+  quic_data.AddSocketDataToFactory(&socket_factory_);
+
+  Initialize();
+  CompleteCryptoHandshake();
+
+  // Open the maximum number of streams so that a subsequent request
+  // can not proceed immediately.
+  const size_t kMaxOpenStreams = session_->max_open_outgoing_streams();
+  for (size_t i = 0; i < kMaxOpenStreams; i++) {
+    session_->CreateOutgoingDynamicStream(kDefaultPriority);
+  }
+  EXPECT_EQ(kMaxOpenStreams, session_->GetNumOpenOutgoingStreams());
+
+  // Request a stream and verify that it's pending.
+  std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
+      session_->CreateStreamRequest();
+  TestCompletionCallback callback;
+  ASSERT_EQ(ERR_IO_PENDING, stream_request->StartRequest(callback.callback()));
+
+  // Cancel the pending stream request.
+  stream_request.reset();
+
+  // Close a stream and ensure that no new stream is created.
+  QuicRstStreamFrame rst(kClientDataStreamId1, QUIC_STREAM_CANCELLED, 0);
+  session_->OnRstStream(rst);
+  EXPECT_EQ(kMaxOpenStreams - 1, session_->GetNumOpenOutgoingStreams());
+
+  quic_data.Resume();
+  EXPECT_TRUE(quic_data.AllReadDataConsumed());
+  EXPECT_TRUE(quic_data.AllWriteDataConsumed());
+}
+
 TEST_P(QuicChromiumClientSessionTest, MaxNumStreams) {
   MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
   std::unique_ptr<QuicEncryptedPacket> settings_packet(
@@ -544,12 +669,10 @@
     streams.push_back(stream);
   }
 
-  QuicChromiumClientStream* stream;
-  QuicChromiumClientSession::StreamRequest stream_request;
+  std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
+      session_->CreateStreamRequest();
   TestCompletionCallback callback;
-  ASSERT_EQ(ERR_IO_PENDING,
-            stream_request.StartRequest(session_->GetWeakPtr(), &stream,
-                                        callback.callback()));
+  ASSERT_EQ(ERR_IO_PENDING, stream_request->StartRequest(callback.callback()));
 
   // Close a stream and ensure I can now open a new one.
   QuicStreamId stream_id = streams[0]->id();
@@ -558,7 +681,7 @@
   session_->OnRstStream(rst1);
   ASSERT_TRUE(callback.have_result());
   EXPECT_THAT(callback.WaitForResult(), IsOk());
-  EXPECT_TRUE(stream != nullptr);
+  EXPECT_TRUE(stream_request->ReleaseStream() != nullptr);
 }
 
 TEST_P(QuicChromiumClientSessionTest, GoAwayReceived) {
diff --git a/net/quic/chromium/quic_http_stream.cc b/net/quic/chromium/quic_http_stream.cc
index 0da831aa..049ab3d 100644
--- a/net/quic/chromium/quic_http_stream.cc
+++ b/net/quic/chromium/quic_http_stream.cc
@@ -629,8 +629,8 @@
 
 int QuicHttpStream::DoRequestStream() {
   next_state_ = STATE_REQUEST_STREAM_COMPLETE;
-  return stream_request_.StartRequest(
-      session_, &stream_,
+  stream_request_ = session_->CreateStreamRequest();
+  return stream_request_->StartRequest(
       base::Bind(&QuicHttpStream::OnIOComplete, weak_factory_.GetWeakPtr()));
 }
 
@@ -641,6 +641,8 @@
     return GetResponseStatus();
   }
 
+  stream_ = stream_request_->ReleaseStream();
+  stream_request_.reset();
   stream_->SetDelegate(this);
   if (request_info_->load_flags & LOAD_DISABLE_CONNECTION_MIGRATION) {
     stream_->DisableConnectionMigration();
diff --git a/net/quic/chromium/quic_http_stream.h b/net/quic/chromium/quic_http_stream.h
index ca36241..df61ef52 100644
--- a/net/quic/chromium/quic_http_stream.h
+++ b/net/quic/chromium/quic_http_stream.h
@@ -159,7 +159,7 @@
   QuicVersion quic_version_;
   int session_error_;             // Error code from the connection shutdown.
   bool was_handshake_confirmed_;  // True if the crypto handshake succeeded.
-  QuicChromiumClientSession::StreamRequest stream_request_;
+  std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request_;
   QuicChromiumClientStream* stream_;  // Non-owning.
 
   // The following three fields are all owned by the caller and must
diff --git a/services/catalog/catalog.cc b/services/catalog/catalog.cc
index 3189881d8..4bb2419 100644
--- a/services/catalog/catalog.cc
+++ b/services/catalog/catalog.cc
@@ -8,6 +8,7 @@
 #include <string>
 
 #include "base/base_paths.h"
+#include "base/command_line.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/json/json_reader.h"
@@ -95,6 +96,9 @@
 
     DCHECK(!(is_embedded && !executable_path.empty()));
 
+    if (is_embedded)
+      executable_path = base::CommandLine::ForCurrentProcess()->GetProgram();
+
     auto entry = Entry::Deserialize(*manifest);
     if (entry) {
       if (!executable_path.empty())
diff --git a/services/service_manager/background/background_service_manager.cc b/services/service_manager/background/background_service_manager.cc
index d74a8a6..891f3ca 100644
--- a/services/service_manager/background/background_service_manager.cc
+++ b/services/service_manager/background/background_service_manager.cc
@@ -63,6 +63,13 @@
   DCHECK(!context_);
 }
 
+void BackgroundServiceManager::StartService(const Identity& identity) {
+  background_thread_.task_runner()->PostTask(
+      FROM_HERE,
+      base::Bind(&BackgroundServiceManager::StartServiceOnBackgroundThread,
+                 base::Unretained(this), identity));
+}
+
 void BackgroundServiceManager::RegisterService(
     const Identity& identity,
     mojom::ServicePtr service,
@@ -111,6 +118,11 @@
   done_event->Signal();
 }
 
+void BackgroundServiceManager::StartServiceOnBackgroundThread(
+    const Identity& identity) {
+  context_->service_manager()->StartService(identity);
+}
+
 void BackgroundServiceManager::RegisterServiceOnBackgroundThread(
     const Identity& identity,
     mojom::ServicePtrInfo service_info,
diff --git a/services/service_manager/background/background_service_manager.h b/services/service_manager/background/background_service_manager.h
index 2e58974..ba77b24 100644
--- a/services/service_manager/background/background_service_manager.h
+++ b/services/service_manager/background/background_service_manager.h
@@ -10,6 +10,7 @@
 #include "base/callback_forward.h"
 #include "base/macros.h"
 #include "base/threading/thread.h"
+#include "base/values.h"
 #include "services/service_manager/public/cpp/identity.h"
 #include "services/service_manager/public/interfaces/connector.mojom.h"
 #include "services/service_manager/public/interfaces/service.mojom.h"
@@ -17,7 +18,6 @@
 
 namespace base {
 class SingleThreadTaskRunner;
-class Value;
 class WaitableEvent;
 }
 
@@ -36,6 +36,9 @@
       std::unique_ptr<base::Value> catalog_contents);
   ~BackgroundServiceManager();
 
+  // Starts a service instance for |identity| if one is not already running.
+  void StartService(const Identity& identity);
+
   // Creates a service instance for |identity|. This is intended for use by the
   // Service Manager's embedder to register instances directly, without
   // requiring a Connector.
@@ -57,6 +60,7 @@
       service_manager::ServiceProcessLauncher::Delegate* launcher_delegate,
       std::unique_ptr<base::Value> catalog_contents);
   void ShutDownOnBackgroundThread(base::WaitableEvent* done_event);
+  void StartServiceOnBackgroundThread(const Identity& identity);
   void RegisterServiceOnBackgroundThread(
       const Identity& identity,
       mojom::ServicePtrInfo service_info,
diff --git a/services/service_manager/embedder/BUILD.gn b/services/service_manager/embedder/BUILD.gn
index 2d21eed..a9f6b13 100644
--- a/services/service_manager/embedder/BUILD.gn
+++ b/services/service_manager/embedder/BUILD.gn
@@ -6,7 +6,9 @@
   sources = [
     "main.cc",
     "main.h",
+    "main_delegate.cc",
     "main_delegate.h",
+    "process_type.h",
     "service_manager_embedder_export.h",
     "set_process_title.cc",
     "set_process_title.h",
@@ -28,11 +30,21 @@
   }
 
   deps = [
-    "//base",
+    "//base:base_static",
     "//base/allocator:features",
+    "//components/tracing:startup_tracing",
     "//mojo/edk/system",
     "//ui/base",
   ]
 
+  public_deps = [
+    "//base",
+    "//services/service_manager/background:lib",
+    "//services/service_manager/public/cpp",
+    "//services/service_manager/public/cpp/standalone_service",
+    "//services/service_manager/runner:init",
+    "//services/service_manager/runner/common",
+  ]
+
   defines = [ "SERVICE_MANAGER_EMBEDDER_IMPL" ]
 }
diff --git a/services/service_manager/embedder/DEPS b/services/service_manager/embedder/DEPS
index e7cf2c6f..74636dad 100644
--- a/services/service_manager/embedder/DEPS
+++ b/services/service_manager/embedder/DEPS
@@ -1,3 +1,4 @@
 include_rules = [
+  "+components/tracing/common",
   "+ui/base",
 ]
diff --git a/services/service_manager/embedder/main.cc b/services/service_manager/embedder/main.cc
index 0debd91..86a6a62 100644
--- a/services/service_manager/embedder/main.cc
+++ b/services/service_manager/embedder/main.cc
@@ -3,19 +3,50 @@
 // found in the LICENSE file.
 
 #include "services/service_manager/embedder/main.h"
+
 #include "base/allocator/features.h"
+#include "base/at_exit.h"
+#include "base/base_switches.h"
 #include "base/command_line.h"
 #include "base/debug/activity_tracker.h"
+#include "base/debug/debugger.h"
+#include "base/debug/stack_trace.h"
+#include "base/i18n/icu_util.h"
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
+#include "base/optional.h"
+#include "base/process/launch.h"
 #include "base/process/memory.h"
+#include "base/process/process.h"
+#include "base/run_loop.h"
+#include "base/task_scheduler/task_scheduler.h"
+#include "base/threading/sequenced_worker_pool.h"
+#include "base/threading/thread.h"
+#include "base/trace_event/trace_config.h"
+#include "base/trace_event/trace_log.h"
+#include "build/build_config.h"
+#include "components/tracing/common/trace_to_console.h"
+#include "components/tracing/common/tracing_switches.h"
 #include "mojo/edk/embedder/embedder.h"
+#include "mojo/edk/embedder/scoped_ipc_support.h"
 #include "services/service_manager/embedder/main_delegate.h"
+#include "services/service_manager/embedder/process_type.h"
 #include "services/service_manager/embedder/set_process_title.h"
 #include "services/service_manager/embedder/shared_file_util.h"
 #include "services/service_manager/embedder/switches.h"
+#include "services/service_manager/public/cpp/service.h"
+#include "services/service_manager/public/cpp/service_context.h"
+#include "services/service_manager/public/cpp/standalone_service/standalone_service.h"
+#include "services/service_manager/runner/common/client_util.h"
+#include "services/service_manager/runner/common/switches.h"
+#include "services/service_manager/runner/init.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "ui/base/ui_base_paths.h"
+#include "ui/base/ui_base_switches.h"
 
 #if defined(OS_WIN)
+#include <windows.h>
+
 #include "base/win/process_startup_helper.h"
 #include "ui/base/win/atl_module.h"
 #endif
@@ -45,6 +76,34 @@
 // service manager embedder process.
 constexpr size_t kMaximumMojoMessageSize = 128 * 1024 * 1024;
 
+class ServiceProcessLauncherDelegateImpl
+    : public service_manager::ServiceProcessLauncher::Delegate {
+ public:
+  explicit ServiceProcessLauncherDelegateImpl(MainDelegate* main_delegate)
+      : main_delegate_(main_delegate) {}
+  ~ServiceProcessLauncherDelegateImpl() override {}
+
+ private:
+  // service_manager::ServiceProcessLauncher::Delegate:
+  void AdjustCommandLineArgumentsForTarget(
+      const service_manager::Identity& target,
+      base::CommandLine* command_line) override {
+    if (main_delegate_->ShouldLaunchAsServiceProcess(target)) {
+      command_line->AppendSwitchASCII(switches::kProcessType,
+                                      switches::kProcessTypeService);
+#if defined(OS_WIN)
+      command_line->AppendArg(switches::kDefaultServicePrefetchArgument);
+#endif
+    }
+
+    main_delegate_->AdjustServiceProcessCommandLine(target, command_line);
+  }
+
+  MainDelegate* const main_delegate_;
+
+  DISALLOW_COPY_AND_ASSIGN(ServiceProcessLauncherDelegateImpl);
+};
+
 #if defined(OS_POSIX) && !defined(OS_ANDROID)
 
 // Setup signal-handling state: resanitize most signals, ignore SIGPIPE.
@@ -92,6 +151,173 @@
 
 #endif  // defined(OS_POSIX) && !defined(OS_ANDROID)
 
+void CommonSubprocessInit() {
+#if defined(OS_WIN)
+  // HACK: Let Windows know that we have started.  This is needed to suppress
+  // the IDC_APPSTARTING cursor from being displayed for a prolonged period
+  // while a subprocess is starting.
+  PostThreadMessage(GetCurrentThreadId(), WM_NULL, 0, 0);
+  MSG msg;
+  PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
+#endif
+#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
+  // Various things break when you're using a locale where the decimal
+  // separator isn't a period.  See e.g. bugs 22782 and 39964.  For
+  // all processes except the browser process (where we call system
+  // APIs that may rely on the correct locale for formatting numbers
+  // when presenting them to the user), reset the locale for numeric
+  // formatting.
+  // Note that this is not correct for plugin processes -- they can
+  // surface UI -- but it's likely they get this wrong too so why not.
+  setlocale(LC_NUMERIC, "C");
+#endif
+
+#if !defined(OFFICIAL_BUILD) && defined(OS_WIN)
+  base::RouteStdioToConsole(false);
+  LoadLibraryA("dbghelp.dll");
+#endif
+}
+
+void NonEmbedderProcessInit() {
+  service_manager::InitializeLogging();
+
+#if !defined(OFFICIAL_BUILD)
+  // Initialize stack dumping before initializing sandbox to make sure symbol
+  // names in all loaded libraries will be cached.
+  // NOTE: On Chrome OS, crash reporting for the root process and non-browser
+  // service processes is handled by the OS-level crash_reporter.
+  base::debug::EnableInProcessStackDumping();
+#endif
+
+  base::TaskScheduler::CreateAndSetSimpleTaskScheduler("ServiceManagerProcess");
+}
+
+void WaitForDebuggerIfNecessary() {
+  if (!ServiceManagerIsRemote())
+    return;
+
+  const auto& command_line = *base::CommandLine::ForCurrentProcess();
+  const std::string service_name =
+      command_line.GetSwitchValueASCII(switches::kServiceName);
+  if (service_name !=
+      command_line.GetSwitchValueASCII(::switches::kWaitForDebugger)) {
+    return;
+  }
+
+  // Include the pid as logging may not have been initialized yet (the pid
+  // printed out by logging is wrong).
+  LOG(WARNING) << "waiting for debugger to attach for service " << service_name
+               << " pid=" << base::Process::Current().Pid();
+  base::debug::WaitForDebugger(120, true);
+}
+
+// Quits |run_loop| if the |identity| of the quitting service is critical to the
+// system (e.g. the window manager). Used in the main process.
+void OnInstanceQuit(MainDelegate* delegate,
+                    base::RunLoop* run_loop,
+                    int* exit_code,
+                    const service_manager::Identity& identity) {
+  if (delegate->ShouldTerminateServiceManagerOnInstanceQuit(identity,
+                                                            exit_code)) {
+    run_loop->Quit();
+  }
+}
+
+int RunServiceManager(MainDelegate* delegate) {
+  NonEmbedderProcessInit();
+
+#if defined(OS_WIN)
+  // Route stdio to parent console (if any) or create one.
+  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kEnableLogging)) {
+    base::RouteStdioToConsole(true);
+  }
+#endif
+
+  base::MessageLoop message_loop(base::MessageLoop::TYPE_UI);
+
+  base::SequencedWorkerPool::EnableWithRedirectionToTaskSchedulerForProcess();
+
+  base::Thread ipc_thread("IPC thread");
+  ipc_thread.StartWithOptions(
+      base::Thread::Options(base::MessageLoop::TYPE_IO, 0));
+  mojo::edk::ScopedIPCSupport ipc_support(
+      ipc_thread.task_runner(),
+      mojo::edk::ScopedIPCSupport::ShutdownPolicy::FAST);
+
+  ServiceProcessLauncherDelegateImpl service_process_launcher_delegate(
+      delegate);
+  service_manager::BackgroundServiceManager background_service_manager(
+      &service_process_launcher_delegate, delegate->CreateServiceCatalog());
+
+  base::RunLoop run_loop;
+  int exit_code = 0;
+  background_service_manager.SetInstanceQuitCallback(
+      base::Bind(&OnInstanceQuit, delegate, &run_loop, &exit_code));
+
+  delegate->OnServiceManagerInitialized(run_loop.QuitClosure(),
+                                        &background_service_manager);
+  run_loop.Run();
+
+  ipc_thread.Stop();
+  base::TaskScheduler::GetInstance()->Shutdown();
+
+  return exit_code;
+}
+
+void InitializeResources() {
+  ui::RegisterPathProvider();
+  const std::string locale =
+      base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+          ::switches::kLang);
+  // This loads the embedder's common resources (e.g. chrome_100_percent.pak for
+  // Chrome.)
+  ui::ResourceBundle::InitSharedInstanceWithLocale(
+      locale, nullptr, ui::ResourceBundle::LOAD_COMMON_RESOURCES);
+}
+
+int RunService(MainDelegate* delegate) {
+  NonEmbedderProcessInit();
+  WaitForDebuggerIfNecessary();
+
+  InitializeResources();
+
+  int exit_code = 0;
+  RunStandaloneService(base::Bind(
+      [](MainDelegate* delegate, int* exit_code,
+         mojom::ServiceRequest request) {
+        // TODO(rockot): Make the default MessageLoop type overridable for
+        // services. This is TYPE_UI because at least one service (the "ui"
+        // service) needs it to be.
+        base::MessageLoop message_loop(base::MessageLoop::TYPE_UI);
+        base::RunLoop run_loop;
+
+        std::string service_name =
+            base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+                switches::kServiceName);
+        if (service_name.empty()) {
+          LOG(ERROR) << "Service process requires --service-name";
+          *exit_code = 1;
+          return;
+        }
+
+        std::unique_ptr<Service> service =
+            delegate->CreateEmbeddedService(service_name);
+        if (!service) {
+          LOG(ERROR) << "Failed to start embedded service: " << service_name;
+          *exit_code = 1;
+          return;
+        }
+
+        ServiceContext context(std::move(service), std::move(request));
+        context.SetQuitClosure(run_loop.QuitClosure());
+        run_loop.Run();
+      },
+      delegate, &exit_code));
+
+  return exit_code;
+}
+
 }  // namespace
 
 MainParams::MainParams(MainDelegate* delegate) : delegate(delegate) {}
@@ -141,13 +367,15 @@
 
   base::EnableTerminationOnHeapCorruption();
 
-#if defined(OS_WIN)
-  base::win::SetupCRT(*base::CommandLine::ForCurrentProcess());
-#endif
-
   SetProcessTitleFromCommandLine(argv);
 #endif  // !defined(OS_ANDROID)
 
+  const auto& command_line = *base::CommandLine::ForCurrentProcess();
+
+#if defined(OS_WIN)
+  base::win::SetupCRT(command_line);
+#endif
+
   MainDelegate::InitializeParams init_params;
 
 #if defined(OS_MACOSX)
@@ -176,7 +404,52 @@
     return exit_code;
   }
 
-  exit_code = delegate->Run();
+  ProcessType process_type = delegate->OverrideProcessType();
+  if (process_type == ProcessType::kDefault) {
+    std::string type_switch =
+        command_line.GetSwitchValueASCII(switches::kProcessType);
+    if (type_switch == switches::kProcessTypeServiceManager) {
+      process_type = ProcessType::kServiceManager;
+    } else if (type_switch == switches::kProcessTypeService) {
+      process_type = ProcessType::kService;
+    } else {
+      process_type = ProcessType::kEmbedder;
+    }
+  }
+
+  base::Optional<base::AtExitManager> at_exit;
+
+  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+          ::switches::kTraceToConsole)) {
+    base::trace_event::TraceConfig trace_config =
+        tracing::GetConfigForTraceToConsole();
+    base::trace_event::TraceLog::GetInstance()->SetEnabled(
+        trace_config, base::trace_event::TraceLog::RECORDING_MODE);
+  }
+
+  switch (process_type) {
+    case ProcessType::kDefault:
+      NOTREACHED();
+      break;
+
+    case ProcessType::kServiceManager:
+      at_exit.emplace();
+      exit_code = RunServiceManager(delegate);
+      break;
+
+    case ProcessType::kService:
+      CommonSubprocessInit();
+      at_exit.emplace();
+      exit_code = RunService(delegate);
+      break;
+
+    case ProcessType::kEmbedder:
+      if (ServiceManagerIsRemote())
+        CommonSubprocessInit();
+      exit_code = delegate->RunEmbedderProcess();
+      break;
+  }
+
   if (tracker) {
     if (exit_code == 0) {
       tracker->SetProcessPhaseIfEnabled(
@@ -192,7 +465,8 @@
   autorelease_pool.reset();
 #endif
 
-  delegate->ShutDown();
+  if (process_type == ProcessType::kEmbedder)
+    delegate->ShutDownEmbedderProcess();
 
   return exit_code;
 }
diff --git a/services/service_manager/embedder/main_delegate.cc b/services/service_manager/embedder/main_delegate.cc
new file mode 100644
index 0000000..65b6196
--- /dev/null
+++ b/services/service_manager/embedder/main_delegate.cc
@@ -0,0 +1,50 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "services/service_manager/embedder/main_delegate.h"
+
+namespace service_manager {
+
+MainDelegate::MainDelegate() = default;
+
+MainDelegate::~MainDelegate() = default;
+
+int MainDelegate::RunEmbedderProcess() {
+  return 0;
+}
+
+void MainDelegate::ShutDownEmbedderProcess() {}
+
+ProcessType MainDelegate::OverrideProcessType() {
+  return ProcessType::kDefault;
+}
+
+std::unique_ptr<base::Value> MainDelegate::CreateServiceCatalog() {
+  return nullptr;
+}
+
+bool MainDelegate::ShouldLaunchAsServiceProcess(const Identity& identity) {
+  return true;
+}
+
+void MainDelegate::AdjustServiceProcessCommandLine(
+    const Identity& identity,
+    base::CommandLine* command_line) {}
+
+bool MainDelegate::ShouldTerminateServiceManagerOnInstanceQuit(
+    const Identity& identity,
+    int* exit_code) {
+  return false;
+}
+
+void MainDelegate::OnServiceManagerInitialized(
+    const base::Closure& quit_closure,
+    BackgroundServiceManager* service_manager) {}
+
+std::unique_ptr<Service> MainDelegate::CreateEmbeddedService(
+    const std::string& service_name) {
+  return nullptr;
+}
+
+}  // namespace service_manager
diff --git a/services/service_manager/embedder/main_delegate.h b/services/service_manager/embedder/main_delegate.h
index f922295..f192a65 100644
--- a/services/service_manager/embedder/main_delegate.h
+++ b/services/service_manager/embedder/main_delegate.h
@@ -5,9 +5,18 @@
 #ifndef SERVICES_SERVICE_MANAGER_EMBEDDER_MAIN_DELEGATE_H_
 #define SERVICES_SERVICE_MANAGER_EMBEDDER_MAIN_DELEGATE_H_
 
+#include <memory>
+
+#include "base/callback_forward.h"
+#include "services/service_manager/background/background_service_manager.h"
+#include "services/service_manager/embedder/process_type.h"
 #include "services/service_manager/embedder/service_manager_embedder_export.h"
+#include "services/service_manager/public/cpp/identity.h"
+#include "services/service_manager/public/cpp/service.h"
 
 namespace base {
+class CommandLine;
+class Value;
 namespace mac {
 class ScopedNSAutoreleasePool;
 }
@@ -18,7 +27,7 @@
 // An interface which must be implemented by Service Manager embedders to
 // control basic process initialization and shutdown, as well as early branching
 // to run specific types of subprocesses.
-class MainDelegate {
+class SERVICE_MANAGER_EMBEDDER_EXPORT MainDelegate {
  public:
   // Extra parameters passed to MainDelegate::Initialize.
   struct InitializeParams {
@@ -29,20 +38,65 @@
 #endif
   };
 
-  virtual ~MainDelegate() {}
+  MainDelegate();
+  virtual ~MainDelegate();
 
   // Perform early process initialization. Returns -1 if successful, or the exit
   // code with which the process should be terminated due to initialization
   // failure.
   virtual int Initialize(const InitializeParams& params) = 0;
 
-  // Runs the main process logic. Called exactly once, and only after a
-  // successful call to Initialize(). Returns the exit code to use when
-  // terminating the process after Run() (and then ShutDown()) completes.
-  virtual int Run() = 0;
+  // Runs the embedder's own main process logic. Called exactly once after a
+  // successful call to Initialize(), and only if the Service Manager core does
+  // not know what to do otherwise -- i.e., if it is not starting a new Service
+  // Manager instance or launching an embedded service.
+  //
+  // Returns the exit code to use when terminating the process after
+  // RunEmbedderProcess() (and then ShutDown()) completes.
+  virtual int RunEmbedderProcess();
 
-  // Called after Run() returns, before exiting the process.
-  virtual void ShutDown() = 0;
+  // Called just before process exit if RunEmbedderProcess() was called.
+  virtual void ShutDownEmbedderProcess();
+
+  // Force execution of the current process as a specific process type. May
+  // return |ProcessType::kDefault| to avoid overriding.
+  virtual ProcessType OverrideProcessType();
+
+  // Create the service catalog to be used by the Service Manager. May return
+  // null to use the default (empty) catalog, if you're into that.
+  virtual std::unique_ptr<base::Value> CreateServiceCatalog();
+
+  // Indicates whether a process started by the service manager for a given
+  // target service identity should be run as a real service process (|true|)
+  // or if the service manager should delegate to the embedder to initialize the
+  // new process (|false|).
+  virtual bool ShouldLaunchAsServiceProcess(const Identity& identity);
+
+  // Allows the embedder to override command line switches for a service process
+  // to be launched.
+  virtual void AdjustServiceProcessCommandLine(const Identity& identity,
+                                               base::CommandLine* command_line);
+
+  // Allows the embedder to terminate its Service Manager if any specific
+  // service instances quit. If this returns |true|, |*exit_code| will be
+  // returned from the Service Manager's process on exit.
+  virtual bool ShouldTerminateServiceManagerOnInstanceQuit(
+      const Identity& identity,
+      int* exit_code);
+
+  // Allows the embedder to perform arbitrary initialization within the Service
+  // Manager process immediately before the Service Manager runs its main loop.
+  //
+  // |quit_closure| is a callback the embedder may retain and invoke at any time
+  // to cleanly terminate Service Manager execution.
+  virtual void OnServiceManagerInitialized(
+      const base::Closure& quit_closure,
+      BackgroundServiceManager* service_manager);
+
+  // Runs an embedded service by name. If the embedder does not know how to
+  // create an instance of the named service, it should return null.
+  virtual std::unique_ptr<Service> CreateEmbeddedService(
+      const std::string& service_name);
 };
 
 }  // namespace service_manager
diff --git a/services/service_manager/embedder/process_type.h b/services/service_manager/embedder/process_type.h
new file mode 100644
index 0000000..ca9d9c1
--- /dev/null
+++ b/services/service_manager/embedder/process_type.h
@@ -0,0 +1,31 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SERVICES_SERVICE_MANAGER_EMBEDDER_PROCESS_TYPE_H_
+#define SERVICES_SERVICE_MANAGER_EMBEDDER_PROCESS_TYPE_H_
+
+namespace service_manager {
+
+enum class ProcessType {
+  // An unspecified process type. If this is given anywhere a ProcessType is
+  // expected, it must be interpreted as some reasonable default based on
+  // context.
+  kDefault,
+
+  // A standalone Service Manager process. There can be only one.
+  kServiceManager,
+
+  // A service process. A service process hosts one or more embedded service
+  // instances.
+  kService,
+
+  // An embedder process. The Service Manager implementation does not control
+  // any aspect of the process's logic beyond primitive process initialization
+  // and shutdown.
+  kEmbedder,
+};
+
+}  // namespace service_manager
+
+#endif  // SERVICES_SERVICE_MANAGER_EMBEDDER_PROCESS_TYPE_H_
diff --git a/services/service_manager/embedder/switches.cc b/services/service_manager/embedder/switches.cc
index 8492cfa..729fd55 100644
--- a/services/service_manager/embedder/switches.cc
+++ b/services/service_manager/embedder/switches.cc
@@ -4,8 +4,42 @@
 
 #include "services/service_manager/embedder/switches.h"
 
+namespace service_manager {
 namespace switches {
 
+#if defined(OS_WIN)
+
+// Prefetch arguments are used by the Windows prefetcher to disambiguate
+// different execution modes (i.e. process types) of the same executable image
+// so that different types of processes don't trample each others' prefetch
+// behavior.
+//
+// Legal values are integers in the range [1, 8]. We reserve 8 to mean
+// "whatever", and this will ultimately lead to processes with /prefetch:8
+// having inconsistent behavior thus disabling prefetch in practice.
+//
+// TODO(rockot): Make it possible for embedders to override this argument on a
+// per-service basis.
+const char kDefaultServicePrefetchArgument[] = "/prefetch:8";
+
+#endif  // defined(OS_WIN)
+
+// Controls whether console logging is enabled and optionally configures where
+// it's routed.
+const char kEnableLogging[] = "enable-logging";
+
+// Indicates the type of process to run. This may be "service-manager",
+// "service", or any other arbitrary value supported by the embedder.
+const char kProcessType[] = "type";
+
+// The value of the |kProcessType| switch which tells the executable to assume
+// the role of a standalone Service Manager instance.
+const char kProcessTypeServiceManager[] = "service-manager";
+
+// The value of the |kProcessType| switch which tells the executable to assume
+// the role of a service instance.
+const char kProcessTypeService[] = "service";
+
 // Describes the file descriptors passed to a child process in the following
 // list format:
 //
@@ -18,3 +52,4 @@
 const char kSharedFiles[] = "shared-files";
 
 }  // namespace switches
+}  // namespace service_manager
diff --git a/services/service_manager/embedder/switches.h b/services/service_manager/embedder/switches.h
index 8282dfa..d413a4a 100644
--- a/services/service_manager/embedder/switches.h
+++ b/services/service_manager/embedder/switches.h
@@ -5,12 +5,24 @@
 #ifndef SERVICES_SERVICE_MANAGER_EMBEDDER_SWITCHES_H_
 #define SERVICES_SERVICE_MANAGER_EMBEDDER_SWITCHES_H_
 
+#include "build/build_config.h"
 #include "services/service_manager/embedder/service_manager_embedder_export.h"
 
+namespace service_manager {
 namespace switches {
 
+#if defined(OS_WIN)
+SERVICE_MANAGER_EMBEDDER_EXPORT
+extern const char kDefaultServicePrefetchArgument[];
+#endif  // defined(OS_WIN)
+
+SERVICE_MANAGER_EMBEDDER_EXPORT extern const char kEnableLogging[];
+SERVICE_MANAGER_EMBEDDER_EXPORT extern const char kProcessType[];
+SERVICE_MANAGER_EMBEDDER_EXPORT extern const char kProcessTypeServiceManager[];
+SERVICE_MANAGER_EMBEDDER_EXPORT extern const char kProcessTypeService[];
 SERVICE_MANAGER_EMBEDDER_EXPORT extern const char kSharedFiles[];
 
+}  // namespace switches
 }  // namespace service_manager
 
 #endif  // SERVICES_SERVICE_MANAGER_EMBEDDER_SWITCHES_H_
diff --git a/services/service_manager/public/cpp/identity.h b/services/service_manager/public/cpp/identity.h
index 8253403..7df541e 100644
--- a/services/service_manager/public/cpp/identity.h
+++ b/services/service_manager/public/cpp/identity.h
@@ -16,6 +16,7 @@
 class Identity {
  public:
   Identity();
+  explicit Identity(const std::string& name);
   Identity(const std::string& name,
            const std::string& user_id);
   Identity(const std::string& name,
diff --git a/services/service_manager/public/cpp/lib/identity.cc b/services/service_manager/public/cpp/lib/identity.cc
index 409bee1..0a4abb4 100644
--- a/services/service_manager/public/cpp/lib/identity.cc
+++ b/services/service_manager/public/cpp/lib/identity.cc
@@ -9,7 +9,10 @@
 
 namespace service_manager {
 
-Identity::Identity() : Identity("", mojom::kInheritUserID, "") {}
+Identity::Identity() : Identity("") {}
+
+Identity::Identity(const std::string& name)
+    : Identity(name, mojom::kInheritUserID) {}
 
 Identity::Identity(const std::string& name, const std::string& user_id)
     : Identity(name, user_id, "") {}
@@ -19,8 +22,8 @@
     : name_(name),
       user_id_(user_id),
       instance_(instance) {
-  CHECK(!user_id.empty());
-  CHECK(base::IsValidGUID(user_id));
+  DCHECK(!user_id.empty());
+  DCHECK(base::IsValidGUID(user_id));
 }
 
 Identity::Identity(const Identity& other) = default;
diff --git a/services/service_manager/runner/common/client_util.cc b/services/service_manager/runner/common/client_util.cc
index efbfe42..2383bb0 100644
--- a/services/service_manager/runner/common/client_util.cc
+++ b/services/service_manager/runner/common/client_util.cc
@@ -19,14 +19,14 @@
   std::string token;
   mojom::ServicePtr client;
   client.Bind(mojom::ServicePtrInfo(connection->CreateMessagePipe(&token), 0));
-  command_line->AppendSwitchASCII(switches::kPrimordialPipeToken, token);
+  command_line->AppendSwitchASCII(switches::kServicePipeToken, token);
   return client;
 }
 
 mojom::ServiceRequest GetServiceRequestFromCommandLine() {
   std::string token =
       base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
-          switches::kPrimordialPipeToken);
+          switches::kServicePipeToken);
   mojom::ServiceRequest request;
   if (!token.empty())
     request.Bind(mojo::edk::CreateChildMessagePipe(token));
@@ -35,7 +35,7 @@
 
 bool ServiceManagerIsRemote() {
   return base::CommandLine::ForCurrentProcess()->HasSwitch(
-      switches::kPrimordialPipeToken);
+      switches::kServicePipeToken);
 }
 
 }  // namespace service_manager
diff --git a/services/service_manager/runner/common/switches.cc b/services/service_manager/runner/common/switches.cc
index 25c1766..4cdb011 100644
--- a/services/service_manager/runner/common/switches.cc
+++ b/services/service_manager/runner/common/switches.cc
@@ -4,26 +4,21 @@
 
 #include "services/service_manager/runner/common/switches.h"
 
+namespace service_manager {
 namespace switches {
 
-// Used internally by the main process to indicate that a new process should be
-// a child process. Takes the absolute path to the service library to load as
-// an argument. Not for user use.
-const char kChildProcess[] = "child-process";
-
 // Enables the sandbox on this process.
 const char kEnableSandbox[] = "enable-sandbox";
 
-// Provides a child process with a token string they can use to establish a
-// primordial message pipe to the parent.
-const char kPrimordialPipeToken[] = "primordial-pipe-token";
+// Specified on the command line of service processes to indicate which service
+// should be run. Useful when the service process binary may act as one of many
+// different embedded services.
+const char kServiceName[] = "service-name";
 
-// The name of the service the process is starting for.
-const char kProcessServiceName[] = "process-service-name";
-
-// Specifies a JSON file from which to read a set of service metadata overrides.
-// This can be used with the standalone mojo_runner to override executable and
-// package resolution behavior.
-const char kServiceOverrides[] = "service-overrides";
+// Provides a child process with a token string they can exchange for a message
+// pipe whose other end is bound to a service_manager::Service binding in the
+// Service Manager.
+const char kServicePipeToken[] = "service-pipe-token";
 
 }  // namespace switches
+}  // namespace service_manager
diff --git a/services/service_manager/runner/common/switches.h b/services/service_manager/runner/common/switches.h
index a14b36a8..2d0594a 100644
--- a/services/service_manager/runner/common/switches.h
+++ b/services/service_manager/runner/common/switches.h
@@ -5,16 +5,16 @@
 #ifndef SERVICES_SERVICE_MANAGER_RUNNER_COMMON_SWITCHES_H_
 #define SERVICES_SERVICE_MANAGER_RUNNER_COMMON_SWITCHES_H_
 
+namespace service_manager {
 namespace switches {
 
 // All switches in alphabetical order. The switches should be documented
 // alongside the definition of their values in the .cc file.
-extern const char kChildProcess[];
 extern const char kEnableSandbox[];
-extern const char kPrimordialPipeToken[];
-extern const char kProcessServiceName[];
-extern const char kServiceOverrides[];
+extern const char kServiceName[];
+extern const char kServicePipeToken[];
 
 }  // namespace switches
+}  // namespace service_manager
 
 #endif  // SERVICES_SERVICE_MANAGER_RUNNER_COMMON_SWITCHES_H_
diff --git a/services/service_manager/runner/host/service_process_launcher.cc b/services/service_manager/runner/host/service_process_launcher.cc
index 52077bb..052fc27 100644
--- a/services/service_manager/runner/host/service_process_launcher.cc
+++ b/services/service_manager/runner/host/service_process_launcher.cc
@@ -75,15 +75,13 @@
       new base::CommandLine(service_path_));
 
   child_command_line->AppendArguments(parent_command_line, false);
-
-  child_command_line->AppendSwitchASCII(::switches::kProcessServiceName,
-                                        target.name());
+  child_command_line->AppendSwitchASCII(switches::kServiceName, target.name());
 #ifndef NDEBUG
   child_command_line->AppendSwitchASCII("u", target.user_id());
 #endif
 
   if (start_sandboxed_)
-    child_command_line->AppendSwitch(::switches::kEnableSandbox);
+    child_command_line->AppendSwitch(switches::kEnableSandbox);
 
   mojo_ipc_channel_.reset(new mojo::edk::PlatformChannelPair);
   mojo_ipc_channel_->PrepareToPassClientHandleToChildProcess(
@@ -91,6 +89,7 @@
 
   mojom::ServicePtr client = PassServiceRequestOnCommandLine(
       &process_connection_, child_command_line.get());
+
   launch_process_runner_->PostTaskAndReply(
       FROM_HERE,
       base::Bind(&ServiceProcessLauncher::DoLaunch, base::Unretained(this),
diff --git a/services/service_manager/runner/init.cc b/services/service_manager/runner/init.cc
index 20f6a0e9..4c9f7b2 100644
--- a/services/service_manager/runner/init.cc
+++ b/services/service_manager/runner/init.cc
@@ -40,24 +40,17 @@
 void WaitForDebuggerIfNecessary() {
   const base::CommandLine* command_line =
       base::CommandLine::ForCurrentProcess();
-  if (command_line->HasSwitch(switches::kWaitForDebugger)) {
+  if (command_line->HasSwitch(::switches::kWaitForDebugger)) {
     std::vector<std::string> apps_to_debug = base::SplitString(
-        command_line->GetSwitchValueASCII(switches::kWaitForDebugger), ",",
+        command_line->GetSwitchValueASCII(::switches::kWaitForDebugger), ",",
         base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
     std::string app = "launcher";
-    if (command_line->HasSwitch(switches::kChildProcess)) {
-      app = command_line->GetSwitchValuePath(switches::kChildProcess)
-                .BaseName()
-                .RemoveExtension()
-                .MaybeAsASCII();
-    } else {
-      base::FilePath exe_path =
-          command_line->GetProgram().BaseName().RemoveExtension();
-      for (const auto& app_name : apps_to_debug) {
-        if (base::FilePath().AppendASCII(app_name) == exe_path) {
-          app = app_name;
-          break;
-        }
+    base::FilePath exe_path =
+        command_line->GetProgram().BaseName().RemoveExtension();
+    for (const auto& app_name : apps_to_debug) {
+      if (base::FilePath().AppendASCII(app_name) == exe_path) {
+        app = app_name;
+        break;
       }
     }
     if (apps_to_debug.empty() || base::ContainsValue(apps_to_debug, app)) {
diff --git a/services/service_manager/service_manager.cc b/services/service_manager/service_manager.cc
index d29b0c9..6e492932 100644
--- a/services/service_manager/service_manager.cc
+++ b/services/service_manager/service_manager.cc
@@ -240,7 +240,7 @@
   }
 
  private:
-   enum class State {
+  enum class State {
     // The service was not started yet.
     IDLE,
 
@@ -253,67 +253,67 @@
   };
 
   // mojom::Connector implementation:
-   void BindInterface(const service_manager::Identity& in_target,
-                      const std::string& interface_name,
-                      mojo::ScopedMessagePipeHandle interface_pipe,
-                      const BindInterfaceCallback& callback) override {
-     Identity target = in_target;
-     mojom::ConnectResult result =
-         ValidateConnectParams(&target, nullptr, nullptr);
-     if (!Succeeded(result)) {
-       callback.Run(result, Identity());
-       return;
-     }
+  void BindInterface(const service_manager::Identity& in_target,
+                     const std::string& interface_name,
+                     mojo::ScopedMessagePipeHandle interface_pipe,
+                     const BindInterfaceCallback& callback) override {
+    Identity target = in_target;
+    mojom::ConnectResult result =
+        ValidateConnectParams(&target, nullptr, nullptr);
+    if (!Succeeded(result)) {
+      callback.Run(result, Identity());
+      return;
+    }
 
-     std::unique_ptr<ConnectParams> params(new ConnectParams);
-     params->set_source(identity_);
-     params->set_target(target);
-     params->set_interface_request_info(interface_name,
-                                        std::move(interface_pipe));
-     params->set_start_service_callback(callback);
-     service_manager_->Connect(std::move(params), weak_factory_.GetWeakPtr());
-   }
+    std::unique_ptr<ConnectParams> params(new ConnectParams);
+    params->set_source(identity_);
+    params->set_target(target);
+    params->set_interface_request_info(interface_name,
+                                       std::move(interface_pipe));
+    params->set_start_service_callback(callback);
+    service_manager_->Connect(std::move(params), weak_factory_.GetWeakPtr());
+  }
 
-   void StartService(const Identity& in_target,
-                     const StartServiceCallback& callback) override {
-     Identity target = in_target;
-     mojom::ConnectResult result =
-         ValidateConnectParams(&target, nullptr, nullptr);
-     if (!Succeeded(result)) {
-       callback.Run(result, Identity());
-       return;
-     }
+  void StartService(const Identity& in_target,
+                    const StartServiceCallback& callback) override {
+    Identity target = in_target;
+    mojom::ConnectResult result =
+        ValidateConnectParams(&target, nullptr, nullptr);
+    if (!Succeeded(result)) {
+      callback.Run(result, Identity());
+      return;
+    }
 
-     std::unique_ptr<ConnectParams> params(new ConnectParams);
-     params->set_source(identity_);
-     params->set_target(target);
-     params->set_start_service_callback(callback);
-     service_manager_->Connect(std::move(params), weak_factory_.GetWeakPtr());
-   }
+    std::unique_ptr<ConnectParams> params(new ConnectParams);
+    params->set_source(identity_);
+    params->set_target(target);
+    params->set_start_service_callback(callback);
+    service_manager_->Connect(std::move(params), weak_factory_.GetWeakPtr());
+  }
 
-   void StartServiceWithProcess(
-       const Identity& in_target,
-       mojo::ScopedMessagePipeHandle service_handle,
-       mojom::PIDReceiverRequest pid_receiver_request,
-       const StartServiceWithProcessCallback& callback) override {
-     Identity target = in_target;
-     mojom::ConnectResult result =
-         ValidateConnectParams(&target, nullptr, nullptr);
-     if (!Succeeded(result)) {
-       callback.Run(result, Identity());
-       return;
-     }
+  void StartServiceWithProcess(
+      const Identity& in_target,
+      mojo::ScopedMessagePipeHandle service_handle,
+      mojom::PIDReceiverRequest pid_receiver_request,
+      const StartServiceWithProcessCallback& callback) override {
+    Identity target = in_target;
+    mojom::ConnectResult result =
+        ValidateConnectParams(&target, nullptr, nullptr);
+    if (!Succeeded(result)) {
+      callback.Run(result, Identity());
+      return;
+    }
 
-     std::unique_ptr<ConnectParams> params(new ConnectParams);
-     params->set_source(identity_);
-     params->set_target(target);
+    std::unique_ptr<ConnectParams> params(new ConnectParams);
+    params->set_source(identity_);
+    params->set_target(target);
 
-     mojom::ServicePtr service;
-     service.Bind(mojom::ServicePtrInfo(std::move(service_handle), 0));
-     params->set_client_process_info(std::move(service),
-                                     std::move(pid_receiver_request));
-     params->set_start_service_callback(callback);
-     service_manager_->Connect(std::move(params), weak_factory_.GetWeakPtr());
+    mojom::ServicePtr service;
+    service.Bind(mojom::ServicePtrInfo(std::move(service_handle), 0));
+    params->set_client_process_info(std::move(service),
+                                    std::move(pid_receiver_request));
+    params->set_start_service_callback(callback);
+    service_manager_->Connect(std::move(params), weak_factory_.GetWeakPtr());
   }
 
   void Clone(mojom::ConnectorRequest request) override {
@@ -624,6 +624,18 @@
   Connect(std::move(params), nullptr);
 }
 
+void ServiceManager::StartService(const Identity& identity) {
+  auto params = base::MakeUnique<ConnectParams>();
+  params->set_source(CreateServiceManagerIdentity());
+
+  Identity target_identity = identity;
+  if (target_identity.user_id() == mojom::kInheritUserID)
+    target_identity.set_user_id(mojom::kRootUserID);
+  params->set_target(target_identity);
+
+  Connect(std::move(params), nullptr);
+}
+
 void ServiceManager::RegisterService(
     const Identity& identity,
     mojom::ServicePtr service,
diff --git a/services/service_manager/service_manager.h b/services/service_manager/service_manager.h
index 3596d8e..0fc8d5d 100644
--- a/services/service_manager/service_manager.h
+++ b/services/service_manager/service_manager.h
@@ -71,6 +71,10 @@
   // instance of the target application is running, one will be loaded.
   void Connect(std::unique_ptr<ConnectParams> params);
 
+  // Directly requests that the Service Manager start a new instance for
+  // |identity| if one is not already running.
+  void StartService(const Identity& identity);
+
   // Creates a service instance for |identity|. This is intended for use by the
   // Service Manager's embedder to register instances directly, without
   // requiring a Connector.
diff --git a/services/service_manager/tests/util.cc b/services/service_manager/tests/util.cc
index b881f17..a612d337 100644
--- a/services/service_manager/tests/util.cc
+++ b/services/service_manager/tests/util.cc
@@ -50,8 +50,8 @@
   // Forward the wait-for-debugger flag but nothing else - we don't want to
   // stamp on the platform-channel flag.
   if (base::CommandLine::ForCurrentProcess()->HasSwitch(
-          switches::kWaitForDebugger)) {
-    child_command_line.AppendSwitch(switches::kWaitForDebugger);
+          ::switches::kWaitForDebugger)) {
+    child_command_line.AppendSwitch(::switches::kWaitForDebugger);
   }
 
   // Create the channel to be shared with the target process. Pass one end
@@ -65,7 +65,7 @@
   std::string token;
   mojo::ScopedMessagePipeHandle pipe =
       pending_process.CreateMessagePipe(&token);
-  child_command_line.AppendSwitchASCII(switches::kPrimordialPipeToken, token);
+  child_command_line.AppendSwitchASCII(switches::kServicePipeToken, token);
 
   service_manager::mojom::ServicePtr client;
   client.Bind(mojo::InterfacePtrInfo<service_manager::mojom::Service>(
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl
index b5e3b0b..425f730 100644
--- a/testing/buildbot/gn_isolate_map.pyl
+++ b/testing/buildbot/gn_isolate_map.pyl
@@ -653,7 +653,6 @@
     "executable": "browser_tests",
     "args": [
       "--run-in-mash",
-      "--service-overrides=../../chrome/app/mash/mash_service_overrides.json",
     ],
   },
   "media_unittests": {
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG
index d1a2c015..be3546b 100644
--- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG
+++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG
@@ -534,31 +534,35 @@
 crbug.com/591099 canvas/feimage-with-foreignobject-taint-canvas.html [ Crash ]
 crbug.com/591099 canvas/image-with-foreignobject-taint-canvas-2.html [ Crash ]
 crbug.com/591099 canvas/image-with-foreignobject-taint-canvas.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.composite.transparent.destination-atop.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.composite.transparent.destination-in.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.composite.uncovered.nocontext.copy.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.drawImage.9arg.destpos.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.drawImage.floatsource.html [ Crash ]
+crbug.com/591099 canvas/philip/tests/2d.composite.transparent.destination-atop.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/2d.composite.transparent.destination-in.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/2d.composite.uncovered.nocontext.copy.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/2d.drawImage.9arg.destpos.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/2d.drawImage.floatsource.html [ Crash Pass ]
 crbug.com/591099 canvas/philip/tests/2d.drawImage.image.incomplete.empty.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.drawImage.image.incomplete.omitted.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.fillRect.basic.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.fillRect.transform.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.fillStyle.parse.current.changed.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.fillStyle.parse.hsl-1.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.fillStyle.parse.invalid.rgba-7.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.fillStyle.parse.rgba-clamp-2.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.pattern.image.incomplete.empty.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.pattern.image.incomplete.omitted.html [ Crash ]
+crbug.com/591099 canvas/philip/tests/2d.drawImage.image.incomplete.omitted.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/2d.fillRect.basic.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/2d.fillRect.transform.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/2d.fillStyle.parse.current.changed.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/2d.fillStyle.parse.hsl-1.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/2d.fillStyle.parse.invalid.rgba-7.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/2d.fillStyle.parse.rgba-clamp-2.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/2d.pattern.image.incomplete.empty.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/2d.pattern.image.incomplete.omitted.html [ Crash Pass ]
 crbug.com/591099 canvas/philip/tests/2d.pattern.paint.orientation.canvas.html [ Crash Pass ]
-crbug.com/591099 canvas/philip/tests/2d.shadow.pattern.transparent.2.html [ Crash ]
-crbug.com/591099 canvas/philip/tests/2d.shadow.stroke.cap.1.html [ Crash ]
+crbug.com/591099 canvas/philip/tests/2d.shadow.pattern.transparent.2.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/2d.shadow.stroke.cap.1.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/size.attributes.parse.em.html [ Crash Pass ]
+crbug.com/591099 canvas/philip/tests/toDataURL.jpeg.primarycolours.html [ Crash Pass ]
 crbug.com/591099 compositing/3d-corners.html [ Failure ]
 crbug.com/591099 compositing/always-composite-fixed-position-when-descendants-composite.html [ Failure ]
 crbug.com/591099 compositing/animation/busy-indicator.html [ Failure ]
 crbug.com/591099 compositing/animation/hidden-composited.html [ Failure ]
 crbug.com/591099 compositing/backface-visibility/backface-visibility-image.html [ Failure ]
+crbug.com/591099 compositing/backface-visibility/backface-visibility-non3d.html [ Failure Pass ]
 crbug.com/591099 compositing/backface-visibility/backface-visibility-webgl.html [ Failure ]
 crbug.com/591099 compositing/backface-visibility-transformed.html [ Failure ]
+crbug.com/591099 compositing/background-color/background-color-change-to-text.html [ Failure Pass ]
 crbug.com/591099 compositing/backgrounds/fixed-backgrounds.html [ Failure ]
 crbug.com/591099 compositing/backgrounds/local-background.html [ Failure ]
 crbug.com/591099 compositing/backing/no-backing-foreground-layer.html [ Failure ]
@@ -581,7 +585,7 @@
 crbug.com/591099 compositing/culling/unscrolled-within-boxshadow.html [ Failure ]
 crbug.com/591099 compositing/direct-image-compositing.html [ Failure ]
 crbug.com/591099 compositing/empty-render-surface-crasher.html [ Failure ]
-crbug.com/591099 compositing/fixed-body-background-positioned.html [ Failure ]
+crbug.com/591099 compositing/fixed-body-background-positioned.html [ Failure Pass ]
 crbug.com/591099 compositing/fixed-position-changed-to-absolute.html [ Failure ]
 crbug.com/591099 compositing/fixed-position-container.html [ Failure ]
 crbug.com/591099 compositing/fixed-position-scroll-offset-history-restore.html [ Failure ]
@@ -605,7 +609,7 @@
 crbug.com/591099 compositing/geometry/fixed-in-composited.html [ Failure ]
 crbug.com/591099 compositing/geometry/fixed-position-composited-page-scale-down.html [ Failure ]
 crbug.com/591099 compositing/geometry/fixed-position-composited-page-scale.html [ Failure ]
-crbug.com/591099 compositing/geometry/fixed-position-composited-page-scale-smaller-than-viewport.html [ Crash ]
+crbug.com/591099 compositing/geometry/fixed-position-composited-page-scale-smaller-than-viewport.html [ Crash Pass ]
 crbug.com/591099 compositing/geometry/fixed-position.html [ Failure ]
 crbug.com/591099 compositing/geometry/fixed-position-iframe-composited-page-scale-down.html [ Failure ]
 crbug.com/591099 compositing/geometry/fixed-position-iframe-composited-page-scale.html [ Failure ]
@@ -616,10 +620,11 @@
 crbug.com/591099 compositing/geometry/foreground-offset-change.html [ Failure ]
 crbug.com/591099 compositing/geometry/geometry-map-scroll-during-layout-assertion.html [ Failure ]
 crbug.com/591099 compositing/geometry/horizontal-scroll-composited.html [ Failure ]
+crbug.com/591099 compositing/geometry/layer-due-to-layer-children-deep.html [ Failure Pass ]
 crbug.com/591099 compositing/geometry/layer-due-to-layer-children-deep-switch.html [ Failure ]
 crbug.com/591099 compositing/geometry/layer-due-to-layer-children-switch.html [ Failure ]
 crbug.com/591099 compositing/geometry/limit-layer-bounds-opacity-transition.html [ Failure ]
-crbug.com/591099 compositing/geometry/limit-layer-bounds-overflow-root.html [ Failure ]
+crbug.com/591099 compositing/geometry/limit-layer-bounds-overflow-root.html [ Failure Pass ]
 crbug.com/591099 compositing/geometry/limit-layer-bounds-positioned.html [ Failure ]
 crbug.com/591099 compositing/geometry/object-clip-rects-assertion.html [ Failure ]
 crbug.com/591099 compositing/geometry/partial-layout-update.html [ Failure ]
@@ -710,8 +715,9 @@
 crbug.com/591099 compositing/iframes/scroll-fixed-transformed-element.html [ Failure ]
 crbug.com/591099 compositing/iframes/scroll-grandchild-iframe.html [ Failure ]
 crbug.com/591099 compositing/iframes/scrolling-iframe.html [ Failure ]
-crbug.com/591099 compositing/iframes/visibility-hidden-transformed-content.html [ Failure ]
+crbug.com/591099 compositing/iframes/visibility-hidden-transformed-content.html [ Failure Pass ]
 crbug.com/591099 compositing/images/clip-on-directly-composited-image.html [ Failure ]
+crbug.com/591099 compositing/images/content-image-change.html [ Failure Pass ]
 crbug.com/591099 compositing/images/content-image.html [ Failure ]
 crbug.com/591099 compositing/images/direct-image-background-color.html [ Failure ]
 crbug.com/591099 compositing/images/direct-svg-image.html [ Failure ]
@@ -886,7 +892,7 @@
 crbug.com/591099 compositing/rtl/rtl-overflow-invalidation.html [ Failure ]
 crbug.com/591099 compositing/rtl/rtl-overflow-scrolling.html [ Failure ]
 crbug.com/591099 compositing/rtl/rtl-relative.html [ Failure ]
-crbug.com/591099 compositing/scaling/tiled-layer-recursion.html [ Failure ]
+crbug.com/591099 compositing/scaling/tiled-layer-recursion.html [ Failure Pass ]
 crbug.com/591099 compositing/scrollbar-painting.html [ Failure ]
 crbug.com/591099 compositing/scrollbars/custom-composited-different-track-parts.html [ Failure ]
 crbug.com/591099 compositing/scrollbars/nested-overlay-scrollbars.html [ Failure ]
@@ -930,6 +936,7 @@
 crbug.com/591099 compositing/visibility/compositing-and-visibility-turned-off-together.html [ Failure ]
 crbug.com/591099 compositing/visibility/hidden-iframe.html [ Failure ]
 crbug.com/591099 compositing/visibility/layer-visible-content.html [ Failure ]
+crbug.com/591099 compositing/visibility/overlays.html [ Failure Pass ]
 crbug.com/591099 compositing/visibility/visibility-image-layers-dynamic.html [ Failure ]
 crbug.com/591099 compositing/visibility/visibility-image-layers.html [ Failure ]
 crbug.com/591099 compositing/visibility/visibility-on-distant-descendant.html [ Failure ]
@@ -939,7 +946,7 @@
 crbug.com/591099 compositing/webgl/webgl-nonpremultiplied-blend.html [ Failure ]
 crbug.com/591099 compositing/webgl/webgl-reflection.html [ Failure ]
 crbug.com/591099 compositing/webgl/webgl-repaint.html [ Failure ]
-crbug.com/591099 compositing/webgl/webgl-with-accelerated-background-color.html [ Failure ]
+crbug.com/591099 compositing/webgl/webgl-with-accelerated-background-color.html [ Failure Pass ]
 crbug.com/591099 compositing/will-change/neutral-keyframe-not-decomposed.html [ Failure ]
 crbug.com/591099 compositing/will-change/parse-will-change.html [ Failure ]
 crbug.com/591099 compositing/writing-mode-rl-overflow.html [ Failure ]
@@ -1105,7 +1112,7 @@
 crbug.com/591099 css1/box_properties/border_width_inline.html [ Failure ]
 crbug.com/591099 css1/box_properties/clear_float.html [ Failure ]
 crbug.com/591099 css1/box_properties/clear.html [ Failure ]
-crbug.com/591099 css1/box_properties/float_elements_in_series.html [ Failure ]
+crbug.com/591099 css1/box_properties/float_elements_in_series.html [ Crash Failure ]
 crbug.com/591099 css1/box_properties/float.html [ Failure ]
 crbug.com/591099 css1/box_properties/float_margin.html [ Failure ]
 crbug.com/591099 css1/box_properties/float_on_text_elements.html [ Failure ]
@@ -1180,8 +1187,8 @@
 crbug.com/591099 css1/units/urls.html [ Failure ]
 crbug.com/591099 css2.1/20110323/abspos-non-replaced-width-margin-000.htm [ Failure ]
 crbug.com/591099 css2.1/20110323/abspos-replaced-width-margin-000.htm [ Failure ]
-crbug.com/591099 css2.1/20110323/border-collapse-offset-002.htm [ Failure ]
-crbug.com/591099 css2.1/20110323/border-conflict-element-011.htm [ Crash ]
+crbug.com/591099 css2.1/20110323/border-collapse-offset-002.htm [ Failure Pass ]
+crbug.com/591099 css2.1/20110323/border-conflict-element-011.htm [ Crash Pass ]
 crbug.com/591099 css2.1/20110323/c541-word-sp-001.htm [ Failure ]
 crbug.com/591099 css2.1/20110323/c543-txt-decor-000.html [ Failure ]
 crbug.com/591099 css2.1/20110323/height-applies-to-010a.htm [ Failure ]
@@ -1193,9 +1200,9 @@
 crbug.com/591099 css2.1/20110323/margin-applies-to-014.htm [ Failure ]
 crbug.com/591099 css2.1/20110323/margin-collapse-012.htm [ Failure ]
 crbug.com/591099 css2.1/20110323/outline-color-001.htm [ Failure ]
-crbug.com/591099 css2.1/20110323/outline-color-applies-to-004.htm [ Failure ]
+crbug.com/591099 css2.1/20110323/outline-color-applies-to-004.htm [ Failure Pass ]
 crbug.com/591099 css2.1/20110323/outline-color-applies-to-008.htm [ Failure ]
-crbug.com/591099 css2.1/20110323/outline-color-applies-to-010.htm [ Crash ]
+crbug.com/591099 css2.1/20110323/outline-color-applies-to-010.htm [ Crash Pass ]
 crbug.com/591099 css2.1/20110323/overflow-applies-to-008.htm [ Failure ]
 crbug.com/591099 css2.1/20110323/overflow-applies-to-009.htm [ Failure ]
 crbug.com/591099 css2.1/20110323/overflow-applies-to-010.htm [ Failure ]
@@ -1208,6 +1215,7 @@
 crbug.com/591099 css2.1/t010403-shand-border-00-c.html [ Failure ]
 crbug.com/591099 css2.1/t040102-keywords-01-b.html [ Failure ]
 crbug.com/591099 css2.1/t040103-ident-10-c.html [ Crash Pass ]
+crbug.com/591099 css2.1/t040109-c17-comments-01-b.html [ Failure Pass ]
 crbug.com/591099 css2.1/t0402-c71-fwd-parsing-01-f.html [ Failure ]
 crbug.com/591099 css2.1/t0402-c71-fwd-parsing-02-f.html [ Failure ]
 crbug.com/591099 css2.1/t0402-c71-fwd-parsing-04-f.html [ Failure ]
@@ -1219,6 +1227,7 @@
 crbug.com/591099 css2.1/t0509-c15-ids-01-e.html [ Failure ]
 crbug.com/591099 css2.1/t051103-dom-hover-01-c-io.html [ Failure ]
 crbug.com/591099 css2.1/t051103-dom-hover-02-c-io.html [ Failure ]
+crbug.com/591099 css2.1/t0511-c21-pseud-link-00-e.html [ Failure Pass ]
 crbug.com/591099 css2.1/t051201-c23-first-line-00-b.html [ Failure ]
 crbug.com/591099 css2.1/t051202-c24-first-lttr-00-b.html [ Failure ]
 crbug.com/591099 css2.1/t051202-c26-psudo-nest-00-c.html [ Failure ]
@@ -1309,7 +1318,7 @@
 crbug.com/591099 css2.1/t0805-c5519-brdr-r-01-e.html [ Failure ]
 crbug.com/591099 css2.1/t0805-c5519-brdr-r-02-e.html [ Failure ]
 crbug.com/591099 css2.1/t0805-c5519-ibrdr-r-00-a.html [ Failure ]
-crbug.com/591099 css2.1/t0805-c5520-brdr-b-00-a.html [ Failure ]
+crbug.com/591099 css2.1/t0805-c5520-brdr-b-00-a.html [ Failure Pass ]
 crbug.com/591099 css2.1/t0805-c5520-brdr-b-01-e.html [ Failure ]
 crbug.com/591099 css2.1/t0805-c5520-ibrdr-b-00-a.html [ Failure ]
 crbug.com/591099 css2.1/t0805-c5521-brdr-l-00-a.html [ Failure ]
@@ -1318,7 +1327,7 @@
 crbug.com/591099 css2.1/t0805-c5521-ibrdr-l-00-a.html [ Failure ]
 crbug.com/591099 css2.1/t0805-c5522-brdr-00-b.html [ Failure ]
 crbug.com/591099 css2.1/t0805-c5522-brdr-01-b-g.html [ Failure ]
-crbug.com/591099 css2.1/t0805-c5522-brdr-02-e.html [ Failure ]
+crbug.com/591099 css2.1/t0805-c5522-brdr-02-e.html [ Failure Pass ]
 crbug.com/591099 css2.1/t0805-c5522-ibrdr-00-a.html [ Failure ]
 crbug.com/591099 css2.1/t090204-display-change-01-b-ao.html [ Failure ]
 crbug.com/591099 css2.1/t090402-c42-ibx-pad-00-d-ag.html [ Failure ]
@@ -1348,7 +1357,7 @@
 crbug.com/591099 css2.1/t0905-c5525-flthw-00-c-g.html [ Failure ]
 crbug.com/591099 css2.1/t0905-c5525-fltinln-00-c-ag.html [ Failure ]
 crbug.com/591099 css2.1/t0905-c5525-fltmrgn-00-c-ag.html [ Failure ]
-crbug.com/591099 css2.1/t0905-c5525-fltmult-00-d-g.html [ Failure ]
+crbug.com/591099 css2.1/t0905-c5525-fltmult-00-d-g.html [ Crash Failure ]
 crbug.com/591099 css2.1/t0905-c5525-fltwidth-00-c-g.html [ Failure ]
 crbug.com/591099 css2.1/t0905-c5525-fltwidth-01-c-g.html [ Failure ]
 crbug.com/591099 css2.1/t0905-c5525-fltwidth-02-c-g.html [ Failure ]
@@ -1363,7 +1372,7 @@
 crbug.com/591099 css2.1/t1002-c5523-width-02-b-g.html [ Failure ]
 crbug.com/591099 css2.1/t100304-c43-rpl-bbx-00-d-g.html [ Failure ]
 crbug.com/591099 css2.1/t100304-c43-rpl-bbx-01-d-g.html [ Failure ]
-crbug.com/591099 css2.1/t1004-c43-rpl-bbx-00-d-ag.html [ Failure ]
+crbug.com/591099 css2.1/t1004-c43-rpl-bbx-00-d-ag.html [ Failure Pass ]
 crbug.com/591099 css2.1/t1004-c43-rpl-ibx-00-d-ag.html [ Failure ]
 crbug.com/591099 css2.1/t1004-c5524-width-00-b-g.html [ Failure ]
 crbug.com/591099 css2.1/t1005-c5524-width-00-b-g.html [ Failure ]
@@ -1416,7 +1425,7 @@
 crbug.com/591099 css2.1/t1202-counters-18-f.html [ Failure ]
 crbug.com/591099 css2.1/t120401-scope-00-b.html [ Failure ]
 crbug.com/591099 css2.1/t120401-scope-04-d.html [ Failure ]
-crbug.com/591099 css2.1/t1204-implied-00-b.html [ Crash ]
+crbug.com/591099 css2.1/t1204-implied-00-b.html [ Crash Pass ]
 crbug.com/591099 css2.1/t1204-order-00-c.html [ Failure ]
 crbug.com/591099 css2.1/t1204-order-01-d.html [ Failure ]
 crbug.com/591099 css2.1/t1205-c561-list-displ-00-b.html [ Failure ]
@@ -1460,7 +1469,7 @@
 crbug.com/591099 css2.1/t1605-c545-txttrans-00-b-ag.html [ Failure ]
 crbug.com/591099 css2.1/t1606-c562-white-sp-00-b-ag.html [ Failure ]
 crbug.com/591099 css2.1/t170602-bdr-conflct-w-91-d.html [ Failure Pass ]
-crbug.com/591099 css2.1/t170602-bdr-conflct-w-92-d.html [ Failure ]
+crbug.com/591099 css2.1/t170602-bdr-conflct-w-92-d.html [ Failure Pass ]
 crbug.com/591099 css3/background/background-large-position-and-size-remains-stable.html [ Failure ]
 crbug.com/591099 css3/background/background-positioning-area-vrl.html [ Failure ]
 crbug.com/591099 css3/blending/background-blend-mode-crossfade-image-gradient.html [ Failure ]
@@ -1495,9 +1504,9 @@
 crbug.com/591099 css3/blending/mix-blend-mode-isolation-remove.html [ Crash ]
 crbug.com/591099 css3/blending/mix-blend-mode-simple.html [ Failure ]
 crbug.com/591099 css3/blending/mix-blend-mode-simple-text.html [ Failure ]
-crbug.com/591099 css3/blending/mix-blend-mode-with-squashing-layer.html [ Failure ]
-crbug.com/591099 css3/blending/svg-isolation-remove-isolation.html [ Failure ]
-crbug.com/591099 css3/blending/svg-isolation-simple.html [ Failure ]
+crbug.com/591099 css3/blending/mix-blend-mode-with-squashing-layer.html [ Failure Pass ]
+crbug.com/591099 css3/blending/svg-isolation-remove-isolation.html [ Failure Pass ]
+crbug.com/591099 css3/blending/svg-isolation-simple.html [ Failure Pass ]
 crbug.com/591099 css3/calc/border.html [ Failure ]
 crbug.com/591099 css3/calc/catch-divide-by-0.html [ Failure ]
 crbug.com/591099 css3/calc/color-hsl.html [ Failure ]
@@ -1525,9 +1534,12 @@
 crbug.com/591099 css3/escape-dom-api.html [ Failure ]
 crbug.com/591099 css3/filters/add-filter-rendering.html [ Failure ]
 crbug.com/591099 css3/filters/adopt-inline-style.html [ Crash ]
+crbug.com/591099 css3/filters/blur-filter-page-scroll.html [ Failure Pass ]
 crbug.com/591099 css3/filters/composited-during-animation.html [ Crash ]
 crbug.com/591099 css3/filters/composited-during-transition-layertree.html [ Failure ]
 crbug.com/591099 css3/filters/composited-layer-child-bounds-after-composited-to-sw-shadow-change.html [ Failure ]
+crbug.com/591099 css3/filters/composited-layer-promotion-after-outset-overlap-change-using-composited-shadow.html [ Failure Pass ]
+crbug.com/591099 css3/filters/css-opacity-with-drop-shadow.html [ Crash Pass ]
 crbug.com/591099 css3/filters/effect-all-on-background.html [ Failure ]
 crbug.com/591099 css3/filters/effect-blur.html [ Failure ]
 crbug.com/591099 css3/filters/effect-blur-hw.html [ Failure ]
@@ -1581,7 +1593,7 @@
 crbug.com/591099 css3/filters/filter-repaint-composited-fallback.html [ Failure ]
 crbug.com/591099 css3/filters/filter-repaint-feimage.html [ Failure ]
 crbug.com/591099 css3/filters/filter-repaint-shadow-clipped.html [ Failure ]
-crbug.com/591099 css3/filters/filter-repaint-shadow-layer-child.html [ Failure ]
+crbug.com/591099 css3/filters/filter-repaint-shadow-layer-child.html [ Failure Pass ]
 crbug.com/591099 css3/filters/filter-repaint-shadow-rotated.html [ Failure ]
 crbug.com/591099 css3/filters/filter-repaint-turbulence.html [ Failure ]
 crbug.com/591099 css3/filters/filter-with-opacity-and-children.html [ Failure ]
@@ -1620,9 +1632,9 @@
 crbug.com/591099 css3/flexbox/flexbox-baseline.html [ Failure ]
 crbug.com/591099 css3/flexbox/flexbox-baseline-margins.html [ Failure ]
 crbug.com/591099 css3/flexbox/flexbox-height-with-overflow-auto.html [ Failure ]
-crbug.com/591099 css3/flexbox/flexbox-ignore-container-firstLetter.html [ Failure ]
-crbug.com/591099 css3/flexbox/flexbox-ignore-firstLetter.html [ Failure ]
-crbug.com/591099 css3/flexbox/flexbox-ignore-firstLine.html [ Failure ]
+crbug.com/591099 css3/flexbox/flexbox-ignore-container-firstLetter.html [ Failure Pass ]
+crbug.com/591099 css3/flexbox/flexbox-ignore-firstLetter.html [ Failure Pass ]
+crbug.com/591099 css3/flexbox/flexbox-ignore-firstLine.html [ Failure Pass ]
 crbug.com/591099 css3/flexbox/flexbox-overflow-auto.html [ Failure ]
 crbug.com/591099 css3/flexbox/flexbox-wordwrap.html [ Failure ]
 crbug.com/591099 css3/flexbox/flex-flow-2.html [ Failure ]
@@ -1634,8 +1646,8 @@
 crbug.com/591099 css3/flexbox/flex-flow-margins.html [ Failure ]
 crbug.com/591099 css3/flexbox/flex-flow-padding.html [ Failure ]
 crbug.com/591099 css3/flexbox/flex-item-contains-strict.html [ Crash ]
-crbug.com/591099 css3/flexbox/flex-item-firstLine-valid.html [ Failure ]
-crbug.com/591099 css3/flexbox/flexitem-stretch-range.html [ Crash ]
+crbug.com/591099 css3/flexbox/flex-item-firstLine-valid.html [ Failure Pass ]
+crbug.com/591099 css3/flexbox/flexitem-stretch-range.html [ Crash Pass ]
 crbug.com/591099 css3/flexbox/flex-longhand-parsing.html [ Failure ]
 crbug.com/591099 css3/flexbox/flex-one-sets-flex-basis-to-zero-px.html [ Failure ]
 crbug.com/591099 css3/flexbox/flex-percentage-height-in-table.html [ Failure ]
@@ -1643,8 +1655,8 @@
 crbug.com/591099 css3/flexbox/flex-property-parsing.html [ Failure ]
 crbug.com/591099 css3/flexbox/floated-flexbox.html [ Failure ]
 crbug.com/591099 css3/flexbox/floated-flexitem.html [ Failure ]
-crbug.com/591099 css3/flexbox/float-inside-flexitem.html [ Crash ]
-crbug.com/591099 css3/flexbox/inline-flexbox-ignore-firstLine.html [ Failure ]
+crbug.com/591099 css3/flexbox/float-inside-flexitem.html [ Crash Pass ]
+crbug.com/591099 css3/flexbox/inline-flexbox-ignore-firstLine.html [ Failure Pass ]
 crbug.com/591099 css3/flexbox/inline-flex-crash2.html [ Crash ]
 crbug.com/591099 css3/flexbox/inline-flex-crash.html [ Crash ]
 crbug.com/591099 css3/flexbox/inline-flex.html [ Crash ]
@@ -1653,7 +1665,9 @@
 crbug.com/591099 css3/flexbox/large-flex-shrink-assert.html [ Failure ]
 crbug.com/591099 css3/flexbox/line-wrapping.html [ Failure ]
 crbug.com/591099 css3/flexbox/min-size-auto.html [ Crash ]
+crbug.com/591099 css3/flexbox/mozilla/flexbox-inlinecontent-horiz-5.xhtml [ Failure Pass ]
 crbug.com/591099 css3/flexbox/mozilla/flexbox-items-as-stacking-contexts-2.html [ Failure ]
+crbug.com/591099 css3/flexbox/mozilla/flexbox-sizing-vert-1.xhtml [ Failure Pass ]
 crbug.com/591099 css3/flexbox/multiline-align-self.html [ Failure ]
 crbug.com/591099 css3/flexbox/multiline-reverse-wrap-baseline.html [ Failure ]
 crbug.com/591099 css3/flexbox/multiline-shrink-to-fit.html [ Failure ]
@@ -1673,6 +1687,7 @@
 crbug.com/591099 css3/flexbox/scrollbars-auto.html [ Failure ]
 crbug.com/591099 css3/flexbox/scrollbars.html [ Failure ]
 crbug.com/591099 css3/flexbox/stretched-child-shrink-on-relayout.html [ Failure ]
+crbug.com/591099 css3/flexbox/stretch-input-in-column.html [ Crash Pass ]
 crbug.com/591099 css3/flexbox/vertical-flexbox-percentage-ignored.html [ Failure ]
 crbug.com/591099 css3/flexbox/wrapping-column-dynamic-changes.html [ Failure ]
 crbug.com/591099 css3/flexbox/writing-modes.html [ Failure ]
@@ -1684,7 +1699,7 @@
 crbug.com/591099 css3/masking/clip-path-animation.html [ Crash ]
 crbug.com/591099 css3/masking/clip-path-circle-overflow-hidden.html [ Failure ]
 crbug.com/591099 css3/masking/clip-path-inset-corners.html [ Failure ]
-crbug.com/591099 css3/masking/clip-path-reference-box-2.html [ Crash ]
+crbug.com/591099 css3/masking/clip-path-reference-box-2.html [ Crash Pass ]
 crbug.com/591099 css3/masking/clip-path-reference-box-3.html [ Failure ]
 crbug.com/591099 css3/masking/clip-path-reference-box-inline.html [ Failure ]
 crbug.com/591099 css3/masking/clip-path-reference-restore.html [ Failure ]
@@ -1700,7 +1715,7 @@
 crbug.com/591099 css3/parsing-css3-nthchild.html [ Failure ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-13.html [ Failure ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-14.html [ Failure ]
-crbug.com/591099 css3/selectors3/html/css3-modsel-156.html [ Failure ]
+crbug.com/591099 css3/selectors3/html/css3-modsel-156.html [ Failure Pass ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-15.html [ Failure ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-161.html [ Failure ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-166a.html [ Failure ]
@@ -1754,25 +1769,26 @@
 crbug.com/591099 css3/selectors3/html/css3-modsel-68.html [ Failure ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-69.html [ Failure ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-70.html [ Failure ]
-crbug.com/591099 css3/selectors3/html/css3-modsel-72b.html [ Crash ]
+crbug.com/591099 css3/selectors3/html/css3-modsel-72b.html [ Crash Pass ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-73b.html [ Failure ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-73.html [ Failure ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-74b.html [ Failure ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-74.html [ Failure ]
-crbug.com/591099 css3/selectors3/html/css3-modsel-77b.html [ Failure ]
-crbug.com/591099 css3/selectors3/html/css3-modsel-77.html [ Failure ]
-crbug.com/591099 css3/selectors3/html/css3-modsel-78b.html [ Failure ]
-crbug.com/591099 css3/selectors3/html/css3-modsel-78.html [ Failure ]
+crbug.com/591099 css3/selectors3/html/css3-modsel-77b.html [ Failure Pass ]
+crbug.com/591099 css3/selectors3/html/css3-modsel-77.html [ Failure Pass ]
+crbug.com/591099 css3/selectors3/html/css3-modsel-78b.html [ Failure Pass ]
+crbug.com/591099 css3/selectors3/html/css3-modsel-78.html [ Failure Pass ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-79.html [ Failure ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-7.html [ Failure ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-80.html [ Failure ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-8.html [ Failure ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-9.html [ Failure ]
 crbug.com/591099 css3/selectors3/html/css3-modsel-d1.html [ Failure ]
+crbug.com/591099 css3/selectors3/xhtml/css3-modsel-102.xml [ Failure Pass ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-120.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-13.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-14.xml [ Failure ]
-crbug.com/591099 css3/selectors3/xhtml/css3-modsel-155c.xml [ Crash ]
+crbug.com/591099 css3/selectors3/xhtml/css3-modsel-155c.xml [ Crash Pass ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-15.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-161.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-166a.xml [ Failure ]
@@ -1819,7 +1835,7 @@
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-43.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-44b.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-44.xml [ Failure ]
-crbug.com/591099 css3/selectors3/xhtml/css3-modsel-45.xml [ Failure ]
+crbug.com/591099 css3/selectors3/xhtml/css3-modsel-45.xml [ Failure Pass ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-47.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-5.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-61.xml [ Failure ]
@@ -1834,10 +1850,10 @@
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-73.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-74b.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-74.xml [ Failure ]
-crbug.com/591099 css3/selectors3/xhtml/css3-modsel-77b.xml [ Failure ]
-crbug.com/591099 css3/selectors3/xhtml/css3-modsel-77.xml [ Failure ]
-crbug.com/591099 css3/selectors3/xhtml/css3-modsel-78b.xml [ Failure ]
-crbug.com/591099 css3/selectors3/xhtml/css3-modsel-78.xml [ Failure ]
+crbug.com/591099 css3/selectors3/xhtml/css3-modsel-77b.xml [ Failure Pass ]
+crbug.com/591099 css3/selectors3/xhtml/css3-modsel-77.xml [ Failure Pass ]
+crbug.com/591099 css3/selectors3/xhtml/css3-modsel-78b.xml [ Failure Pass ]
+crbug.com/591099 css3/selectors3/xhtml/css3-modsel-78.xml [ Failure Pass ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-79.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-7.xml [ Crash Failure ]
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-80.xml [ Failure ]
@@ -1852,15 +1868,15 @@
 crbug.com/591099 css3/selectors3/xhtml/css3-modsel-d3.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-116.xml [ Failure Pass ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-120.xml [ Failure ]
-crbug.com/591099 css3/selectors3/xml/css3-modsel-126.xml [ Failure ]
+crbug.com/591099 css3/selectors3/xml/css3-modsel-126.xml [ Failure Pass ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-13.xml [ Failure ]
-crbug.com/591099 css3/selectors3/xml/css3-modsel-145a.xml [ Failure ]
+crbug.com/591099 css3/selectors3/xml/css3-modsel-145a.xml [ Failure Pass ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-145b.xml [ Failure Pass ]
-crbug.com/591099 css3/selectors3/xml/css3-modsel-146a.xml [ Failure ]
-crbug.com/591099 css3/selectors3/xml/css3-modsel-146b.xml [ Failure ]
-crbug.com/591099 css3/selectors3/xml/css3-modsel-147a.xml [ Failure ]
-crbug.com/591099 css3/selectors3/xml/css3-modsel-147b.xml [ Failure ]
-crbug.com/591099 css3/selectors3/xml/css3-modsel-148.xml [ Failure ]
+crbug.com/591099 css3/selectors3/xml/css3-modsel-146a.xml [ Failure Pass ]
+crbug.com/591099 css3/selectors3/xml/css3-modsel-146b.xml [ Failure Pass ]
+crbug.com/591099 css3/selectors3/xml/css3-modsel-147a.xml [ Failure Pass ]
+crbug.com/591099 css3/selectors3/xml/css3-modsel-147b.xml [ Failure Pass ]
+crbug.com/591099 css3/selectors3/xml/css3-modsel-148.xml [ Failure Pass ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-14.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-15.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-166a.xml [ Failure ]
@@ -1870,7 +1886,7 @@
 crbug.com/591099 css3/selectors3/xml/css3-modsel-169a.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-169.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-16.xml [ Failure ]
-crbug.com/591099 css3/selectors3/xml/css3-modsel-172a.xml [ Failure ]
+crbug.com/591099 css3/selectors3/xml/css3-modsel-172a.xml [ Failure Pass ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-174b.xml [ Failure Pass ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-179a.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-17.xml [ Failure ]
@@ -1909,7 +1925,7 @@
 crbug.com/591099 css3/selectors3/xml/css3-modsel-44b.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-44.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-47.xml [ Failure ]
-crbug.com/591099 css3/selectors3/xml/css3-modsel-4.xml [ Failure ]
+crbug.com/591099 css3/selectors3/xml/css3-modsel-4.xml [ Failure Pass ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-5.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-61.xml [ Failure ]
 crbug.com/591099 css3/selectors3/xml/css3-modsel-62.xml [ Failure ]
@@ -1944,7 +1960,9 @@
 crbug.com/591099 css3/tab-size-span.html [ Failure ]
 crbug.com/591099 css3/unicode-bidi-insolate-parse.html [ Failure ]
 crbug.com/591099 css3/viewport-percentage-lengths/css3-viewport-percentage-lengths-getStyle.html [ Failure Timeout ]
-crbug.com/591099 css3/viewport-percentage-lengths/css3-viewport-percentage-lengths-vh-absolute.html [ Failure ]
+crbug.com/591099 css3/viewport-percentage-lengths/css3-viewport-percentage-lengths-vh-absolute.html [ Failure Pass ]
+crbug.com/591099 css3/viewport-percentage-lengths/css3-viewport-percentage-lengths-vh.html [ Crash Pass ]
+crbug.com/591099 css3/viewport-percentage-lengths/css3-viewport-percentage-lengths-vw.html [ Crash Pass ]
 crbug.com/591099 css3/viewport-percentage-lengths/viewport-percentage-lengths-page-zoom.html [ Failure ]
 crbug.com/591099 css3/zoom-coords.xhtml [ Failure ]
 crbug.com/591099 cssom/ahem-ex-units.html [ Failure ]
@@ -2037,24 +2055,24 @@
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/AppletsCollection.html [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument01.html [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument02.html [ Crash Pass ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument03.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument04.html [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument03.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument04.html [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument05.html [ Crash Pass ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument07.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument08.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument09.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument10.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument11.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument12.html [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument07.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument08.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument09.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument10.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument11.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument12.html [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument13.html [ Crash Pass ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument14.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument15.html [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument14.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument15.html [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument16.html [ Crash Pass ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument17.html [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument17.html [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument18.html [ Crash Pass ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument19.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument20.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument21.html [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument19.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument20.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLDocument21.html [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLElement01.html [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLElement02.html [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLElement03.html [ Crash ]
@@ -2201,20 +2219,22 @@
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLElement98.html [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLElement99.html [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLFormElement10.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement01.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement02.html [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement01.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement02.html [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement03.html [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement04.html [ Crash Pass ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement05.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement06.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement07.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement08.html [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement05.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement06.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement07.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement08.html [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement09.html [ Crash Pass ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement10.html [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement10.html [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLIFrameElement11.html [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLImageElement04.html [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLImageElement05.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLImageElement07.html [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLImageElement07.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLImageElement10.html [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLImageElement11.html [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLImageElement12.html [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLObjectElement01.html [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/HTMLObjectElement02.html [ Crash ]
@@ -2257,21 +2277,21 @@
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/object13.html [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/object14.html [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/html/level2/html/object15.html [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument01.xhtml [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument01.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument02.xhtml [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument03.xhtml [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument04.xhtml [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument05.xhtml [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument03.xhtml [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument04.xhtml [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument05.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument07.xhtml [ Crash Pass ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument08.xhtml [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument08.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument09.xhtml [ Crash Pass ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument10.xhtml [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument10.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument11.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument12.xhtml [ Crash Pass ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument13.xhtml [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument14.xhtml [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument15.xhtml [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument16.xhtml [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument13.xhtml [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument14.xhtml [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument15.xhtml [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLDocument16.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLElement01.xhtml [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLElement02.xhtml [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLElement03.xhtml [ Crash ]
@@ -2417,24 +2437,24 @@
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLElement97.xhtml [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLElement98.xhtml [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLElement99.xhtml [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement01.xhtml [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement02.xhtml [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement03.xhtml [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement01.xhtml [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement02.xhtml [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement03.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement04.xhtml [ Crash Pass ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement05.xhtml [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement05.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement06.xhtml [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement07.xhtml [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement07.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement08.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement09.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement10.xhtml [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLIFrameElement11.xhtml [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLImageElement01.xhtml [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLImageElement01.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLImageElement02.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLImageElement04.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLImageElement05.xhtml [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLImageElement06.xhtml [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLImageElement09.xhtml [ Crash ]
-crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLImageElement10.xhtml [ Crash ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLImageElement06.xhtml [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLImageElement09.xhtml [ Crash Pass ]
+crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLImageElement10.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLImageElement11.xhtml [ Crash Pass ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLImageElement12.xhtml [ Crash ]
 crbug.com/591099 dom/legacy_dom_conformance/xhtml/level2/html/HTMLObjectElement01.xhtml [ Crash ]
@@ -2493,8 +2513,8 @@
 crbug.com/591099 editing/caret/caret-color.html [ Failure ]
 crbug.com/591099 editing/caret/caret-direction-auto.html [ Failure ]
 crbug.com/591099 editing/caret/caret-height.html [ Failure ]
-crbug.com/591099 editing/caret/caret-in-empty-cell.html [ Failure ]
-crbug.com/591099 editing/caret/caret-is-hidden-when-no-focus.html [ Failure ]
+crbug.com/591099 editing/caret/caret-in-empty-cell.html [ Failure Pass ]
+crbug.com/591099 editing/caret/caret-is-hidden-when-no-focus.html [ Failure Pass ]
 crbug.com/591099 editing/caret/caret-position.html [ Failure ]
 crbug.com/591099 editing/caret/in-multicol-child.html [ Failure ]
 crbug.com/591099 editing/caret/selection-with-caret-type-progress.html [ Failure ]
@@ -2795,7 +2815,7 @@
 crbug.com/591099 editing/input/set-value-on-input-and-type-input.html [ Failure ]
 crbug.com/591099 editing/input/set-value-on-input-and-type-textarea.html [ Failure ]
 crbug.com/591099 editing/input/style-change-during-input.html [ Failure ]
-crbug.com/591099 editing/input/textarea-white-space-normal-trailing-space.html [ Failure ]
+crbug.com/591099 editing/input/textarea-white-space-normal-trailing-space.html [ Failure Pass ]
 crbug.com/591099 editing/input/textcontrol-doubleclick-at-end.html [ Failure ]
 crbug.com/591099 editing/inserting/4278698.html [ Failure ]
 crbug.com/591099 editing/inserting/4840662.html [ Failure ]
@@ -3028,7 +3048,7 @@
 crbug.com/591099 editing/selection/4960137.html [ Failure ]
 crbug.com/591099 editing/selection/4975120.html [ Failure ]
 crbug.com/591099 editing/selection/4983858.html [ Failure ]
-crbug.com/591099 editing/selection/5057506-2.html [ Failure ]
+crbug.com/591099 editing/selection/5057506-2.html [ Failure Pass ]
 crbug.com/591099 editing/selection/5099303.html [ Failure ]
 crbug.com/591099 editing/selection/5131716-1.html [ Failure ]
 crbug.com/591099 editing/selection/5131716-2.html [ Failure ]
@@ -3211,7 +3231,7 @@
 crbug.com/591099 editing/selection/mouse/click-left-of-rtl-wrapping-text.html [ Failure ]
 crbug.com/591099 editing/selection/mouse/click-user-select-all-contenteditable.html [ Failure ]
 crbug.com/591099 editing/selection/mouse/click-user-select-all-textarea.html [ Crash ]
-crbug.com/591099 editing/selection/mouse/double_click_after_last_cell.html [ Failure ]
+crbug.com/591099 editing/selection/mouse/double_click_after_last_cell.html [ Failure Pass ]
 crbug.com/591099 editing/selection/mouse/drag-user-select-all-contenteditable.html [ Failure ]
 crbug.com/591099 editing/selection/mouse/drag-user-select-all-textarea.html [ Crash ]
 crbug.com/591099 editing/selection/move-3875618-fix.html [ Failure ]
@@ -3442,7 +3462,7 @@
 crbug.com/591099 editing/unsupported-content/table-delete-003.html [ Failure ]
 crbug.com/591099 editing/unsupported-content/table-type-after.html [ Failure ]
 crbug.com/591099 editing/unsupported-content/table-type-before.html [ Failure ]
-crbug.com/591099 external/wpt/compat/webkit-text-fill-color-property-003.html [ Crash ]
+crbug.com/591099 external/wpt/compat/webkit-text-fill-color-property-003.html [ Crash Pass ]
 crbug.com/591099 external/wpt/content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html [ Crash ]
 crbug.com/591099 external/wpt/content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html [ Crash ]
 crbug.com/591099 external/wpt/content-security-policy/child-src/child-src-allowed.sub.html [ Crash ]
@@ -3488,15 +3508,17 @@
 crbug.com/591099 external/wpt/content-security-policy/svg/svg-policy-with-resource.html [ Crash ]
 crbug.com/591099 external/wpt/content-security-policy/worker-src/service-child.https.sub.html [ Pass Timeout ]
 crbug.com/591099 external/wpt/css/CSS2/abspos/abspos-containing-block-initial-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/abspos/abspos-containing-block-initial-004a.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/abspos/abspos-containing-block-initial-004a.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/abspos/abspos-containing-block-initial-004f.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/abspos/abspos-containing-block-initial-007.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/abspos/abspos-containing-block-initial-009a.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/adjacent-floats-001.xht [ Crash Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-003.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-004.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-004.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-005.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats-clear/clearance-006.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-applies-to-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-applies-to-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-applies-to-003.xht [ Failure ]
@@ -3507,8 +3529,8 @@
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-applies-to-009.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-applies-to-013.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-applies-to-015.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-clearance-calculation-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-clearance-calculation-002.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-clearance-calculation-001.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-clearance-calculation-002.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-float-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-float-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/clear-float-003.xht [ Failure ]
@@ -3543,9 +3565,9 @@
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/float-replaced-height-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/float-replaced-height-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/float-replaced-height-003.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats-clear/float-replaced-height-004.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats-clear/float-replaced-height-004.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/float-replaced-height-006.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats-clear/float-replaced-height-007.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats-clear/float-replaced-height-007.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/float-replaced-width-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/float-replaced-width-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/float-replaced-width-003.xht [ Failure ]
@@ -3562,7 +3584,7 @@
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-004.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-006.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-008.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-015.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-015.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-019.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-023.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-024.xht [ Failure ]
@@ -3578,23 +3600,25 @@
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-043.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-101.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-113.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-115.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-117.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-119.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-120.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-122.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-122.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-123.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-132.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-133.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-134.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-136.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-138.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-139.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-139.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-141.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-143.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-144.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-145.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-146.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-149.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-bfc-001.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-149.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-bfc-001.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/floats-bfc-002.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/margin-collapse-018.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/margin-collapse-027.xht [ Failure ]
@@ -3617,19 +3641,19 @@
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/margin-collapse-clear-013.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/margin-collapse-clear-014.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats-clear/margin-collapse-clear-015.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats/floats-placement-vertical-003.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/floats/floats-placement-vertical-003.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-001-left-overflow.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-001-left-table.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-001-left-table.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-001-right-overflow.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-001-right-table.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-001-right-table.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-002-left-overflow.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-002-left-table.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-002-left-table.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-002-right-overflow.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-002-right-table.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-002-right-table.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-003-left-overflow.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-003-left-table.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-003-left-table.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-003-right-overflow.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-003-right-table.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-003-right-table.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-004.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-005.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/floats/floats-wrap-bfc-007.xht [ Failure ]
@@ -3648,15 +3672,18 @@
 crbug.com/591099 external/wpt/css/CSS2/linebox/border-padding-bleed-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/border-padding-bleed-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/border-padding-bleed-003.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/empty-inline-001.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/empty-inline-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/empty-inline-003.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/inline-box-001.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/inline-box-002.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/inline-formatting-context-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/inline-formatting-context-009.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/inline-formatting-context-011.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/inline-formatting-context-013.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/inline-formatting-context-015.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/inline-formatting-context-022.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/leading-001.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-004.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-005.xht [ Failure ]
@@ -3687,31 +3714,34 @@
 crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-101.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-103.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-104.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-106.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-125.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-106.xht [ Crash Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-125.xht [ Crash Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-128.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-129.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-002.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-003.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-004.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-005.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-006.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-007.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-013.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-015.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-001.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-002.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-003.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-004.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-005.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-006.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-007.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-013.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-applies-to-015.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-bleed-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/line-height-bleed-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-017.xht [ Crash Pass ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-028.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-043.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-052.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-091.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-100.xht [ Timeout ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-028.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-031.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-043.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-052.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-077.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-091.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-100.xht [ Pass Timeout ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-117a.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-118a.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-121.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-applies-to-001.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-applies-to-005.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-applies-to-008.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-baseline-004a.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/linebox/vertical-align-baseline-005a.xht [ Failure ]
@@ -3723,24 +3753,28 @@
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-formatting-contexts-011.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-formatting-contexts-012.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-formatting-contexts-015.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-in-inline-insert-002i.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-in-inline-empty-003.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-in-inline-insert-001b.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-in-inline-insert-002i.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-in-inline-margins-001a.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-in-inline-margins-001b.xht [ Crash Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-in-inline-margins-002a.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-in-inline-margins-002b.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-in-inline-percents-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-in-inline-remove-000.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-in-inline-remove-000.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-non-replaced-height-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-non-replaced-height-005.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-non-replaced-height-013.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-non-replaced-width-007.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-replaced-height-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-replaced-height-002.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-replaced-height-004.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-replaced-height-005.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-replaced-height-002.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-replaced-height-004.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-replaced-height-005.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-replaced-height-006.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-replaced-height-007.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-replaced-height-007.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-replaced-width-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/block-replaced-width-006.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/blocks-012.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/blocks-013.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/blocks-016.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/blocks-018.xht [ Failure ]
@@ -3774,7 +3808,7 @@
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-059.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-060.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-067.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-068.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-068.xht [ Crash Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-070.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-071.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-078.xht [ Failure ]
@@ -3786,16 +3820,20 @@
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-091.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-092.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-093.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-095.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-095.xht [ Crash Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-104.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-111.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-111.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-113.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-114.xht [ Crash Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-applies-to-012.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-applies-to-004.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-applies-to-012.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-applies-to-013.xht [ Crash Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-applies-to-014.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-percentage-003.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-applies-to-016.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-percentage-003.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-percentage-004.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/height-percentage-005.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-block-000.xht [ Crash Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-block-000.xht [ Crash Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-block-non-replaced-height-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-block-replaced-height-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-block-replaced-height-006.xht [ Failure ]
@@ -3809,12 +3847,14 @@
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-block-valign-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-block-zorder-003.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-block-zorder-004.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-block-zorder-005.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-non-replaced-height-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-non-replaced-height-003.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-non-replaced-width-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-non-replaced-width-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-replaced-height-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-replaced-height-006.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-replaced-height-007.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-replaced-height-009.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-replaced-width-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-replaced-width-002.xht [ Failure ]
@@ -3828,13 +3868,14 @@
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-replaced-width-015.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inlines-013.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inlines-020.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-height-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-height-002.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-width-002b.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-zorder-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-zorder-002.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-height-001.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-height-002.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-width-001a.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-width-002b.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-zorder-001.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-zorder-002.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-zorder-003.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-zorder-004.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-zorder-004.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/inline-table-zorder-005.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-003.xht [ Crash Failure ]
@@ -3854,14 +3895,15 @@
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-047.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-048.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-049.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-056.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-057.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-059.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-060.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-061.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-061.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-068.xht [ Crash Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-070.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-071.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-078.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-078.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-079.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-081.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-082.xht [ Failure ]
@@ -3870,46 +3912,47 @@
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-092.xht [ Crash Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-093.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-101.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-102.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-102.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-104.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-applies-to-008.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-percentage-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-height-percentage-003.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-004.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-001.xht [ Crash Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-004.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-006.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-007.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-013.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-013.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-017.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-018.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-025.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-025.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-027.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-028.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-029.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-035.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-035.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-039.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-040.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-045.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-045.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-050.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-051.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-057.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-057.xht [ Crash Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-061.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-062.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-067.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-069.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-067.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-069.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-072.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-073.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-083.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-084.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-092.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-093.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-092.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-093.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-094.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-095.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-106.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-applies-to-004.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-applies-to-004.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-applies-to-008.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-percentage-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-002.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-002.xht [ Crash Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-003.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-004.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-005.xht [ Failure ]
@@ -3932,7 +3975,7 @@
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-049.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-056.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-057.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-058.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-058.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-059.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-060.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-067.xht [ Failure ]
@@ -3942,6 +3985,7 @@
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-072.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-078.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-079.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-080.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-081.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-082.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-089.xht [ Failure ]
@@ -3955,8 +3999,8 @@
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-103.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-104.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-106.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-percentage-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-width-002.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-height-percentage-001.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-width-002.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-width-006.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-width-007.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-width-017.xht [ Failure ]
@@ -3978,35 +4022,38 @@
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-width-094.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-width-095.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-width-applies-to-008.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-width-applies-to-013.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-width-applies-to-013.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/min-width-percentage-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/replaced-intrinsic-003.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/replaced-intrinsic-003.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/replaced-intrinsic-004.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/root-box-001.xht [ Crash Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/table-in-inline-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-004.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/table-in-inline-001.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-004.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-006.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-007.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-012.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-012.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-017.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-018.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-028.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-029.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-037.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-039.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-040.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-049.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-050.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-051.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-061.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-062.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-072.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-073.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-078.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-078.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-083.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-084.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-094.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-095.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-103.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-applies-to-001.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-applies-to-016.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-103.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-applies-to-001.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-applies-to-016.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-percentage-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/normal-flow/width-percentage-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-height-002.xht [ Failure ]
@@ -4014,8 +4061,9 @@
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-height-004.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-height-005.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-height-006.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-height-007.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-height-007.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-height-008.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-height-009.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-height-010.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-height-011.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-height-012.xht [ Failure ]
@@ -4025,6 +4073,7 @@
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-max-height-005.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-max-height-006.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-max-height-008.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-max-height-009.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-max-height-010.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-max-height-011.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-non-replaced-max-height-012.xht [ Failure ]
@@ -4058,23 +4107,25 @@
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-005.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-006.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-007.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-008.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-008.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-011.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-012.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-014.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-014.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-018.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-019.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-020.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-020.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-025.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-026.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-032.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-033.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-height-036.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-002.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-003a.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-003b.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-003c.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-003.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-009.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-003.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-006.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-009.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-023.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-024.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-030.xht [ Failure ]
@@ -4089,49 +4140,59 @@
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-066.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-067.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/absolute-replaced-width-071.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-001.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-001.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-007.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-008.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-017.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-018.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-019.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-020.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-022.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-022.xht [ Crash Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-024.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-028.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-containing-block-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-containing-block-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-containing-block-003.xht [ Crash Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-containing-block-007.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-overflow-002.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-018.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-overflow-002.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-width-003.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-width-005.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-018.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-029.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-031.xht [ Failure Pass ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-076.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-100.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-112.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-076.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-100.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-102.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-112.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-offset-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-offset-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-offset-003.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/bottom-offset-percentage-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/left-007.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/left-054.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/left-088.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/left-090.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/left-092.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/left-102.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/left-110.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/left-applies-to-001.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/left-007.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/left-054.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/left-076.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/left-077.xht [ Crash Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/left-080.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/left-088.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/left-090.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/left-092.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/left-101.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/left-102.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/left-110.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/left-applies-to-001.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/left-applies-to-009.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/left-applies-to-012.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/left-applies-to-013.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/left-applies-to-013.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/left-offset-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/left-offset-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/left-offset-003.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/left-offset-percentage-001.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/position-006.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/position-absolute-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/position-absolute-004.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/position-absolute-006.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/position-absolute-007.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/position-absolute-008.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/position-fixed-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/position-fixed-007.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/positioning-float-002.xht [ Failure ]
@@ -4153,7 +4214,7 @@
 crbug.com/591099 external/wpt/css/CSS2/positioning/position-static-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/relpos-calcs-003.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/relpos-calcs-004.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/relpos-calcs-005.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/relpos-calcs-005.xht [ Crash Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/relpos-calcs-007.xht [ Crash Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/right-004.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/right-005.xht [ Failure ]
@@ -4180,7 +4241,7 @@
 crbug.com/591099 external/wpt/css/CSS2/positioning/right-054.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/right-055.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/right-056.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/right-064.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/right-064.xht [ Crash Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/right-065.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/right-066.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/right-067.xht [ Failure ]
@@ -4221,41 +4282,47 @@
 crbug.com/591099 external/wpt/css/CSS2/positioning/right-offset-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/right-offset-003.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/right-offset-percentage-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-007.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-008.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-019.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-020.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-029.xht [ Failure ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-007.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-008.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-019.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-020.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-029.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/top-031.xht [ Crash Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/top-032.xht [ Crash Failure ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-043.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-044.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-053.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-055.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-056.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-067.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-068.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-079.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-080.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-091.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-092.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-103.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-104.xht [ Crash ]
-crbug.com/591099 external/wpt/css/CSS2/positioning/top-113.xht [ Crash ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-043.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-044.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-052.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-053.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-055.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-056.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-067.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-068.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-079.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-080.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-088.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-091.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-092.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-103.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-104.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-111.xht [ Failure Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-113.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-applies-to-009.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-applies-to-012.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/CSS2/positioning/top-applies-to-015.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/top-offset-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/top-offset-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/top-offset-003.xht [ Failure ]
 crbug.com/591099 external/wpt/css/CSS2/positioning/top-offset-percentage-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/css-display-3/display-contents-alignment-002.html [ Crash ]
+crbug.com/591099 external/wpt/css/css-display-3/display-contents-alignment-002.html [ Crash Pass ]
 crbug.com/591099 external/wpt/css/css-display-3/display-contents-dynamic-flex-001-none.html [ Failure Pass ]
-crbug.com/591099 external/wpt/css/css-display-3/display-contents-dynamic-list-001-inline.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-display-3/display-contents-dynamic-list-001-inline.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/css-display-3/display-contents-dynamic-multicol-001-inline.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-display-3/display-contents-dynamic-multicol-001-none.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-display-3/display-contents-dynamic-table-001-inline.html [ Crash ]
-crbug.com/591099 external/wpt/css/css-display-3/display-contents-inline-001.html [ Crash ]
+crbug.com/591099 external/wpt/css/css-display-3/display-contents-inline-001.html [ Crash Pass ]
 crbug.com/591099 external/wpt/css/css-display-3/display-contents-multicol-001.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-display-3/display-flow-root-001.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/align-content-001.htm [ Crash ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/align-content-001.htm [ Crash Pass ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/align-self-004.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/css-box-justify-content.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/css-flexbox-column.html [ Failure ]
@@ -4269,19 +4336,36 @@
 crbug.com/591099 external/wpt/css/css-flexbox-1/css-flexbox-row-reverse-wrap-reverse.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/css-flexbox-row-wrap.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/css-flexbox-row-wrap-reverse.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flex-basis-004.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-content-center.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-content-flexend.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-content-flexstart.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-content-spacearound.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-content-spacebetween.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-content-stretch-2.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-content-stretch.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-items-baseline.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-items-center-2.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-items-center.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-items-flexend-2.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-items-flexend.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-items-flexstart-2.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-items-flexstart.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-items-stretch-2.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-items-stretch.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-self-auto.html [ Crash ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-self-stretch.html [ Crash ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_block.html [ Crash ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-self-auto.html [ Crash Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-self-baseline.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-self-center.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-self-flexend.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-self-flexstart.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_align-self-stretch.html [ Crash Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_block.html [ Crash Pass ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_box-clear.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_columns-flexitems-2.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_columns-flexitems.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_direction-column.html [ Crash Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_direction-column-reverse.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_direction-row-reverse.html [ Crash ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_direction-row-reverse.html [ Crash Pass ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_fbfc2.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_fbfc.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_first-line.html [ Failure ]
@@ -4384,12 +4468,12 @@
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_flex-N-N-Npercent-shrink.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_flex-N-N-N-shrink.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_flex-none.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox-flex-wrap-flexing.html [ Crash ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox-flex-wrap-flexing.html [ Crash Pass ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox-flex-wrap-wrap.htm [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox-flex-wrap-wrap-reverse.htm [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_flow-column-reverse-wrap.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_flow-column-reverse-wrap-reverse.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_flow-column-wrap.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_flow-column-wrap.html [ Crash Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_flow-column-wrap-reverse.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_flow-row-wrap.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_flow-row-wrap-reverse.html [ Failure ]
@@ -4418,27 +4502,31 @@
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_object.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_order-box.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_order.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_rowspan-overflow-automatic.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_rowspan-overflow-automatic.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_rtl-direction.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_rtl-flow.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_rtl-flow-reverse.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_rtl-order.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_stf-table-singleline-2.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_stf-table-singleline.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_stf-table-singleline-2.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_stf-table-singleline.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flex-box-wrap.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_wrap.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_wrap-long.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_wrap-reverse.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/flex-container-margin.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flex-container-margin.html [ Crash Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flex-direction.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flex-direction-modify.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flex-direction-with-element-insert.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/flex-grow-006.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/Flexible-order.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flex-flow-008.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flex-grow-004.html [ Crash Pass ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flex-grow-006.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/Flexible-order.html [ Crash Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flex-lines/multi-line-wrap-reverse-column-reverse.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flex-lines/multi-line-wrap-reverse-row-reverse.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flex-lines/multi-line-wrap-with-column-reverse.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flex-lines/multi-line-wrap-with-row-reverse.html [ Crash Failure ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/flex-minimum-width-flex-items-002.xht [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flex-minimum-height-flex-items-001.xht [ Crash Pass ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/flex-minimum-width-flex-items-002.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/flex-vertical-align-effect.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/order/order-with-row-reverse.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/percentage-heights-000.html [ Failure ]
@@ -4448,13 +4536,14 @@
 crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-align-content-space-between.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-align-content-start.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-base.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-direction-column.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-direction-column.html [ Crash Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-direction-column-reverse.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-direction-row-reverse.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-inline.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-inline.html [ Crash Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-order.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-wrap.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-wrap-reverse.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-grid-1/alignment/grid-content-distribution-001.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-definition/fr-unit.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-definition/fr-unit-with-percentage.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-definition/grid-inline-template-columns-rows-resolved-values-001.xht [ Failure ]
@@ -4475,23 +4564,23 @@
 crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-items-sizing-alignment-001.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-layout-z-order-a.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-layout-z-order-b.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-minimum-size-grid-items-011.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-minimum-size-grid-items-011.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-minimum-size-grid-items-013.html [ Failure ]
-crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-minimum-size-grid-items-018.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-minimum-size-grid-items-018.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-order-property-auto-placement-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-order-property-auto-placement-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-order-property-auto-placement-003.xht [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-order-property-auto-placement-004.xht [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-order-property-auto-placement-005.xht [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-items/grid-z-axis-ordering-overlapped-items-006.xht [ Failure ]
-crbug.com/591099 external/wpt/css/css-grid-1/grid-model/display-inline-grid.html [ Crash ]
+crbug.com/591099 external/wpt/css/css-grid-1/grid-model/display-inline-grid.html [ Crash Pass ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-first-letter-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-first-letter-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-first-letter-003.xht [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-first-line-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-first-line-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-first-line-003.xht [ Failure ]
-crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-floats-no-intrude-001.xht [ Failure ]
+crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-floats-no-intrude-001.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-inline-first-letter-001.xht [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-inline-first-letter-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-inline-first-letter-003.xht [ Failure ]
@@ -4499,10 +4588,10 @@
 crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-inline-first-line-002.xht [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-inline-first-line-003.xht [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-inline-margins-no-collapse-001.xht [ Failure ]
-crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-margins-no-collapse-001.xht [ Failure ]
+crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-margins-no-collapse-001.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-multicol-001.xht [ Failure Pass ]
 crbug.com/591099 external/wpt/css/css-grid-1/grid-model/grid-support-display-001.xht [ Crash ]
-crbug.com/591099 external/wpt/css/css-grid-1/implicit-grids/grid-support-grid-auto-columns-rows-001.html [ Crash ]
+crbug.com/591099 external/wpt/css/css-grid-1/implicit-grids/grid-support-grid-auto-columns-rows-001.html [ Crash Pass ]
 crbug.com/591099 external/wpt/css/css-grid-1/layout-algorithm/grid-layout-free-space-unit.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/placement/grid-layout-grid-span.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-grid-1/placement/grid-layout-lines.html [ Failure ]
@@ -4549,12 +4638,13 @@
 crbug.com/591099 external/wpt/css/selectors4/focus-within-005.html [ Failure ]
 crbug.com/591099 external/wpt/css/selectors4/focus-within-006.html [ Failure ]
 crbug.com/591099 external/wpt/css/selectors4/focus-within-009.html [ Crash ]
-crbug.com/591099 external/wpt/css/selectors4/focus-within-shadow-001.html [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-001a.html [ Failure ]
+crbug.com/591099 external/wpt/css/selectors4/focus-within-shadow-001.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/selectors4/focus-within-shadow-006.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-001a.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-items-center-nested-001.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-002.xhtml [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-003.xhtml [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-001-block.xhtml [ Failure ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-001-block.xhtml [ Failure Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-001-table.xhtml [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-002.xhtml [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-004.xhtml [ Crash Failure ]
@@ -4573,8 +4663,10 @@
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-baseline-single-item-001a.html [ Crash Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-baseline-single-item-001b.html [ Crash Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-basic-block-horiz-001.xhtml [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-basic-textarea-horiz-001.xhtml [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-wrap-horiz-002.html [ Crash ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-basic-textarea-horiz-001.xhtml [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-break-request-horiz-002b.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-wrap-horiz-002.html [ Crash Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-wrap-vert-002.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-intrinsic-ratio-003.html [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-intrinsic-ratio-004.html [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-items-as-stacking-contexts-002.html [ Failure ]
@@ -4585,49 +4677,61 @@
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-mbp-horiz-002b.xhtml [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-mbp-horiz-003-reverse.xhtml [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-mbp-horiz-003.xhtml [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-min-width-auto-002b.html [ Failure ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-min-width-auto-002b.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-min-width-auto-003.html [ Failure ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-overflow-horiz-003.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-overflow-horiz-005.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-overflow-vert-001.html [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-paint-ordering-001.xhtml [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-single-line-clamp-1.html [ Failure Pass ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-single-line-clamp-2.html [ Crash ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-single-line-clamp-3.html [ Failure ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-single-line-clamp-2.html [ Crash Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-single-line-clamp-3.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-sizing-vert-002.xhtml [ Crash Failure Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-whitespace-handling-001a.xhtml [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-whitespace-handling-001b.xhtml [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-writing-mode-002.html [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/selectors4/focus-within-1.html [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-05.html [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-07.html [ Crash ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-14.html [ Crash ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-writing-mode-002.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-writing-mode-008.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/selectors4/focus-within-1.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-05.html [ Crash Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-07.html [ Crash Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-14.html [ Crash Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-15.html [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-16.html [ Failure ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-16.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-17.html [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-18.html [ Failure ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-18.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-30.html [ Crash Pass ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-33.html [ Failure ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-33.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-36.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-43.html [ Failure Pass ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-55.html [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-reference-03.html [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-reference-07.html [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-reference-24.html [ Failure ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-55.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-58.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-external-supports-01.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-reference-03.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-reference-07.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-reference-24.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-reference-28.html [ Crash Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-reference-29.html [ Failure Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-reference-32.html [ Failure Pass ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-supports-03.html [ Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-supports-06.html [ Crash ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-supports-45.html [ Crash ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-supports-03.html [ Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-supports-06.html [ Crash Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-supports-09.html [ Crash Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-supports-33.html [ Crash Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-supports-45.html [ Crash Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-supports-46.html [ Crash Failure Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-supports-48.html [ Crash Pass ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-supports-56.html [ Crash Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/dynamic-offset-vrl-002.html [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/dynamic-offset-vrl-rtl-002.html [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-break-inside-001.html [ Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-compression-001.html [ Crash Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-compression-002.html [ Crash ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-compression-002.html [ Crash Failure Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-compression-003.html [ Crash Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-compression-004.html [ Crash Failure ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-compression-005a.html [ Crash Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-compression-005.html [ Crash ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-compression-006a.html [ Crash Failure ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-compression-005.html [ Crash Failure ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-compression-006a.html [ Crash Failure Pass ]
 crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-compression-006.html [ Crash Failure ]
-crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-compression-007.html [ Crash Failure ]
+crbug.com/591099 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-compression-007.html [ Crash Failure Pass ]
 crbug.com/591099 external/wpt/custom-elements/custom-element-reaction-queue.html [ Crash ]
 crbug.com/591099 external/wpt/custom-elements/htmlconstructor/newtarget.html [ Crash ]
 crbug.com/591099 external/wpt/custom-elements/reactions/Document.html [ Crash ]
@@ -4737,24 +4841,25 @@
 crbug.com/591099 external/wpt/html/dom/dynamic-markup-insertion/document-write/iframe_009.html [ Crash ]
 crbug.com/591099 external/wpt/html/dom/dynamic-markup-insertion/document-write/iframe_010.html [ Crash ]
 crbug.com/591099 external/wpt/html/dom/dynamic-markup-insertion/document-write/script_013.html [ Crash ]
-crbug.com/591099 external/wpt/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L.html [ Failure ]
-crbug.com/591099 external/wpt/html/dom/elements/global-attributes/dir_auto-input-script-N-R.html [ Failure ]
+crbug.com/591099 external/wpt/html/dom/elements/global-attributes/dir_auto-contained-bdi-L.html [ Crash Pass ]
+crbug.com/591099 external/wpt/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L.html [ Failure Pass ]
+crbug.com/591099 external/wpt/html/dom/elements/global-attributes/dir_auto-input-script-N-R.html [ Failure Pass ]
 crbug.com/591099 external/wpt/html/dom/elements/global-attributes/dir_auto-pre-mixed.html [ Failure ]
 crbug.com/591099 external/wpt/html/dom/elements/global-attributes/dir_auto-pre-N-between-Rs.html [ Failure ]
-crbug.com/591099 external/wpt/html/dom/elements/global-attributes/dir_auto-pre-N-EN.html [ Failure ]
+crbug.com/591099 external/wpt/html/dom/elements/global-attributes/dir_auto-pre-N-EN.html [ Failure Pass ]
 crbug.com/591099 external/wpt/html/dom/elements/global-attributes/dir_auto-textarea-mixed.html [ Failure ]
 crbug.com/591099 external/wpt/html/dom/elements/global-attributes/dir_auto-textarea-N-between-Rs.html [ Failure ]
 crbug.com/591099 external/wpt/html/dom/elements/global-attributes/dir_auto-textarea-script-mixed.html [ Failure ]
 crbug.com/591099 external/wpt/html/dom/elements/global-attributes/dir_auto-textarea-script-N-between-Rs.html [ Failure ]
 crbug.com/591099 external/wpt/html/dom/elements/global-attributes/dir_auto-textarea-script-N-EN.html [ Failure ]
-crbug.com/591099 external/wpt/html/dom/elements/global-attributes/style-01.html [ Failure ]
-crbug.com/591099 external/wpt/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-006b.html [ Failure ]
+crbug.com/591099 external/wpt/html/dom/elements/global-attributes/style-01.html [ Failure Pass ]
+crbug.com/591099 external/wpt/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-006b.html [ Failure Pass ]
 crbug.com/591099 external/wpt/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-007a.html [ Failure Pass ]
-crbug.com/591099 external/wpt/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-009c.html [ Failure ]
+crbug.com/591099 external/wpt/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-009c.html [ Failure Pass ]
 crbug.com/591099 external/wpt/html/editing/focus/focus-management/focus-event-targets-simple.html [ Crash ]
 crbug.com/591099 external/wpt/html/editing/focus/processing-model/focus-fixup-rule-one-no-dialogs.html [ Crash ]
 crbug.com/591099 external/wpt/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-default-value.html [ Crash ]
-crbug.com/591099 external/wpt/html/editing/the-hidden-attribute/hidden-1a.html [ Failure ]
+crbug.com/591099 external/wpt/html/editing/the-hidden-attribute/hidden-1a.html [ Failure Pass ]
 crbug.com/591099 external/wpt/html/editing/the-hidden-attribute/hidden-1f.html [ Failure Pass ]
 crbug.com/591099 external/wpt/html/editing/the-hidden-attribute/hidden-1g.html [ Crash Pass ]
 crbug.com/591099 external/wpt/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html [ Crash ]
@@ -4767,30 +4872,32 @@
 crbug.com/591099 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html [ Crash ]
 crbug.com/591099 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html [ Crash ]
 crbug.com/591099 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html [ Crash ]
-crbug.com/591099 external/wpt/html/rendering/bindings/the-textarea-element-0/rows-zero.html [ Crash Failure ]
+crbug.com/591099 external/wpt/html/rendering/bindings/the-textarea-element-0/rows-zero.html [ Crash Failure Pass ]
 crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/flow-content-0/dialog.html [ Failure ]
 crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/flow-content-0/div-align.html [ Failure ]
 crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/lists/li-type-unsupported-lower-roman.html [ Failure Pass ]
-crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/lists/ol-type-supported-xhtml.xhtml [ Failure ]
-crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/lists/ul-type-unsupported-upper-alpha.html [ Crash ]
-crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/lists/ul-type-unsupported-upper-roman.html [ Failure ]
+crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/lists/ol-type-supported.html [ Crash Pass ]
+crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/lists/ol-type-supported-xhtml.xhtml [ Failure Pass ]
+crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/lists/ol-type-unsupported-lower-alpha.html [ Failure Pass ]
+crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/lists/ul-type-unsupported-upper-alpha.html [ Crash Pass ]
+crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/lists/ul-type-unsupported-upper-roman.html [ Failure Pass ]
 crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/tables/table-cell-width.html [ Failure ]
 crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/tables/table-cell-width-s.html [ Failure ]
-crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/tables/table-width.html [ Failure ]
-crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/tables/table-width-s.html [ Failure ]
+crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/tables/table-width.html [ Crash Failure Pass ]
+crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/tables/table-width-s.html [ Failure Pass ]
 crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/the-page/body_text_00ffff.xhtml [ Crash Pass ]
 crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/the-page/iframe-body-margin-attributes.html [ Crash ]
 crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/the-page/iframe-marginwidth-marginheight.html [ Crash ]
-crbug.com/591099 external/wpt/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img_border_percent.xhtml [ Failure ]
+crbug.com/591099 external/wpt/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img_border_percent.xhtml [ Failure Pass ]
 crbug.com/591099 external/wpt/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/object_border_perc.xhtml [ Failure Pass ]
-crbug.com/591099 external/wpt/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/object_border_pixel.xhtml [ Failure ]
+crbug.com/591099 external/wpt/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/object_border_pixel.xhtml [ Failure Pass ]
 crbug.com/591099 external/wpt/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-img-auto.html [ Failure ]
 crbug.com/591099 external/wpt/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-img-percentage.html [ Failure ]
 crbug.com/591099 external/wpt/html/rendering/replaced-elements/svg-inline-sizing/svg-inline.html [ Failure ]
 crbug.com/591099 external/wpt/html/semantics/disabled-elements/disabledElement.html [ Crash ]
 crbug.com/591099 external/wpt/html/semantics/document-metadata/the-base-element/base_about_blank.html [ Crash ]
 crbug.com/591099 external/wpt/html/semantics/document-metadata/the-base-element/base_srcdoc.html [ Crash ]
-crbug.com/591099 external/wpt/html/semantics/document-metadata/the-link-element/stylesheet-media.html [ Failure ]
+crbug.com/591099 external/wpt/html/semantics/document-metadata/the-link-element/stylesheet-media.html [ Failure Pass ]
 crbug.com/591099 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-remove-from-document-networkState.html [ Crash ]
 crbug.com/591099 external/wpt/html/semantics/embedded-content/media-elements/networkState_initial.html [ Crash ]
 crbug.com/591099 external/wpt/html/semantics/embedded-content/media-elements/preload_reflects_none_autoplay.html [ Crash ]
@@ -4850,7 +4957,7 @@
 crbug.com/591099 external/wpt/html/semantics/forms/the-select-element/selected-index.html [ Crash ]
 crbug.com/591099 external/wpt/html/semantics/forms/the-textarea-element/textarea-type.html [ Crash ]
 crbug.com/591099 external/wpt/html/semantics/grouping-content/the-li-element/grouping-li.html [ Crash ]
-crbug.com/591099 external/wpt/html/semantics/grouping-content/the-li-element/grouping-li-reftest-001.html [ Failure ]
+crbug.com/591099 external/wpt/html/semantics/grouping-content/the-li-element/grouping-li-reftest-001.html [ Failure Pass ]
 crbug.com/591099 external/wpt/html/semantics/grouping-content/the-li-element/grouping-li-reftest-002.html [ Failure ]
 crbug.com/591099 external/wpt/html/semantics/grouping-content/the-ol-element/grouping-ol.html [ Crash ]
 crbug.com/591099 external/wpt/html/semantics/grouping-content/the-ol-element/grouping-ol-rev-reftest-001.html [ Failure ]
@@ -4893,6 +5000,7 @@
 crbug.com/591099 external/wpt/html/semantics/selectors/pseudo-classes/indeterminate-radio.html [ Crash ]
 crbug.com/591099 external/wpt/html/semantics/selectors/pseudo-classes/readwrite-readonly.html [ Crash ]
 crbug.com/591099 external/wpt/html/semantics/selectors/pseudo-classes/valid-invalid.html [ Crash ]
+crbug.com/591099 external/wpt/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-separate.html [ Failure Pass ]
 crbug.com/591099 external/wpt/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-to-letter-preceding-2.html [ Failure Pass ]
 crbug.com/591099 external/wpt/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-wrapped.html [ Failure ]
 crbug.com/591099 external/wpt/html/semantics/text-level-semantics/the-br-element/br-bidi.html [ Failure ]
@@ -4922,18 +5030,18 @@
 crbug.com/591099 external/wpt/html/webappapis/scripting/processing-model-2/window-onerror-with-cross-frame-event-listeners-2.html [ Crash ]
 crbug.com/591099 external/wpt/html/webappapis/scripting/processing-model-2/window-onerror-with-cross-frame-event-listeners-3.html [ Crash ]
 crbug.com/591099 external/wpt/html/webappapis/scripting/processing-model-2/window-onerror-with-cross-frame-event-listeners-4.html [ Crash ]
-crbug.com/591099 external/wpt/IndexedDB/idbcursor_advance_index3.htm [ Failure ]
+crbug.com/591099 external/wpt/IndexedDB/idbcursor_advance_index3.htm [ Failure Pass ]
 crbug.com/591099 external/wpt/IndexedDB/idbcursor_delete_objectstore3.htm [ Pass Timeout ]
-crbug.com/591099 external/wpt/IndexedDB/idbcursor-direction-objectstore.htm [ Failure ]
+crbug.com/591099 external/wpt/IndexedDB/idbcursor-direction-objectstore.htm [ Failure Pass ]
 crbug.com/591099 external/wpt/IndexedDB/idbcursor_iterating.htm [ Failure Pass ]
-crbug.com/591099 external/wpt/IndexedDB/idbcursor_update_objectstore4.htm [ Failure ]
-crbug.com/591099 external/wpt/IndexedDB/idbcursor_update_objectstore8.htm [ Failure ]
-crbug.com/591099 external/wpt/IndexedDB/idbcursor_update_objectstore.htm [ Failure ]
+crbug.com/591099 external/wpt/IndexedDB/idbcursor_update_objectstore4.htm [ Failure Pass ]
+crbug.com/591099 external/wpt/IndexedDB/idbcursor_update_objectstore8.htm [ Failure Pass ]
+crbug.com/591099 external/wpt/IndexedDB/idbcursor_update_objectstore.htm [ Failure Pass ]
 crbug.com/591099 external/wpt/IndexedDB/idbindex_openCursor2.htm [ Failure Pass ]
 crbug.com/591099 external/wpt/IndexedDB/idbobjectstore_get5.htm [ Failure Pass ]
-crbug.com/591099 external/wpt/IndexedDB/idbobjectstore_get.htm [ Failure ]
-crbug.com/591099 external/wpt/IndexedDB/idbobjectstore_put3.htm [ Failure ]
-crbug.com/591099 external/wpt/IndexedDB/idbobjectstore_put.htm [ Failure ]
+crbug.com/591099 external/wpt/IndexedDB/idbobjectstore_get.htm [ Failure Pass ]
+crbug.com/591099 external/wpt/IndexedDB/idbobjectstore_put3.htm [ Failure Pass ]
+crbug.com/591099 external/wpt/IndexedDB/idbobjectstore_put.htm [ Failure Pass ]
 crbug.com/591099 external/wpt/IndexedDB/idbobjectstore-rename-abort.html [ Failure Pass ]
 crbug.com/591099 external/wpt/IndexedDB/interleaved-cursors.html [ Failure ]
 crbug.com/591099 external/wpt/innerText/getter.html [ Crash ]
@@ -4994,7 +5102,7 @@
 crbug.com/591099 external/wpt/payment-request/allowpaymentrequest/basic.https.html [ Crash ]
 crbug.com/591099 external/wpt/payment-request/payment-request-in-iframe.html [ Crash ]
 crbug.com/591099 external/wpt/pointerevents/extension/pointerevent_coalesced_events_attributes-manual.html [ Pass Timeout ]
-crbug.com/591099 external/wpt/pointerevents/pointerevent_attributes_hoverable_pointers-manual.html [ Timeout ]
+crbug.com/591099 external/wpt/pointerevents/pointerevent_attributes_hoverable_pointers-manual.html [ Pass Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_attributes_nohover_pointers-manual.html [ Pass Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_capture_mouse-manual.html [ Crash Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_capture_suppressing_mouse-manual.html [ Crash ]
@@ -5003,20 +5111,22 @@
 crbug.com/591099 external/wpt/pointerevents/pointerevent_element_haspointercapture-manual.html [ Pass Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_lostpointercapture_for_disconnected_node-manual.html [ Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_lostpointercapture_is_first-manual.html [ Crash Timeout ]
-crbug.com/591099 external/wpt/pointerevents/pointerevent_pointerenter_does_not_bubble-manual.html [ Timeout ]
-crbug.com/591099 external/wpt/pointerevents/pointerevent_pointerleave_after_pointercancel_touch-manual.html [ Timeout ]
+crbug.com/591099 external/wpt/pointerevents/pointerevent_pointerenter_does_not_bubble-manual.html [ Pass Timeout ]
+crbug.com/591099 external/wpt/pointerevents/pointerevent_pointerleave_after_pointercancel_touch-manual.html [ Pass Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_pointerleave_descendants-manual.html [ Pass Timeout ]
+crbug.com/591099 external/wpt/pointerevents/pointerevent_pointerleave_pen-manual.html [ Failure Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_pointermove_isprimary_same_as_pointerdown-manual.html [ Pass Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_pointermove_on_chorded_mouse_button-manual.html [ Pass Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_pointerout_after_pointercancel_touch-manual.html [ Pass Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_pointerout_pen-manual.html [ Pass Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_pointerout_received_once-manual.html [ Pass Timeout ]
-crbug.com/591099 external/wpt/pointerevents/pointerevent_releasepointercapture_events_to_original_target-manual.html [ Timeout ]
-crbug.com/591099 external/wpt/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual.html [ Timeout ]
+crbug.com/591099 external/wpt/pointerevents/pointerevent_releasepointercapture_events_to_original_target-manual.html [ Pass Timeout ]
+crbug.com/591099 external/wpt/pointerevents/pointerevent_releasepointercapture_invalid_pointerid-manual.html [ Pass Timeout ]
+crbug.com/591099 external/wpt/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual.html [ Pass Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_releasepointercapture_onpointerup_mouse-manual.html [ Crash ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_sequence_at_implicit_release_on_click-manual.html [ Pass Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_setpointercapture_disconnected-manual.html [ Pass Timeout ]
-crbug.com/591099 external/wpt/pointerevents/pointerevent_setpointercapture_inactive_button_mouse-manual.html [ Timeout ]
+crbug.com/591099 external/wpt/pointerevents/pointerevent_setpointercapture_inactive_button_mouse-manual.html [ Pass Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_setpointercapture_relatedtarget-manual.html [ Crash Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_suppress_compat_events_on_click-manual.html [ Pass Timeout ]
 crbug.com/591099 external/wpt/pointerevents/pointerevent_touch-action-auto-css_touch-manual.html [ Crash Timeout ]
@@ -5522,6 +5632,8 @@
 crbug.com/591099 external/wpt/service-workers/service-worker/clients-matchall.https.html [ Crash ]
 crbug.com/591099 external/wpt/service-workers/service-worker/clients-matchall-order.https.html [ Crash ]
 crbug.com/591099 external/wpt/service-workers/service-worker/extendable-event-waituntil.https.html [ Failure Pass ]
+crbug.com/591099 external/wpt/service-workers/service-worker/fetch-canvas-tainting.https.html [ Crash ]
+crbug.com/591099 external/wpt/service-workers/service-worker/fetch-cors-xhr.https.html [ Crash ]
 crbug.com/591099 external/wpt/service-workers/service-worker/fetch-event.https.html [ Crash ]
 crbug.com/591099 external/wpt/service-workers/service-worker/fetch-event-within-sw.https.html [ Crash Pass ]
 crbug.com/591099 external/wpt/service-workers/service-worker/fetch-frame-resource.https.html [ Crash ]
@@ -5556,6 +5668,7 @@
 crbug.com/591099 external/wpt/shadow-dom/untriaged/html-elements-in-shadow-trees/html-forms/test-003.html [ Crash ]
 crbug.com/591099 external/wpt/shadow-dom/untriaged/html-elements-in-shadow-trees/inert-html-elements/test-001.html [ Crash ]
 crbug.com/591099 external/wpt/streams/writable-streams/constructor.serviceworker.https.html [ Pass Timeout ]
+crbug.com/591099 external/wpt/svg/linking/reftests/href-filter-element.html [ Crash Failure ]
 crbug.com/591099 external/wpt/uievents/order-of-events/focus-events/focus-automated-blink-webkit.html [ Crash ]
 crbug.com/591099 external/wpt/uievents/order-of-events/focus-events/focus-manual.html [ Failure Timeout ]
 crbug.com/591099 external/wpt/uievents/order-of-events/mouse-events/mouseover-out-manual.html [ Pass Timeout ]
@@ -5609,6 +5722,7 @@
 crbug.com/591099 fast/backgrounds/animated-gif-as-background-rounded.html [ Failure ]
 crbug.com/591099 fast/backgrounds/background-clip-per-layer.html [ Failure ]
 crbug.com/591099 fast/backgrounds/background-clip-text.html [ Failure ]
+crbug.com/591099 fast/backgrounds/background-clip-text-on-body.html [ Failure Pass ]
 crbug.com/591099 fast/backgrounds/background-fill-zero-area-crash.html [ Failure ]
 crbug.com/591099 fast/backgrounds/background-inherit-color-bug.html [ Failure ]
 crbug.com/591099 fast/backgrounds/background-leakage.html [ Failure ]
@@ -5617,7 +5731,7 @@
 crbug.com/591099 fast/backgrounds/background-position-1.html [ Failure ]
 crbug.com/591099 fast/backgrounds/background-position-parsing-2.html [ Failure Timeout ]
 crbug.com/591099 fast/backgrounds/background-position-parsing.html [ Failure ]
-crbug.com/591099 fast/backgrounds/background-position-repeat-rendering-2.html [ Failure ]
+crbug.com/591099 fast/backgrounds/background-position-repeat-rendering-2.html [ Failure Pass ]
 crbug.com/591099 fast/backgrounds/background-repeat-with-background-color.html [ Failure ]
 crbug.com/591099 fast/backgrounds/background-shorthand-after-set-backgroundSize.html [ Failure ]
 crbug.com/591099 fast/backgrounds/background-shorthand-multiple-layers.html [ Failure ]
@@ -5699,14 +5813,15 @@
 crbug.com/591099 fast/block/basic/percent-height-inside-anonymous-block.html [ Failure ]
 crbug.com/591099 fast/block/basic/quirk-height.html [ Failure ]
 crbug.com/591099 fast/block/basic/quirk-percent-height-grandchild.html [ Failure ]
-crbug.com/591099 fast/block/basic/quirk-percent-height-table-cell.html [ Crash Failure ]
+crbug.com/591099 fast/block/basic/quirk-percent-height-table-cell.html [ Crash Failure Pass ]
 crbug.com/591099 fast/block/basic/text-indent-rtl.html [ Failure ]
 crbug.com/591099 fast/block/basic/truncation-rtl.html [ Failure ]
 crbug.com/591099 fast/block/basic/white-space-pre-wraps.html [ Failure ]
-crbug.com/591099 fast/block/block-add-child-crash.html [ Crash ]
+crbug.com/591099 fast/block/block-add-child-crash.html [ Crash Pass ]
 crbug.com/591099 fast/block/block-not-removed-from-parent-lineboxes-crash.html [ Crash ]
 crbug.com/591099 fast/block/block-parent-with-zero-width-child.html [ Failure ]
 crbug.com/591099 fast/block/block-remove-child-delete-line-box-crash.html [ Failure ]
+crbug.com/591099 fast/block/block-width-recalc-with-relative-height.html [ Crash ]
 crbug.com/591099 fast/block/block-with-inline-replaced-child-following-text.html [ Crash ]
 crbug.com/591099 fast/block/block-with-inline-replaced-child.html [ Failure ]
 crbug.com/591099 fast/block/block-with-inline-replaced-children-in-inline-flows.html [ Failure ]
@@ -5721,7 +5836,7 @@
 crbug.com/591099 fast/block/float/007.html [ Failure ]
 crbug.com/591099 fast/block/float/008.html [ Failure ]
 crbug.com/591099 fast/block/float/010.html [ Failure ]
-crbug.com/591099 fast/block/float/011.html [ Failure ]
+crbug.com/591099 fast/block/float/011.html [ Failure Pass ]
 crbug.com/591099 fast/block/float/012.html [ Failure ]
 crbug.com/591099 fast/block/float/013.html [ Failure ]
 crbug.com/591099 fast/block/float/014.html [ Failure ]
@@ -5761,7 +5876,7 @@
 crbug.com/591099 fast/block/float/avoid-floats-when-negative-margin-top-5.html [ Failure ]
 crbug.com/591099 fast/block/float/avoid-floats-when-negative-margin-top-6.html [ Failure ]
 crbug.com/591099 fast/block/float/avoid-floats-when-negative-margin-top.html [ Failure ]
-crbug.com/591099 fast/block/float/avoid-floats-with-negative-margins.html [ Failure ]
+crbug.com/591099 fast/block/float/avoid-floats-with-negative-margins.html [ Failure Pass ]
 crbug.com/591099 fast/block/float/avoiding-float-centered.html [ Failure ]
 crbug.com/591099 fast/block/float/block-with-negative-margin-clears-float.html [ Failure ]
 crbug.com/591099 fast/block/float/br-with-clear-2.html [ Failure ]
@@ -5799,7 +5914,7 @@
 crbug.com/591099 fast/block/float/float-on-line-obeys-container-padding.html [ Failure ]
 crbug.com/591099 fast/block/float/float-on-zero-height-line.html [ Failure ]
 crbug.com/591099 fast/block/float/float-overflow-hidden-containing-block-width.html [ Failure ]
-crbug.com/591099 fast/block/float/float-overhangs-root.html [ Failure ]
+crbug.com/591099 fast/block/float/float-overhangs-root.html [ Crash Failure ]
 crbug.com/591099 fast/block/float/float-reinsertion-failure.html [ Failure ]
 crbug.com/591099 fast/block/float/float-reparent-during-detach-crash.html [ Crash ]
 crbug.com/591099 fast/block/float/floats-and-text-indent.html [ Failure ]
@@ -5835,7 +5950,7 @@
 crbug.com/591099 fast/block/float/intruding-painted-twice.html [ Failure ]
 crbug.com/591099 fast/block/float/logical-bottom-exceeds-layoutunit-max.html [ Failure ]
 crbug.com/591099 fast/block/float/marquee-shrink-to-avoid-floats.html [ Failure ]
-crbug.com/591099 fast/block/float/max-width-clear-float-with-overflow-hidden.html [ Failure ]
+crbug.com/591099 fast/block/float/max-width-clear-float-with-overflow-hidden.html [ Failure Pass ]
 crbug.com/591099 fast/block/float/multiple-float-positioning.html [ Failure ]
 crbug.com/591099 fast/block/float/narrow-after-wide.html [ Failure ]
 crbug.com/591099 fast/block/float/negative-margin-on-element-avoiding-floats.html [ Failure ]
@@ -5849,7 +5964,7 @@
 crbug.com/591099 fast/block/float/overhanging-float-add-in-static-position-block2.html [ Failure ]
 crbug.com/591099 fast/block/float/overhanging-float-add-in-static-position-block.html [ Failure ]
 crbug.com/591099 fast/block/float/overhanging-float-container-add-compositing.html [ Failure ]
-crbug.com/591099 fast/block/float/overhanging-float-container-remove-compositing.html [ Failure ]
+crbug.com/591099 fast/block/float/overhanging-float-container-remove-compositing.html [ Failure Pass ]
 crbug.com/591099 fast/block/float/overhanging-float-remove-from-absolute-position-block2.html [ Failure ]
 crbug.com/591099 fast/block/float/overhanging-float-remove-from-absolute-position-block.html [ Failure ]
 crbug.com/591099 fast/block/float/overhanging-float-remove-from-fixed-position-block2.html [ Failure ]
@@ -5882,7 +5997,7 @@
 crbug.com/591099 fast/block/line-layout/floats-do-not-fit-on-line.html [ Failure ]
 crbug.com/591099 fast/block/line-layout/negative-max-height.html [ Failure ]
 crbug.com/591099 fast/block/marginbox-width-exceeds-container-width.html [ Failure ]
-crbug.com/591099 fast/block/margin-collapse/004.html [ Crash ]
+crbug.com/591099 fast/block/margin-collapse/004.html [ Crash Pass ]
 crbug.com/591099 fast/block/margin-collapse/006.html [ Failure ]
 crbug.com/591099 fast/block/margin-collapse/016.html [ Failure ]
 crbug.com/591099 fast/block/margin-collapse/021.html [ Failure ]
@@ -5898,7 +6013,7 @@
 crbug.com/591099 fast/block/margin-collapse/057.html [ Failure ]
 crbug.com/591099 fast/block/margin-collapse/058.html [ Failure ]
 crbug.com/591099 fast/block/margin-collapse/062.html [ Failure ]
-crbug.com/591099 fast/block/margin-collapse/100.html [ Failure ]
+crbug.com/591099 fast/block/margin-collapse/100.html [ Failure Pass ]
 crbug.com/591099 fast/block/margin-collapse/101.html [ Failure ]
 crbug.com/591099 fast/block/margin-collapse/102.html [ Failure ]
 crbug.com/591099 fast/block/margin-collapse/103.html [ Failure ]
@@ -5919,9 +6034,9 @@
 crbug.com/591099 fast/block/margin-collapse/line-beside-float-complex-margin-collapsing.html [ Crash Failure ]
 crbug.com/591099 fast/block/margin-collapse/self-collapsing-block-creates-block-formatting-context.html [ Failure ]
 crbug.com/591099 fast/block/margin-collapse/self-collapsing-block-discards-margin.html [ Failure ]
-crbug.com/591099 fast/block/margin-collapse/self-collapsing-block-with-float-child-collapsed-margins.html [ Failure ]
+crbug.com/591099 fast/block/margin-collapse/self-collapsing-block-with-float-child-collapsed-margins.html [ Failure Pass ]
 crbug.com/591099 fast/block/margin-collapse/self-collapsing-block-with-float-child.html [ Failure ]
-crbug.com/591099 fast/block/margin-collapse/self-collapsing-block-with-float-children.html [ Crash ]
+crbug.com/591099 fast/block/margin-collapse/self-collapsing-block-with-float-children.html [ Crash Pass ]
 crbug.com/591099 fast/block/margin-collapse/self-collapsing-block-with-float-descendants.html [ Failure ]
 crbug.com/591099 fast/block/margin-collapse/self-collapsing-block-with-overflow-hidden-and-float-child.html [ Failure ]
 crbug.com/591099 fast/block/margin-collapse/self-collapsing-cols-creates-block-formatting-context.html [ Failure ]
@@ -5942,21 +6057,22 @@
 crbug.com/591099 fast/block/percent-top-respects-min-height.html [ Failure ]
 crbug.com/591099 fast/block/positioned-movement-assert.html [ Failure ]
 crbug.com/591099 fast/block/positioning/001.html [ Failure ]
-crbug.com/591099 fast/block/positioning/031.html [ Failure ]
+crbug.com/591099 fast/block/positioning/031.html [ Failure Pass ]
+crbug.com/591099 fast/block/positioning/040.html [ Crash Pass ]
 crbug.com/591099 fast/block/positioning/042.html [ Crash Pass ]
 crbug.com/591099 fast/block/positioning/047.html [ Failure ]
 crbug.com/591099 fast/block/positioning/048.html [ Failure ]
 crbug.com/591099 fast/block/positioning/050.html [ Failure ]
 crbug.com/591099 fast/block/positioning/051.html [ Failure ]
 crbug.com/591099 fast/block/positioning/052.html [ Failure ]
-crbug.com/591099 fast/block/positioning/053.html [ Failure ]
+crbug.com/591099 fast/block/positioning/053.html [ Failure Pass ]
 crbug.com/591099 fast/block/positioning/054.html [ Failure ]
 crbug.com/591099 fast/block/positioning/055.html [ Failure ]
 crbug.com/591099 fast/block/positioning/056.html [ Failure ]
 crbug.com/591099 fast/block/positioning/057.html [ Failure ]
 crbug.com/591099 fast/block/positioning/058.html [ Crash Failure ]
-crbug.com/591099 fast/block/positioning/061.html [ Failure ]
-crbug.com/591099 fast/block/positioning/062.html [ Failure ]
+crbug.com/591099 fast/block/positioning/061.html [ Failure Pass ]
+crbug.com/591099 fast/block/positioning/062.html [ Failure Pass ]
 crbug.com/591099 fast/block/positioning/abs-inside-inline-rel.html [ Failure ]
 crbug.com/591099 fast/block/positioning/absolute-appended-to-inline.html [ Failure ]
 crbug.com/591099 fast/block/positioning/absolute-in-inline-dynamic.html [ Failure ]
@@ -5998,12 +6114,14 @@
 crbug.com/591099 fast/block/positioning/auto/vertical-rl/005.html [ Failure ]
 crbug.com/591099 fast/block/positioning/auto/vertical-rl/006.html [ Failure ]
 crbug.com/591099 fast/block/positioning/auto/vertical-rl/007.html [ Failure ]
-crbug.com/591099 fast/block/positioning/border-change-relayout-test.html [ Crash ]
+crbug.com/591099 fast/block/positioning/border-change-relayout-test.html [ Crash Pass ]
+crbug.com/591099 fast/block/positioning/bug369123.html [ Failure Pass ]
 crbug.com/591099 fast/block/positioning/child-of-absolute-with-auto-height.html [ Failure ]
 crbug.com/591099 fast/block/positioning/child-of-fixed-pos-after-movement.html [ Failure ]
 crbug.com/591099 fast/block/positioning/complex-percentage-height.html [ Failure ]
-crbug.com/591099 fast/block/positioning/differing-writing-modes-replaced.html [ Crash ]
+crbug.com/591099 fast/block/positioning/differing-writing-modes-replaced.html [ Crash Pass ]
 crbug.com/591099 fast/block/positioning/fixed-positioning-scrollbar-bug.html [ Failure ]
+crbug.com/591099 fast/block/positioning/fixed-position-transformed-container.html [ Crash Pass ]
 crbug.com/591099 fast/block/positioning/flex-positioned-movement-layout-of-content-when-height-changes.html [ Failure ]
 crbug.com/591099 fast/block/positioning/height-change.html [ Failure ]
 crbug.com/591099 fast/block/positioning/hiding-inside-relpositioned-inline.html [ Failure ]
@@ -6024,7 +6142,7 @@
 crbug.com/591099 fast/block/positioning/positioned-movement-layout-when-bottom-changes-to-and-from-auto-vertical.html [ Failure ]
 crbug.com/591099 fast/block/positioning/positioned-movement-layout-when-height-changes-and-descendant-dependent-on-height.html [ Failure ]
 crbug.com/591099 fast/block/positioning/positioned-movement-layout-when-height-changes-and-positioned-descendant-dependent-on-height.html [ Failure ]
-crbug.com/591099 fast/block/positioning/positioned-movement-layout-when-width-changes.html [ Crash ]
+crbug.com/591099 fast/block/positioning/positioned-movement-layout-when-width-changes.html [ Crash Pass ]
 crbug.com/591099 fast/block/positioning/relative-overflow-block.html [ Failure ]
 crbug.com/591099 fast/block/positioning/relative-overflow-replaced-float.html [ Failure ]
 crbug.com/591099 fast/block/positioning/relative-overflow-replaced.html [ Failure ]
@@ -6045,7 +6163,7 @@
 crbug.com/591099 fast/block/positioning/vertical-lr/002.html [ Failure ]
 crbug.com/591099 fast/block/positioning/vertical-rl/001.html [ Failure ]
 crbug.com/591099 fast/block/positioning/vertical-rl/002.html [ Failure ]
-crbug.com/591099 fast/block/positioning/vertical-rl/003.html [ Crash ]
+crbug.com/591099 fast/block/positioning/vertical-rl/003.html [ Crash Pass ]
 crbug.com/591099 fast/block/positioning/vertical-rl/fixed-positioning.html [ Failure ]
 crbug.com/591099 fast/block/positioning/window-height-change.html [ Failure ]
 crbug.com/591099 fast/block/scrollbar-wider-than-border-box.html [ Failure ]
@@ -6055,7 +6173,7 @@
 crbug.com/591099 fast/block/strip-anonymous-blocks-when-block-child-becomes-float.html [ Failure ]
 crbug.com/591099 fast/body-propagation/background-color/002.html [ Failure ]
 crbug.com/591099 fast/body-propagation/background-color/002-xhtml.xhtml [ Failure ]
-crbug.com/591099 fast/body-propagation/background-color/006.html [ Failure ]
+crbug.com/591099 fast/body-propagation/background-color/006.html [ Failure Pass ]
 crbug.com/591099 fast/body-propagation/background-color/007-declarative.xhtml [ Failure ]
 crbug.com/591099 fast/body-propagation/background-color/007.html [ Failure ]
 crbug.com/591099 fast/body-propagation/background-color/007-xhtml.xhtml [ Failure ]
@@ -6095,8 +6213,8 @@
 crbug.com/591099 fast/borders/border-color-visited.html [ Failure ]
 crbug.com/591099 fast/borders/border-image-01.html [ Failure ]
 crbug.com/591099 fast/borders/border-image-border-radius.html [ Failure ]
-crbug.com/591099 fast/borders/border-image-fill-inline-no-border.html [ Failure ]
-crbug.com/591099 fast/borders/border-image-fill-no-border.html [ Failure ]
+crbug.com/591099 fast/borders/border-image-fill-inline-no-border.html [ Failure Pass ]
+crbug.com/591099 fast/borders/border-image-fill-no-border.html [ Failure Pass ]
 crbug.com/591099 fast/borders/border-image-longhand.html [ Failure ]
 crbug.com/591099 fast/borders/border-image-massive-scale.html [ Failure ]
 crbug.com/591099 fast/borders/border-image-outset.html [ Failure ]
@@ -6105,7 +6223,7 @@
 crbug.com/591099 fast/borders/border-image-repeat.html [ Failure ]
 crbug.com/591099 fast/borders/border-image-repeat-round.html [ Failure ]
 crbug.com/591099 fast/borders/border-image-rotate-transform.html [ Failure ]
-crbug.com/591099 fast/borders/border-image-scaled-gradient.html [ Crash ]
+crbug.com/591099 fast/borders/border-image-scaled-gradient.html [ Crash Pass ]
 crbug.com/591099 fast/borders/border-image-scaled.html [ Failure ]
 crbug.com/591099 fast/borders/border-image-scale-transform.html [ Failure ]
 crbug.com/591099 fast/borders/border-image-scrambled.html [ Failure ]
@@ -6124,8 +6242,8 @@
 crbug.com/591099 fast/borders/border-radius-constraints.html [ Failure ]
 crbug.com/591099 fast/borders/border-radius-different-width-001-double.html [ Failure ]
 crbug.com/591099 fast/borders/border-radius-different-width-001.html [ Failure ]
-crbug.com/591099 fast/borders/borderRadiusDouble05.html [ Crash ]
-crbug.com/591099 fast/borders/borderRadiusDouble07.html [ Crash ]
+crbug.com/591099 fast/borders/borderRadiusDouble05.html [ Crash Pass ]
+crbug.com/591099 fast/borders/borderRadiusDouble07.html [ Crash Pass ]
 crbug.com/591099 fast/borders/border-radius-huge-assert.html [ Failure ]
 crbug.com/591099 fast/borders/border-radius-inline-flow.html [ Failure ]
 crbug.com/591099 fast/borders/border-radius-inset-outset.html [ Failure ]
@@ -6142,6 +6260,7 @@
 crbug.com/591099 fast/borders/border-radius-percent.html [ Failure ]
 crbug.com/591099 fast/borders/border-radius-position.html [ Failure ]
 crbug.com/591099 fast/borders/border-radius-split-inline.html [ Failure ]
+crbug.com/591099 fast/borders/border-radius-valid-border-clipping.html [ Crash Pass ]
 crbug.com/591099 fast/borders/border-radius-wide-border-01.html [ Failure ]
 crbug.com/591099 fast/borders/border-radius-with-composited-child.html [ Failure ]
 crbug.com/591099 fast/borders/border-shadow-large-radius.html [ Failure ]
@@ -6181,7 +6300,7 @@
 crbug.com/591099 fast/box-shadow/inset-with-extraordinary-radii-and-border.html [ Failure ]
 crbug.com/591099 fast/box-shadow/no-blur-multiple-offsets.html [ Failure ]
 crbug.com/591099 fast/box-shadow/scaled-box-shadow.html [ Failure ]
-crbug.com/591099 fast/box-shadow/shadow-buffer-partial.html [ Failure ]
+crbug.com/591099 fast/box-shadow/shadow-buffer-partial.html [ Crash Failure ]
 crbug.com/591099 fast/box-shadow/shadow-tiling-artifact.html [ Failure ]
 crbug.com/591099 fast/box-shadow/spread.html [ Failure ]
 crbug.com/591099 fast/box-shadow/spread-multiple-inset.html [ Failure ]
@@ -6214,14 +6333,14 @@
 crbug.com/591099 fast/canvas/canvas-closePath-single-point.html [ Crash ]
 crbug.com/591099 fast/canvas/canvas-composite-alpha.html [ Failure ]
 crbug.com/591099 fast/canvas/canvas-composite-canvas.html [ Failure ]
-crbug.com/591099 fast/canvas/canvas-composite.html [ Failure ]
+crbug.com/591099 fast/canvas/canvas-composite.html [ Failure Pass ]
 crbug.com/591099 fast/canvas/canvas-composite-image.html [ Failure ]
-crbug.com/591099 fast/canvas/canvas-composite-shadow.html [ Failure ]
+crbug.com/591099 fast/canvas/canvas-composite-shadow.html [ Failure Pass ]
 crbug.com/591099 fast/canvas/canvas-composite-stroke-alpha.html [ Failure ]
 crbug.com/591099 fast/canvas/canvas-composite-text-alpha.html [ Failure ]
-crbug.com/591099 fast/canvas/canvas-composite-transformclip.html [ Failure ]
-crbug.com/591099 fast/canvas/canvas-composite-video.html [ Failure ]
-crbug.com/591099 fast/canvas/canvas-composite-video-shadow.html [ Failure ]
+crbug.com/591099 fast/canvas/canvas-composite-transformclip.html [ Failure Pass ]
+crbug.com/591099 fast/canvas/canvas-composite-video.html [ Failure Pass ]
+crbug.com/591099 fast/canvas/canvas-composite-video-shadow.html [ Failure Pass ]
 crbug.com/591099 fast/canvas/canvas-createImageBitmap-blob-in-workers.html [ Failure ]
 crbug.com/591099 fast/canvas/canvas-createImageBitmap-createPattern.html [ Failure ]
 crbug.com/591099 fast/canvas/canvas-createImageBitmap-data-in-workers.html [ Failure ]
@@ -6253,6 +6372,7 @@
 crbug.com/591099 fast/canvas/canvas-fillPath-shadow.html [ Crash ]
 crbug.com/591099 fast/canvas/canvas-fillRect-gradient-shadow.html [ Crash ]
 crbug.com/591099 fast/canvas/canvas-fillRect-shadow.html [ Crash ]
+crbug.com/591099 fast/canvas/canvas-filter-shadow.html [ Crash Pass ]
 crbug.com/591099 fast/canvas/canvas-font-cache.html [ Crash ]
 crbug.com/591099 fast/canvas/canvas-hides-fallback.html [ Failure ]
 crbug.com/591099 fast/canvas/canvas-hit-regions-accessibility-test.html [ Crash ]
@@ -6306,7 +6426,7 @@
 crbug.com/591099 fast/canvas/canvas-scale-fillRect-shadow.html [ Crash ]
 crbug.com/591099 fast/canvas/canvas-scale-shadowBlur.html [ Crash ]
 crbug.com/591099 fast/canvas/canvas-scale-strokePath-shadow.html [ Crash ]
-crbug.com/591099 fast/canvas/canvas-scroll-path-into-view.html [ Timeout ]
+crbug.com/591099 fast/canvas/canvas-scroll-path-into-view.html [ Failure Timeout ]
 crbug.com/591099 fast/canvas/canvas-set-properties-with-non-invertible-ctm.html [ Crash ]
 crbug.com/591099 fast/canvas/canvas-skia-excessive-size.html [ Crash ]
 crbug.com/591099 fast/canvas/canvas-strokePath-alpha-shadow.html [ Crash ]
@@ -6339,6 +6459,7 @@
 crbug.com/591099 fast/canvas/OffscreenCanvas-transferable.html [ Failure ]
 crbug.com/591099 fast/canvas/painting-on-bad-canvas.html [ Crash ]
 crbug.com/591099 fast/canvas/pattern-with-transform.html [ Crash ]
+crbug.com/591099 fast/canvas/pixelated-canvas.html [ Failure Pass ]
 crbug.com/591099 fast/canvas/pixelated-resize.html [ Failure Pass ]
 crbug.com/591099 fast/canvas/quadraticCurveTo.xml [ Failure ]
 crbug.com/591099 fast/canvas/resize-while-save-active.html [ Crash ]
@@ -6363,7 +6484,8 @@
 crbug.com/591099 fast/canvas/webgl/texImage-imageBitmap-from-canvas-resize.html [ Crash ]
 crbug.com/591099 fast/canvas/webgl/tex-sub-image-cube-maps.html [ Failure ]
 crbug.com/591099 fast/canvas/webgl/texture-color-profile.html [ Failure ]
-crbug.com/591099 fast/canvas/webgl/webgl-composite-modes-tabswitching.html [ Failure ]
+crbug.com/591099 fast/canvas/webgl/webgl-composite-modes.html [ Failure Pass ]
+crbug.com/591099 fast/canvas/webgl/webgl-composite-modes-tabswitching.html [ Failure Pass ]
 crbug.com/591099 fast/canvas/webgl/webgl-texture-binding-preserved.html [ Failure ]
 crbug.com/591099 fast/canvas/webgl/webgl-viewport-parameters-preserved.html [ Failure ]
 crbug.com/591099 fast/canvas/zero-size-fill-rect.html [ Crash ]
@@ -6376,7 +6498,7 @@
 crbug.com/591099 fast/clip/012.html [ Failure ]
 crbug.com/591099 fast/clip/013.html [ Failure ]
 crbug.com/591099 fast/clip/014.html [ Failure ]
-crbug.com/591099 fast/clip/015.html [ Failure ]
+crbug.com/591099 fast/clip/015.html [ Failure Pass ]
 crbug.com/591099 fast/clip/nested-rounded-rect.html [ Failure ]
 crbug.com/591099 fast/clip/nestedTransparencyClip.html [ Failure ]
 crbug.com/591099 fast/clip/outline-overflowClip.html [ Failure ]
@@ -6420,11 +6542,11 @@
 crbug.com/591099 fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-all.html [ Failure ]
 crbug.com/591099 fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-auto.html [ Failure ]
 crbug.com/591099 fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-cjk.html [ Crash Failure ]
-crbug.com/591099 fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-mixed-fonts.html [ Crash ]
+crbug.com/591099 fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-mixed-fonts.html [ Crash Pass ]
 crbug.com/591099 fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-subscript.html [ Crash Failure ]
 crbug.com/591099 fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-under.html [ Failure ]
 crbug.com/591099 fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-under-out-of-flow.html [ Failure ]
-crbug.com/591099 fast/css3-text/css3-text-indent/getComputedStyle/getComputedStyle-text-indent.html [ Failure ]
+crbug.com/591099 fast/css3-text/css3-text-indent/getComputedStyle/getComputedStyle-text-indent.html [ Failure Timeout ]
 crbug.com/591099 fast/css3-text/css3-text-indent/getComputedStyle/getComputedStyle-text-indent-inherited.html [ Failure ]
 crbug.com/591099 fast/css3-text/css3-text-indent/negative-text-indent-leading-out-of-flow.html [ Failure ]
 crbug.com/591099 fast/css3-text/css3-text-indent/negative-text-indent-leading-out-of-flow-text-align-left-and-right.html [ Failure ]
@@ -6433,7 +6555,7 @@
 crbug.com/591099 fast/css3-text/css3-text-indent/text-indent-out-of-flow-each-line-hanging.html [ Failure ]
 crbug.com/591099 fast/css3-text/css3-text-justify/getComputedStyle/getComputedStyle-text-justify.html [ Failure ]
 crbug.com/591099 fast/css3-text/css3-text-justify/text-justify-8bits.html [ Failure ]
-crbug.com/591099 fast/css3-text/css3-text-justify/text-justify-crash.html [ Failure ]
+crbug.com/591099 fast/css3-text/css3-text-justify/text-justify-crash.html [ Failure Pass ]
 crbug.com/591099 fast/css3-text/css3-text-justify/text-justify-distribute.html [ Failure ]
 crbug.com/591099 fast/css3-text/css3-word-break/css3-word-break-break-all.html [ Failure ]
 crbug.com/591099 fast/css3-text/css3-word-break/word-break-all-ascii.html [ Failure ]
@@ -6498,14 +6620,14 @@
 crbug.com/591099 fast/css/bug4860-absolute-block-child-does-not-inherit-alignment.html [ Failure ]
 crbug.com/591099 fast/css/button-first-line-change-color.html [ Failure ]
 crbug.com/591099 fast/css/button-height.html [ Crash ]
-crbug.com/591099 fast/css/cache/matched-properties-cache-partial-match.html [ Failure ]
+crbug.com/591099 fast/css/cache/matched-properties-cache-partial-match.html [ Failure Pass ]
 crbug.com/591099 fast/css/calc-rounding.html [ Failure ]
 crbug.com/591099 fast/css/caption-width-absolute-position.htm [ Failure ]
 crbug.com/591099 fast/css/caption-width-absolute-position-offset-top.htm [ Failure ]
 crbug.com/591099 fast/css/caption-width-fixed-position.htm [ Failure ]
 crbug.com/591099 fast/css/caption-width-fixed-position-offset-top.htm [ Failure ]
-crbug.com/591099 fast/css/caption-width-relative-position.htm [ Failure ]
-crbug.com/591099 fast/css/caption-width-relative-position-offset-top.htm [ Failure ]
+crbug.com/591099 fast/css/caption-width-relative-position.htm [ Failure Pass ]
+crbug.com/591099 fast/css/caption-width-relative-position-offset-top.htm [ Failure Pass ]
 crbug.com/591099 fast/css/case-transform.html [ Failure ]
 crbug.com/591099 fast/css/center-align-absolute-position.html [ Failure ]
 crbug.com/591099 fast/css/center-align-absolute-position-inline-block.html [ Failure ]
@@ -6533,7 +6655,7 @@
 crbug.com/591099 fast/css/computed-image-width-with-percent-height.html [ Failure ]
 crbug.com/591099 fast/css/computed-image-width-with-percent-height-quirksmode.html [ Failure ]
 crbug.com/591099 fast/css/computed-offset-with-zoom.html [ Failure ]
-crbug.com/591099 fast/css/containment/paint-containment-as-formatting-context.html [ Failure ]
+crbug.com/591099 fast/css/containment/paint-containment-as-formatting-context.html [ Failure Pass ]
 crbug.com/591099 fast/css/containment/size-and-layout-containment.html [ Crash Failure ]
 crbug.com/591099 fast/css/content/content-none.html [ Failure ]
 crbug.com/591099 fast/css/content/content-normal.html [ Failure ]
@@ -6546,9 +6668,9 @@
 crbug.com/591099 fast/css/content/content-quotes-crash.html [ Failure ]
 crbug.com/591099 fast/css/content-disallowed-url-crash.html [ Crash ]
 crbug.com/591099 fast/css/content-distributed-nodes.html [ Failure ]
-crbug.com/591099 fast/css/contentDiv.html [ Failure ]
-crbug.com/591099 fast/css/contentDivWithChildren.html [ Failure ]
-crbug.com/591099 fast/css/content-dynamic.html [ Failure ]
+crbug.com/591099 fast/css/contentDiv.html [ Failure Pass ]
+crbug.com/591099 fast/css/contentDivWithChildren.html [ Failure Pass ]
+crbug.com/591099 fast/css/content-dynamic.html [ Failure Pass ]
 crbug.com/591099 fast/css/content-image-set-disallowed-url-crash.html [ Crash ]
 crbug.com/591099 fast/css/content-language-case-insensitivity.html [ Failure ]
 crbug.com/591099 fast/css/content-language-comma-separated-list.html [ Failure ]
@@ -6574,10 +6696,11 @@
 crbug.com/591099 fast/css/counters/counter-increment-001.html [ Failure ]
 crbug.com/591099 fast/css/counters/counter-increment-002.html [ Failure ]
 crbug.com/591099 fast/css/counters/counter-increment-overflow.html [ Failure ]
-crbug.com/591099 fast/css/counters/counter-increment-tests.htm [ Timeout ]
+crbug.com/591099 fast/css/counters/counter-increment-tests.htm [ Pass Timeout ]
 crbug.com/591099 fast/css/counters/counter-reset-000.html [ Failure ]
 crbug.com/591099 fast/css/counters/counter-reset-001.html [ Failure ]
 crbug.com/591099 fast/css/counters/counter-reset-002.html [ Failure ]
+crbug.com/591099 fast/css/counters/counter-ruby-text-cleared.html [ Crash Pass ]
 crbug.com/591099 fast/css/counters/counter-traverse-object-crash.html [ Crash ]
 crbug.com/591099 fast/css/counters/counter-traverse-table-cell.html [ Failure ]
 crbug.com/591099 fast/css/counters/invalidate-cached-counter-node.html [ Failure ]
@@ -6660,7 +6783,7 @@
 crbug.com/591099 fast/css/first-line-text-decoration.html [ Failure ]
 crbug.com/591099 fast/css/first-line-text-decoration-inherited-from-parent.html [ Failure ]
 crbug.com/591099 fast/css/first-of-type-pseudo-class.html [ Failure ]
-crbug.com/591099 fast/css/fixed-overlaps-absolute-in-clip.html [ Failure ]
+crbug.com/591099 fast/css/fixed-overlaps-absolute-in-clip.html [ Failure Pass ]
 crbug.com/591099 fast/css/focus-ring-continuations.html [ Failure ]
 crbug.com/591099 fast/css/focus-ring-detached.html [ Failure ]
 crbug.com/591099 fast/css/focus-ring-multiline.html [ Failure ]
@@ -6671,7 +6794,7 @@
 crbug.com/591099 fast/css/focus-ring-recursive-continuations.html [ Failure ]
 crbug.com/591099 fast/css/focus-ring-recursive-inlines.html [ Failure ]
 crbug.com/591099 fast/css/font-face-add-same-family-later.html [ Failure ]
-crbug.com/591099 fast/css/fontface-arraybuffer.html [ Failure ]
+crbug.com/591099 fast/css/fontface-arraybuffer.html [ Failure Timeout ]
 crbug.com/591099 fast/css/font-face-cache-bug.html [ Failure ]
 crbug.com/591099 fast/css/font-face-cache-version.html [ Crash ]
 crbug.com/591099 fast/css/fontface-constructor-error.html [ Failure ]
@@ -6681,7 +6804,7 @@
 crbug.com/591099 fast/css/font-face-download-error.html [ Failure ]
 crbug.com/591099 fast/css/font-face-font-family-descriptor.html [ Failure ]
 crbug.com/591099 fast/css/font-face-iframe-onload.html [ Failure ]
-crbug.com/591099 fast/css/font-face-inherit-repaint.html [ Failure ]
+crbug.com/591099 fast/css/font-face-inherit-repaint.html [ Failure Pass ]
 crbug.com/591099 fast/css/fontface-load-promise-after-gc.html [ Failure ]
 crbug.com/591099 fast/css/font-face-local-file.html [ Failure ]
 crbug.com/591099 fast/css/fontface-methods.html [ Failure ]
@@ -6704,6 +6827,7 @@
 crbug.com/591099 fast/css/font-face-src-parsing.html [ Failure ]
 crbug.com/591099 fast/css/font-face-synthetic-bold-italic-for-locally-installed.html [ Failure ]
 crbug.com/591099 fast/css/font-face-synthetic-bold-italic.html [ Failure ]
+crbug.com/591099 fast/css/font-face-unicode-range-ligatures.html [ Failure Pass ]
 crbug.com/591099 fast/css/font-face-unicode-range-load.html [ Failure ]
 crbug.com/591099 fast/css/font-face-unicode-range-monospace.html [ Failure ]
 crbug.com/591099 fast/css/font-face-unicode-range-overlap-load.html [ Failure ]
@@ -6749,11 +6873,11 @@
 crbug.com/591099 fast/css-generated-content/details-before-after-content.html [ Crash ]
 crbug.com/591099 fast/css-generated-content/drag-state.html [ Failure ]
 crbug.com/591099 fast/css-generated-content/empty-content-with-float-crash.html [ Failure ]
-crbug.com/591099 fast/css-generated-content/empty-first-letter-with-columns-crash.html [ Crash ]
+crbug.com/591099 fast/css-generated-content/empty-first-letter-with-columns-crash.html [ Crash Pass ]
 crbug.com/591099 fast/css-generated-content/first-letter-in-nested-before.html [ Failure ]
-crbug.com/591099 fast/css-generated-content/first-letter-in-nested-before-table.html [ Failure ]
+crbug.com/591099 fast/css-generated-content/first-letter-in-nested-before-table.html [ Failure Pass ]
 crbug.com/591099 fast/css-generated-content/hit-test-generated-content.html [ Failure ]
-crbug.com/591099 fast/css-generated-content/hover-inline.html [ Failure ]
+crbug.com/591099 fast/css-generated-content/hover-inline.html [ Failure Pass ]
 crbug.com/591099 fast/css-generated-content/hover-style-change.html [ Failure ]
 crbug.com/591099 fast/css-generated-content/inline-display-types.html [ Failure ]
 crbug.com/591099 fast/css-generated-content/nested-tables-with-before-after-content-crash.html [ Failure ]
@@ -6771,8 +6895,8 @@
 crbug.com/591099 fast/css-generated-content/spellingToolTip-assert.html [ Failure ]
 crbug.com/591099 fast/css-generated-content/table-before-after-child-add.html [ Failure ]
 crbug.com/591099 fast/css-generated-content/table-cell-before-after-child-add.html [ Failure ]
-crbug.com/591099 fast/css-generated-content/table-cell-before-content.html [ Failure ]
-crbug.com/591099 fast/css-generated-content/table-parts-before-and-after.html [ Failure ]
+crbug.com/591099 fast/css-generated-content/table-cell-before-content.html [ Failure Pass ]
+crbug.com/591099 fast/css-generated-content/table-parts-before-and-after.html [ Failure Pass ]
 crbug.com/591099 fast/css-generated-content/table-row-after-no-crash.html [ Failure ]
 crbug.com/591099 fast/css-generated-content/table-row-before-after-child-add.html [ Failure ]
 crbug.com/591099 fast/css-generated-content/table-row-group-to-inline.html [ Failure ]
@@ -6900,7 +7024,7 @@
 crbug.com/591099 fast/css-grid-layout/grid-container-percentage-columns.html [ Crash Failure ]
 crbug.com/591099 fast/css-grid-layout/grid-container-scroll-accounts-for-sizing.html [ Failure ]
 crbug.com/591099 fast/css-grid-layout/grid-content-alignment-and-self-alignment-spanning.html [ Failure ]
-crbug.com/591099 fast/css-grid-layout/grid-content-alignment-overflow.html [ Crash ]
+crbug.com/591099 fast/css-grid-layout/grid-content-alignment-overflow.html [ Crash Pass ]
 crbug.com/591099 fast/css-grid-layout/grid-content-alignment-stretch-only-valid-for-auto-sized-tracks.html [ Failure ]
 crbug.com/591099 fast/css-grid-layout/grid-content-alignment-with-span.html [ Failure ]
 crbug.com/591099 fast/css-grid-layout/grid-content-alignment-with-span-vertical-lr.html [ Failure ]
@@ -7107,7 +7231,7 @@
 crbug.com/591099 fast/css-grid-layout/setting-node-properties-to-null-during-layout-should-not-crash.html [ Failure ]
 crbug.com/591099 fast/css-grid-layout/should-not-collapse-anonymous-blocks.html [ Failure ]
 crbug.com/591099 fast/css-grid-layout/tracks-wider-min-track-breadth-crash.html [ Failure ]
-crbug.com/591099 fast/css-grid-layout/vertical-align-do-not-effect-grid-items.html [ Failure ]
+crbug.com/591099 fast/css-grid-layout/vertical-align-do-not-effect-grid-items.html [ Failure Pass ]
 crbug.com/591099 fast/css/h1-in-section-elements.html [ Failure ]
 crbug.com/591099 fast/css/handling-calc-on-table-as-auto.html [ Failure ]
 crbug.com/591099 fast/css/heightless-list-item.html [ Failure ]
@@ -7160,11 +7284,11 @@
 crbug.com/591099 fast/css-intrinsic-dimensions/fillavailable-minmax-content-inlinesize-contribution-nonreplaced-blocks.html [ Failure ]
 crbug.com/591099 fast/css-intrinsic-dimensions/fill-available-with-zero-width.html [ Failure ]
 crbug.com/591099 fast/css-intrinsic-dimensions/fitcontent-minmax-content-inlinesize-contribution-nonreplaced-blocks.html [ Failure ]
-crbug.com/591099 fast/css-intrinsic-dimensions/height-css-tables-collapsed.html [ Failure ]
+crbug.com/591099 fast/css-intrinsic-dimensions/height-css-tables-collapsed.html [ Failure Pass ]
 crbug.com/591099 fast/css-intrinsic-dimensions/height-css-tables.html [ Failure ]
 crbug.com/591099 fast/css-intrinsic-dimensions/height.html [ Failure ]
 crbug.com/591099 fast/css-intrinsic-dimensions/height-positioned.html [ Crash Failure ]
-crbug.com/591099 fast/css-intrinsic-dimensions/height-positioned-replaced.html [ Crash ]
+crbug.com/591099 fast/css-intrinsic-dimensions/height-positioned-replaced.html [ Crash Pass ]
 crbug.com/591099 fast/css-intrinsic-dimensions/height-property-value.html [ Failure ]
 crbug.com/591099 fast/css-intrinsic-dimensions/indefinite-percent-minmax-content-inlinesize-contribution-nonreplaced-blocks.html [ Failure ]
 crbug.com/591099 fast/css-intrinsic-dimensions/intrinsic-sized-absolutes.html [ Crash Failure ]
@@ -7178,7 +7302,7 @@
 crbug.com/591099 fast/css-intrinsic-dimensions/width-shrinks-avoid-floats.html [ Crash Failure ]
 crbug.com/591099 fast/css/intruding-floats-crash.html [ Crash ]
 crbug.com/591099 fast/css/invalid-appearance-progress-bar-meter.html [ Failure ]
-crbug.com/591099 fast/css/invalidation/add-first-line-style.html [ Failure ]
+crbug.com/591099 fast/css/invalidation/add-first-line-style.html [ Failure Pass ]
 crbug.com/591099 fast/css/invalidation/any-link-pseudo.html [ Failure ]
 crbug.com/591099 fast/css/invalidation/autofill-pseudo.html [ Failure ]
 crbug.com/591099 fast/css/invalidation/checked-pseudo.html [ Failure ]
@@ -7302,8 +7426,8 @@
 crbug.com/591099 fast/css/media-rule-screenDepthPerComponent.html [ Failure ]
 crbug.com/591099 fast/css/min-device-aspect-ratio.html [ Failure ]
 crbug.com/591099 fast/css/min-max-width.html [ Failure ]
-crbug.com/591099 fast/css/min-width-with-spanned-cell-fixed.html [ Failure ]
-crbug.com/591099 fast/css/min-width-with-spanned-cell.html [ Failure ]
+crbug.com/591099 fast/css/min-width-with-spanned-cell-fixed.html [ Failure Pass ]
+crbug.com/591099 fast/css/min-width-with-spanned-cell.html [ Failure Pass ]
 crbug.com/591099 fast/css/misplaced-charset.html [ Failure ]
 crbug.com/591099 fast/css/namespaces/namespaces-comments.xml [ Failure ]
 crbug.com/591099 fast/css/namespaces/namespaces-invalid-at.xml [ Failure ]
@@ -7312,7 +7436,7 @@
 crbug.com/591099 fast/css/negative-text-indent-in-inline-block.html [ Failure ]
 crbug.com/591099 fast/css/nested-at-rules.html [ Failure ]
 crbug.com/591099 fast/css/nested-floating-relative-position-percentages.html [ Failure ]
-crbug.com/591099 fast/css/nested-layers-with-hover.html [ Failure ]
+crbug.com/591099 fast/css/nested-layers-with-hover.html [ Failure Pass ]
 crbug.com/591099 fast/css/nested-percent-height-on-replaced.html [ Failure ]
 crbug.com/591099 fast/css/nested-rounded-corners.html [ Failure ]
 crbug.com/591099 fast/css/next-sibling-changed.html [ Failure ]
@@ -7376,6 +7500,7 @@
 crbug.com/591099 fast/css/percent-character-as-value.html [ Failure ]
 crbug.com/591099 fast/css/percent-top-relative-container-height-unspecified.html [ Failure ]
 crbug.com/591099 fast/css/percent-top-value-with-relative-position.html [ Failure ]
+crbug.com/591099 fast/css/percent-width-img-inside-zero-percent-and-fixed-container.html [ Failure Pass ]
 crbug.com/591099 fast/css/percent-width-img-src-change.html [ Failure ]
 crbug.com/591099 fast/css/position-absolute-float.html [ Failure ]
 crbug.com/591099 fast/css/positioned-overflow-scroll.html [ Failure ]
@@ -7488,14 +7613,15 @@
 crbug.com/591099 fast/css/stale-style-selector-crash-1.html [ Failure ]
 crbug.com/591099 fast/css/stale-style-selector-crash-2.html [ Failure ]
 crbug.com/591099 fast/css/sticky/inline-sticky-abspos-child.html [ Failure ]
+crbug.com/591099 fast/css/sticky/inline-sticky.html [ Failure Pass ]
 crbug.com/591099 fast/css/sticky/nested/sticky-nested-inline.html [ Failure ]
-crbug.com/591099 fast/css/sticky/nested/sticky-nested-table.html [ Failure ]
+crbug.com/591099 fast/css/sticky/nested/sticky-nested-table.html [ Failure Pass ]
 crbug.com/591099 fast/css/sticky/overflow-layer-removed-crash.html [ Failure ]
 crbug.com/591099 fast/css/sticky/parsing-position-sticky.html [ Failure ]
 crbug.com/591099 fast/css/sticky/remove-inline-sticky-crash.html [ Failure ]
 crbug.com/591099 fast/css/sticky/sticky-bottom-overflow-padding.html [ Failure ]
 crbug.com/591099 fast/css/sticky/sticky-clip-rel-child.html [ Failure ]
-crbug.com/591099 fast/css/sticky/sticky-display.html [ Failure ]
+crbug.com/591099 fast/css/sticky/sticky-display.html [ Failure Pass ]
 crbug.com/591099 fast/css/sticky/sticky-flexbox.html [ Failure ]
 crbug.com/591099 fast/css/sticky/sticky-grid.html [ Failure ]
 crbug.com/591099 fast/css/sticky/sticky-horizontally-overconstrained-ltr.html [ Failure ]
@@ -7520,14 +7646,15 @@
 crbug.com/591099 fast/css/stylesheet-enable-second-alternate-link.html [ Failure ]
 crbug.com/591099 fast/css/stylesheet-enable-second-alternate-on-load-link.html [ Failure ]
 crbug.com/591099 fast/css/stylesheet-enable-second-alternate-on-load-sheet.html [ Failure ]
-crbug.com/591099 fast/css/table-border-radius-with-box-shadow.html [ Failure ]
+crbug.com/591099 fast/css/table-border-radius-with-box-shadow.html [ Failure Pass ]
 crbug.com/591099 fast/css/table-border-spacing.html [ Failure ]
-crbug.com/591099 fast/css/table-rules-attribute-groups.html [ Failure ]
+crbug.com/591099 fast/css/table-rules-attribute-groups.html [ Failure Pass ]
 crbug.com/591099 fast/css/table-rules-attribute-groups-with-frame.html [ Failure ]
-crbug.com/591099 fast/css/table-rules-attribute-none-with-frame.html [ Failure ]
+crbug.com/591099 fast/css/table-rules-attribute-none-with-frame.html [ Failure Pass ]
 crbug.com/591099 fast/css/table-rules-attribute-with-frame1.html [ Failure ]
 crbug.com/591099 fast/css/table-rules-attribute-with-frame2.html [ Failure ]
 crbug.com/591099 fast/css/table-text-align-quirk.html [ Failure ]
+crbug.com/591099 fast/css/tab-size.html [ Failure Pass ]
 crbug.com/591099 fast/css/target-fragment-match.html [ Failure ]
 crbug.com/591099 fast/css/test-setting-canvas-color.html [ Failure ]
 crbug.com/591099 fast/css/text-align.html [ Failure ]
@@ -7581,7 +7708,7 @@
 crbug.com/591099 fast/css/vertical-align-length-copy-bug.html [ Failure ]
 crbug.com/591099 fast/css/vertical-align-lengths.html [ Failure ]
 crbug.com/591099 fast/css/vertical-lr-bfc-auto-margins-beside-float.html [ Failure ]
-crbug.com/591099 fast/css/vertical-lr-table-bfc-auto-margins-beside-float.html [ Failure ]
+crbug.com/591099 fast/css/vertical-lr-table-bfc-auto-margins-beside-float.html [ Failure Pass ]
 crbug.com/591099 fast/css/vertical-lr-table-percent-margins-beside-float.html [ Failure ]
 crbug.com/591099 fast/css/vertical-text-overflow-ellipsis-text-align-center.html [ Failure ]
 crbug.com/591099 fast/css/vertical-text-overflow-ellipsis-text-align-justify.html [ Failure ]
@@ -7646,7 +7773,7 @@
 crbug.com/591099 fast/deprecated-flexbox/relpos-flex-item-with-percent-height-abspos-descendant.html [ Failure ]
 crbug.com/591099 fast/deprecated-flexbox/repaint-scrollbar.html [ Failure ]
 crbug.com/591099 fast/deprecated-flexbox/vertical-box-form-controls.html [ Failure ]
-crbug.com/591099 fast/dnd/dropEffect-for-effectAllowed.html [ Timeout ]
+crbug.com/591099 fast/dnd/dropEffect-for-effectAllowed.html [ Pass Timeout ]
 crbug.com/591099 fast/dnd/dropEffect-for-file.html [ Crash ]
 crbug.com/591099 fast/dnd/dropEffect-for-image.html [ Timeout ]
 crbug.com/591099 fast/dnd/link-dragging-draggable-div-with-dragged-link.html [ Timeout ]
@@ -7820,6 +7947,7 @@
 crbug.com/591099 fast/dom/Document/invalid-domain-change-throws-exception.html [ Failure ]
 crbug.com/591099 fast/dom/documentmarker-add-adjacent-text.html [ Failure ]
 crbug.com/591099 fast/dom/documentmarker-set-active.html [ Failure ]
+crbug.com/591099 fast/dom/document-navigation-error-no-crash.html [ Crash Pass ]
 crbug.com/591099 fast/dom/Document/parent-node-interface.html [ Failure ]
 crbug.com/591099 fast/dom/Document/replace-child.html [ Failure ]
 crbug.com/591099 fast/dom/Document/replaceChild-null-oldChild.html [ Failure ]
@@ -8071,13 +8199,14 @@
 crbug.com/591099 fast/dom/HTMLImageElement/image-load-cross-document.html [ Crash ]
 crbug.com/591099 fast/dom/HTMLImageElement/image-longdesc-absolute-url.html [ Failure ]
 crbug.com/591099 fast/dom/HTMLImageElement/image-lowsrc-getset.html [ Failure ]
+crbug.com/591099 fast/dom/HTMLImageElement/image-natural-width-height.html [ Crash Pass ]
 crbug.com/591099 fast/dom/HTMLImageElement/image-natural-width-height-svg.html [ Crash ]
 crbug.com/591099 fast/dom/HTMLImageElement/image-picture-1x.html [ Failure ]
 crbug.com/591099 fast/dom/HTMLImageElement/image-picture-nested.html [ Failure ]
 crbug.com/591099 fast/dom/HTMLImageElement/image-sizes-1x.html [ Crash ]
 crbug.com/591099 fast/dom/HTMLImageElement/image-sizes-2x.html [ Failure ]
 crbug.com/591099 fast/dom/HTMLImageElement/image-src-absolute-url.html [ Failure ]
-crbug.com/591099 fast/dom/HTMLImageElement/image-src-onerror.html [ Crash ]
+crbug.com/591099 fast/dom/HTMLImageElement/image-src-onerror.html [ Crash Pass ]
 crbug.com/591099 fast/dom/HTMLImageElement/image-srcset-1x.html [ Crash ]
 crbug.com/591099 fast/dom/HTMLImageElement/image-srcset-duplicate-elimination.html [ Crash ]
 crbug.com/591099 fast/dom/HTMLImageElement/image-srcset-invalid-url-no-crash.html [ Failure ]
@@ -8367,7 +8496,7 @@
 crbug.com/591099 fast/dom/Range/insertNode-empty-fragment-crash.html [ Failure ]
 crbug.com/591099 fast/dom/Range/range-clone-empty.html [ Failure ]
 crbug.com/591099 fast/dom/Range/range-constructor.html [ Failure ]
-crbug.com/591099 fast/dom/Range/range-created-during-remove-children.html [ Failure ]
+crbug.com/591099 fast/dom/Range/range-created-during-remove-children.html [ Failure Pass ]
 crbug.com/591099 fast/dom/Range/range-exceptions.html [ Failure ]
 crbug.com/591099 fast/dom/Range/range-expand.html [ Failure ]
 crbug.com/591099 fast/dom/Range/range-insertNode-assertion.html [ Failure ]
@@ -8486,6 +8615,7 @@
 crbug.com/591099 fast/dom/shadow/focus-navigation-with-distributed-nodes.html [ Crash ]
 crbug.com/591099 fast/dom/shadow/focus-navigation-with-multiple-shadow-roots.html [ Failure ]
 crbug.com/591099 fast/dom/shadow/frameless-media-element-crash.html [ Failure ]
+crbug.com/591099 fast/dom/shadow/gc-after-body-removed.html [ Crash Pass ]
 crbug.com/591099 fast/dom/shadow/getComputedStyle-flat-tree-parent-dirty.html [ Failure ]
 crbug.com/591099 fast/dom/shadow/getComputedStyle-with-distribution.html [ Failure ]
 crbug.com/591099 fast/dom/shadow/get-destination-insertion-points-shadow-insertion-points.html [ Failure ]
@@ -8506,7 +8636,7 @@
 crbug.com/591099 fast/dom/shadow/host-pseudo-class-css-text.html [ Failure ]
 crbug.com/591099 fast/dom/shadow/host-pseudo-class.html [ Failure ]
 crbug.com/591099 fast/dom/shadow/iframe-shadow.html [ Failure ]
-crbug.com/591099 fast/dom/shadow/import-rule-in-shadow-tree-needs-document-style-recalc.html [ Failure ]
+crbug.com/591099 fast/dom/shadow/import-rule-in-shadow-tree-needs-document-style-recalc.html [ Failure Pass ]
 crbug.com/591099 fast/dom/shadow/inner-scope-important-wins.html [ Failure ]
 crbug.com/591099 fast/dom/shadow/input-shadow-nochange.html [ Failure ]
 crbug.com/591099 fast/dom/shadow/move-style-scoped-to-another-shadowroot-crash.html [ Failure ]
@@ -8701,7 +8831,7 @@
 crbug.com/591099 fast/dom/Window/window-constructor-settable.html [ Failure ]
 crbug.com/591099 fast/dom/Window/window-custom-prototype.html [ Failure ]
 crbug.com/591099 fast/dom/Window/window-early-properties-xhr.html [ Failure ]
-crbug.com/591099 fast/dom/Window/window-focus-self.html [ Failure ]
+crbug.com/591099 fast/dom/Window/window-focus-self.html [ Failure Pass ]
 crbug.com/591099 fast/dom/Window/window-frames-self-referential.html [ Failure ]
 crbug.com/591099 fast/dom/Window/window-function-frame-getter-precedence.html [ Failure ]
 crbug.com/591099 fast/dom/Window/window-function-name-getter-precedence.html [ Failure ]
@@ -8797,7 +8927,7 @@
 crbug.com/591099 fast/dynamic/positioned-movement-with-positioned-children.html [ Failure ]
 crbug.com/591099 fast/dynamic/recursive-layout.html [ Failure ]
 crbug.com/591099 fast/dynamic/selection-highlight-adjust.html [ Failure ]
-crbug.com/591099 fast/dynamic/static-to-relative-with-absolute-child.html [ Crash ]
+crbug.com/591099 fast/dynamic/static-to-relative-with-absolute-child.html [ Crash Pass ]
 crbug.com/591099 fast/dynamic/staticY-marking-parents-regression.html [ Failure ]
 crbug.com/591099 fast/dynamic/subtree-boundary-percent-height.html [ Failure ]
 crbug.com/591099 fast/dynamic/subtree-no-common-root-static-y.html [ Failure ]
@@ -8938,8 +9068,9 @@
 crbug.com/591099 fast/events/click-after-mousedown-cancel.html [ Failure ]
 crbug.com/591099 fast/events/click-anchor-blur-refocus-window.html [ Failure ]
 crbug.com/591099 fast/events/click-anchor-refocus-window.html [ Failure ]
-crbug.com/591099 fast/events/click-checkbox-blur-refocus-window.html [ Failure ]
-crbug.com/591099 fast/events/click-checkbox-refocus-window.html [ Failure ]
+crbug.com/591099 fast/events/click-checkbox-blur-refocus-window.html [ Failure Pass ]
+crbug.com/591099 fast/events/click-checkbox-refocus-window.html [ Failure Pass ]
+crbug.com/591099 fast/events/click-focus-anchor-has-ring.html [ Failure Pass ]
 crbug.com/591099 fast/events/click-focus-anchor.html [ Failure ]
 crbug.com/591099 fast/events/click-focus-anchor-no-ring.html [ Failure ]
 crbug.com/591099 fast/events/click-focus-keydown-no-ring.html [ Failure ]
@@ -9080,7 +9211,7 @@
 crbug.com/591099 fast/events/focus-event-source-device-from-mouse.html [ Failure ]
 crbug.com/591099 fast/events/focus-event-source-device-from-touch.html [ Failure ]
 crbug.com/591099 fast/events/focus-iframe-crash.html [ Crash ]
-crbug.com/591099 fast/events/focusinout.html [ Failure ]
+crbug.com/591099 fast/events/focusinout.html [ Failure Pass ]
 crbug.com/591099 fast/events/focus-remove-focuesed-node.html [ Failure ]
 crbug.com/591099 fast/events/form-onchange.html [ Failure ]
 crbug.com/591099 fast/events/frame-click-clear-focus.html [ Failure ]
@@ -9118,7 +9249,7 @@
 crbug.com/591099 fast/events/inputevents/input-event-event-listener.html [ Timeout ]
 crbug.com/591099 fast/events/inputevents/inputevent-execcommand.html [ Failure ]
 crbug.com/591099 fast/events/inputevents/inputevent-keyboard.html [ Crash ]
-crbug.com/591099 fast/events/inputevents/inputevent-transpose.html [ Crash ]
+crbug.com/591099 fast/events/inputevents/inputevent-transpose.html [ Crash Failure ]
 crbug.com/591099 fast/events/input-focus-no-duplicate-events.html [ Failure ]
 crbug.com/591099 fast/events/input-image-scrolled-x-y.html [ Timeout ]
 crbug.com/591099 fast/events/input-tab-focus-no-duplicate-events.html [ Failure ]
@@ -9280,7 +9411,7 @@
 crbug.com/591099 fast/events/platform-wheelevent-paging-xy-in-scrolling-div.html [ Failure ]
 crbug.com/591099 fast/events/platform-wheelevent-paging-xy-in-scrolling-page.html [ Failure ]
 crbug.com/591099 fast/events/platform-wheelevent-paging-y-in-scrolling-div.html [ Failure ]
-crbug.com/591099 fast/events/platform-wheelevent-paging-y-in-scrolling-page.html [ Failure ]
+crbug.com/591099 fast/events/platform-wheelevent-paging-y-in-scrolling-page.html [ Failure Pass ]
 crbug.com/591099 fast/events/platform-wheelevent-with-delta-zero-crash.html [ Failure ]
 crbug.com/591099 fast/events/pointer-events-2.html [ Failure ]
 crbug.com/591099 fast/events/pointerevents/fake-mouse-event-pointer-types.html [ Failure ]
@@ -9376,8 +9507,8 @@
 crbug.com/591099 fast/events/special-key-events-in-input-text.html [ Failure ]
 crbug.com/591099 fast/events/stopPropagation-checkbox.html [ Failure ]
 crbug.com/591099 fast/events/submit-reset-nested-bubble.html [ Failure ]
-crbug.com/591099 fast/events/synthetic-events/tap-on-scaled-screen.html [ Timeout ]
-crbug.com/591099 fast/events/tab-crash-with-image-map.html [ Failure ]
+crbug.com/591099 fast/events/synthetic-events/tap-on-scaled-screen.html [ Pass Timeout ]
+crbug.com/591099 fast/events/tab-crash-with-image-map.html [ Crash Failure ]
 crbug.com/591099 fast/events/tab-focus-anchor.html [ Failure ]
 crbug.com/591099 fast/events/tab-focus-anchor-tab-to-links.html [ Failure ]
 crbug.com/591099 fast/events/tab-focus-hidden.html [ Failure ]
@@ -9472,7 +9603,7 @@
 crbug.com/591099 fast/events/touch/gesture/touch-gesture-scroll-iframe-past-extent.html [ Timeout ]
 crbug.com/591099 fast/events/touch/gesture/touch-gesture-scroll-input-field.html [ Failure ]
 crbug.com/591099 fast/events/touch/gesture/touch-gesture-scroll-listbox.html [ Failure ]
-crbug.com/591099 fast/events/touch/gesture/touch-gesture-scroll-page.html [ Timeout ]
+crbug.com/591099 fast/events/touch/gesture/touch-gesture-scroll-page.html [ Failure Timeout ]
 crbug.com/591099 fast/events/touch/gesture/touch-gesture-scroll-page-not-propagated.html [ Timeout ]
 crbug.com/591099 fast/events/touch/gesture/touch-gesture-scroll-page-past-extent.html [ Timeout ]
 crbug.com/591099 fast/events/touch/gesture/touch-gesture-scroll-page-zoomed.html [ Failure ]
@@ -9647,7 +9778,7 @@
 crbug.com/591099 fast/forms/button/button-baseline-and-collapsing.html [ Failure ]
 crbug.com/591099 fast/forms/button/button-click-DOM.html [ Failure ]
 crbug.com/591099 fast/forms/button/button-disabled-blur.html [ Crash ]
-crbug.com/591099 fast/forms/button/button-focus-by-label-click.html [ Failure ]
+crbug.com/591099 fast/forms/button/button-focus-by-label-click.html [ Failure Pass ]
 crbug.com/591099 fast/forms/button/button-in-forms-collection.html [ Failure ]
 crbug.com/591099 fast/forms/button/button-inner-block-reuse.html [ Failure ]
 crbug.com/591099 fast/forms/button/button-white-space.html [ Failure ]
@@ -9712,7 +9843,7 @@
 crbug.com/591099 fast/forms/change-form-element-document-crash.html [ Failure ]
 crbug.com/591099 fast/forms/checkbox/checkbox-appearance-basic.html [ Failure ]
 crbug.com/591099 fast/forms/checkbox/checkbox-click-indeterminate.html [ Failure ]
-crbug.com/591099 fast/forms/checkbox/checkbox-focus-by-mouse.html [ Failure ]
+crbug.com/591099 fast/forms/checkbox/checkbox-focus-by-mouse.html [ Failure Pass ]
 crbug.com/591099 fast/forms/checkbox/checkbox-nested-click-event-on-label.html [ Failure ]
 crbug.com/591099 fast/forms/checkbox/checkbox-onchange.html [ Failure ]
 crbug.com/591099 fast/forms/checkValidity-cancel.html [ Failure ]
@@ -9887,7 +10018,7 @@
 crbug.com/591099 fast/forms/focus-on-control-with-zero-size.html [ Failure ]
 crbug.com/591099 fast/forms/focus-selection-input.html [ Failure ]
 crbug.com/591099 fast/forms/focus-selection-textarea.html [ Failure ]
-crbug.com/591099 fast/forms/focus-style-pending.html [ Failure ]
+crbug.com/591099 fast/forms/focus-style-pending.html [ Failure Pass ]
 crbug.com/591099 fast/forms/focus-with-display-block.html [ Failure ]
 crbug.com/591099 fast/forms/formaction-attribute.html [ Failure ]
 crbug.com/591099 fast/forms/form-added-to-table.html [ Failure ]
@@ -10050,6 +10181,7 @@
 crbug.com/591099 fast/forms/month/ValidityState-rangeUnderflow-month.html [ Failure ]
 crbug.com/591099 fast/forms/month/ValidityState-stepMismatch-month.html [ Failure ]
 crbug.com/591099 fast/forms/month/ValidityState-typeMismatch-month.html [ Failure ]
+crbug.com/591099 fast/forms/mouseevent_disabled_form_control.html [ Crash ]
 crbug.com/591099 fast/forms/multiple-selected-options-innerHTML.html [ Failure ]
 crbug.com/591099 fast/forms/mutation-event-recalc.html [ Failure ]
 crbug.com/591099 fast/forms/negativeLineHeight.html [ Failure ]
@@ -10125,7 +10257,7 @@
 crbug.com/591099 fast/forms/radio/radio_checked_dynamic.html [ Crash ]
 crbug.com/591099 fast/forms/radio/radio_checked.html [ Failure ]
 crbug.com/591099 fast/forms/radio/radio_checked_name.html [ Failure ]
-crbug.com/591099 fast/forms/radio/radio-focus-by-mouse.html [ Failure ]
+crbug.com/591099 fast/forms/radio/radio-focus-by-mouse.html [ Failure Pass ]
 crbug.com/591099 fast/forms/radio/radio-group-arrow-cycle-edge.html [ Failure ]
 crbug.com/591099 fast/forms/radio/radio-group-document-destruction.html [ Failure ]
 crbug.com/591099 fast/forms/radio/radio-group.html [ Failure ]
@@ -10166,7 +10298,7 @@
 crbug.com/591099 fast/forms/range/range-type-change-onchange-2.html [ Failure ]
 crbug.com/591099 fast/forms/range/range-type-change-onchange.html [ Crash ]
 crbug.com/591099 fast/forms/range/range-type-change-oninput.html [ Crash ]
-crbug.com/591099 fast/forms/range/range-value-rounding.html [ Failure ]
+crbug.com/591099 fast/forms/range/range-value-rounding.html [ Failure Timeout ]
 crbug.com/591099 fast/forms/range/slider-appearance-crash.html [ Failure ]
 crbug.com/591099 fast/forms/range/slider-delete-while-dragging-thumb.html [ Crash ]
 crbug.com/591099 fast/forms/range/slider-hit-testing.html [ Failure ]
@@ -10237,6 +10369,7 @@
 crbug.com/591099 fast/forms/select/HTMLOptionElement_selected2.html [ Failure ]
 crbug.com/591099 fast/forms/select/HTMLOptionElement_selected3.html [ Failure ]
 crbug.com/591099 fast/forms/select/HTMLOptionElement_selected.html [ Failure ]
+crbug.com/591099 fast/forms/select/input-select-after-resize.html [ Crash Failure Timeout ]
 crbug.com/591099 fast/forms/selection-direction.html [ Timeout ]
 crbug.com/591099 fast/forms/selection-functions.html [ Failure ]
 crbug.com/591099 fast/forms/selection-setSelectionRange-focusing.html [ Failure ]
@@ -10256,7 +10389,7 @@
 crbug.com/591099 fast/forms/select/listbox-height-with-before.html [ Failure ]
 crbug.com/591099 fast/forms/select/listbox-hit-test-zoomed.html [ Failure ]
 crbug.com/591099 fast/forms/select/listbox-in-multi-column.html [ Failure ]
-crbug.com/591099 fast/forms/select/listbox-intrinsic-min-width-applies-with-fixed-width.html [ Failure ]
+crbug.com/591099 fast/forms/select/listbox-intrinsic-min-width-applies-with-fixed-width.html [ Failure Pass ]
 crbug.com/591099 fast/forms/select/listbox-onchange.html [ Failure ]
 crbug.com/591099 fast/forms/select/listbox-oninput-fired.html [ Failure ]
 crbug.com/591099 fast/forms/select/listbox-overlay-scrollbar.html [ Failure ]
@@ -10335,7 +10468,7 @@
 crbug.com/591099 fast/forms/select-popup/popup-menu-appearance-single-option.html [ Failure Timeout ]
 crbug.com/591099 fast/forms/select-popup/popup-menu-appearance-styled.html [ Failure ]
 crbug.com/591099 fast/forms/select-popup/popup-menu-appearance-texttransform.html [ Failure ]
-crbug.com/591099 fast/forms/select-popup/popup-menu-appearance-transform.html [ Failure ]
+crbug.com/591099 fast/forms/select-popup/popup-menu-appearance-transform.html [ Failure Timeout ]
 crbug.com/591099 fast/forms/select-popup/popup-menu-appearance-zoom090.html [ Failure ]
 crbug.com/591099 fast/forms/select-popup/popup-menu-appearance-zoom110.html [ Failure ]
 crbug.com/591099 fast/forms/select-popup/popup-menu-appearance-zoom.html [ Failure ]
@@ -10350,7 +10483,7 @@
 crbug.com/591099 fast/forms/select-popup/popup-menu-update-from-element.html [ Failure ]
 crbug.com/591099 fast/forms/select/popup-with-display-none-optgroup.html [ Failure ]
 crbug.com/591099 fast/forms/select/remove-element-from-within-focus-handler-crash.html [ Crash ]
-crbug.com/591099 fast/forms/select/select-accesskey.html [ Failure ]
+crbug.com/591099 fast/forms/select/select-accesskey.html [ Failure Pass ]
 crbug.com/591099 fast/forms/select/select-add-assertion.html [ Crash ]
 crbug.com/591099 fast/forms/select/select-add.html [ Failure ]
 crbug.com/591099 fast/forms/select/select-align.html [ Failure ]
@@ -10367,7 +10500,7 @@
 crbug.com/591099 fast/forms/select/select-change-type-on-mousedown-focus.html [ Failure ]
 crbug.com/591099 fast/forms/select/select-clientheight-large-size.html [ Failure ]
 crbug.com/591099 fast/forms/select/select-clientheight-with-multiple-attr.html [ Failure ]
-crbug.com/591099 fast/forms/select/select-dirty-parent-pref-widths.html [ Failure ]
+crbug.com/591099 fast/forms/select/select-dirty-parent-pref-widths.html [ Failure Pass ]
 crbug.com/591099 fast/forms/select/select-disabled-appearance.html [ Failure ]
 crbug.com/591099 fast/forms/select/select-disabled.html [ Failure ]
 crbug.com/591099 fast/forms/select/select-display-none-style-resolve.html [ Failure ]
@@ -10381,7 +10514,7 @@
 crbug.com/591099 fast/forms/select/select-generated-content.html [ Failure ]
 crbug.com/591099 fast/forms/select/select-initial-position.html [ Failure ]
 crbug.com/591099 fast/forms/select/select-item-background-clip.html [ Failure ]
-crbug.com/591099 fast/forms/select/select-listbox-focus-displaynone.html [ Crash ]
+crbug.com/591099 fast/forms/select/select-listbox-focus-displaynone.html [ Crash Failure ]
 crbug.com/591099 fast/forms/select/select-list-box-mouse-focus.html [ Failure ]
 crbug.com/591099 fast/forms/select/select-listbox-multiple-no-focusring.html [ Failure ]
 crbug.com/591099 fast/forms/select/select-list-box-with-height.html [ Failure ]
@@ -10449,6 +10582,7 @@
 crbug.com/591099 fast/forms/submit-nil-value-field-assert.html [ Failure ]
 crbug.com/591099 fast/forms/submit-onFocus-invalidForm.html [ Failure ]
 crbug.com/591099 fast/forms/submit/submit-appearance-basic.html [ Failure ]
+crbug.com/591099 fast/forms/submit/submit-focus-by-mouse.html [ Failure Pass ]
 crbug.com/591099 fast/forms/submit-to-blank-multiple-times.html [ Failure ]
 crbug.com/591099 fast/forms/submit-to-url-fragment.html [ Failure ]
 crbug.com/591099 fast/forms/submit-with-base.html [ Failure ]
@@ -10535,7 +10669,7 @@
 crbug.com/591099 fast/forms/textarea/textarea-newline.html [ Failure ]
 crbug.com/591099 fast/forms/textarea/textarea-node-removed-from-document-crash.html [ Crash ]
 crbug.com/591099 fast/forms/textarea/textarea-no-scroll-on-blur.html [ Failure ]
-crbug.com/591099 fast/forms/textarea/textarea-nowrap-paste-eol.html [ Failure ]
+crbug.com/591099 fast/forms/textarea/textarea-nowrap-paste-eol.html [ Failure Pass ]
 crbug.com/591099 fast/forms/textarea/textarea-paste-newline.html [ Failure ]
 crbug.com/591099 fast/forms/textarea/textarea-placeholder-dom-property.html [ Failure ]
 crbug.com/591099 fast/forms/textarea/textarea-placeholder-paint-order-2.html [ Failure ]
@@ -10668,7 +10802,7 @@
 crbug.com/591099 fast/forms/time-multiple-fields/time-multiple-fields-fallback-format.html [ Failure ]
 crbug.com/591099 fast/forms/time-multiple-fields/time-multiple-fields-focus.html [ Failure ]
 crbug.com/591099 fast/forms/time-multiple-fields/time-multiple-fields-focus-style.html [ Crash ]
-crbug.com/591099 fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events.html [ Timeout ]
+crbug.com/591099 fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events.html [ Failure Timeout ]
 crbug.com/591099 fast/forms/time-multiple-fields/time-multiple-fields-localization.html [ Failure ]
 crbug.com/591099 fast/forms/time-multiple-fields/time-multiple-fields-losing-renderer-on-click.html [ Crash ]
 crbug.com/591099 fast/forms/time-multiple-fields/time-multiple-fields-mouse-events.html [ Failure ]
@@ -10804,6 +10938,7 @@
 crbug.com/591099 fast/frames/frameset-style-recalc.html [ Failure ]
 crbug.com/591099 fast/frames/frame-src-attribute.html [ Failure ]
 crbug.com/591099 fast/frames/frames-with-frameborder-zero-can-be-resized.html [ Failure ]
+crbug.com/591099 fast/frames/frame-unload-crash2.html [ Crash Pass ]
 crbug.com/591099 fast/frames/frame-unload-crash.html [ Failure ]
 crbug.com/591099 fast/frames/frame-with-noresize-can-be-resized-after-removal-of-noresize.html [ Failure ]
 crbug.com/591099 fast/frames/frame-with-noresize-can-be-resized-after-setting-noResize-to-false.html [ Failure ]
@@ -10840,7 +10975,7 @@
 crbug.com/591099 fast/frames/open-then-unload.html [ Failure ]
 crbug.com/591099 fast/frames/open-without-opener-frame-crash.html [ Failure ]
 crbug.com/591099 fast/frames/out-of-document-iframe-has-child-frame.html [ Crash Failure ]
-crbug.com/591099 fast/frames/page-visibility-crash.html [ Crash ]
+crbug.com/591099 fast/frames/page-visibility-crash.html [ Crash Pass ]
 crbug.com/591099 fast/frames/paint-iframe-background.html [ Failure ]
 crbug.com/591099 fast/frames/parser-append-subframe-count.html [ Failure ]
 crbug.com/591099 fast/frames/reattach-in-unload.html [ Failure ]
@@ -10928,7 +11063,7 @@
 crbug.com/591099 fast/gradients/radial-centered.html [ Failure ]
 crbug.com/591099 fast/gradients/repeating-conic-gradient.html [ Failure ]
 crbug.com/591099 fast/gradients/simple-gradients.html [ Failure ]
-crbug.com/591099 fast/gradients/unprefixed-color-hints-edge-cases.html [ Failure ]
+crbug.com/591099 fast/gradients/unprefixed-color-hints-edge-cases.html [ Failure Pass ]
 crbug.com/591099 fast/gradients/unprefixed-color-stops.html [ Failure ]
 crbug.com/591099 fast/gradients/unprefixed-color-stop-units.html [ Failure ]
 crbug.com/591099 fast/gradients/unprefixed-generated-gradients.html [ Failure ]
@@ -10988,7 +11123,7 @@
 crbug.com/591099 fast/history/self-is-visited.html [ Failure ]
 crbug.com/591099 fast/history/sibling-visited-test.html [ Failure ]
 crbug.com/591099 fast/history/state-object-few-arguements-exception.html [ Failure ]
-crbug.com/591099 fast/history/visited-link-hover-text-decoration-color.html [ Failure ]
+crbug.com/591099 fast/history/visited-link-hover-text-decoration-color.html [ Failure Pass ]
 crbug.com/591099 fast/history/window-open.html [ Failure ]
 crbug.com/591099 fast/html/adjacent-html-context-element.html [ Failure ]
 crbug.com/591099 fast/html/adopt-parent-frame.html [ Failure ]
@@ -11032,7 +11167,7 @@
 crbug.com/591099 fast/html/tab-order.html [ Failure ]
 crbug.com/591099 fast/html/unknown-tag.html [ Failure ]
 crbug.com/591099 fast/inline/001.html [ Failure ]
-crbug.com/591099 fast/inline/002.html [ Failure ]
+crbug.com/591099 fast/inline/002.html [ Failure Pass ]
 crbug.com/591099 fast/inline/25277-2.html [ Failure ]
 crbug.com/591099 fast/inline/25277.html [ Failure ]
 crbug.com/591099 fast/inline/absolute-positioned-inline-in-centred-block.html [ Failure ]
@@ -11237,7 +11372,7 @@
 crbug.com/591099 fast/js/instanceof-test.html [ Failure ]
 crbug.com/591099 fast/js/iterable-object.html [ Failure ]
 crbug.com/591099 fast/js/js-constructors-use-correct-global.html [ Failure ]
-crbug.com/591099 fast/js/JSON-parse.html [ Timeout ]
+crbug.com/591099 fast/js/JSON-parse.html [ Pass Timeout ]
 crbug.com/591099 fast/js/kde/garbage-n.html [ Failure ]
 crbug.com/591099 fast/js/kde/string-1-n.html [ Failure ]
 crbug.com/591099 fast/js/kde/string-2-n.html [ Failure ]
@@ -11385,7 +11520,7 @@
 crbug.com/591099 fast/js/switch-behaviour.html [ Failure ]
 crbug.com/591099 fast/js/text-field-resize.html [ Failure ]
 crbug.com/591099 fast/js/throw-from-array-sort.html [ Failure ]
-crbug.com/591099 fast/js/toString-and-valueOf-override.html [ Timeout ]
+crbug.com/591099 fast/js/toString-and-valueOf-override.html [ Pass Timeout ]
 crbug.com/591099 fast/js/toString-dontEnum.html [ Failure ]
 crbug.com/591099 fast/js/toString-stack-overflow.html [ Failure ]
 crbug.com/591099 fast/js/toString-try-else.html [ Failure ]
@@ -11415,9 +11550,9 @@
 crbug.com/591099 fast/layers/layer-visibility.html [ Failure ]
 crbug.com/591099 fast/layers/layer-visibility-sublayer.html [ Failure ]
 crbug.com/591099 fast/layers/negative-scroll-positions.html [ Failure ]
-crbug.com/591099 fast/layers/no-clipping-overflow-hidden-added-after-transform.html [ Failure ]
-crbug.com/591099 fast/layers/no-clipping-overflow-hidden-added-after-transition.html [ Failure ]
-crbug.com/591099 fast/layers/no-clipping-overflow-hidden-hardware-acceleration.html [ Failure ]
+crbug.com/591099 fast/layers/no-clipping-overflow-hidden-added-after-transform.html [ Failure Pass ]
+crbug.com/591099 fast/layers/no-clipping-overflow-hidden-added-after-transition.html [ Failure Pass ]
+crbug.com/591099 fast/layers/no-clipping-overflow-hidden-hardware-acceleration.html [ Failure Pass ]
 crbug.com/591099 fast/layers/normal-flow-hit-test.html [ Failure ]
 crbug.com/591099 fast/layers/opacity-change-stacking-context.html [ Failure ]
 crbug.com/591099 fast/layers/opacity-outline.html [ Failure ]
@@ -11446,7 +11581,7 @@
 crbug.com/591099 fast/lists/002-vertical.html [ Failure ]
 crbug.com/591099 fast/lists/003.html [ Failure ]
 crbug.com/591099 fast/lists/003-vertical.html [ Failure ]
-crbug.com/591099 fast/lists/004.html [ Failure ]
+crbug.com/591099 fast/lists/004.html [ Failure Pass ]
 crbug.com/591099 fast/lists/005.html [ Failure ]
 crbug.com/591099 fast/lists/005-vertical.html [ Failure ]
 crbug.com/591099 fast/lists/006.html [ Failure ]
@@ -11555,7 +11690,6 @@
 crbug.com/591099 fast/loader/charset-parse.html [ Failure ]
 crbug.com/591099 fast/loader/child-frame-add-after-back-forward.html [ Timeout ]
 crbug.com/591099 fast/loader/crash-focus-in-unload.html [ Crash ]
-crbug.com/591099 fast/loader/middle-click-target-blank.html [ Timeout ]
 crbug.com/591099 fast/loader/data-url-encoding-html-2.html [ Crash ]
 crbug.com/591099 fast/loader/data-url-encoding-html.html [ Failure ]
 crbug.com/591099 fast/loader/data-url-encoding-svg.html [ Failure ]
@@ -11585,8 +11719,9 @@
 crbug.com/591099 fast/loader/local-image-from-local.html [ Failure ]
 crbug.com/591099 fast/loader/local-JavaScript-from-local.html [ Failure ]
 crbug.com/591099 fast/loader/location-port.html [ Failure ]
+crbug.com/591099 fast/loader/middle-click-target-blank.html [ Timeout ]
 crbug.com/591099 fast/loader/navigation-scheduler-user-gesture.html [ Failure ]
-crbug.com/591099 fast/loader/onload-bad-scheme-for-frame.html [ Failure ]
+crbug.com/591099 fast/loader/onload-bad-scheme-for-frame.html [ Failure Timeout ]
 crbug.com/591099 fast/loader/onload-policy-ignore-for-frame.html [ Failure ]
 crbug.com/591099 fast/loader/opaque-base-url.html [ Failure ]
 crbug.com/591099 fast/loader/open-in-srcdoc-unload.html [ Crash ]
@@ -11599,7 +11734,7 @@
 crbug.com/591099 fast/loader/scroll-restore-overrides-fragment.html [ Failure ]
 crbug.com/591099 fast/loader/scroll-restore-should-happen-during-load.html [ Failure ]
 crbug.com/591099 fast/loader/scroll-restore-target-pseudo.html [ Failure ]
-crbug.com/591099 fast/loader/start-load-in-unload.html [ Crash ]
+crbug.com/591099 fast/loader/start-load-in-unload.html [ Crash Pass ]
 crbug.com/591099 fast/loader/stateobjects/pushstate-object-types.html [ Failure ]
 crbug.com/591099 fast/loader/stateobjects/replacestate-in-onunload.html [ Failure ]
 crbug.com/591099 fast/loader/stateobjects/state-attribute-object-types.html [ Failure ]
@@ -11640,8 +11775,9 @@
 crbug.com/591099 fast/media/mq-pointer.html [ Failure ]
 crbug.com/591099 fast/media/mq-resolution.html [ Failure ]
 crbug.com/591099 fast/media/mq-simple-neg-query-03.html [ Failure Pass ]
-crbug.com/591099 fast/media/mq-simple-query-01.html [ Crash ]
-crbug.com/591099 fast/media/mq-width-absolute-03.html [ Failure ]
+crbug.com/591099 fast/media/mq-simple-query-01.html [ Crash Pass ]
+crbug.com/591099 fast/media/mq-simple-query-02.html [ Failure Pass ]
+crbug.com/591099 fast/media/mq-width-absolute-03.html [ Failure Pass ]
 crbug.com/591099 fast/media/mq-with-screen-size-in-physical-pixels-quirk.html [ Failure ]
 crbug.com/591099 fast/mediastream/argument-types.html [ Failure ]
 crbug.com/591099 fast/mediastream/constructors.html [ Failure ]
@@ -11661,7 +11797,7 @@
 crbug.com/591099 fast/media/viewport-media-query-synchronous.html [ Failure ]
 crbug.com/591099 fast/multicol/5-levels-of-nesting-crash.html [ Failure ]
 crbug.com/591099 fast/multicol/abspos-after-break-after.html [ Failure ]
-crbug.com/591099 fast/multicol/anonymous-block-split-crash.html [ Crash ]
+crbug.com/591099 fast/multicol/anonymous-block-split-crash.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/auto-height-forced-break-complex-margin-collapsing.html [ Failure ]
 crbug.com/591099 fast/multicol/balance-breakafter-before-nested-block.html [ Failure ]
 crbug.com/591099 fast/multicol/balance-breakafter-before-table-section-crash.html [ Failure ]
@@ -11701,7 +11837,7 @@
 crbug.com/591099 fast/multicol/client-rects.html [ Failure ]
 crbug.com/591099 fast/multicol/client-rects-rtl.html [ Failure ]
 crbug.com/591099 fast/multicol/client-rects-sole-empty-block.html [ Failure ]
-crbug.com/591099 fast/multicol/clone-block-children-inline-mismatch-crash.html [ Crash ]
+crbug.com/591099 fast/multicol/clone-block-children-inline-mismatch-crash.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/column-break-with-balancing.html [ Failure ]
 crbug.com/591099 fast/multicol/column-count-with-rules.html [ Failure ]
 crbug.com/591099 fast/multicol/column-rules.html [ Failure ]
@@ -11709,14 +11845,17 @@
 crbug.com/591099 fast/multicol/columns-shorthand-parsing.html [ Failure ]
 crbug.com/591099 fast/multicol/column-width-zero.html [ Failure ]
 crbug.com/591099 fast/multicol/composited-inner-multicol.html [ Failure ]
+crbug.com/591099 fast/multicol/composited-layer-multiple-fragments.html [ Failure ]
 crbug.com/591099 fast/multicol/composited-layer-multiple-fragments-translated.html [ Failure ]
+crbug.com/591099 fast/multicol/composited-layer-nested.html [ Failure ]
+crbug.com/591099 fast/multicol/composited-layer-will-change.html [ Failure ]
 crbug.com/591099 fast/multicol/composited-opacity-2nd-and-3rd-column.html [ Failure ]
 crbug.com/591099 fast/multicol/composited-relpos-clipped.html [ Failure ]
 crbug.com/591099 fast/multicol/composited-relpos.html [ Failure ]
 crbug.com/591099 fast/multicol/composited-relpos-in-clipped.html [ Failure ]
 crbug.com/591099 fast/multicol/composited-relpos-overlapping-will-change.html [ Failure ]
 crbug.com/591099 fast/multicol/composited-relpos-resize.html [ Failure ]
-crbug.com/591099 fast/multicol/composited-relpos-simple.html [ Crash ]
+crbug.com/591099 fast/multicol/composited-relpos-simple.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/composited-with-child-layer-in-next-column.html [ Failure ]
 crbug.com/591099 fast/multicol/composited-with-overflow-in-next-column.html [ Failure ]
 crbug.com/591099 fast/multicol/constrained-content-height-with-overflow-crash.html [ Crash Failure ]
@@ -11755,8 +11894,8 @@
 crbug.com/591099 fast/multicol/dynamic/insert-spanner-pseudo-before.html [ Failure ]
 crbug.com/591099 fast/multicol/dynamic/invalid-spanner-container-becomes-valid.html [ Failure ]
 crbug.com/591099 fast/multicol/dynamic/multicol-with-abspos-svg-with-foreignobject-with-multicol-crash.html [ Failure ]
-crbug.com/591099 fast/multicol/dynamic/relpos-becomes-static-has-abspos.html [ Crash ]
-crbug.com/591099 fast/multicol/dynamic/remove-abspos-next-to-spanner.html [ Crash ]
+crbug.com/591099 fast/multicol/dynamic/relpos-becomes-static-has-abspos.html [ Crash Pass ]
+crbug.com/591099 fast/multicol/dynamic/remove-abspos-next-to-spanner.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/dynamic/remove-and-insert-block-after-spanner.html [ Failure ]
 crbug.com/591099 fast/multicol/dynamic/remove-and-insert-block-before-spanner.html [ Failure ]
 crbug.com/591099 fast/multicol/dynamic/remove-and-insert-block-between-spanners.html [ Failure ]
@@ -11766,6 +11905,7 @@
 crbug.com/591099 fast/multicol/dynamic/remove-content-before-inner-multicol-with-spanner-crash.html [ Failure ]
 crbug.com/591099 fast/multicol/dynamic/remove-content-from-scrollable.html [ Failure ]
 crbug.com/591099 fast/multicol/dynamic/remove-inline-and-spanner-after-spanner-foreignObject.html [ Failure ]
+crbug.com/591099 fast/multicol/dynamic/remove-spanner-after-content.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/dynamic/remove-spanner-in-content.html [ Failure ]
 crbug.com/591099 fast/multicol/dynamic/sole-spanner-becomes-abspos-crash.html [ Failure ]
 crbug.com/591099 fast/multicol/dynamic/spanner-after-content-becomes-regular-block.html [ Failure ]
@@ -11830,7 +11970,7 @@
 crbug.com/591099 fast/multicol/inner-multicol-in-second-column.html [ Failure ]
 crbug.com/591099 fast/multicol/inner-multicol-moved-into-continuation.html [ Failure ]
 crbug.com/591099 fast/multicol/input-as-multicol.html [ Failure ]
-crbug.com/591099 fast/multicol/large-padding-crash.html [ Crash ]
+crbug.com/591099 fast/multicol/large-padding-crash.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/layers-in-multicol.html [ Failure ]
 crbug.com/591099 fast/multicol/layers-split-across-columns.html [ Failure ]
 crbug.com/591099 fast/multicol/line-pushed-down-by-float.html [ Failure ]
@@ -11842,8 +11982,8 @@
 crbug.com/591099 fast/multicol/min-height-less-than-height.html [ Failure ]
 crbug.com/591099 fast/multicol/min-height-much-greater-than-content.html [ Failure ]
 crbug.com/591099 fast/multicol/mixed-positioning-stacking-order.html [ Failure ]
-crbug.com/591099 fast/multicol/multicol-becomes-paged-auto-height.html [ Crash ]
-crbug.com/591099 fast/multicol/multicol-becomes-paged-fixed-height.html [ Crash ]
+crbug.com/591099 fast/multicol/multicol-becomes-paged-auto-height.html [ Crash Pass ]
+crbug.com/591099 fast/multicol/multicol-becomes-paged-fixed-height.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/multicol-with-spanner-becomes-paged.html [ Crash Failure ]
 crbug.com/591099 fast/multicol/negative-margins-crash.html [ Failure ]
 crbug.com/591099 fast/multicol/nested-3-multicols-fixed-height.html [ Failure ]
@@ -11884,11 +12024,11 @@
 crbug.com/591099 fast/multicol/newmulticol/balance-maxheight2.html [ Failure ]
 crbug.com/591099 fast/multicol/newmulticol/break-before.html [ Failure ]
 crbug.com/591099 fast/multicol/newmulticol/breaks-2-columns-3.html [ Failure ]
-crbug.com/591099 fast/multicol/newmulticol/breaks-2-columns-3-no-balancing.html [ Failure ]
+crbug.com/591099 fast/multicol/newmulticol/breaks-2-columns-3-no-balancing.html [ Crash Failure ]
 crbug.com/591099 fast/multicol/newmulticol/breaks-3-columns-3.html [ Failure ]
 crbug.com/591099 fast/multicol/newmulticol/clipping.html [ Failure ]
 crbug.com/591099 fast/multicol/newmulticol/clipping-overflow-hidden.html [ Failure ]
-crbug.com/591099 fast/multicol/newmulticol/clipping-top-overflow.html [ Failure ]
+crbug.com/591099 fast/multicol/newmulticol/clipping-top-overflow.html [ Failure Pass ]
 crbug.com/591099 fast/multicol/newmulticol/fixed-height-fill-auto.html [ Failure ]
 crbug.com/591099 fast/multicol/newmulticol/fixed-height-fill-balance-2.html [ Failure ]
 crbug.com/591099 fast/multicol/newmulticol/fixed-height-fill-balance.html [ Failure ]
@@ -11902,6 +12042,8 @@
 crbug.com/591099 fast/multicol/orphaned-line-at-exact-top-of-column.html [ Failure ]
 crbug.com/591099 fast/multicol/orphans-relayout.html [ Failure ]
 crbug.com/591099 fast/multicol/out-of-flow/abspos-auto-left-right.html [ Failure ]
+crbug.com/591099 fast/multicol/out-of-flow/abspos-auto-position.html [ Failure Pass ]
+crbug.com/591099 fast/multicol/out-of-flow/abspos-auto-position-on-line-at-boundary.html [ Failure ]
 crbug.com/591099 fast/multicol/out-of-flow/abspos-auto-position-on-line.html [ Failure ]
 crbug.com/591099 fast/multicol/out-of-flow/abspos-auto-position-on-line-rtl.html [ Crash Failure ]
 crbug.com/591099 fast/multicol/out-of-flow/abspos-auto-position-small-on-line-at-boundary.html [ Failure ]
@@ -11910,7 +12052,7 @@
 crbug.com/591099 fast/multicol/overflowing-columns-large-gaps.html [ Failure ]
 crbug.com/591099 fast/multicol/overflow-into-columngap.html [ Failure ]
 crbug.com/591099 fast/multicol/overflow-unsplittable.html [ Failure ]
-crbug.com/591099 fast/multicol/paged-becomes-multicol-auto-height.html [ Failure ]
+crbug.com/591099 fast/multicol/paged-becomes-multicol-auto-height.html [ Failure Pass ]
 crbug.com/591099 fast/multicol/paged-in-multicol-crash.html [ Crash Failure ]
 crbug.com/591099 fast/multicol/pageLogicalOffset-vertical.html [ Failure ]
 crbug.com/591099 fast/multicol/paginate-block-replaced.html [ Failure ]
@@ -11919,7 +12061,7 @@
 crbug.com/591099 fast/multicol/positioned-split.html [ Failure ]
 crbug.com/591099 fast/multicol/positioned-with-constrained-height.html [ Failure ]
 crbug.com/591099 fast/multicol/relayout-and-push-float.html [ Failure ]
-crbug.com/591099 fast/multicol/relpos-inside-inline-block.html [ Failure ]
+crbug.com/591099 fast/multicol/relpos-inside-inline-block.html [ Failure Pass ]
 crbug.com/591099 fast/multicol/remove-all-children.html [ Failure ]
 crbug.com/591099 fast/multicol/remove-style-multicol-with-nested-layers.html [ Failure ]
 crbug.com/591099 fast/multicol/ruby-crash.html [ Failure ]
@@ -11929,7 +12071,7 @@
 crbug.com/591099 fast/multicol/short-columns-insane-unbreakable-content-height-crash.html [ Failure ]
 crbug.com/591099 fast/multicol/shrink-to-column-height-for-pagination.html [ Crash Failure ]
 crbug.com/591099 fast/multicol/single-line.html [ Failure ]
-crbug.com/591099 fast/multicol/span/abspos-containing-block-outside-spanner.html [ Crash ]
+crbug.com/591099 fast/multicol/span/abspos-containing-block-outside-spanner.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/span/adjacent-spanners.html [ Crash Failure ]
 crbug.com/591099 fast/multicol/span/after-row-with-uneven-height-nested-multicol.html [ Failure ]
 crbug.com/591099 fast/multicol/span/anonymous-before-child-parent-crash.html [ Crash Failure ]
@@ -11950,15 +12092,15 @@
 crbug.com/591099 fast/multicol/span/button-with-spanner-crash.html [ Failure ]
 crbug.com/591099 fast/multicol/span/change-spanner-margins.html [ Failure ]
 crbug.com/591099 fast/multicol/span/clone-anonymous-block-non-inline-child-crash.html [ Failure ]
-crbug.com/591099 fast/multicol/span/clone-before-after-content-crash.html [ Crash ]
-crbug.com/591099 fast/multicol/span/empty-anonymous-block-split-crash.html [ Crash ]
-crbug.com/591099 fast/multicol/span/empty-block-between-spanners.html [ Crash ]
-crbug.com/591099 fast/multicol/span/empty-block-with-bottom-margin-between-spanners.html [ Crash ]
+crbug.com/591099 fast/multicol/span/clone-before-after-content-crash.html [ Crash Pass ]
+crbug.com/591099 fast/multicol/span/empty-anonymous-block-split-crash.html [ Crash Pass ]
+crbug.com/591099 fast/multicol/span/empty-block-between-spanners.html [ Crash Pass ]
+crbug.com/591099 fast/multicol/span/empty-block-with-bottom-margin-between-spanners.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/span/fill-after-spanner-exact-fit.html [ Failure ]
 crbug.com/591099 fast/multicol/span/fill-after-spanner-extra-height.html [ Failure ]
 crbug.com/591099 fast/multicol/span/float.html [ Failure ]
 crbug.com/591099 fast/multicol/span/foreignObject.html [ Failure ]
-crbug.com/591099 fast/multicol/span/generated-child-split-flow-crash.html [ Crash ]
+crbug.com/591099 fast/multicol/span/generated-child-split-flow-crash.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/span/in-nested-multicol-with-hard-breaks.html [ Failure ]
 crbug.com/591099 fast/multicol/span/in-nested-multicol-with-list-item.html [ Failure ]
 crbug.com/591099 fast/multicol/span/in-nested-multicol-with-soft-breaks-inside.html [ Failure ]
@@ -11970,10 +12112,10 @@
 crbug.com/591099 fast/multicol/span/invalid-span-1.html [ Failure ]
 crbug.com/591099 fast/multicol/span/invalid-spanner-in-abspos.html [ Failure ]
 crbug.com/591099 fast/multicol/span/invalid-spanner-in-transform.html [ Failure ]
-crbug.com/591099 fast/multicol/span/list-multi-column-crash.html [ Crash ]
+crbug.com/591099 fast/multicol/span/list-multi-column-crash.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/span/margin-on-multicol.html [ Failure ]
 crbug.com/591099 fast/multicol/span/multicol-with-padding.html [ Failure ]
-crbug.com/591099 fast/multicol/span/multicol-with-spanner-becomes-regular-block.html [ Crash ]
+crbug.com/591099 fast/multicol/span/multicol-with-spanner-becomes-regular-block.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/span/nested-multicol.html [ Failure ]
 crbug.com/591099 fast/multicol/span/offset-properties.html [ Failure ]
 crbug.com/591099 fast/multicol/span/outer-column-break-after-inner-spanner-2.html [ Crash Failure ]
@@ -11985,10 +12127,12 @@
 crbug.com/591099 fast/multicol/span/padding-before-unbreakable-content-crash.html [ Crash Failure ]
 crbug.com/591099 fast/multicol/span/percent-margins.html [ Failure ]
 crbug.com/591099 fast/multicol/span/preferred-widths-with-column-content.html [ Failure ]
+crbug.com/591099 fast/multicol/span/pseudo-after.html [ Failure Pass ]
+crbug.com/591099 fast/multicol/span/pseudo-before.html [ Failure Pass ]
 crbug.com/591099 fast/multicol/span/relpos-in-block.html [ Crash Failure ]
 crbug.com/591099 fast/multicol/span/relpos-spanner-with-abspos-child.html [ Failure ]
 crbug.com/591099 fast/multicol/span/remaining-space-in-last-column.html [ Failure ]
-crbug.com/591099 fast/multicol/span/runin-continuation-crash.html [ Crash ]
+crbug.com/591099 fast/multicol/span/runin-continuation-crash.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/span/simple-margins.html [ Failure ]
 crbug.com/591099 fast/multicol/span/sole-spanner-inside-div.html [ Failure ]
 crbug.com/591099 fast/multicol/span/sole-svg-spanner-with-foreignObject-crash.html [ Failure ]
@@ -11997,12 +12141,12 @@
 crbug.com/591099 fast/multicol/span/spanner-img.html [ Crash Failure ]
 crbug.com/591099 fast/multicol/span/spanner-in-flexbox-in-multicol-in-flexbox-crash.html [ Failure ]
 crbug.com/591099 fast/multicol/span/spanner-inline-block.html [ Failure ]
-crbug.com/591099 fast/multicol/span/spanner-table.html [ Crash ]
+crbug.com/591099 fast/multicol/span/spanner-table.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/span/spanner-with-margin.html [ Crash Failure ]
 crbug.com/591099 fast/multicol/span/summary-split.html [ Failure ]
 crbug.com/591099 fast/multicol/span/two-rows-then-spanner-then-two-rows.html [ Failure ]
 crbug.com/591099 fast/multicol/span/underflow-after-spanner.html [ Crash Failure ]
-crbug.com/591099 fast/multicol/span/update-after-content-before-child-crash.html [ Crash ]
+crbug.com/591099 fast/multicol/span/update-after-content-before-child-crash.html [ Crash Pass ]
 crbug.com/591099 fast/multicol/span/vertical-lr.html [ Failure ]
 crbug.com/591099 fast/multicol/span/vertical-rl.html [ Failure ]
 crbug.com/591099 fast/multicol/span/with-border.html [ Failure ]
@@ -12089,7 +12233,7 @@
 crbug.com/591099 fast/overflow/007.html [ Failure ]
 crbug.com/591099 fast/overflow/008.html [ Failure ]
 crbug.com/591099 fast/overflow/add-visual-overflow-and-change-container-position.html [ Failure ]
-crbug.com/591099 fast/overflow/before-after-overflow-hidden-vertical-writing-mode-rl.html [ Failure ]
+crbug.com/591099 fast/overflow/before-after-overflow-hidden-vertical-writing-mode-rl.html [ Failure Pass ]
 crbug.com/591099 fast/overflow/border-radius-clipping.html [ Crash Failure ]
 crbug.com/591099 fast/overflow/child-100percent-height-inside-fixed-container-with-overflow-auto.html [ Failure ]
 crbug.com/591099 fast/overflow/childFocusRingClip.html [ Failure ]
@@ -12112,7 +12256,7 @@
 crbug.com/591099 fast/overflow/onscroll-layer-self-destruct.html [ Timeout ]
 crbug.com/591099 fast/overflow/overflow-auto-position-absolute.html [ Failure ]
 crbug.com/591099 fast/overflow/overflow-auto-table.html [ Failure ]
-crbug.com/591099 fast/overflow/overflow-clamp-after-transform-related-content-size-change.html [ Failure ]
+crbug.com/591099 fast/overflow/overflow-clamp-after-transform-related-content-size-change.html [ Failure Pass ]
 crbug.com/591099 fast/overflow/overflow-clamp-after-visible-rect-resize.html [ Failure ]
 crbug.com/591099 fast/overflow/overflow-float-stacking.html [ Failure ]
 crbug.com/591099 fast/overflow/overflow-focus-ring.html [ Failure ]
@@ -12137,7 +12281,7 @@
 crbug.com/591099 fast/overflow/scrollbar-restored-and-then-locked.html [ Failure ]
 crbug.com/591099 fast/overflow/scrollbar-restored.html [ Failure ]
 crbug.com/591099 fast/overflow/scroll-div-hide-show.html [ Failure ]
-crbug.com/591099 fast/overflow/scroll-html-hidden-body.html [ Failure ]
+crbug.com/591099 fast/overflow/scroll-html-hidden-body.html [ Failure Pass ]
 crbug.com/591099 fast/overflow/scroll-html-paged-body.html [ Crash Pass ]
 crbug.com/591099 fast/overflow/scroll-nested-positioned-layer-in-overflow.html [ Failure ]
 crbug.com/591099 fast/overflow/scrollRevealButton.html [ Failure ]
@@ -12145,9 +12289,9 @@
 crbug.com/591099 fast/overflow/setting-scrollTop-after-hide-show.html [ Failure ]
 crbug.com/591099 fast/overflow/table-overflow-float.html [ Failure ]
 crbug.com/591099 fast/overflow/trailing-float-linebox.html [ Failure ]
-crbug.com/591099 fast/overflow/unreachable-content-test.html [ Crash ]
+crbug.com/591099 fast/overflow/unreachable-content-test.html [ Crash Pass ]
 crbug.com/591099 fast/overflow/unreachable-overflow-rtl-bug.html [ Failure ]
-crbug.com/591099 fast/pagination/auto-height.html [ Crash ]
+crbug.com/591099 fast/pagination/auto-height.html [ Crash Pass ]
 crbug.com/591099 fast/pagination/auto-height-with-break.html [ Crash Failure ]
 crbug.com/591099 fast/pagination/body-make-unpaginated.html [ Failure ]
 crbug.com/591099 fast/pagination/break-in-paged-overflow.html [ Crash Failure ]
@@ -12158,7 +12302,7 @@
 crbug.com/591099 fast/pagination/caret-range-outside-paged-y.html [ Crash Failure ]
 crbug.com/591099 fast/pagination/caret-range-outside-paged-y-rtl.html [ Crash Failure ]
 crbug.com/591099 fast/pagination/caret-range-outside-paged-y-rtl-vertical-rl.html [ Crash Failure ]
-crbug.com/591099 fast/pagination/div-make-paginated.html [ Crash ]
+crbug.com/591099 fast/pagination/div-make-paginated.html [ Crash Pass ]
 crbug.com/591099 fast/pagination/div-x-horizontal-tb-ltr.html [ Crash Failure ]
 crbug.com/591099 fast/pagination/div-x-horizontal-tb-rtl.html [ Crash Failure ]
 crbug.com/591099 fast/pagination/div-x-vertical-lr-ltr.html [ Crash Failure ]
@@ -12390,7 +12534,7 @@
 crbug.com/591099 fast/replaced/selection-rect-in-table-cell.html [ Failure ]
 crbug.com/591099 fast/replaced/selection-rect-transform.html [ Failure ]
 crbug.com/591099 fast/replaced/table-percent-height.html [ Failure ]
-crbug.com/591099 fast/replaced/table-percent-height-positioned.html [ Failure ]
+crbug.com/591099 fast/replaced/table-percent-height-positioned.html [ Failure Pass ]
 crbug.com/591099 fast/replaced/table-percent-height-text-controls.html [ Failure ]
 crbug.com/591099 fast/replaced/table-percent-width.html [ Failure ]
 crbug.com/591099 fast/replaced/table-replaced-element.html [ Failure ]
@@ -12515,7 +12659,7 @@
 crbug.com/591099 fast/scrolling/fractional-scroll-offset-document.html [ Failure ]
 crbug.com/591099 fast/scrolling/hashtag-autoscroll.html [ Failure ]
 crbug.com/591099 fast/scrolling/horizontal-overflow-quirks.html [ Failure ]
-crbug.com/591099 fast/scrolling/hover-during-scroll.html [ Timeout ]
+crbug.com/591099 fast/scrolling/hover-during-scroll.html [ Failure Timeout ]
 crbug.com/591099 fast/scrolling/html-element-client-rect-excludes-scrollbars.html [ Failure ]
 crbug.com/591099 fast/scrolling/keyboard-scroll-page-scale.html [ Failure ]
 crbug.com/591099 fast/scrolling/non-composited-scrolling-repaint-to-ancestor-backing.html [ Failure ]
@@ -12548,7 +12692,7 @@
 crbug.com/591099 fast/scrolling/scroll-to-origin-with-options-no-layout.html [ Failure ]
 crbug.com/591099 fast/scrolling/set-root-scroller.html [ Failure ]
 crbug.com/591099 fast/selectors/007b.html [ Failure Pass ]
-crbug.com/591099 fast/selectors/012.html [ Failure ]
+crbug.com/591099 fast/selectors/012.html [ Failure Pass ]
 crbug.com/591099 fast/selectors/018b.html [ Failure ]
 crbug.com/591099 fast/selectors/018.html [ Failure ]
 crbug.com/591099 fast/selectors/019.html [ Failure ]
@@ -12565,18 +12709,18 @@
 crbug.com/591099 fast/selectors/043b.html [ Failure ]
 crbug.com/591099 fast/selectors/043.html [ Failure ]
 crbug.com/591099 fast/selectors/044b.html [ Failure ]
-crbug.com/591099 fast/selectors/044d.html [ Crash ]
+crbug.com/591099 fast/selectors/044d.html [ Crash Pass ]
 crbug.com/591099 fast/selectors/044.html [ Failure ]
-crbug.com/591099 fast/selectors/046.html [ Failure ]
+crbug.com/591099 fast/selectors/046.html [ Failure Pass ]
 crbug.com/591099 fast/selectors/061.html [ Failure ]
 crbug.com/591099 fast/selectors/062.html [ Failure ]
-crbug.com/591099 fast/selectors/063.html [ Crash ]
+crbug.com/591099 fast/selectors/063.html [ Crash Pass ]
 crbug.com/591099 fast/selectors/065.html [ Failure ]
 crbug.com/591099 fast/selectors/066.html [ Failure ]
 crbug.com/591099 fast/selectors/077b.html [ Failure ]
 crbug.com/591099 fast/selectors/077.html [ Failure ]
 crbug.com/591099 fast/selectors/078b.html [ Failure ]
-crbug.com/591099 fast/selectors/155.html [ Failure ]
+crbug.com/591099 fast/selectors/155.html [ Failure Pass ]
 crbug.com/591099 fast/selectors/166a.html [ Failure ]
 crbug.com/591099 fast/selectors/166.html [ Failure ]
 crbug.com/591099 fast/selectors/168a.html [ Failure ]
@@ -12716,7 +12860,7 @@
 crbug.com/591099 fast/spatial-navigation/snav-overlapping-elements.html [ Failure ]
 crbug.com/591099 fast/spatial-navigation/snav-simple-content-overflow.html [ Failure ]
 crbug.com/591099 fast/spatial-navigation/snav-symmetrically-positioned.html [ Failure ]
-crbug.com/591099 fast/spatial-navigation/snav-table-traversal.html [ Failure ]
+crbug.com/591099 fast/spatial-navigation/snav-table-traversal.html [ Failure Pass ]
 crbug.com/591099 fast/spatial-navigation/snav-textarea.html [ Failure ]
 crbug.com/591099 fast/spatial-navigation/snav-two-elements-one-line.html [ Failure ]
 crbug.com/591099 fast/spatial-navigation/snav-z-index.html [ Failure ]
@@ -12754,7 +12898,7 @@
 crbug.com/591099 fast/sub-pixel/float-with-right-margin-zoom.html [ Failure ]
 crbug.com/591099 fast/sub-pixel/float-wrap-with-subpixel-top.html [ Failure ]
 crbug.com/591099 fast/sub-pixel/float-wrap-zoom.html [ Failure ]
-crbug.com/591099 fast/sub-pixel/inline-block-with-margin.html [ Failure ]
+crbug.com/591099 fast/sub-pixel/inline-block-with-margin.html [ Failure Pass ]
 crbug.com/591099 fast/sub-pixel/inline-block-with-padding.html [ Failure ]
 crbug.com/591099 fast/sub-pixel/replaced-element-baseline.html [ Failure ]
 crbug.com/591099 fast/sub-pixel/selection/selection-rect-in-sub-pixel-table.html [ Failure ]
@@ -12767,40 +12911,40 @@
 crbug.com/591099 fast/sub-pixel/table-rows-have-stable-height.html [ Failure ]
 crbug.com/591099 fast/sub-pixel/table-with-subpixel-cell-size.html [ Crash Pass ]
 crbug.com/591099 fast/sub-pixel/vertical-align-middle-overflow.html [ Failure ]
-crbug.com/591099 fast/table/002.html [ Failure ]
+crbug.com/591099 fast/table/002.html [ Failure Pass ]
 crbug.com/591099 fast/table/003.html [ Failure ]
-crbug.com/591099 fast/table/004.html [ Failure ]
-crbug.com/591099 fast/table/005.html [ Failure ]
-crbug.com/591099 fast/table/006.html [ Failure ]
+crbug.com/591099 fast/table/004.html [ Failure Pass ]
+crbug.com/591099 fast/table/005.html [ Failure Pass ]
+crbug.com/591099 fast/table/006.html [ Failure Pass ]
 crbug.com/591099 fast/table/007.html [ Failure ]
 crbug.com/591099 fast/table/008.html [ Failure ]
 crbug.com/591099 fast/table/009.html [ Failure ]
-crbug.com/591099 fast/table/010.html [ Failure ]
-crbug.com/591099 fast/table/011.html [ Failure ]
-crbug.com/591099 fast/table/013.html [ Failure ]
+crbug.com/591099 fast/table/010.html [ Failure Pass ]
+crbug.com/591099 fast/table/011.html [ Failure Pass ]
+crbug.com/591099 fast/table/013.html [ Failure Pass ]
 crbug.com/591099 fast/table/014.html [ Failure ]
-crbug.com/591099 fast/table/015.html [ Failure ]
-crbug.com/591099 fast/table/016.html [ Failure ]
-crbug.com/591099 fast/table/017.html [ Failure ]
+crbug.com/591099 fast/table/015.html [ Failure Pass ]
+crbug.com/591099 fast/table/016.html [ Failure Pass ]
+crbug.com/591099 fast/table/017.html [ Failure Pass ]
 crbug.com/591099 fast/table/018.html [ Failure ]
-crbug.com/591099 fast/table/020.html [ Failure ]
-crbug.com/591099 fast/table/021.html [ Failure ]
-crbug.com/591099 fast/table/022.html [ Failure ]
-crbug.com/591099 fast/table/023.html [ Failure ]
-crbug.com/591099 fast/table/024.html [ Failure ]
-crbug.com/591099 fast/table/025.html [ Failure ]
+crbug.com/591099 fast/table/020.html [ Failure Pass ]
+crbug.com/591099 fast/table/021.html [ Failure Pass ]
+crbug.com/591099 fast/table/022.html [ Failure Pass ]
+crbug.com/591099 fast/table/023.html [ Failure Pass ]
+crbug.com/591099 fast/table/024.html [ Failure Pass ]
+crbug.com/591099 fast/table/025.html [ Failure Pass ]
 crbug.com/591099 fast/table/026.html [ Failure ]
-crbug.com/591099 fast/table/027.html [ Failure ]
-crbug.com/591099 fast/table/029.html [ Failure ]
-crbug.com/591099 fast/table/030.html [ Failure ]
-crbug.com/591099 fast/table/031.html [ Failure ]
+crbug.com/591099 fast/table/027.html [ Failure Pass ]
+crbug.com/591099 fast/table/029.html [ Failure Pass ]
+crbug.com/591099 fast/table/030.html [ Failure Pass ]
+crbug.com/591099 fast/table/031.html [ Failure Pass ]
 crbug.com/591099 fast/table/032.html [ Failure ]
-crbug.com/591099 fast/table/033.html [ Failure ]
+crbug.com/591099 fast/table/033.html [ Failure Pass ]
 crbug.com/591099 fast/table/034.html [ Failure ]
 crbug.com/591099 fast/table/035.html [ Failure ]
 crbug.com/591099 fast/table/035-vertical.html [ Failure ]
 crbug.com/591099 fast/table/036.html [ Failure ]
-crbug.com/591099 fast/table/037.xml [ Failure ]
+crbug.com/591099 fast/table/037.xml [ Failure Pass ]
 crbug.com/591099 fast/table/038-vertical.html [ Failure ]
 crbug.com/591099 fast/table/039.html [ Failure ]
 crbug.com/591099 fast/table/040.html [ Failure ]
@@ -12817,6 +12961,7 @@
 crbug.com/591099 fast/table/auto-table-layout-colgroup-removal-crash.html [ Failure ]
 crbug.com/591099 fast/table/auto-with-percent-height.html [ Failure ]
 crbug.com/591099 fast/table/auto-with-percent-height-vertical.html [ Failure ]
+crbug.com/591099 fast/table/backgr_border-table-collapsed-border.html [ Failure Pass ]
 crbug.com/591099 fast/table/backgr_border-table-column-collapsed-border.html [ Failure ]
 crbug.com/591099 fast/table/backgr_border-table-quirks-collapsed-border.html [ Failure ]
 crbug.com/591099 fast/table/backgr_border-table-quirks.html [ Failure ]
@@ -12826,12 +12971,12 @@
 crbug.com/591099 fast/table/backgr_layers-opacity.html [ Failure ]
 crbug.com/591099 fast/table/backgr_layers-show-collapsed-border.html [ Failure ]
 crbug.com/591099 fast/table/backgr_layers-show.html [ Failure ]
-crbug.com/591099 fast/table/backgr_position-table-cell.html [ Failure ]
+crbug.com/591099 fast/table/backgr_position-table-cell.html [ Failure Pass ]
 crbug.com/591099 fast/table/backgr_position-table-column-collapsed-border.html [ Failure ]
 crbug.com/591099 fast/table/backgr_position-table-column-group-collapsed-border.html [ Failure ]
 crbug.com/591099 fast/table/backgr_position-table-column-group.html [ Failure ]
 crbug.com/591099 fast/table/backgr_position-table-column.html [ Failure ]
-crbug.com/591099 fast/table/backgr_simple-table-collapsed-border.html [ Failure ]
+crbug.com/591099 fast/table/backgr_simple-table-collapsed-border.html [ Failure Pass ]
 crbug.com/591099 fast/table/backgr_simple-table-column-collapsed-border.html [ Failure ]
 crbug.com/591099 fast/table/backgr_simple-table-column.html [ Failure ]
 crbug.com/591099 fast/table/backgr_simple-table-row-group-collapsed-border.html [ Failure ]
@@ -12846,22 +12991,22 @@
 crbug.com/591099 fast/table/border-collapsing/004-vertical.html [ Failure ]
 crbug.com/591099 fast/table/border-collapsing/border-collapsing-head-foot.html [ Failure ]
 crbug.com/591099 fast/table/border-collapsing/border-collapsing-head-foot-vertical.html [ Failure ]
-crbug.com/591099 fast/table/border-collapsing/bug14274.html [ Failure ]
-crbug.com/591099 fast/table/border-collapsing/collapsed-border-with-col-colgroup-span.html [ Failure ]
+crbug.com/591099 fast/table/border-collapsing/bug14274.html [ Failure Pass ]
+crbug.com/591099 fast/table/border-collapsing/collapsed-border-with-col-colgroup-span.html [ Failure Pass ]
 crbug.com/591099 fast/table/border-collapsing/dynamic-border-width-change.html [ Failure ]
-crbug.com/591099 fast/table/border-collapsing/equal-precedence-resolution.html [ Failure ]
+crbug.com/591099 fast/table/border-collapsing/equal-precedence-resolution.html [ Failure Pass ]
 crbug.com/591099 fast/table/border-collapsing/equal-precedence-resolution-vertical.html [ Failure ]
 crbug.com/591099 fast/table/border-collapsing/rtl-border-collapsing.html [ Failure ]
 crbug.com/591099 fast/table/border-collapsing/rtl-border-collapsing-vertical.html [ Failure ]
-crbug.com/591099 fast/table/border-radius-with-image.html [ Failure ]
+crbug.com/591099 fast/table/border-radius-with-image.html [ Failure Pass ]
 crbug.com/591099 fast/table/border-recalc.html [ Failure ]
 crbug.com/591099 fast/table/canvas-column-in-column-group.html [ Failure ]
 crbug.com/591099 fast/table/caption-encloses-overhanging-float.html [ Failure ]
 crbug.com/591099 fast/table/caption-in-inline.html [ Failure ]
 crbug.com/591099 fast/table/caption-orthogonal-writing-mode-sizing.html [ Failure ]
-crbug.com/591099 fast/table/caption-relayout.html [ Crash Failure ]
+crbug.com/591099 fast/table/caption-relayout.html [ Crash Failure Pass ]
 crbug.com/591099 fast/table/cell-absolute-child.html [ Failure ]
-crbug.com/591099 fast/table/cell-coalescing.html [ Failure ]
+crbug.com/591099 fast/table/cell-coalescing.html [ Failure Pass ]
 crbug.com/591099 fast/table/cell-height-min-intrinsic.html [ Failure ]
 crbug.com/591099 fast/table/cellindex.html [ Failure ]
 crbug.com/591099 fast/table/cellIndex-of-cell-with-different-parents.html [ Failure ]
@@ -12873,11 +13018,11 @@
 crbug.com/591099 fast/table/change-tbody-border-width-crash.html [ Failure ]
 crbug.com/591099 fast/table/change-tbody-border-width.html [ Failure ]
 crbug.com/591099 fast/table/click-near-anonymous-table.html [ Failure ]
-crbug.com/591099 fast/table/colgroup-preceded-by-caption.html [ Failure ]
+crbug.com/591099 fast/table/colgroup-preceded-by-caption.html [ Failure Pass ]
 crbug.com/591099 fast/table/colgroup-relative.html [ Failure ]
-crbug.com/591099 fast/table/colgroup-spanning-groups-rules.html [ Failure ]
-crbug.com/591099 fast/table/colspanMinWidth.html [ Failure ]
-crbug.com/591099 fast/table/colspan-with-all-percent-cells.html [ Failure ]
+crbug.com/591099 fast/table/colgroup-spanning-groups-rules.html [ Failure Pass ]
+crbug.com/591099 fast/table/colspanMinWidth.html [ Failure Pass ]
+crbug.com/591099 fast/table/colspan-with-all-percent-cells.html [ Failure Pass ]
 crbug.com/591099 fast/table/colspan-with-empty-cells-needing-extra-width.html [ Failure ]
 crbug.com/591099 fast/table/columngroup-inside-columngroup.html [ Failure ]
 crbug.com/591099 fast/table/column-in-inline.html [ Failure ]
@@ -12896,40 +13041,40 @@
 crbug.com/591099 fast/table/css-table-max-width.html [ Failure ]
 crbug.com/591099 fast/table/css-table-width.html [ Failure ]
 crbug.com/591099 fast/table/display-as-inline.html [ Failure ]
-crbug.com/591099 fast/table/dynamic-caption-add-before-child.xhtml [ Failure ]
-crbug.com/591099 fast/table/dynamic-caption-add-remove-before-child.xhtml [ Failure ]
-crbug.com/591099 fast/table/dynamic-cellpadding.html [ Failure ]
+crbug.com/591099 fast/table/dynamic-caption-add-before-child.xhtml [ Failure Pass ]
+crbug.com/591099 fast/table/dynamic-caption-add-remove-before-child.xhtml [ Failure Pass ]
+crbug.com/591099 fast/table/dynamic-cellpadding.html [ Failure Pass ]
 crbug.com/591099 fast/table/dynamic-descendant-percentage-height.html [ Failure ]
-crbug.com/591099 fast/table/early-table-layout.html [ Failure ]
+crbug.com/591099 fast/table/early-table-layout.html [ Failure Pass ]
 crbug.com/591099 fast/table/edge-offsets.html [ Failure ]
 crbug.com/591099 fast/table/empty-auto-column-zero-divide.html [ Failure ]
 crbug.com/591099 fast/table/empty-cells-and-percentage-width-content.html [ Failure ]
-crbug.com/591099 fast/table/empty-cells.html [ Failure ]
+crbug.com/591099 fast/table/empty-cells.html [ Failure Pass ]
 crbug.com/591099 fast/table/empty-cells-spread-2.html [ Failure ]
 crbug.com/591099 fast/table/empty-cells-spread.html [ Failure ]
 crbug.com/591099 fast/table/empty-table-percent-height.html [ Failure ]
-crbug.com/591099 fast/table/fixed-granular-cols.html [ Crash Failure ]
-crbug.com/591099 fast/table/fixed-nested.html [ Failure ]
+crbug.com/591099 fast/table/fixed-granular-cols.html [ Crash Failure Pass ]
+crbug.com/591099 fast/table/fixed-nested.html [ Failure Pass ]
 crbug.com/591099 fast/table/fixed-table-layout/colgroup-removal-crash.html [ Failure ]
-crbug.com/591099 fast/table/fixed-table-layout/column-in-column-group-box-sizing-fixed-table-layout.html [ Failure ]
+crbug.com/591099 fast/table/fixed-table-layout/column-in-column-group-box-sizing-fixed-table-layout.html [ Failure Pass ]
 crbug.com/591099 fast/table/fixed-table-layout/fixed-layout-column-colspan-wrong-size.html [ Failure ]
 crbug.com/591099 fast/table/fixed-table-layout-large-colspan-crash.html [ Failure ]
 crbug.com/591099 fast/table/fixed-table-layout/prepend-in-fixed-table.html [ Failure ]
 crbug.com/591099 fast/table/fixed-table-layout/table-with-percent-width.html [ Failure ]
 crbug.com/591099 fast/table/fixed-table-non-cell-in-row.html [ Failure ]
-crbug.com/591099 fast/table/fixed-table-with-percent-inside-percent-table.html [ Failure ]
-crbug.com/591099 fast/table/fixed-table-with-percent-width-inside-auto-table.html [ Failure ]
-crbug.com/591099 fast/table/fixed-table-with-percent-width-inside-div.html [ Failure ]
-crbug.com/591099 fast/table/fixed-table-with-percent-width-inside-fixed-width-table.html [ Failure ]
-crbug.com/591099 fast/table/fixed-table-with-small-percent-width.html [ Failure ]
+crbug.com/591099 fast/table/fixed-table-with-percent-inside-percent-table.html [ Failure Pass ]
+crbug.com/591099 fast/table/fixed-table-with-percent-width-inside-auto-table.html [ Failure Pass ]
+crbug.com/591099 fast/table/fixed-table-with-percent-width-inside-div.html [ Failure Pass ]
+crbug.com/591099 fast/table/fixed-table-with-percent-width-inside-fixed-width-table.html [ Failure Pass ]
+crbug.com/591099 fast/table/fixed-table-with-small-percent-width.html [ Failure Pass ]
 crbug.com/591099 fast/table/fixed-widths-exceed-available.html [ Failure ]
 crbug.com/591099 fast/table/floatingTablePaintBackground.html [ Failure ]
 crbug.com/591099 fast/table/floating-th.html [ Failure ]
 crbug.com/591099 fast/table/form-with-non-table-display-inside-table-elements.html [ Failure ]
 crbug.com/591099 fast/table/form-with-table-style.html [ Failure ]
-crbug.com/591099 fast/table/frame-and-rules.html [ Failure ]
+crbug.com/591099 fast/table/frame-and-rules.html [ Failure Pass ]
 crbug.com/591099 fast/table/generated-caption.html [ Failure ]
-crbug.com/591099 fast/table/growCellForImageQuirk.html [ Failure ]
+crbug.com/591099 fast/table/growCellForImageQuirk.html [ Failure Pass ]
 crbug.com/591099 fast/table/height-percent-test.html [ Failure ]
 crbug.com/591099 fast/table/height-percent-test-vertical.html [ Failure ]
 crbug.com/591099 fast/table/hittest-tablecell-bottom-edge.html [ Failure Timeout ]
@@ -12949,22 +13094,23 @@
 crbug.com/591099 fast/table/insert-row-before-form.html [ Failure ]
 crbug.com/591099 fast/table/invisible-cell-background.html [ Failure ]
 crbug.com/591099 fast/table/large-shrink-wrapped-width.html [ Failure ]
-crbug.com/591099 fast/table/large-width.html [ Failure ]
+crbug.com/591099 fast/table/large-width.html [ Failure Pass ]
 crbug.com/591099 fast/table/margins-flipped-text-direction.html [ Failure ]
 crbug.com/591099 fast/table/margins-perpendicular-containing-block.html [ Failure ]
 crbug.com/591099 fast/table/min-width-css-block-table.html [ Timeout ]
 crbug.com/591099 fast/table/min-width-css-inline-table.html [ Timeout ]
 crbug.com/591099 fast/table/min-width-html-block-table.html [ Timeout ]
 crbug.com/591099 fast/table/min-width-html-inline-table.html [ Timeout ]
+crbug.com/591099 fast/table/mozilla-bug10296-vertical-align-2.html [ Failure Pass ]
 crbug.com/591099 fast/table/multiple-captions-crash3.html [ Crash ]
-crbug.com/591099 fast/table/multiple-captions-display.xhtml [ Failure ]
-crbug.com/591099 fast/table/multiple-percent-height-rows.html [ Failure ]
+crbug.com/591099 fast/table/multiple-captions-display.xhtml [ Failure Pass ]
+crbug.com/591099 fast/table/multiple-percent-height-rows.html [ Failure Pass ]
 crbug.com/591099 fast/table/nested-percent-height-table.html [ Failure ]
 crbug.com/591099 fast/table/overallocating-auto-cells.html [ Failure ]
 crbug.com/591099 fast/table/overflowHidden.html [ Failure ]
 crbug.com/591099 fast/table/percent-height-border-box-content-in-cell-2.html [ Failure ]
 crbug.com/591099 fast/table/percent-height-border-box-content-in-cell-3.html [ Failure ]
-crbug.com/591099 fast/table/percent-height-border-box-content-in-cell.html [ Failure ]
+crbug.com/591099 fast/table/percent-height-border-box-content-in-cell.html [ Failure Pass ]
 crbug.com/591099 fast/table/percent-height-content-in-fixed-height-border-box-sized-cell.html [ Failure ]
 crbug.com/591099 fast/table/percent-height-content-in-fixed-height-border-box-sized-cell-with-collapsed-border.html [ Failure ]
 crbug.com/591099 fast/table/percent-height-content-in-fixed-height-border-box-sized-cell-with-collapsed-border-on-table.html [ Failure ]
@@ -12981,12 +13127,12 @@
 crbug.com/591099 fast/table/percent-height-overflow-visible-content-in-cell.html [ Failure ]
 crbug.com/591099 fast/table/percent-heights.html [ Failure ]
 crbug.com/591099 fast/table/percent-widths-float.html [ Failure ]
-crbug.com/591099 fast/table/percent-widths-stretch.html [ Failure ]
-crbug.com/591099 fast/table/percent-widths-stretch-vertical.html [ Failure ]
+crbug.com/591099 fast/table/percent-widths-stretch.html [ Failure Pass ]
+crbug.com/591099 fast/table/percent-widths-stretch-vertical.html [ Failure Pass ]
 crbug.com/591099 fast/table/percent-widths-total-less-than-one.html [ Failure ]
 crbug.com/591099 fast/table/prepend-in-anonymous-table.html [ Failure ]
 crbug.com/591099 fast/table/quirks-mode-ignore-display-inline-table.html [ Crash ]
-crbug.com/591099 fast/table/quote-text-around-iframe.html [ Failure ]
+crbug.com/591099 fast/table/quote-text-around-iframe.html [ Failure Pass ]
 crbug.com/591099 fast/table/recalc-section-first-body-crash-main.html [ Failure ]
 crbug.com/591099 fast/table/relative-position-stacking.html [ Failure ]
 crbug.com/591099 fast/table/remove-anonymous-cell.html [ Failure ]
@@ -12996,60 +13142,60 @@
 crbug.com/591099 fast/table/resize-table-binding-cell.html [ Failure ]
 crbug.com/591099 fast/table/resize-table-cell.html [ Failure ]
 crbug.com/591099 fast/table/resize-table-row.html [ Failure ]
-crbug.com/591099 fast/table/row-box-shadow.html [ Failure ]
+crbug.com/591099 fast/table/row-box-shadow.html [ Failure Pass ]
 crbug.com/591099 fast/table/row-height-recalc2.html [ Failure ]
 crbug.com/591099 fast/table/rowindex-comment-nodes.html [ Failure ]
 crbug.com/591099 fast/table/rowindex.html [ Failure ]
 crbug.com/591099 fast/table/row-in-inline-block.html [ Failure ]
 crbug.com/591099 fast/table/rowspan-only-rows-height-distribution.html [ Failure ]
-crbug.com/591099 fast/table/rowspan-paint-order.html [ Failure ]
+crbug.com/591099 fast/table/rowspan-paint-order.html [ Failure Pass ]
 crbug.com/591099 fast/table/rtl-cell-display-none-assert.html [ Failure ]
-crbug.com/591099 fast/table/rules-attr-dynchange1.html [ Failure ]
-crbug.com/591099 fast/table/rules-attr-dynchange2.html [ Failure ]
-crbug.com/591099 fast/table/section-box-shadow.html [ Failure ]
-crbug.com/591099 fast/table/self-painting-row-box-shadow.html [ Failure ]
-crbug.com/591099 fast/table/spanOverlapRepaint.html [ Failure ]
+crbug.com/591099 fast/table/rules-attr-dynchange1.html [ Failure Pass ]
+crbug.com/591099 fast/table/rules-attr-dynchange2.html [ Failure Pass ]
+crbug.com/591099 fast/table/section-box-shadow.html [ Failure Pass ]
+crbug.com/591099 fast/table/self-painting-row-box-shadow.html [ Failure Pass ]
+crbug.com/591099 fast/table/spanOverlapRepaint.html [ Failure Pass ]
 crbug.com/591099 fast/table/split-anonymous-crash.html [ Failure ]
 crbug.com/591099 fast/table/split-table-no-section-update-crash.html [ Failure ]
 crbug.com/591099 fast/table/split-table-section-before-anonymous-block-crash.html [ Failure ]
 crbug.com/591099 fast/table/stale-grid-crash.html [ Failure ]
-crbug.com/591099 fast/table/table-after-child-in-table.html [ Failure ]
+crbug.com/591099 fast/table/table-after-child-in-table.html [ Failure Pass ]
 crbug.com/591099 fast/table/table-all-rowspans-height-distribution-in-rows-except-overlapped.html [ Failure ]
 crbug.com/591099 fast/table/table-all-rowspans-height-distribution-in-rows.html [ Failure ]
 crbug.com/591099 fast/table/table-and-parts-outline.html [ Failure ]
-crbug.com/591099 fast/table/table-anonymous-cell-bug.html [ Failure ]
-crbug.com/591099 fast/table/table-anonymous-row-bug.html [ Failure ]
-crbug.com/591099 fast/table/table-anonymous-section-bug.html [ Failure ]
-crbug.com/591099 fast/table/table-before-child-in-table.html [ Failure ]
-crbug.com/591099 fast/table/table-before-child-style-update.html [ Failure ]
+crbug.com/591099 fast/table/table-anonymous-cell-bug.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-anonymous-row-bug.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-anonymous-section-bug.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-before-child-in-table.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-before-child-style-update.html [ Failure Pass ]
 crbug.com/591099 fast/table/table-caption-moved-crash.html [ Crash ]
-crbug.com/591099 fast/table/table-cell-after-child-in-table.html [ Failure ]
-crbug.com/591099 fast/table/table-cell-before-after-content-around-table-block.html [ Failure ]
-crbug.com/591099 fast/table/table-cell-before-after-content-around-table.html [ Failure ]
-crbug.com/591099 fast/table/table-cell-before-after-content-around-table-row.html [ Failure ]
-crbug.com/591099 fast/table/table-cell-before-child-in-table.html [ Failure ]
+crbug.com/591099 fast/table/table-cell-after-child-in-table.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-cell-before-after-content-around-table-block.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-cell-before-after-content-around-table.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-cell-before-after-content-around-table-row.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-cell-before-child-in-table.html [ Failure Pass ]
 crbug.com/591099 fast/table/table-cell-negative-start-margin-align-center.html [ Failure ]
 crbug.com/591099 fast/table/table-colgroup-present-after-table-row.html [ Failure ]
 crbug.com/591099 fast/table/table-different-overflow-values-2.html [ Failure ]
 crbug.com/591099 fast/table/table-different-overflow-values.html [ Failure ]
 crbug.com/591099 fast/table/table-display-types.html [ Failure ]
 crbug.com/591099 fast/table/table-display-types-vertical.html [ Failure ]
-crbug.com/591099 fast/table/table-insert-before-non-anonymous-block.html [ Failure ]
-crbug.com/591099 fast/table/tableInsideCaption.html [ Failure ]
-crbug.com/591099 fast/table/table-in-table-percent-width-collapsing-border.html [ Failure ]
-crbug.com/591099 fast/table/table-in-table-percent-width-collapsing-border-quirks-mode.html [ Failure ]
-crbug.com/591099 fast/table/table-in-table-percent-width.html [ Failure ]
-crbug.com/591099 fast/table/table-in-table-percent-width-quirks-mode.html [ Failure ]
+crbug.com/591099 fast/table/table-insert-before-non-anonymous-block.html [ Failure Pass ]
+crbug.com/591099 fast/table/tableInsideCaption.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-in-table-percent-width-collapsing-border.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-in-table-percent-width-collapsing-border-quirks-mode.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-in-table-percent-width.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-in-table-percent-width-quirks-mode.html [ Failure Pass ]
 crbug.com/591099 fast/table/table-parts-in-inline.html [ Failure ]
-crbug.com/591099 fast/table/table-row-after-child-in-table.html [ Failure ]
-crbug.com/591099 fast/table/table-row-before-after-content-around-block.html [ Failure ]
-crbug.com/591099 fast/table/table-row-before-after-content-around-table-cell.html [ Failure ]
-crbug.com/591099 fast/table/table-row-before-after-content-around-table.html [ Failure ]
-crbug.com/591099 fast/table/table-row-before-child-in-table.html [ Failure ]
-crbug.com/591099 fast/table/table-row-before-child-style-update.html [ Failure ]
+crbug.com/591099 fast/table/table-row-after-child-in-table.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-row-before-after-content-around-block.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-row-before-after-content-around-table-cell.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-row-before-after-content-around-table.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-row-before-child-in-table.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-row-before-child-style-update.html [ Failure Pass ]
 crbug.com/591099 fast/table/table-row-compositing-repaint-crash.html [ Failure ]
-crbug.com/591099 fast/table/table-row-focus-ring-paint.html [ Failure ]
-crbug.com/591099 fast/table/table-row-outline-paint.html [ Failure ]
+crbug.com/591099 fast/table/table-row-focus-ring-paint.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-row-outline-paint.html [ Failure Pass ]
 crbug.com/591099 fast/table/table-rowspan-cell-override-logical-content-height-reset-issue.html [ Failure ]
 crbug.com/591099 fast/table/table-rowspan-cell-with-empty-cell.html [ Failure ]
 crbug.com/591099 fast/table/table-rowspan-crash-only-percent-rows-with-less-than-100-percent.html [ Failure ]
@@ -13062,21 +13208,22 @@
 crbug.com/591099 fast/table/table-rowspan-row-height-less-than-content-height.html [ Failure ]
 crbug.com/591099 fast/table/table-rowspan-table-height-and-row-precent-height-too-large.html [ Failure ]
 crbug.com/591099 fast/table/table-rowspan-wrong-height-with-only-spanning-cells.html [ Failure ]
-crbug.com/591099 fast/table/table-row-style-not-updated.html [ Failure ]
-crbug.com/591099 fast/table/table-row-style-not-updated-with-after-content.html [ Failure ]
-crbug.com/591099 fast/table/table-row-style-not-updated-with-before-content.html [ Failure ]
+crbug.com/591099 fast/table/table-row-style-not-updated.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-row-style-not-updated-with-after-content.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-row-style-not-updated-with-before-content.html [ Failure Pass ]
 crbug.com/591099 fast/table/table-sections-border-spacing.html [ Failure ]
-crbug.com/591099 fast/table/table-style-not-updated.html [ Failure ]
+crbug.com/591099 fast/table/table-section-split.html [ Failure Pass ]
+crbug.com/591099 fast/table/table-style-not-updated.html [ Failure Pass ]
 crbug.com/591099 fast/table/table-toggle-paragraph-padding.html [ Failure ]
 crbug.com/591099 fast/table/table-with-borderattr-null.html [ Failure ]
 crbug.com/591099 fast/table/table-with-borderattr-set-to-null.html [ Failure ]
-crbug.com/591099 fast/table/table-with-border-radius.html [ Failure ]
+crbug.com/591099 fast/table/table-with-border-radius.html [ Failure Pass ]
 crbug.com/591099 fast/table/td-bordercolor-attribute.html [ Failure ]
 crbug.com/591099 fast/table/td-display-nowrap.html [ Failure ]
 crbug.com/591099 fast/table/text-field-baseline.html [ Failure ]
 crbug.com/591099 fast/table/tr-min-content-crash.html [ Failure ]
 crbug.com/591099 fast/table/unused-percent-heights.html [ Failure ]
-crbug.com/591099 fast/table/vertical-align-baseline.html [ Failure ]
+crbug.com/591099 fast/table/vertical-align-baseline.html [ Failure Pass ]
 crbug.com/591099 fast/table/whitespace-in-table-cells-when-div-appended-2.html [ Failure ]
 crbug.com/591099 fast/table/whitespace-in-table-cells-when-div-appended.html [ Failure ]
 crbug.com/591099 fast/table/wide-colspan.html [ Failure ]
@@ -13101,7 +13248,7 @@
 crbug.com/591099 fast/text-autosizing/cluster-with-narrow-lca.html [ Failure ]
 crbug.com/591099 fast/text-autosizing/cluster-with-wide-lca.html [ Failure ]
 crbug.com/591099 fast/text-autosizing/constrained-and-overflow-auto-ancestor.html [ Failure ]
-crbug.com/591099 fast/text-autosizing/constrained-and-overflow-paged-x-ancestor.html [ Crash ]
+crbug.com/591099 fast/text-autosizing/constrained-and-overflow-paged-x-ancestor.html [ Crash Pass ]
 crbug.com/591099 fast/text-autosizing/constrained-and-overflow-scroll-ancestor.html [ Failure ]
 crbug.com/591099 fast/text-autosizing/constrained-height-body.html [ Failure ]
 crbug.com/591099 fast/text-autosizing/constrained-then-overflow-ancestors.html [ Failure ]
@@ -13173,8 +13320,8 @@
 crbug.com/591099 fast/text/basic/003.html [ Failure ]
 crbug.com/591099 fast/text/basic/004.html [ Failure ]
 crbug.com/591099 fast/text/basic/005.html [ Failure ]
-crbug.com/591099 fast/text/basic/006.html [ Failure ]
-crbug.com/591099 fast/text/basic/007.html [ Failure ]
+crbug.com/591099 fast/text/basic/006.html [ Failure Pass ]
+crbug.com/591099 fast/text/basic/007.html [ Failure Pass ]
 crbug.com/591099 fast/text/basic/008.html [ Failure ]
 crbug.com/591099 fast/text/basic/011.html [ Failure ]
 crbug.com/591099 fast/text/basic/012.html [ Failure ]
@@ -13267,12 +13414,12 @@
 crbug.com/591099 fast/text/glyph-overflow.html [ Failure ]
 crbug.com/591099 fast/text/glyph-overflow-with-word-spacing.html [ Failure ]
 crbug.com/591099 fast/text/glyph-reordering.html [ Failure ]
-crbug.com/591099 fast/text/hyphen-min-preferred-width.html [ Failure ]
+crbug.com/591099 fast/text/hyphen-min-preferred-width.html [ Failure Pass ]
 crbug.com/591099 fast/text/hyphens/hyphens-none.html [ Failure ]
 crbug.com/591099 fast/text/in-rendered-text-rtl.html [ Failure ]
 crbug.com/591099 fast/text/insert-text-crash.html [ Crash ]
-crbug.com/591099 fast/text/international/002.html [ Failure ]
-crbug.com/591099 fast/text/international/003.html [ Failure ]
+crbug.com/591099 fast/text/international/002.html [ Failure Pass ]
+crbug.com/591099 fast/text/international/003.html [ Failure Pass ]
 crbug.com/591099 fast/text/international/arabic-digits.html [ Failure ]
 crbug.com/591099 fast/text/international/arabic-justify.html [ Failure ]
 crbug.com/591099 fast/text/international/arabic-vertical-offset.html [ Failure ]
@@ -13423,7 +13570,7 @@
 crbug.com/591099 fast/text/text-combine-shrink-to-fit.html [ Failure ]
 crbug.com/591099 fast/text/text-combine-width-after-style-change.html [ Failure ]
 crbug.com/591099 fast/text/text-container-bounding-rect.html [ Failure ]
-crbug.com/591099 fast/text/text-fragment-first-letter-update-crash.html [ Crash ]
+crbug.com/591099 fast/text/text-fragment-first-letter-update-crash.html [ Crash Pass ]
 crbug.com/591099 fast/text/text-iterator-crash.html [ Crash ]
 crbug.com/591099 fast/text/textIteratorNilRenderer.html [ Failure ]
 crbug.com/591099 fast/text/text-large-negative-letter-spacing-with-opacity.html [ Failure ]
@@ -13462,12 +13609,12 @@
 crbug.com/591099 fast/text/whitespace/018.html [ Failure ]
 crbug.com/591099 fast/text/whitespace/019.html [ Failure ]
 crbug.com/591099 fast/text/whitespace/020.html [ Failure ]
-crbug.com/591099 fast/text/whitespace/021.html [ Failure ]
+crbug.com/591099 fast/text/whitespace/021.html [ Failure Pass ]
 crbug.com/591099 fast/text/whitespace/022.html [ Failure ]
 crbug.com/591099 fast/text/whitespace/023.html [ Failure ]
 crbug.com/591099 fast/text/whitespace/024.html [ Failure ]
 crbug.com/591099 fast/text/whitespace/025.html [ Failure ]
-crbug.com/591099 fast/text/whitespace/026.html [ Failure ]
+crbug.com/591099 fast/text/whitespace/026.html [ Failure Pass ]
 crbug.com/591099 fast/text/whitespace/027.html [ Failure ]
 crbug.com/591099 fast/text/whitespace/028.html [ Failure ]
 crbug.com/591099 fast/text/whitespace/029.html [ Failure ]
@@ -13516,7 +13663,7 @@
 crbug.com/591099 fast/tokenizer/missing-style-end-tag-2.html [ Failure ]
 crbug.com/591099 fast/tokenizer/nested-cached-scripts-and-stylesheet.html [ Failure ]
 crbug.com/591099 fast/tokenizer/nested-cached-scripts.html [ Failure ]
-crbug.com/591099 fast/tokenizer/nested-multiple-scripts.html [ Failure ]
+crbug.com/591099 fast/tokenizer/nested-multiple-scripts.html [ Failure Pass ]
 crbug.com/591099 fast/tokenizer/script_extra_close.html [ Failure ]
 crbug.com/591099 fast/tokenizer/write-partial-entity.html [ Failure ]
 crbug.com/591099 fast/tokenizer/write-unclosed-script.html [ Failure ]
@@ -13665,9 +13812,9 @@
 crbug.com/591099 fast/writing-mode/margin-collapse.html [ Failure ]
 crbug.com/591099 fast/writing-mode/margins.html [ Failure ]
 crbug.com/591099 fast/writing-mode/orthogonal-writing-modes-available-width-absolute-crash.html [ Failure ]
-crbug.com/591099 fast/writing-mode/orthogonal-writing-modes-change-root-inline-crash.html [ Crash ]
+crbug.com/591099 fast/writing-mode/orthogonal-writing-modes-change-root-inline-crash.html [ Crash Pass ]
 crbug.com/591099 fast/writing-mode/orthogonal-writing-modes-floats-crash-3.html [ Crash ]
-crbug.com/591099 fast/writing-mode/orthogonal-writing-modes-in-layoutview-with-floats.html [ Crash ]
+crbug.com/591099 fast/writing-mode/orthogonal-writing-modes-in-layoutview-with-floats.html [ Crash Pass ]
 crbug.com/591099 fast/writing-mode/orthogonal-writing-modes-scrollbarpart-crash.html [ Failure ]
 crbug.com/591099 fast/writing-mode/percentage-height-orthogonal-writing-modes.html [ Failure ]
 crbug.com/591099 fast/writing-mode/percentage-height-orthogonal-writing-modes-quirks.html [ Failure ]
@@ -13681,7 +13828,7 @@
 crbug.com/591099 fast/writing-mode/text-combine-line-break.html [ Failure ]
 crbug.com/591099 fast/writing-mode/text-combine-various-fonts.html [ Failure ]
 crbug.com/591099 fast/writing-mode/text-orientation-basic.html [ Failure ]
-crbug.com/591099 fast/writing-mode/vertical-align-table-baseline.html [ Failure ]
+crbug.com/591099 fast/writing-mode/vertical-align-table-baseline.html [ Failure Pass ]
 crbug.com/591099 fast/writing-mode/vertical-baseline-alignment.html [ Failure ]
 crbug.com/591099 fast/writing-mode/vertical-float-margin.html [ Failure ]
 crbug.com/591099 fast/writing-mode/vertical-font-fallback.html [ Failure ]
@@ -13781,7 +13928,7 @@
 crbug.com/591099 fonts/sans-serif.html [ Failure ]
 crbug.com/591099 fonts/serif.html [ Failure ]
 crbug.com/591099 fragmentation/abspos-after-forced-break.html [ Failure ]
-crbug.com/591099 fragmentation/abspos-table-in-nested-multicol-crash.html [ Crash ]
+crbug.com/591099 fragmentation/abspos-table-in-nested-multicol-crash.html [ Crash Pass ]
 crbug.com/591099 fragmentation/auto-scrollbar-shrink-to-fit.html [ Failure ]
 crbug.com/591099 fragmentation/avoid-break-inside-first-child.html [ Failure ]
 crbug.com/591099 fragmentation/avoid-break-inside-first-child-nested.html [ Failure ]
@@ -13812,6 +13959,7 @@
 crbug.com/591099 fragmentation/float-after-forced-break.html [ Failure ]
 crbug.com/591099 fragmentation/float-pushed-to-next-fragmentainer-by-floats.html [ Failure ]
 crbug.com/591099 fragmentation/forced-break-clearance-unsplittable-content.html [ Failure ]
+crbug.com/591099 fragmentation/forced-break-inside-float.html [ Failure ]
 crbug.com/591099 fragmentation/fragmented-rowspan-alignment.html [ Failure ]
 crbug.com/591099 fragmentation/fragmented-rowspan.html [ Failure ]
 crbug.com/591099 fragmentation/fragmented-table-cell.html [ Failure ]
@@ -13843,7 +13991,7 @@
 crbug.com/591099 fullscreen/anonymous-block-merge-crash.html [ Crash ]
 crbug.com/591099 fullscreen/api/element-request-fullscreen-and-remove-iframe.html [ Crash ]
 crbug.com/591099 fullscreen/compositor-touch-hit-rects-fullscreen-video-controls.html [ Failure ]
-crbug.com/591099 fullscreen/exit-full-screen-iframe.html [ Crash ]
+crbug.com/591099 fullscreen/exit-full-screen-iframe.html [ Crash Failure ]
 crbug.com/591099 fullscreen/full-screen-cancel-nested.html [ Failure ]
 crbug.com/591099 fullscreen/full-screen-child-not-allowed-crash.html [ Failure ]
 crbug.com/591099 fullscreen/full-screen-crash-offsetLeft.html [ Failure ]
@@ -14010,6 +14158,7 @@
 crbug.com/591099 html/details_summary/details-writing-mode-align-right.html [ Failure ]
 crbug.com/591099 html/details_summary/details-writing-mode.html [ Failure ]
 crbug.com/591099 html/details_summary/mutation-details-focus.html [ Crash ]
+crbug.com/591099 html/details_summary/summary-display-grid.html [ Failure Pass ]
 crbug.com/591099 html/dialog/abspos-dialog-layout.html [ Failure ]
 crbug.com/591099 html/dialog/closed-dialog-does-not-block-mouse-events.html [ Failure ]
 crbug.com/591099 html/dialog/dialog-autofocus.html [ Crash ]
@@ -14073,7 +14222,7 @@
 crbug.com/591099 html/sections/hgroup-element.html [ Failure ]
 crbug.com/591099 html/sections/nav-element.html [ Failure ]
 crbug.com/591099 html/sections/numbered-header-element.html [ Failure ]
-crbug.com/591099 html/sections/remove-body-during-body-replacement2.html [ Timeout ]
+crbug.com/591099 html/sections/remove-body-during-body-replacement2.html [ Pass Timeout ]
 crbug.com/591099 html/sections/section-element.html [ Failure ]
 crbug.com/591099 html/tabular_data/col_width_resizing_table.html [ Failure ]
 crbug.com/591099 html/tabular_data/early-acid3-65-excerpt.html [ Failure ]
@@ -14105,7 +14254,7 @@
 crbug.com/591099 http/tests/appcache/404-resource-cross-origin.html [ Failure ]
 crbug.com/591099 http/tests/appcache/404-resource.html [ Failure ]
 crbug.com/591099 http/tests/appcache/access-via-redirect.php [ Failure ]
-crbug.com/591099 http/tests/appcache/credential-url.html [ Failure ]
+crbug.com/591099 http/tests/appcache/credential-url.html [ Failure Timeout ]
 crbug.com/591099 http/tests/appcache/cyrillic-uri.html [ Failure ]
 crbug.com/591099 http/tests/appcache/deferred-events-delete-while-raising.html [ Crash ]
 crbug.com/591099 http/tests/appcache/deferred-events-delete-while-raising-timer.html [ Crash ]
@@ -14113,10 +14262,10 @@
 crbug.com/591099 http/tests/appcache/detached-iframe.html [ Failure ]
 crbug.com/591099 http/tests/appcache/different-https-origin-resource-main.html [ Failure ]
 crbug.com/591099 http/tests/appcache/different-origin-manifest.html [ Failure ]
-crbug.com/591099 http/tests/appcache/different-scheme.html [ Failure ]
+crbug.com/591099 http/tests/appcache/different-scheme.html [ Failure Timeout ]
 crbug.com/591099 http/tests/appcache/empty-manifest.html [ Pass Timeout ]
 crbug.com/591099 http/tests/appcache/exceptions.html [ Failure ]
-crbug.com/591099 http/tests/appcache/fail-on-update.html [ Timeout ]
+crbug.com/591099 http/tests/appcache/fail-on-update.html [ Pass Timeout ]
 crbug.com/591099 http/tests/appcache/fallback.html [ Failure ]
 crbug.com/591099 http/tests/appcache/foreign-fallback.html [ Failure ]
 crbug.com/591099 http/tests/appcache/foreign-iframe-main.html [ Failure Timeout ]
@@ -14229,6 +14378,9 @@
 crbug.com/591099 http/tests/eventsource/workers/eventsource-simple.html [ Failure ]
 crbug.com/591099 http/tests/eventsource/workers/eventsource-status-code-states.html [ Failure ]
 crbug.com/591099 http/tests/eventsource/workers/eventsource-url-attribute.html [ Failure ]
+crbug.com/591099 http/tests/feature-policy-experimental-features/vibrate-disabled.php [ Timeout ]
+crbug.com/591099 http/tests/feature-policy-experimental-features/vibrate-enabledforall.php [ Timeout ]
+crbug.com/591099 http/tests/feature-policy-experimental-features/vibrate-enabledforself.php [ Timeout ]
 crbug.com/591099 http/tests/feature-policy/fullscreen-disabled.php [ Crash ]
 crbug.com/591099 http/tests/feature-policy/fullscreen-enabledforall.php [ Crash ]
 crbug.com/591099 http/tests/feature-policy/fullscreen-enabledforself.php [ Crash ]
@@ -14285,15 +14437,15 @@
 crbug.com/591099 http/tests/images/image-with-origin-header.html [ Failure ]
 crbug.com/591099 http/tests/images/png-partial-load-as-document.html [ Failure ]
 crbug.com/591099 http/tests/images/restyle-decode-error.html [ Crash Pass ]
-crbug.com/591099 http/tests/incremental/doc-write-before-end.pl [ Crash ]
+crbug.com/591099 http/tests/incremental/doc-write-before-end.pl [ Crash Pass ]
 crbug.com/591099 http/tests/incremental/frame-focus-before-load.html [ Failure ]
 crbug.com/591099 http/tests/incremental/slow-utf8-css.html [ Failure ]
 crbug.com/591099 http/tests/incremental/slow-utf8-html.pl [ Failure ]
 crbug.com/591099 http/tests/incremental/split-hex-entities.pl [ Failure ]
-crbug.com/591099 http/tests/inspector/appcache/appcache-iframe-manifests.html [ Crash ]
+crbug.com/591099 http/tests/inspector/appcache/appcache-iframe-manifests.html [ Crash Timeout ]
 crbug.com/591099 http/tests/inspector/appcache/appcache-manifest-with-non-existing-file.html [ Failure Timeout ]
 crbug.com/591099 http/tests/inspector/appcache/appcache-swap.html [ Failure Timeout ]
-crbug.com/591099 http/tests/inspector/bindings/bindings-frame-attach-detach.html [ Failure ]
+crbug.com/591099 http/tests/inspector/bindings/bindings-frame-attach-detach.html [ Crash Failure ]
 crbug.com/591099 http/tests/inspector/bindings/bindings-frame-navigate.html [ Failure ]
 crbug.com/591099 http/tests/inspector/bindings/bindings-main-frame-navigated.html [ Failure ]
 crbug.com/591099 http/tests/inspector/bindings/bindings-multiple-frames.html [ Crash ]
@@ -14317,9 +14469,9 @@
 crbug.com/591099 http/tests/inspector/command-line-api-inspect.html [ Crash Failure ]
 crbug.com/591099 http/tests/inspector/compiler-script-mapping.html [ Failure ]
 crbug.com/591099 http/tests/inspector/compiler-source-mapping-debug.html [ Failure ]
-crbug.com/591099 http/tests/inspector/console-cd-completions.html [ Failure ]
+crbug.com/591099 http/tests/inspector/console-cd-completions.html [ Crash Failure ]
 crbug.com/591099 http/tests/inspector/console-cd.html [ Crash Failure ]
-crbug.com/591099 http/tests/inspector/console-completions.html [ Failure ]
+crbug.com/591099 http/tests/inspector/console-completions.html [ Crash Failure ]
 crbug.com/591099 http/tests/inspector/console/console-links-in-errors-with-trace.html [ Crash Failure ]
 crbug.com/591099 http/tests/inspector/console/console-links-on-messages-before-inspection.html [ Failure ]
 crbug.com/591099 http/tests/inspector/console-cross-origin-iframe-logging.html [ Failure ]
@@ -14339,7 +14491,7 @@
 crbug.com/591099 http/tests/inspector/elements/styles/selector-line-sourcemap-header-deprecated.html [ Crash ]
 crbug.com/591099 http/tests/inspector/elements/styles/selector-line-sourcemap-header.html [ Crash ]
 crbug.com/591099 http/tests/inspector/elements/styles/styles-do-not-add-inline-stylesheets-in-navigator.html [ Failure ]
-crbug.com/591099 http/tests/inspector/elements/styles/stylesheet-tracking.html [ Crash ]
+crbug.com/591099 http/tests/inspector/elements/styles/stylesheet-tracking.html [ Crash Timeout ]
 crbug.com/591099 http/tests/inspector/elements/styles/styles-redirected-css.html [ Crash ]
 crbug.com/591099 http/tests/inspector/elements/styles/xsl-transformed.xml [ Crash ]
 crbug.com/591099 http/tests/inspector-enabled/console-clear-arguments-on-frame-navigation.html [ Failure ]
@@ -14413,7 +14565,7 @@
 crbug.com/591099 http/tests/inspector/network/network-memory-cached-resource.html [ Failure ]
 crbug.com/591099 http/tests/inspector/network/network-recording-after-reload-with-screenshots-enabled.html [ Failure ]
 crbug.com/591099 http/tests/inspector/network/network-requestblocking-icon.html [ Failure ]
-crbug.com/591099 http/tests/inspector/network/network-request-revision-content.html [ Failure ]
+crbug.com/591099 http/tests/inspector/network/network-request-revision-content.html [ Crash Failure ]
 crbug.com/591099 http/tests/inspector/network/network-request-type.html [ Failure ]
 crbug.com/591099 http/tests/inspector/network/network-timing.html [ Failure ]
 crbug.com/591099 http/tests/inspector/network/network-xhr-async.html [ Failure ]
@@ -14467,10 +14619,10 @@
 crbug.com/591099 http/tests/inspector-protocol/network-data-length.html [ Failure Timeout ]
 crbug.com/591099 http/tests/inspector-protocol/override-referrer.html [ Pass Timeout ]
 crbug.com/591099 http/tests/inspector-protocol/ping-redirect.html [ Failure Timeout ]
-crbug.com/591099 http/tests/inspector-protocol/reload-memory-cache.html [ Failure ]
+crbug.com/591099 http/tests/inspector-protocol/reload-memory-cache.html [ Failure Timeout ]
 crbug.com/591099 http/tests/inspector-protocol/request-mixed-content-status-blockable.html [ Failure Timeout ]
 crbug.com/591099 http/tests/inspector-protocol/request-mixed-content-status-none.html [ Failure Timeout ]
-crbug.com/591099 http/tests/inspector-protocol/request-mixed-content-status-optionally-blockable.html [ Failure ]
+crbug.com/591099 http/tests/inspector-protocol/request-mixed-content-status-optionally-blockable.html [ Failure Timeout ]
 crbug.com/591099 http/tests/inspector-protocol/request-referrer-policy.html [ Crash Failure Timeout ]
 crbug.com/591099 http/tests/inspector-protocol/runtime-get-properties-doesnt-crash-on-window-frame.html [ Pass Timeout ]
 crbug.com/591099 http/tests/inspector-protocol/websocket/websocket-user-agent-override.html [ Failure ]
@@ -14524,7 +14676,7 @@
 crbug.com/591099 http/tests/inspector/security/security-explanation-ordering.html [ Failure ]
 crbug.com/591099 http/tests/inspector/security/security-secure-but-malicious.html [ Failure ]
 crbug.com/591099 http/tests/inspector/security/security-state-comparator.html [ Failure ]
-crbug.com/591099 http/tests/inspector/security/security-unknown-resource.html [ Failure ]
+crbug.com/591099 http/tests/inspector/security/security-unknown-resource.html [ Failure Timeout ]
 crbug.com/591099 http/tests/inspector/service-workers/lazy-addeventlisteners.html [ Failure ]
 crbug.com/591099 http/tests/inspector/service-workers/service-worker-agents.html [ Failure ]
 crbug.com/591099 http/tests/inspector/service-workers/service-worker-manager.html [ Failure ]
@@ -14534,7 +14686,7 @@
 crbug.com/591099 http/tests/inspector/service-workers/service-workers-navigation-preload.html [ Failure ]
 crbug.com/591099 http/tests/inspector/service-workers/service-workers-redundant.html [ Crash ]
 crbug.com/591099 http/tests/inspector/service-workers/service-workers-view.html [ Crash ]
-crbug.com/591099 http/tests/inspector/service-workers/user-agent-override.html [ Failure ]
+crbug.com/591099 http/tests/inspector/service-workers/user-agent-override.html [ Failure Timeout ]
 crbug.com/591099 http/tests/inspector/sources/css-sourcemaps-toggle-enabled.html [ Failure ]
 crbug.com/591099 http/tests/inspector/sources/debugger/async-callstack-fetch.html [ Failure ]
 crbug.com/591099 http/tests/inspector/sources/debugger/async-callstack-network-initiator.html [ Failure ]
@@ -14577,7 +14729,7 @@
 crbug.com/591099 http/tests/loading/image-picture-no-download-after-source-removal.html [ Crash ]
 crbug.com/591099 http/tests/loading/nested_bad_objects.php [ Crash ]
 crbug.com/591099 http/tests/loading/preload-css-test.html [ Failure ]
-crbug.com/591099 http/tests/loading/preload-image-sizes-2x.html [ Failure ]
+crbug.com/591099 http/tests/loading/preload-image-sizes-2x.html [ Crash Failure ]
 crbug.com/591099 http/tests/loading/preload-image-sizes.html [ Failure ]
 crbug.com/591099 http/tests/loading/preload-image-srcset-2x.html [ Crash Pass ]
 crbug.com/591099 http/tests/loading/preload-image-srcset-duplicate.html [ Crash Pass ]
@@ -14598,7 +14750,7 @@
 crbug.com/591099 http/tests/local/drag-over-remote-content.html [ Failure ]
 crbug.com/591099 http/tests/local/fileapi/file-last-modified-after-delete.html [ Crash Failure ]
 crbug.com/591099 http/tests/local/fileapi/file-last-modified.html [ Crash ]
-crbug.com/591099 http/tests/local/fileapi/send-dragged-file.html [ Crash ]
+crbug.com/591099 http/tests/local/fileapi/send-dragged-file.html [ Crash Failure ]
 crbug.com/591099 http/tests/local/fileapi/send-sliced-dragged-file.html [ Crash Failure ]
 crbug.com/591099 http/tests/local/file-url-sent-as-referer.html [ Failure ]
 crbug.com/591099 http/tests/local/formdata/send-form-data.html [ Failure ]
@@ -14772,7 +14924,7 @@
 crbug.com/591099 http/tests/misc/plugin-array-detach.html [ Crash ]
 crbug.com/591099 http/tests/misc/refresh-headers.php [ Failure ]
 crbug.com/591099 http/tests/misc/resource-timing-iframe-restored-from-history.html [ Failure ]
-crbug.com/591099 http/tests/misc/resource-timing-sizes-cors-preflight-worker.html [ Failure ]
+crbug.com/591099 http/tests/misc/resource-timing-sizes-cors-preflight-worker.html [ Failure Pass ]
 crbug.com/591099 http/tests/misc/resource-timing-sizes-multipart.html [ Crash ]
 crbug.com/591099 http/tests/misc/resource-timing-sizes-tags.html [ Crash ]
 crbug.com/591099 http/tests/misc/script-after-slow-stylesheet-removed.html [ Failure ]
@@ -14821,7 +14973,7 @@
 crbug.com/591099 http/tests/navigation/forward-to-fragment-fires-onload.html [ Crash Failure ]
 crbug.com/591099 http/tests/navigation/history-back-across-form-submission-to-fragment.html [ Failure ]
 crbug.com/591099 http/tests/navigation/image-load-in-subframe-unload-handler.html [ Crash ]
-crbug.com/591099 http/tests/navigation/image-load-in-unload-handler.html [ Crash ]
+crbug.com/591099 http/tests/navigation/image-load-in-unload-handler.html [ Crash Pass ]
 crbug.com/591099 http/tests/navigation/javascriptlink-basic.html [ Timeout ]
 crbug.com/591099 http/tests/navigation/javascriptlink-frames.html [ Timeout ]
 crbug.com/591099 http/tests/navigation/javascriptlink-goback.html [ Timeout ]
@@ -14839,7 +14991,7 @@
 crbug.com/591099 http/tests/navigation/ping-cookie.html [ Crash Timeout ]
 crbug.com/591099 http/tests/navigation/ping-cross-origin-from-https.html [ Crash Timeout ]
 crbug.com/591099 http/tests/navigation/ping-cross-origin.html [ Timeout ]
-crbug.com/591099 http/tests/navigation/ping-same-origin.html [ Timeout ]
+crbug.com/591099 http/tests/navigation/ping-same-origin.html [ Crash Timeout ]
 crbug.com/591099 http/tests/navigation/post-basic.html [ Failure ]
 crbug.com/591099 http/tests/navigation/post-frames-goback1.html [ Failure ]
 crbug.com/591099 http/tests/navigation/post-frames.html [ Failure ]
@@ -14878,7 +15030,7 @@
 crbug.com/591099 http/tests/navigatorcontentutils/unregister-protocol-handler.html [ Failure ]
 crbug.com/591099 http/tests/notifications/notification-sandbox-permission.html [ Failure ]
 crbug.com/591099 http/tests/permissionclient/image-permissions.html [ Failure ]
-crbug.com/591099 http/tests/permissions/chromium/test-request-sharedworker.html [ Timeout ]
+crbug.com/591099 http/tests/permissions/chromium/test-request-sharedworker.html [ Pass Timeout ]
 crbug.com/591099 http/tests/permissions/chromium/test-request-worker.html [ Pass Timeout ]
 crbug.com/591099 http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock.html [ Failure ]
 crbug.com/591099 http/tests/pointer-lock/iframe-sandboxed.html [ Failure ]
@@ -14888,11 +15040,12 @@
 crbug.com/591099 http/tests/pointer-lock/pointerlockelement-same-origin.html [ Failure ]
 crbug.com/591099 http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents.html [ Failure ]
 crbug.com/591099 http/tests/preload/dynamic_remove_preload_href.html [ Failure Pass ]
-crbug.com/591099 http/tests/preload/dynamic_removing_preload.html [ Failure ]
+crbug.com/591099 http/tests/preload/dynamic_removing_preload.html [ Failure Pass ]
 crbug.com/591099 http/tests/preload/multiple-meta-csp.html [ Crash ]
 crbug.com/591099 http/tests/preload/preload-video-cors.html [ Crash ]
-crbug.com/591099 http/tests/push_messaging/application-server-key-format-test.html [ Failure ]
+crbug.com/591099 http/tests/push_messaging/application-server-key-format-test.html [ Failure Pass ]
 crbug.com/591099 http/tests/push_messaging/application-server-key-standard-endpoint.html [ Failure Pass ]
+crbug.com/591099 http/tests/push_messaging/subscribe-failure-mismatched-sender-id.html [ Failure Pass ]
 crbug.com/591099 http/tests/security/aboutBlank/security-context-alias.html [ Crash ]
 crbug.com/591099 http/tests/security/aboutBlank/security-context-grandchildren-alias.html [ Crash ]
 crbug.com/591099 http/tests/security/anchor-download-allow-blob.html [ Failure ]
@@ -15016,7 +15169,7 @@
 crbug.com/591099 http/tests/security/cross-frame-access-protocol-explicit-domain.html [ Failure ]
 crbug.com/591099 http/tests/security/cross-frame-access-put.html [ Failure ]
 crbug.com/591099 http/tests/security/cross-frame-access-set-window-properties.html [ Failure ]
-crbug.com/591099 http/tests/security/cross-frame-mouse-source-capabilities.html [ Crash ]
+crbug.com/591099 http/tests/security/cross-frame-mouse-source-capabilities.html [ Crash Timeout ]
 crbug.com/591099 http/tests/security/cross-origin-access-over-property-descriptor.html [ Failure ]
 crbug.com/591099 http/tests/security/cross-origin-appcache-allowed.html [ Crash ]
 crbug.com/591099 http/tests/security/cross-origin-createImageBitmap.html [ Failure ]
@@ -15073,7 +15226,7 @@
 crbug.com/591099 http/tests/security/img-crossorigin-redirect-credentials.html [ Crash ]
 crbug.com/591099 http/tests/security/img-crossorigin-redirect-no-cors.html [ Crash Failure ]
 crbug.com/591099 http/tests/security/img-redirect-to-crossorigin-credentials.html [ Crash ]
-crbug.com/591099 http/tests/security/img-with-failed-cors-check-fails-to-load.html [ Crash ]
+crbug.com/591099 http/tests/security/img-with-failed-cors-check-fails-to-load.html [ Crash Pass ]
 crbug.com/591099 http/tests/security/isolatedWorld/bypass-main-world-csp-for-inline-script.html [ Failure ]
 crbug.com/591099 http/tests/security/isolatedWorld/bypass-main-world-csp.html [ Crash ]
 crbug.com/591099 http/tests/security/isolatedWorld/cross-origin-xhr.html [ Failure ]
@@ -15324,7 +15477,7 @@
 crbug.com/591099 http/tests/security/xssAuditor/img-onerror-non-ASCII-char2-default-encoding.html [ Crash Pass ]
 crbug.com/591099 http/tests/security/xssAuditor/img-onerror-non-ASCII-char-default-encoding.html [ Crash Pass ]
 crbug.com/591099 http/tests/security/xssAuditor/img-onerror-non-ASCII-char.html [ Crash Pass ]
-crbug.com/591099 http/tests/security/xssAuditor/img-onerror-tricky.html [ Crash ]
+crbug.com/591099 http/tests/security/xssAuditor/img-onerror-tricky.html [ Crash Pass ]
 crbug.com/591099 http/tests/security/xssAuditor/img-tag-with-comma.html [ Crash Pass ]
 crbug.com/591099 http/tests/security/xssAuditor/inline-event-HTML-entities.html [ Crash Pass ]
 crbug.com/591099 http/tests/security/xssAuditor/malformed-xss-protection-header-1.html [ Failure ]
@@ -15376,6 +15529,7 @@
 crbug.com/591099 http/tests/serviceworker/fetch-mixed-content-to-inscope.html [ Crash ]
 crbug.com/591099 http/tests/serviceworker/fetch-request-fallback.html [ Crash ]
 crbug.com/591099 http/tests/serviceworker/fetch-request-xhr.html [ Failure Pass ]
+crbug.com/591099 http/tests/serviceworker/fetch-response-taint.html [ Crash Pass ]
 crbug.com/591099 http/tests/serviceworker/indexeddb.html [ Pass Timeout ]
 crbug.com/591099 http/tests/serviceworker/navigation-redirect.html [ Pass Timeout ]
 crbug.com/591099 http/tests/serviceworker/sandbox-iframe-register-link-element.html [ Crash ]
@@ -15582,7 +15736,7 @@
 crbug.com/591099 http/tests/xmlhttprequest/access-control-sandboxed-iframe-allow.html [ Failure ]
 crbug.com/591099 http/tests/xmlhttprequest/access-control-sandboxed-iframe-allow-origin-null.html [ Failure ]
 crbug.com/591099 http/tests/xmlhttprequest/access-control-sandboxed-iframe-denied.html [ Failure ]
-crbug.com/591099 http/tests/xmlhttprequest/access-control-sandboxed-iframe-denied-without-wildcard.html [ Failure ]
+crbug.com/591099 http/tests/xmlhttprequest/access-control-sandboxed-iframe-denied-without-wildcard.html [ Failure Timeout ]
 crbug.com/591099 http/tests/xmlhttprequest/async-xhr-revalidate-after-sync-xhr.html [ Failure ]
 crbug.com/591099 http/tests/xmlhttprequest/authorization-header.html [ Failure ]
 crbug.com/591099 http/tests/xmlhttprequest/binary-x-user-defined.html [ Failure ]
@@ -15624,7 +15778,7 @@
 crbug.com/591099 http/tests/xmlhttprequest/methods-async.html [ Failure ]
 crbug.com/591099 http/tests/xmlhttprequest/methods.html [ Failure ]
 crbug.com/591099 http/tests/xmlhttprequest/methods-lower-case.html [ Failure ]
-crbug.com/591099 http/tests/xmlhttprequest/navigation-abort-detaches-frame.html [ Crash ]
+crbug.com/591099 http/tests/xmlhttprequest/navigation-abort-detaches-frame.html [ Crash Timeout ]
 crbug.com/591099 http/tests/xmlhttprequest/newline-in-request-uri.html [ Failure ]
 crbug.com/591099 http/tests/xmlhttprequest/null-auth.php [ Failure ]
 crbug.com/591099 http/tests/xmlhttprequest/onabort-event.html [ Failure ]
@@ -15708,7 +15862,7 @@
 crbug.com/591099 http/tests/xmlhttprequest/redirect-cross-origin-sync-double.html [ Failure ]
 crbug.com/591099 http/tests/xmlhttprequest/redirect-cross-origin-sync.html [ Failure ]
 crbug.com/591099 http/tests/xmlhttprequest/redirect-cross-origin-tripmine.html [ Failure ]
-crbug.com/591099 http/tests/xmlhttprequest/referer.html [ Failure ]
+crbug.com/591099 http/tests/xmlhttprequest/referer.html [ Failure Timeout ]
 crbug.com/591099 http/tests/xmlhttprequest/remember-bad-password.html [ Failure ]
 crbug.com/591099 http/tests/xmlhttprequest/reopen-encoding.html [ Failure ]
 crbug.com/591099 http/tests/xmlhttprequest/request-encoding2.html [ Failure ]
@@ -15833,26 +15987,26 @@
 crbug.com/591099 ietestcenter/css3/flexbox/flexbox-flex-004.htm [ Failure ]
 crbug.com/591099 ietestcenter/css3/flexbox/flexbox-groups-001.htm [ Failure ]
 crbug.com/591099 ietestcenter/css3/flexbox/flexbox-groups-002.htm [ Failure ]
-crbug.com/591099 ietestcenter/css3/flexbox/flexbox-groups-003.htm [ Failure ]
+crbug.com/591099 ietestcenter/css3/flexbox/flexbox-groups-003.htm [ Crash Failure ]
 crbug.com/591099 ietestcenter/css3/flexbox/flexbox-groups-004.htm [ Failure ]
-crbug.com/591099 ietestcenter/css3/flexbox/flexbox-layout-001.htm [ Failure ]
+crbug.com/591099 ietestcenter/css3/flexbox/flexbox-layout-001.htm [ Failure Pass ]
 crbug.com/591099 ietestcenter/css3/flexbox/flexbox-layout-003.htm [ Failure ]
 crbug.com/591099 ietestcenter/css3/flexbox/flexbox-ordinal-group-001.htm [ Failure ]
 crbug.com/591099 ietestcenter/css3/flexbox/flexbox-pack-center-001.htm [ Failure ]
 crbug.com/591099 ietestcenter/css3/flexbox/flexbox-pack-end-001.htm [ Failure ]
 crbug.com/591099 ietestcenter/css3/flexbox/flexbox-pack-justify-001.htm [ Failure ]
 crbug.com/591099 ietestcenter/css3/flexbox/flexbox-pack-start-001.htm [ Failure ]
-crbug.com/591099 ietestcenter/css3/multicolumn/column-block-formatting-context-001.htm [ Failure ]
+crbug.com/591099 ietestcenter/css3/multicolumn/column-block-formatting-context-001.htm [ Failure Pass ]
 crbug.com/591099 ietestcenter/css3/multicolumn/column-containing-block-003.htm [ Failure ]
-crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-001.htm [ Failure ]
-crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-002.htm [ Failure ]
-crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-003.htm [ Failure ]
-crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-004.htm [ Failure ]
-crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-005.htm [ Failure ]
-crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-006.htm [ Failure ]
-crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-007.htm [ Failure ]
+crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-001.htm [ Failure Pass ]
+crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-002.htm [ Failure Pass ]
+crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-003.htm [ Failure Pass ]
+crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-004.htm [ Failure Pass ]
+crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-005.htm [ Failure Pass ]
+crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-006.htm [ Failure Pass ]
+crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-007.htm [ Failure Pass ]
 crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-010.htm [ Failure ]
-crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-015.htm [ Failure ]
+crbug.com/591099 ietestcenter/css3/multicolumn/column-width-applies-to-015.htm [ Failure Pass ]
 crbug.com/591099 ietestcenter/css3/multicolumn/column-width-negative-001.htm [ Failure ]
 crbug.com/591099 ietestcenter/css3/multicolumn/column-width-percentage-001.htm [ Failure ]
 crbug.com/591099 ietestcenter/css3/text/textshadow-002.htm [ Failure ]
@@ -15866,6 +16020,8 @@
 crbug.com/591099 images/55.html [ Crash Failure ]
 crbug.com/591099 images/alt-text-wrapping.html [ Failure ]
 crbug.com/591099 images/animated-background-image-crash.html [ Failure ]
+crbug.com/591099 images/bad-png.html [ Crash Pass ]
+crbug.com/591099 images/busted-oval-does-not-render.html [ Crash Pass ]
 crbug.com/591099 images/color-jpeg-with-color-profile.html [ Failure ]
 crbug.com/591099 images/color-profile-background-clip-text.html [ Failure ]
 crbug.com/591099 images/color-profile-background-image-cover.html [ Failure ]
@@ -15895,7 +16051,7 @@
 crbug.com/591099 images/color-profile-munsell-adobe-to-srgb.html [ Failure ]
 crbug.com/591099 images/color-profile-munsell-srgb-to-srgb.html [ Failure ]
 crbug.com/591099 images/color-profile-svg-foreign-object.html [ Failure ]
-crbug.com/591099 images/content-url-broken-image-with-alt-text.html [ Crash ]
+crbug.com/591099 images/content-url-broken-image-with-alt-text.html [ Crash Pass ]
 crbug.com/591099 images/content-url-image-with-alt-text-dynamic-2.html [ Crash Pass ]
 crbug.com/591099 images/cross-fade-background-size.html [ Failure ]
 crbug.com/591099 images/cross-fade-blending.html [ Failure ]
@@ -15917,7 +16073,7 @@
 crbug.com/591099 images/gray-scale-png-with-color-profile.html [ Failure ]
 crbug.com/591099 images/icon-0colors.html [ Failure ]
 crbug.com/591099 images/icon-decoding.html [ Failure ]
-crbug.com/591099 images/image-change-src.html [ Crash ]
+crbug.com/591099 images/image-change-src.html [ Crash Pass ]
 crbug.com/591099 images/image-change-without-resize-shouldnt-layout.html [ Crash ]
 crbug.com/591099 images/image-click-scale-restore-zoomed-image.html [ Failure ]
 crbug.com/591099 images/image-css3-content-data.html [ Failure ]
@@ -15956,7 +16112,7 @@
 crbug.com/591099 images/jpeg-yuv-image-decoding.html [ Failure ]
 crbug.com/591099 images/jpeg-yuv-progressive-canvas.html [ Failure ]
 crbug.com/591099 images/jpeg-yuv-progressive-image.html [ Failure ]
-crbug.com/591099 images/large-size-image-crash.html [ Crash ]
+crbug.com/591099 images/large-size-image-crash.html [ Crash Pass ]
 crbug.com/591099 images/link-body-content-imageDimensionChanged-crash.html [ Failure ]
 crbug.com/591099 images/load-img-with-empty-src.html [ Failure ]
 crbug.com/591099 images/motion-jpeg-single-frame.html [ Failure ]
@@ -15966,7 +16122,7 @@
 crbug.com/591099 images/percent-height-image.html [ Failure ]
 crbug.com/591099 images/pixel-crack-image-background-webkit-transform-scale.html [ Failure ]
 crbug.com/591099 images/png-extra-row-crash.html [ Failure ]
-crbug.com/591099 images/png-missing-plte-before-trns-crash.html [ Crash ]
+crbug.com/591099 images/png-missing-plte-before-trns-crash.html [ Crash Pass ]
 crbug.com/591099 images/png_per_row_alpha_decoding.html [ Failure ]
 crbug.com/591099 images/png-suite/test.html [ Crash Failure ]
 crbug.com/591099 images/rendering-broken-10px-images.html [ Failure ]
@@ -15985,7 +16141,7 @@
 crbug.com/591099 images/viewport-in-standalone-image-document.html [ Failure ]
 crbug.com/591099 images/webgl-teximage2d.html [ Crash ]
 crbug.com/591099 images/webp-flip.html [ Failure ]
-crbug.com/591099 images/width-on-broken-data-src.html [ Crash ]
+crbug.com/591099 images/width-on-broken-data-src.html [ Crash Pass ]
 crbug.com/591099 images/zoomed-img-size.html [ Failure ]
 crbug.com/591099 images/zoomed-offset-size.html [ Crash ]
 crbug.com/591099 inspector/agents-enable-disable.html [ Failure ]
@@ -15998,7 +16154,7 @@
 crbug.com/591099 inspector/animation/animation-transition-setTiming-crash.html [ Crash Failure ]
 crbug.com/591099 inspector/animation/animation-web-anim-negative-start-time.html [ Crash ]
 crbug.com/591099 inspector/audits/audits-empty-stylesheet.html [ Failure ]
-crbug.com/591099 inspector/audits/audits-panel-functional.html [ Crash ]
+crbug.com/591099 inspector/audits/audits-panel-functional.html [ Crash Failure ]
 crbug.com/591099 inspector/changes/changes-highlighter.html [ Failure ]
 crbug.com/591099 inspector/changes/changes-sidebar.html [ Failure ]
 crbug.com/591099 inspector/components/chunked-file-reader.html [ Failure ]
@@ -16097,7 +16253,7 @@
 crbug.com/591099 inspector/console/console-message-format.html [ Failure ]
 crbug.com/591099 inspector/console/console-message-from-inline-with-url.html [ Failure ]
 crbug.com/591099 inspector/console/console-native-function.html [ Failure ]
-crbug.com/591099 inspector/console/console-nested-group.html [ Failure ]
+crbug.com/591099 inspector/console/console-nested-group.html [ Failure Timeout ]
 crbug.com/591099 inspector/console/console-object-constructor-name.html [ Failure ]
 crbug.com/591099 inspector/console/console-Object-overwritten.html [ Failure ]
 crbug.com/591099 inspector/console/console-object-preview.html [ Failure ]
@@ -16153,7 +16309,7 @@
 crbug.com/591099 inspector/curl-command.html [ Failure ]
 crbug.com/591099 inspector/database-table-name-excaping.html [ Failure ]
 crbug.com/591099 inspector/device-mode/device-mode-responsive.html [ Failure ]
-crbug.com/591099 inspector/device-mode/device-mode-switching-devices.html [ Failure ]
+crbug.com/591099 inspector/device-mode/device-mode-switching-devices.html [ Crash Failure ]
 crbug.com/591099 inspector/diff-module.html [ Failure ]
 crbug.com/591099 inspector/domdebugger/domdebugger-getEventListeners.html [ Failure ]
 crbug.com/591099 inspector/editor/php-highlighter.html [ Failure ]
@@ -16174,7 +16330,7 @@
 crbug.com/591099 inspector/editor/text-editor-selection-to-search.html [ Failure ]
 crbug.com/591099 inspector/editor/text-editor-smart-braces.html [ Failure ]
 crbug.com/591099 inspector/editor/text-editor-token-at-position.html [ Failure ]
-crbug.com/591099 inspector/editor/text-editor-word-jumps.html [ Timeout ]
+crbug.com/591099 inspector/editor/text-editor-word-jumps.html [ Failure Timeout ]
 crbug.com/591099 inspector/elements/accessibility/autocomplete-attribute.html [ Crash ]
 crbug.com/591099 inspector/elements/accessibility/edit-aria-attributes.html [ Crash ]
 crbug.com/591099 inspector/elements/attribute-modified-ns.html [ Crash ]
@@ -16441,12 +16597,12 @@
 crbug.com/591099 inspector/network/network-request-query-string.html [ Failure ]
 crbug.com/591099 inspector/network/network-toggle-type-filter.html [ Failure ]
 crbug.com/591099 inspector/network/network-update-calculator-for-all-requests.html [ Failure ]
-crbug.com/591099 inspector/profiler/agents-disabled-check.html [ Failure ]
+crbug.com/591099 inspector/profiler/agents-disabled-check.html [ Crash Failure ]
 crbug.com/591099 inspector/profiler/cpu-profiler-agent-crash-on-start.html [ Failure ]
 crbug.com/591099 inspector/profiler/cpu-profiler-bottom-up-large-tree-search.html [ Failure ]
 crbug.com/591099 inspector/profiler/cpu-profiler-bottom-up-times.html [ Failure ]
 crbug.com/591099 inspector/profiler/cpu-profiler-calculate-time.html [ Failure ]
-crbug.com/591099 inspector/profiler/cpu-profiler-flame-chart-overview.html [ Failure ]
+crbug.com/591099 inspector/profiler/cpu-profiler-flame-chart-overview.html [ Crash Failure ]
 crbug.com/591099 inspector/profiler/cpu-profiler-native-nodes-filter.html [ Failure ]
 crbug.com/591099 inspector/profiler/cpu-profiler-profile-removal.html [ Failure ]
 crbug.com/591099 inspector/profiler/cpu-profiler-profiling.html [ Failure ]
@@ -16496,7 +16652,7 @@
 crbug.com/591099 inspector-protocol/cpu-profiler/record-cpu-profile.html [ Failure ]
 crbug.com/591099 inspector-protocol/cpu-profiler/stop-without-preceeding-start.html [ Failure ]
 crbug.com/591099 inspector-protocol/css/css-add-rule.html [ Timeout ]
-crbug.com/591099 inspector-protocol/css/css-collect-class-names.html [ Crash ]
+crbug.com/591099 inspector-protocol/css/css-collect-class-names.html [ Crash Pass ]
 crbug.com/591099 inspector-protocol/css/css-coverage-poll.html [ Failure ]
 crbug.com/591099 inspector-protocol/css/css-fonts-updated-event.html [ Failure ]
 crbug.com/591099 inspector-protocol/css/css-get-background-colors.html [ Failure ]
@@ -16506,7 +16662,7 @@
 crbug.com/591099 inspector-protocol/css/cssom-matching-rules.html [ Failure ]
 crbug.com/591099 inspector-protocol/css/cssom-matching-rules-multiple.html [ Failure ]
 crbug.com/591099 inspector-protocol/css/cssom-modify-rule-and-get-rule-list.html [ Failure ]
-crbug.com/591099 inspector-protocol/css/css-set-effective-property-value.html [ Failure ]
+crbug.com/591099 inspector-protocol/css/css-set-effective-property-value.html [ Failure Timeout ]
 crbug.com/591099 inspector-protocol/css/css-set-inline-style-text.html [ Failure ]
 crbug.com/591099 inspector-protocol/css/css-set-multiple-style-texts-correct-ranges.html [ Failure ]
 crbug.com/591099 inspector-protocol/css/css-set-multiple-style-texts.html [ Failure ]
@@ -16551,7 +16707,7 @@
 crbug.com/591099 inspector-protocol/network/resource-type.html [ Failure ]
 crbug.com/591099 inspector-protocol/network/websocket-initiator.html [ Failure ]
 crbug.com/591099 inspector-protocol/page/get-layout-metrics.html [ Failure ]
-crbug.com/591099 inspector-protocol/runtime/runtime-console-line-and-column.html [ Crash ]
+crbug.com/591099 inspector-protocol/runtime/runtime-console-line-and-column.html [ Crash Pass ]
 crbug.com/591099 inspector-protocol/runtime/runtime-shouldnt-crash-after-inspected-context-destroyed.html [ Crash ]
 crbug.com/591099 inspector-protocol/shadow-dom-rules-in-styleSheetAddedEvent.html [ Failure ]
 crbug.com/591099 inspector-protocol/stylesheet-tracking-restart.html [ Failure ]
@@ -16600,14 +16756,14 @@
 crbug.com/591099 inspector/sources/autocomplete-scss.html [ Failure ]
 crbug.com/591099 inspector/sources/bezier-swatch-position.html [ Failure ]
 crbug.com/591099 inspector/sources/color-swatch-position.html [ Failure ]
-crbug.com/591099 inspector/sources/compile-javascript.html [ Failure ]
+crbug.com/591099 inspector/sources/compile-javascript.html [ Crash Failure ]
 crbug.com/591099 inspector/sources/css-inline-sourcemap.html [ Failure ]
 crbug.com/591099 inspector/sources/css-outline-dialog.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-async/async-await/async-callstack-async-await1.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-async/async-await/async-callstack-async-await2.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-async/async-await/async-callstack-async-await3.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-async/async-await/async-pause-on-exception.html [ Failure ]
-crbug.com/591099 inspector/sources/debugger-async/async-callstack-events.html [ Failure ]
+crbug.com/591099 inspector/sources/debugger-async/async-callstack-events.html [ Crash Failure ]
 crbug.com/591099 inspector/sources/debugger-async/async-callstack-get-as-string.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-async/async-callstack.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-async/async-callstack-in-console.html [ Failure ]
@@ -16678,7 +16834,7 @@
 crbug.com/591099 inspector/sources/debugger/live-edit-no-reveal.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger/live-edit-original-content.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger/mutation-observer-suspend-while-paused.html [ Failure ]
-crbug.com/591099 inspector/sources/debugger/navigator-view.html [ Failure ]
+crbug.com/591099 inspector/sources/debugger/navigator-view.html [ Failure Timeout ]
 crbug.com/591099 inspector/sources/debugger/network-uisourcecode-provider.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger/open-close-open.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-pause/debugger-change-variable.html [ Failure ]
@@ -16729,9 +16885,9 @@
 crbug.com/591099 inspector/sources/debugger-step/debugger-step-through-promises.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-step/step-through-event-listeners.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-ui/async-call-stack-async-function.html [ Failure ]
-crbug.com/591099 inspector/sources/debugger-ui/async-call-stack-url.html [ Failure ]
+crbug.com/591099 inspector/sources/debugger-ui/async-call-stack-url.html [ Crash Failure ]
 crbug.com/591099 inspector/sources/debugger-ui/break-on-empty-event-listener.html [ Failure ]
-crbug.com/591099 inspector/sources/debugger-ui/break-on-set-timeout-with-syntax-error.html [ Failure ]
+crbug.com/591099 inspector/sources/debugger-ui/break-on-set-timeout-with-syntax-error.html [ Crash Failure ]
 crbug.com/591099 inspector/sources/debugger-ui/callstack-placards-discarded.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-ui/click-gutter-breakpoint.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-ui/copy-stack-trace.html [ Failure ]
@@ -16758,10 +16914,10 @@
 crbug.com/591099 inspector/sources/debugger-ui/scripts-with-same-source-url.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-ui/selected-call-frame-after-formatting-source.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-ui/show-function-definition.html [ Failure ]
-crbug.com/591099 inspector/sources/debugger-ui/show-generator-location.html [ Failure ]
+crbug.com/591099 inspector/sources/debugger-ui/show-generator-location.html [ Crash Failure ]
 crbug.com/591099 inspector/sources/debugger-ui/source-frame-count.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-ui/source-frame.html [ Failure ]
-crbug.com/591099 inspector/sources/debugger-ui/source-url-comment.html [ Failure ]
+crbug.com/591099 inspector/sources/debugger-ui/source-url-comment.html [ Crash Failure ]
 crbug.com/591099 inspector/sources/debugger-ui/switch-file.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-ui/ui-source-code-display-name.html [ Failure ]
 crbug.com/591099 inspector/sources/debugger-ui/ui-source-code.html [ Failure ]
@@ -16815,7 +16971,7 @@
 crbug.com/591099 inspector/tracing/buffer-usage.html [ Failure ]
 crbug.com/591099 inspector/tracing/category-filter.html [ Failure ]
 crbug.com/591099 inspector/tracing/console-timeline.html [ Crash ]
-crbug.com/591099 inspector/tracing/decode-resize.html [ Crash ]
+crbug.com/591099 inspector/tracing/decode-resize.html [ Crash Timeout ]
 crbug.com/591099 inspector/tracing/frame-model.html [ Failure ]
 crbug.com/591099 inspector/tracing/frame-model-instrumentation.html [ Crash ]
 crbug.com/591099 inspector/tracing/hit-test.html [ Crash ]
@@ -16915,7 +17071,7 @@
 crbug.com/591099 media/autoplay-document-move.html [ Crash ]
 crbug.com/591099 media/auto-play-in-sandbox-with-allow-scripts.html [ Crash ]
 crbug.com/591099 media/autoplay-muted-conditions.html [ Crash ]
-crbug.com/591099 media/autoplay-muted.html [ Crash ]
+crbug.com/591099 media/autoplay-muted.html [ Crash Timeout ]
 crbug.com/591099 media/autoplay-non-whitelisted-scope.html [ Crash ]
 crbug.com/591099 media/autoplay-when-visible.html [ Crash ]
 crbug.com/591099 media/autoplay-whitelisted-scope.html [ Crash ]
@@ -17049,7 +17205,7 @@
 crbug.com/591099 media/track/track-language-preference.html [ Crash ]
 crbug.com/591099 media/track/track-large-timestamp.html [ Crash ]
 crbug.com/591099 media/track/track-load-error-readyState.html [ Crash Timeout ]
-crbug.com/591099 media/track/track-load-from-element-readyState.html [ Crash ]
+crbug.com/591099 media/track/track-load-from-element-readyState.html [ Crash Timeout ]
 crbug.com/591099 media/track/track-load-from-src-readyState.html [ Crash ]
 crbug.com/591099 media/track/track-mode-disabled-crash.html [ Crash ]
 crbug.com/591099 media/track/track-mode.html [ Crash ]
@@ -17363,7 +17519,7 @@
 crbug.com/591099 mhtml/data-uri-font.mht [ Failure ]
 crbug.com/591099 mhtml/image_document.mht [ Failure ]
 crbug.com/591099 mhtml/invalid-bad-boundary2.mht [ Failure ]
-crbug.com/591099 mhtml/relaxed-content-type-parameters.mht [ Crash ]
+crbug.com/591099 mhtml/relaxed-content-type-parameters.mht [ Crash Pass ]
 crbug.com/591099 netinfo/basic-operation.html [ Failure ]
 crbug.com/591099 netinfo/connection-types.html [ Failure ]
 crbug.com/591099 netinfo/gc-frame-listeners.html [ Failure ]
@@ -17405,7 +17561,7 @@
 crbug.com/591099 paint/invalidation/animated-gif-background-offscreen.html [ Failure ]
 crbug.com/591099 paint/invalidation/animated-gif.html [ Failure ]
 crbug.com/591099 paint/invalidation/animated-gif-offscreen.html [ Failure ]
-crbug.com/591099 paint/invalidation/animated-gif-transformed-offscreen.html [ Failure ]
+crbug.com/591099 paint/invalidation/animated-gif-transformed-offscreen.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/animated-png-background.html [ Failure ]
 crbug.com/591099 paint/invalidation/animated-png.html [ Failure ]
 crbug.com/591099 paint/invalidation/animated-png-offscreen.html [ Failure ]
@@ -17436,7 +17592,7 @@
 crbug.com/591099 paint/invalidation/bugzilla-6473.html [ Failure ]
 crbug.com/591099 paint/invalidation/bugzilla-7235.html [ Crash Failure ]
 crbug.com/591099 paint/invalidation/button-checkbox-click-method-repaint.html [ Failure ]
-crbug.com/591099 paint/invalidation/canvas-composite-repaint-by-all-imagesource.html [ Failure ]
+crbug.com/591099 paint/invalidation/canvas-composite-repaint-by-all-imagesource.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/caret-change-paint-offset-keep-visual.html [ Failure ]
 crbug.com/591099 paint/invalidation/caret-contenteditable-content-after.html [ Failure ]
 crbug.com/591099 paint/invalidation/caret-invalidation-in-overflow-scroll.html [ Failure ]
@@ -17455,7 +17611,7 @@
 crbug.com/591099 paint/invalidation/composited-overflow-with-borderbox-background.html [ Failure ]
 crbug.com/591099 paint/invalidation/composited-overflow-with-local-background.html [ Failure ]
 crbug.com/591099 paint/invalidation/composited-overflow-with-negative-offset-outline.html [ Failure ]
-crbug.com/591099 paint/invalidation/composited-table-row.html [ Failure ]
+crbug.com/591099 paint/invalidation/composited-table-row.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/composited-vertical-rl-overflow.html [ Failure ]
 crbug.com/591099 paint/invalidation/compositing/background-attachment-local-composited.html [ Failure ]
 crbug.com/591099 paint/invalidation/compositing/background-attachment-local-equivalent.html [ Failure ]
@@ -17472,7 +17628,7 @@
 crbug.com/591099 paint/invalidation/compositing/inline-repaint-container.html [ Failure ]
 crbug.com/591099 paint/invalidation/compositing/invalidate-when-leaving-squashed-layer.html [ Failure ]
 crbug.com/591099 paint/invalidation/compositing/invalidation-for-subpixel-offset-of-squashed-layer.html [ Failure ]
-crbug.com/591099 paint/invalidation/compositing/invalidations-on-composited-layers.html [ Failure ]
+crbug.com/591099 paint/invalidation/compositing/invalidations-on-composited-layers.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/compositing/invalidations-with-large-negative-margin.html [ Failure ]
 crbug.com/591099 paint/invalidation/compositing/layer-repaint.html [ Failure ]
 crbug.com/591099 paint/invalidation/compositing/layer-repaint-rects.html [ Failure ]
@@ -17554,7 +17710,7 @@
 crbug.com/591099 paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown.html [ Failure ]
 crbug.com/591099 paint/invalidation/forms/radio-focus-by-mouse-then-keydown.html [ Failure ]
 crbug.com/591099 paint/invalidation/forms/range-focus-by-mouse-then-keydown.html [ Failure ]
-crbug.com/591099 paint/invalidation/forms/submit-focus-by-mouse-then-keydown.html [ Failure ]
+crbug.com/591099 paint/invalidation/forms/submit-focus-by-mouse-then-keydown.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/gradients-em-stops-repaint.html [ Failure ]
 crbug.com/591099 paint/invalidation/hover-create-scrollbar-part.html [ Failure ]
 crbug.com/591099 paint/invalidation/hover-destroy-scrollbar-part.html [ Failure ]
@@ -17562,7 +17718,7 @@
 crbug.com/591099 paint/invalidation/hover-pseudo-borders-whitespace.html [ Failure ]
 crbug.com/591099 paint/invalidation/iframe-display-block-to-display-none.html [ Failure ]
 crbug.com/591099 paint/invalidation/iframe-display-none-to-display-block.html [ Failure ]
-crbug.com/591099 paint/invalidation/iframe-rounding.html [ Failure ]
+crbug.com/591099 paint/invalidation/iframe-rounding.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/inline-block-overflow.html [ Failure ]
 crbug.com/591099 paint/invalidation/inline-block-resize.html [ Failure ]
 crbug.com/591099 paint/invalidation/inline-color-change.html [ Failure ]
@@ -17574,7 +17730,7 @@
 crbug.com/591099 paint/invalidation/inline-style-change-in-scrolled-view.html [ Failure ]
 crbug.com/591099 paint/invalidation/inline-vertical-lr-overflow.html [ Failure ]
 crbug.com/591099 paint/invalidation/inline-vertical-rl-overflow.html [ Failure ]
-crbug.com/591099 paint/invalidation/input-overflow-in-table.html [ Failure ]
+crbug.com/591099 paint/invalidation/input-overflow-in-table.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/insert-frame.html [ Failure ]
 crbug.com/591099 paint/invalidation/intermediate-layout-position-clip.html [ Crash Failure ]
 crbug.com/591099 paint/invalidation/intermediate-layout-position.html [ Failure ]
@@ -17583,7 +17739,7 @@
 crbug.com/591099 paint/invalidation/invalidate-caret-before-text-node-update.html [ Failure ]
 crbug.com/591099 paint/invalidation/invalidate-caret-in-composited-scrolling-container.html [ Failure ]
 crbug.com/591099 paint/invalidation/invalidate-caret-in-non-composited-scrolling-container.html [ Failure ]
-crbug.com/591099 paint/invalidation/invalidate-cell-in-row-with-offset.html [ Failure ]
+crbug.com/591099 paint/invalidation/invalidate-cell-in-row-with-offset.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/invalidate-descendants-when-receiving-paint-layer.html [ Failure ]
 crbug.com/591099 paint/invalidation/invalidate-paint-for-fixed-pos-inside-iframe.html [ Failure ]
 crbug.com/591099 paint/invalidation/invalidate-paint-in-iframe-in-composited-layer.html [ Failure ]
@@ -17631,8 +17787,9 @@
 crbug.com/591099 paint/invalidation/mix-blend-mode-separate-stacking-context.html [ Failure ]
 crbug.com/591099 paint/invalidation/move-caret-in-container-change-paint-offset-keep-visual.html [ Failure ]
 crbug.com/591099 paint/invalidation/multicol-nested.html [ Failure ]
+crbug.com/591099 paint/invalidation/multicol-spanner-background-color.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/multicol-with-abspos-in-relpos.html [ Failure ]
-crbug.com/591099 paint/invalidation/multicol-with-block.html [ Failure ]
+crbug.com/591099 paint/invalidation/multicol-with-block.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/multicol-with-overflowing-block-rl.html [ Failure ]
 crbug.com/591099 paint/invalidation/multicol-with-text.html [ Failure ]
 crbug.com/591099 paint/invalidation/multi-layout-one-frame.html [ Failure ]
@@ -17654,6 +17811,7 @@
 crbug.com/591099 paint/invalidation/outline-clip-change.html [ Failure ]
 crbug.com/591099 paint/invalidation/outline-containing-image-in-non-standard-mode.html [ Failure ]
 crbug.com/591099 paint/invalidation/outline-continuations.html [ Failure ]
+crbug.com/591099 paint/invalidation/outline-current-color.html [ Failure ]
 crbug.com/591099 paint/invalidation/outline-inset.html [ Failure ]
 crbug.com/591099 paint/invalidation/outline-not-affected-by-descendant.html [ Failure ]
 crbug.com/591099 paint/invalidation/outline-repaint-glitch.html [ Failure ]
@@ -17725,7 +17883,7 @@
 crbug.com/591099 paint/invalidation/scroll-fixed-layer-with-transformed-parent-layer.html [ Failure ]
 crbug.com/591099 paint/invalidation/scroll-in-clipped-layer.html [ Failure ]
 crbug.com/591099 paint/invalidation/scroll-in-fixed-layer.html [ Failure ]
-crbug.com/591099 paint/invalidation/scroll-inside-table-cell.html [ Failure ]
+crbug.com/591099 paint/invalidation/scroll-inside-table-cell.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/scroll-in-transformed-layer.html [ Failure ]
 crbug.com/591099 paint/invalidation/scroll-relative-table-inside-table-cell.html [ Failure ]
 crbug.com/591099 paint/invalidation/scroll-with-transformed-parent-layer.html [ Failure ]
@@ -17741,7 +17899,7 @@
 crbug.com/591099 paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-rl.html [ Failure ]
 crbug.com/591099 paint/invalidation/selection/invalidation-rect-includes-newline.html [ Failure ]
 crbug.com/591099 paint/invalidation/selection/invalidation-rect-with-br-includes-newline.html [ Failure ]
-crbug.com/591099 paint/invalidation/selection-partial-invalidation-between-blocks.html [ Failure ]
+crbug.com/591099 paint/invalidation/selection-partial-invalidation-between-blocks.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/selection/repaint-rect-for-vertical-writing-mode-with-positioned-root.html [ Failure ]
 crbug.com/591099 paint/invalidation/selection-rl.html [ Failure ]
 crbug.com/591099 paint/invalidation/selection/selection-in-composited-scrolling-container.html [ Failure ]
@@ -17761,7 +17919,7 @@
 crbug.com/591099 paint/invalidation/static-to-positioned.html [ Failure ]
 crbug.com/591099 paint/invalidation/subpixel-shadow-included-in-invalidation.html [ Failure ]
 crbug.com/591099 paint/invalidation/subtree-layoutstate-transform.html [ Failure ]
-crbug.com/591099 paint/invalidation/subtree-root-clip-3.html [ Failure ]
+crbug.com/591099 paint/invalidation/subtree-root-clip-3.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/subtree-root-skipped.html [ Failure ]
 crbug.com/591099 paint/invalidation/svg/absolute-sized-content-with-resources.xhtml [ Failure ]
 crbug.com/591099 paint/invalidation/svg/add-border-property-on-root.html [ Failure ]
@@ -17771,20 +17929,21 @@
 crbug.com/591099 paint/invalidation/svg/animated-svg-as-image-no-fixed-intrinsic-size.html [ Failure ]
 crbug.com/591099 paint/invalidation/svg/animated-svg-as-image-offscreen.html [ Failure ]
 crbug.com/591099 paint/invalidation/svg/animated-svg-as-image-same-image.html [ Failure ]
-crbug.com/591099 paint/invalidation/svg/animated-svg-as-image-transformed-offscreen.html [ Failure ]
+crbug.com/591099 paint/invalidation/svg/animated-svg-as-image-transformed-offscreen.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-1.html [ Failure ]
 crbug.com/591099 paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-2.html [ Failure ]
 crbug.com/591099 paint/invalidation/svg/embedded-svg-size-changes.html [ Failure ]
 crbug.com/591099 paint/invalidation/svg/embedded-svg-size-changes-no-layout-triggers.html [ Failure ]
-crbug.com/591099 paint/invalidation/svg/fecomponenttransfer-in1-change.svg [ Failure ]
+crbug.com/591099 paint/invalidation/svg/fecomponenttransfer-in1-change.svg [ Failure Pass ]
+crbug.com/591099 paint/invalidation/svg/feImage-target-remove-from-document.svg [ Failure Pass ]
 crbug.com/591099 paint/invalidation/svg/hit-test-with-br.xhtml [ Failure ]
 crbug.com/591099 paint/invalidation/svg-layout-root-style-attr-update.html [ Failure ]
-crbug.com/591099 paint/invalidation/svg/modify-inserted-listitem.html [ Failure ]
+crbug.com/591099 paint/invalidation/svg/modify-inserted-listitem.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/svg/nested-embedded-svg-size-changes.html [ Failure ]
 crbug.com/591099 paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-1.html [ Failure ]
 crbug.com/591099 paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-2.html [ Failure ]
 crbug.com/591099 paint/invalidation/svg/object-sizing-no-width-height-change-content-box-size.xhtml [ Failure ]
-crbug.com/591099 paint/invalidation/svg/pending-resource-after-removal.xhtml [ Failure ]
+crbug.com/591099 paint/invalidation/svg/pending-resource-after-removal.xhtml [ Failure Pass ]
 crbug.com/591099 paint/invalidation/svg/relative-sized-content-with-resources.xhtml [ Failure ]
 crbug.com/591099 paint/invalidation/svg/relative-sized-content.xhtml [ Failure ]
 crbug.com/591099 paint/invalidation/svg/relative-sized-deep-shadow-tree-content.xhtml [ Failure ]
@@ -17799,48 +17958,50 @@
 crbug.com/591099 paint/invalidation/svg/resize-svg-invalidate-children.html [ Crash ]
 crbug.com/591099 paint/invalidation/svg/scroll-hit-test.xhtml [ Failure ]
 crbug.com/591099 paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem.html [ Failure ]
+crbug.com/591099 paint/invalidation/svg/svg-absolute-children.svg [ Failure Pass ]
 crbug.com/591099 paint/invalidation/svg/svg-background-partial-redraw.html [ Failure ]
 crbug.com/591099 paint/invalidation/svg/svg-image-change-content-size.xhtml [ Failure ]
 crbug.com/591099 paint/invalidation/svg/text-xy-updates-SVGList.xhtml [ Failure ]
 crbug.com/591099 paint/invalidation/svg/transform-focus-ring-repaint.html [ Failure ]
 crbug.com/591099 paint/invalidation/svg/use-instanceRoot-event-bubbling.xhtml [ Timeout ]
+crbug.com/591099 paint/invalidation/svg/zoom-coords-viewattr-01-b.svg [ Failure Pass ]
 crbug.com/591099 paint/invalidation/svg/zoom-foreignObject.svg [ Failure ]
-crbug.com/591099 paint/invalidation/table/animated-row-background.html [ Failure ]
-crbug.com/591099 paint/invalidation/table/border-collapse-change-collapse-to-separate.html [ Failure ]
-crbug.com/591099 paint/invalidation/table/border-collapse-change-separate-to-collapse.html [ Failure ]
-crbug.com/591099 paint/invalidation/table/cached-69296.html [ Failure ]
+crbug.com/591099 paint/invalidation/table/animated-row-background.html [ Failure Pass ]
+crbug.com/591099 paint/invalidation/table/border-collapse-change-collapse-to-separate.html [ Failure Pass ]
+crbug.com/591099 paint/invalidation/table/border-collapse-change-separate-to-collapse.html [ Failure Pass ]
+crbug.com/591099 paint/invalidation/table/cached-69296.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/table/cached-cell-append.html [ Failure ]
-crbug.com/591099 paint/invalidation/table/cached-change-cell-border-color.html [ Failure ]
+crbug.com/591099 paint/invalidation/table/cached-change-cell-border-color.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/table/cached-change-cell-border-width.html [ Failure ]
 crbug.com/591099 paint/invalidation/table/cached-change-cell-sl-border-color.html [ Failure ]
-crbug.com/591099 paint/invalidation/table/cached-change-col-border-color.html [ Failure ]
+crbug.com/591099 paint/invalidation/table/cached-change-col-border-color.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/table/cached-change-col-border-width.html [ Failure ]
-crbug.com/591099 paint/invalidation/table/cached-change-colgroup-border-color.html [ Failure ]
+crbug.com/591099 paint/invalidation/table/cached-change-colgroup-border-color.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/table/cached-change-colgroup-border-width.html [ Failure ]
 crbug.com/591099 paint/invalidation/table/cached-change-row-border-width.html [ Failure ]
-crbug.com/591099 paint/invalidation/table/cached-change-table-border-color.html [ Failure ]
-crbug.com/591099 paint/invalidation/table/cached-change-table-border-width.html [ Failure ]
+crbug.com/591099 paint/invalidation/table/cached-change-table-border-color.html [ Failure Pass ]
+crbug.com/591099 paint/invalidation/table/cached-change-table-border-width.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/table/cached-change-tbody-border-width.html [ Failure ]
 crbug.com/591099 paint/invalidation/table-cell-collapsed-border.html [ Failure ]
 crbug.com/591099 paint/invalidation/table-cell-move.html [ Failure ]
-crbug.com/591099 paint/invalidation/table-cell-overflow.html [ Failure ]
+crbug.com/591099 paint/invalidation/table-cell-overflow.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/table-cell-vertical-overflow.html [ Failure ]
-crbug.com/591099 paint/invalidation/table-col-background.html [ Failure ]
+crbug.com/591099 paint/invalidation/table-col-background.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/table/collapsed-border-cell-resize.html [ Failure ]
 crbug.com/591099 paint/invalidation/table-collapsed-border.html [ Failure ]
 crbug.com/591099 paint/invalidation/table/composited-table-background-composited-row-initial-empty.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/table-extra-bottom-grow.html [ Failure ]
-crbug.com/591099 paint/invalidation/table-outer-border.html [ Failure ]
+crbug.com/591099 paint/invalidation/table-outer-border.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/table-overflow-auto-in-overflow-auto-scrolled.html [ Failure ]
 crbug.com/591099 paint/invalidation/table-overflow-hidden-in-overflow-hidden-scrolled.html [ Failure ]
 crbug.com/591099 paint/invalidation/table-overflow-scroll-in-overflow-scroll-scrolled.html [ Failure ]
 crbug.com/591099 paint/invalidation/table/resize-table-row-repaint.html [ Failure ]
-crbug.com/591099 paint/invalidation/table-row-bg-change.html [ Failure ]
+crbug.com/591099 paint/invalidation/table-row-bg-change.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/table-row.html [ Failure ]
 crbug.com/591099 paint/invalidation/table-section-overflow.html [ Failure ]
 crbug.com/591099 paint/invalidation/table-section-repaint.html [ Failure ]
 crbug.com/591099 paint/invalidation/table-shrink-row-repaint.html [ Failure ]
-crbug.com/591099 paint/invalidation/table/table-section-visual-overflow.html [ Failure ]
+crbug.com/591099 paint/invalidation/table/table-section-visual-overflow.html [ Failure Pass ]
 crbug.com/591099 paint/invalidation/table-two-pass-layout-overpaint.html [ Failure ]
 crbug.com/591099 paint/invalidation/table-writing-modes-h.html [ Failure ]
 crbug.com/591099 paint/invalidation/table-writing-modes-v.html [ Failure ]
@@ -17876,8 +18037,9 @@
 crbug.com/591099 paint/invalidation/window-resize-no-layout-change1.html [ Failure ]
 crbug.com/591099 paint/invalidation/window-resize-no-layout-change2.html [ Failure ]
 crbug.com/591099 paint/invalidation/window-resize-vertical-writing-mode.html [ Failure ]
+crbug.com/591099 paint/lists/invalidate-list-marker-color.html [ Crash Pass ]
 crbug.com/591099 paint/masks/fieldset-mask.html [ Failure ]
-crbug.com/591099 paint/masks/table-cell-masks.html [ Failure ]
+crbug.com/591099 paint/masks/table-cell-masks.html [ Failure Pass ]
 crbug.com/591099 paint/overflow/background-mask-should-be-recorded-full.html [ Failure ]
 crbug.com/591099 paint/overflow/interest-rect-change-scroll-down.html [ Failure ]
 crbug.com/591099 paint/overflow/non-composited-fixed-position-descendant.html [ Failure ]
@@ -17900,16 +18062,17 @@
 crbug.com/591099 paint/selection/text-selection-newline-span.html [ Failure ]
 crbug.com/591099 paint/selection/text-selection-newline-vertical-lr.html [ Failure ]
 crbug.com/591099 paint/selection/text-selection-newline-vertical-rl.html [ Failure ]
-crbug.com/591099 paint/spellmarkers/document-markers.html [ Failure ]
+crbug.com/591099 paint/spellmarkers/document-markers.html [ Failure Pass ]
 crbug.com/591099 paint/spellmarkers/document-markers-zoom-125.html [ Failure Pass ]
-crbug.com/591099 paint/spellmarkers/document-markers-zoom-250.html [ Failure ]
+crbug.com/591099 paint/spellmarkers/document-markers-zoom-175.html [ Failure Pass ]
+crbug.com/591099 paint/spellmarkers/document-markers-zoom-250.html [ Failure Pass ]
 crbug.com/591099 paint/spellmarkers/inline-spelling-markers-hidpi-composited.html [ Failure ]
 crbug.com/591099 paint/spellmarkers/inline-spelling-markers-hidpi.html [ Failure ]
 crbug.com/591099 paint/spellmarkers/inline_spelling_markers.html [ Failure ]
-crbug.com/591099 paint/tables/collapsed-border-layered-table-and-cells.html [ Failure ]
+crbug.com/591099 paint/tables/collapsed-border-layered-table-and-cells.html [ Failure Pass ]
 crbug.com/591099 paint/tables/huge-table-composited-scroll.html [ Failure ]
 crbug.com/591099 paint/tables/self-painting-row-background-vertical-clipped.html [ Failure ]
-crbug.com/591099 paint/tables/tbody-fixedposition.html [ Failure ]
+crbug.com/591099 paint/tables/tbody-fixedposition.html [ Crash Failure ]
 crbug.com/591099 paint/tables/tbody-transformed.html [ Failure ]
 crbug.com/591099 paint/text/selection-no-clip-text.html [ Failure ]
 crbug.com/591099 paint/text/text-match-highlights-big-line-height.html [ Failure ]
@@ -17976,13 +18139,13 @@
 crbug.com/591099 pointer-lock/pointerlockchange-pointerlockerror-events.html [ Failure ]
 crbug.com/591099 pointer-lock/pointerlockelement-null-when-pending.html [ Failure ]
 crbug.com/591099 pointer-lock/pointerlock-then-fullscreen.html [ Failure ]
-crbug.com/591099 presentation/presentationconnectionavailableevent-ctor-mock.html [ Crash ]
-crbug.com/591099 presentation/presentation-controller-close-connection.html [ Crash ]
+crbug.com/591099 presentation/presentationconnectionavailableevent-ctor-mock.html [ Crash Timeout ]
+crbug.com/591099 presentation/presentation-controller-close-connection.html [ Crash Timeout ]
 crbug.com/591099 presentation/presentation-controller-connection-closed-by-receiver.html [ Crash Timeout ]
-crbug.com/591099 presentation/presentation-controller-terminate-connection.html [ Crash ]
+crbug.com/591099 presentation/presentation-controller-terminate-connection.html [ Crash Timeout ]
 crbug.com/591099 presentation/presentation-navigation.html [ Crash ]
 crbug.com/591099 presentation/presentation-navigation-multipleurls.html [ Crash ]
-crbug.com/591099 presentation/presentation-reconnect.html [ Crash ]
+crbug.com/591099 presentation/presentation-reconnect.html [ Crash Timeout ]
 crbug.com/591099 presentation/presentation-request-iframe-default-success.html [ Crash ]
 crbug.com/591099 presentation/presentation-request-iframe-sandbox-error.html [ Crash ]
 crbug.com/591099 presentation/presentation-request-iframe-sandbox-success.html [ Crash ]
@@ -18056,14 +18219,14 @@
 crbug.com/591099 scrollbars/custom-scrollbar-appearance-property.html [ Failure ]
 crbug.com/591099 scrollbars/custom-scrollbar-display.html [ Failure ]
 crbug.com/591099 scrollbars/custom-scrollbar-inactive-only-on-windowinactive-selector.html [ Failure Pass ]
-crbug.com/591099 scrollbars/custom-scrollbar-inactive-pseudo.html [ Failure ]
+crbug.com/591099 scrollbars/custom-scrollbar-inactive-pseudo.html [ Failure Pass ]
 crbug.com/591099 scrollbars/custom-scrollbar-not-inherited-by-iframe.html [ Crash ]
 crbug.com/591099 scrollbars/custom-scrollbar-reconstruction-document-write.html [ Crash ]
 crbug.com/591099 scrollbars/custom-scrollbar-reconstruction-on-setting-newstyle.html [ Failure ]
-crbug.com/591099 scrollbars/custom-scrollbar-table-cell.html [ Failure ]
-crbug.com/591099 scrollbars/custom-scrollbar-thumb-focus-iframe-inactive-pseudo.html [ Failure ]
+crbug.com/591099 scrollbars/custom-scrollbar-table-cell.html [ Failure Pass ]
+crbug.com/591099 scrollbars/custom-scrollbar-thumb-focus-iframe-inactive-pseudo.html [ Failure Pass ]
 crbug.com/591099 scrollbars/custom-scrollbar-thumb-inactive-pseudo.html [ Failure Pass ]
-crbug.com/591099 scrollbars/custom-scrollbar-thumb-width-changed-on-inactive-pseudo.html [ Failure ]
+crbug.com/591099 scrollbars/custom-scrollbar-thumb-width-changed-on-inactive-pseudo.html [ Failure Pass ]
 crbug.com/591099 scrollbars/custom-scrollbar-with-incomplete-style.html [ Failure ]
 crbug.com/591099 scrollbars/disabled-composited-scrollbar.html [ Failure ]
 crbug.com/591099 scrollbars/disabled-scrollbar.html [ Failure ]
@@ -18073,7 +18236,8 @@
 crbug.com/591099 scrollbars/iframe-scrollbar-becomes-custom.html [ Crash ]
 crbug.com/591099 scrollbars/listbox-scrollbar-combinations.html [ Failure ]
 crbug.com/591099 scrollbars/overlay-scrollbars-within-overflow-scroll.html [ Failure ]
-crbug.com/591099 scrollbars/rtl/overflow-scroll-rtl.html [ Failure ]
+crbug.com/591099 scrollbars/reconstruct-coordinated-scrollbar.html [ Failure Pass ]
+crbug.com/591099 scrollbars/rtl/overflow-scroll-rtl.html [ Crash Failure ]
 crbug.com/591099 scrollbars/scrollable-iframe-click-gets-focus.html [ Crash ]
 crbug.com/591099 scrollbars/scrollable-iframe-remove-crash.html [ Crash ]
 crbug.com/591099 scrollbars/scrollbar-added-during-drag.html [ Timeout ]
@@ -18120,7 +18284,7 @@
 crbug.com/591099 shadow-dom/focus-navigation-slot-with-tabindex.html [ Crash ]
 crbug.com/591099 shadow-dom/focus-navigation-with-delegatesFocus.html [ Timeout ]
 crbug.com/591099 shadow-dom/focus-slide-on-shadow-host.html [ Crash ]
-crbug.com/591099 shadow-dom/focus-with-dom-mutation.html [ Failure ]
+crbug.com/591099 shadow-dom/focus-with-dom-mutation.html [ Failure Pass ]
 crbug.com/591099 shadow-dom/focus-with-negative-index.html [ Crash ]
 crbug.com/591099 shadow-dom/fullscreen-element-in-shadow-complex.html [ Crash Pass ]
 crbug.com/591099 shadow-dom/nodetree-labels-node-list.html [ Crash ]
@@ -18166,11 +18330,11 @@
 crbug.com/591099 storage/indexeddb/create-object-store-options.html [ Failure ]
 crbug.com/591099 storage/indexeddb/cursor-added-bug.html [ Failure ]
 crbug.com/591099 storage/indexeddb/cursor-advance.html [ Timeout ]
-crbug.com/591099 storage/indexeddb/cursor-advance-workers.html [ Failure ]
+crbug.com/591099 storage/indexeddb/cursor-advance-workers.html [ Failure Timeout ]
 crbug.com/591099 storage/indexeddb/cursor-basics.html [ Failure ]
 crbug.com/591099 storage/indexeddb/cursor-cast.html [ Failure ]
 crbug.com/591099 storage/indexeddb/cursor-continue-dir.html [ Failure ]
-crbug.com/591099 storage/indexeddb/cursor-continue.html [ Failure ]
+crbug.com/591099 storage/indexeddb/cursor-continue.html [ Failure Timeout ]
 crbug.com/591099 storage/indexeddb/cursor-continue-validity.html [ Timeout ]
 crbug.com/591099 storage/indexeddb/cursor-delete.html [ Failure ]
 crbug.com/591099 storage/indexeddb/cursor-finished.html [ Failure ]
@@ -18233,7 +18397,7 @@
 crbug.com/591099 storage/indexeddb/index-cursor.html [ Timeout ]
 crbug.com/591099 storage/indexeddb/index-duplicate-keypaths.html [ Failure ]
 crbug.com/591099 storage/indexeddb/index-get-key-argument-required.html [ Failure ]
-crbug.com/591099 storage/indexeddb/index-multientry.html [ Timeout ]
+crbug.com/591099 storage/indexeddb/index-multientry.html [ Failure Timeout ]
 crbug.com/591099 storage/indexeddb/index-population.html [ Failure ]
 crbug.com/591099 storage/indexeddb/index-unique.html [ Failure ]
 crbug.com/591099 storage/indexeddb/interfaces.html [ Failure ]
@@ -18393,7 +18557,7 @@
 crbug.com/591099 storage/websql/database-removed-context-crash.html [ Crash ]
 crbug.com/591099 storage/websql/execute-sql-rowsAffected.html [ Failure ]
 crbug.com/591099 storage/websql/null-characters.html [ Failure ]
-crbug.com/591099 storage/websql/sql-error-codes.html [ Failure ]
+crbug.com/591099 storage/websql/sql-error-codes.html [ Failure Pass ]
 crbug.com/591099 storage/websql/transaction-removed-context-crash.html [ Crash ]
 crbug.com/591099 svg/animations/accumulate-use-count.html [ Crash ]
 crbug.com/591099 svg/animations/accumulate-values-width-animation.html [ Failure ]
@@ -18507,6 +18671,7 @@
 crbug.com/591099 svg/animations/multiple-begin-additive-animation.html [ Failure ]
 crbug.com/591099 svg/animations/multiple-begin-animation-events.html [ Failure ]
 crbug.com/591099 svg/animations/no-attr-pattern-par.svg [ Crash Pass ]
+crbug.com/591099 svg/animations/no-attr-pattern-viewbox.svg [ Crash Pass ]
 crbug.com/591099 svg/animations/no-attr-radialgradient-fr.svg [ Crash Pass ]
 crbug.com/591099 svg/animations/non-additive-type-by-animation.html [ Failure ]
 crbug.com/591099 svg/animations/non-additive-type-from-by-animation.html [ Failure ]
@@ -18604,7 +18769,7 @@
 crbug.com/591099 svg/animations/use-animate-transform-and-position.html [ Timeout ]
 crbug.com/591099 svg/animations/use-animate-width-and-height.html [ Timeout ]
 crbug.com/591099 svg/animations/use-while-animating-crash.html [ Crash ]
-crbug.com/591099 svg/as-background-image/background-image-preserveaspectRatio-support.html [ Failure ]
+crbug.com/591099 svg/as-background-image/background-image-preserveaspectRatio-support.html [ Failure Pass ]
 crbug.com/591099 svg/as-background-image/background-repeat.html [ Failure ]
 crbug.com/591099 svg/as-background-image/svg-as-background.html [ Failure ]
 crbug.com/591099 svg/as-background-image/svg-as-background-with-relative-size.html [ Failure ]
@@ -18621,7 +18786,7 @@
 crbug.com/591099 svg/as-image/image-respects-deviceScaleFactor.html [ Failure ]
 crbug.com/591099 svg/as-image/image-respects-pageScaleFactor-change.html [ Failure ]
 crbug.com/591099 svg/as-image/image-respects-pageScaleFactor.html [ Failure ]
-crbug.com/591099 svg/as-image/img-preserveAspectRatio-support-1.html [ Failure ]
+crbug.com/591099 svg/as-image/img-preserveAspectRatio-support-1.html [ Failure Pass ]
 crbug.com/591099 svg/as-image/svg-as-image.html [ Failure ]
 crbug.com/591099 svg/as-image/svg-as-image-intrinsic-size.html [ Crash ]
 crbug.com/591099 svg/as-image/svg-as-relative-image.html [ Failure ]
@@ -18633,18 +18798,20 @@
 crbug.com/591099 svg/as-image/svg-object-intrinsic-size.html [ Failure ]
 crbug.com/591099 svg/as-image/svgview-references-use-counters.html [ Failure ]
 crbug.com/591099 svg/as-object/embedded-svg-immediate-offsetWidth-query.html [ Failure ]
+crbug.com/591099 svg/as-object/svg-embedded-in-html-in-iframe.html [ Pass Timeout ]
+crbug.com/591099 svg/batik/text/textAnchor3.svg [ Failure Pass ]
 crbug.com/591099 svg/canvas/canvas-draw-image-size.html [ Crash ]
-crbug.com/591099 svg/canvas/canvas-draw-image-svg-fragment.html [ Crash ]
+crbug.com/591099 svg/canvas/canvas-draw-image-svg-fragment.html [ Crash Pass ]
 crbug.com/591099 svg/canvas/canvas-draw-pattern-size.html [ Crash ]
 crbug.com/591099 svg/canvas/canvas-draw-pattern-svg-fragment.html [ Crash Pass ]
 crbug.com/591099 svg/canvas/canvas-pattern-svg.html [ Failure ]
 crbug.com/591099 svg/canvas/image-svg-intrinsic-size.html [ Crash ]
 crbug.com/591099 svg/carto.net/frameless-svg-parse-error.html [ Failure ]
 crbug.com/591099 svg/clip-path/clip-path-shape-polygon-3.svg [ Crash Pass ]
-crbug.com/591099 svg/clip-path/clip-path-use-as-child3.svg [ Crash ]
-crbug.com/591099 svg/clip-path/clip-path-use-as-child.svg [ Crash ]
-crbug.com/591099 svg/clip-path/clip-path-with-different-unittypes2.svg [ Crash ]
-crbug.com/591099 svg/clip-path/opacity-assertion.svg [ Crash ]
+crbug.com/591099 svg/clip-path/clip-path-use-as-child3.svg [ Crash Pass ]
+crbug.com/591099 svg/clip-path/clip-path-use-as-child.svg [ Crash Pass ]
+crbug.com/591099 svg/clip-path/clip-path-with-different-unittypes2.svg [ Crash Pass ]
+crbug.com/591099 svg/clip-path/opacity-assertion.svg [ Crash Pass ]
 crbug.com/591099 svg/css/background-image-svg.html [ Crash Pass ]
 crbug.com/591099 svg/css/baseline-shift-inherit.html [ Crash ]
 crbug.com/591099 svg/css/buffered-rendering.html [ Failure ]
@@ -18652,6 +18819,7 @@
 crbug.com/591099 svg/css/display-computed.html [ Crash ]
 crbug.com/591099 svg/css/getComputedStyle-listing.xhtml [ Failure ]
 crbug.com/591099 svg/css/getComputedStyle-svg-text-width-height.html [ Crash ]
+crbug.com/591099 svg/css/inherit-d.svg [ Crash Pass ]
 crbug.com/591099 svg/css/mask-type.html [ Failure ]
 crbug.com/591099 svg/css/max-height.html [ Failure ]
 crbug.com/591099 svg/css/max-width.html [ Failure ]
@@ -18660,15 +18828,15 @@
 crbug.com/591099 svg/css/path-element.html [ Crash ]
 crbug.com/591099 svg/css/path-layout-crash.html [ Failure ]
 crbug.com/591099 svg/css/rect-system-color.xhtml [ Failure ]
-crbug.com/591099 svg/css/replaced-intrinsic-ratio-min-width-min-content.html [ Failure ]
+crbug.com/591099 svg/css/replaced-intrinsic-ratio-min-width-min-content.html [ Failure Pass ]
 crbug.com/591099 svg/css/scientific-numbers.html [ Failure ]
 crbug.com/591099 svg/css/svg-attribute-length-parsing.html [ Failure ]
 crbug.com/591099 svg/css/svg-attribute-parser-mode.html [ Failure ]
 crbug.com/591099 svg/css/svg-ellipse-render-crash.html [ Failure ]
 crbug.com/591099 svg/css/svg-paint-order.html [ Failure ]
-crbug.com/591099 svg/css/svg-resource-fragment-identifier-image-content.html [ Failure ]
-crbug.com/591099 svg/css/svg-resource-fragment-identifier-input.html [ Failure ]
-crbug.com/591099 svg/css/svg-resource-fragment-identifier-video-poster.html [ Failure ]
+crbug.com/591099 svg/css/svg-resource-fragment-identifier-image-content.html [ Failure Pass ]
+crbug.com/591099 svg/css/svg-resource-fragment-identifier-input.html [ Failure Pass ]
+crbug.com/591099 svg/css/svg-resource-fragment-identifier-video-poster.html [ Failure Pass ]
 crbug.com/591099 svg/css/text-shadow-multiple.xhtml [ Failure ]
 crbug.com/591099 svg/custom/absolute-sized-svg-in-xhtml.xhtml [ Failure ]
 crbug.com/591099 svg/custom/acid3-test-77.html [ Failure ]
@@ -18682,12 +18850,13 @@
 crbug.com/591099 svg/custom/bug45331.svg [ Failure ]
 crbug.com/591099 svg/custom/bug78807.svg [ Failure ]
 crbug.com/591099 svg/custom/click-overflowing-element.html [ Failure ]
-crbug.com/591099 svg/custom/clip-path-with-css-transform-2.svg [ Crash ]
+crbug.com/591099 svg/custom/clip-path-with-css-transform-2.svg [ Crash Pass ]
 crbug.com/591099 svg/custom/clone-element-with-animated-svg-properties.html [ Failure ]
 crbug.com/591099 svg/custom/clone-node.html [ Failure ]
-crbug.com/591099 svg/custom/container-opacity-clip-viewBox.svg [ Failure ]
+crbug.com/591099 svg/custom/container-opacity-clip-viewBox.svg [ Failure Pass ]
 crbug.com/591099 svg/custom/crash-textPath-attributes.html [ Failure ]
 crbug.com/591099 svg/custom/createImageElement2.xhtml [ Failure ]
+crbug.com/591099 svg/custom/create-metadata-element.svg [ Failure Pass ]
 crbug.com/591099 svg/custom/currentColor-on-color.html [ Failure ]
 crbug.com/591099 svg/custom/disallow-non-lengths-in-attrs.html [ Crash ]
 crbug.com/591099 svg/custom/display-none-a-does-not-stop-focus-navigation.html [ Crash ]
@@ -18697,7 +18866,7 @@
 crbug.com/591099 svg/custom/elementTimeControl-nan-crash.html [ Failure ]
 crbug.com/591099 svg/custom/embedded-svg-allowed-in-dashboard.xml [ Failure ]
 crbug.com/591099 svg/custom/events-in-shadow-tree.html [ Crash ]
-crbug.com/591099 svg/custom/fill-fallback-currentcolor-2.svg [ Crash ]
+crbug.com/591099 svg/custom/fill-fallback-currentcolor-2.svg [ Crash Pass ]
 crbug.com/591099 svg/custom/focus-event-handling-keyboard.xhtml [ Failure ]
 crbug.com/591099 svg/custom/focus-event-handling.xhtml [ Failure ]
 crbug.com/591099 svg/custom/fragment-navigation-01.html [ Failure ]
@@ -18714,11 +18883,11 @@
 crbug.com/591099 svg/custom/getscreenctm-in-mixed-content.xhtml [ Failure ]
 crbug.com/591099 svg/custom/getscreenctm-in-scrollable-div-area-nested.xhtml [ Failure ]
 crbug.com/591099 svg/custom/getscreenctm-in-scrollable-div-area.xhtml [ Failure ]
-crbug.com/591099 svg/custom/getscreenctm-in-scrollable-svg-area.xhtml [ Failure ]
+crbug.com/591099 svg/custom/getscreenctm-in-scrollable-svg-area.xhtml [ Failure Pass ]
 crbug.com/591099 svg/custom/getsvgdocument.html [ Failure ]
 crbug.com/591099 svg/custom/getsvgdocument-null.html [ Failure ]
 crbug.com/591099 svg/custom/global-constructors.html [ Failure ]
-crbug.com/591099 svg/custom/gradient-deep-referencing.svg [ Crash ]
+crbug.com/591099 svg/custom/gradient-deep-referencing.svg [ Crash Pass ]
 crbug.com/591099 svg/custom/hit-test-path-stroke.svg [ Failure ]
 crbug.com/591099 svg/custom/hit-test-path.svg [ Failure ]
 crbug.com/591099 svg/custom/image-parent-translation.xhtml [ Failure ]
@@ -18726,17 +18895,19 @@
 crbug.com/591099 svg/custom/image-rescale-scroll.html [ Failure ]
 crbug.com/591099 svg/custom/image-svgload-after-docload.html [ Crash ]
 crbug.com/591099 svg/custom/image-with-attr-change-after-delete-crash.html [ Crash ]
+crbug.com/591099 svg/custom/inline-style-overrides-markers.svg [ Failure Pass ]
 crbug.com/591099 svg/custom/inline-svg-in-xhtml.xml [ Failure ]
-crbug.com/591099 svg/custom/inline-svg-use-available-width.html [ Failure ]
+crbug.com/591099 svg/custom/inline-svg-use-available-width.html [ Failure Pass ]
 crbug.com/591099 svg/custom/inline-svg-use-available-width-in-stf.html [ Failure ]
-crbug.com/591099 svg/custom/inline-text-zero-length.svg [ Crash ]
+crbug.com/591099 svg/custom/inline-text-zero-length.svg [ Crash Pass ]
+crbug.com/591099 svg/custom/invalid-fill-hex.svg [ Failure Pass ]
 crbug.com/591099 svg/custom/invalid-filter-reference-and-opacity-crash.html [ Failure ]
 crbug.com/591099 svg/custom/invalid-length-units.html [ Failure ]
 crbug.com/591099 svg/custom/invisible-text-after-scrolling.xhtml [ Failure ]
 crbug.com/591099 svg/custom/junk-data.svg [ Failure ]
 crbug.com/591099 svg/custom/keySplines-parsing-error.html [ Failure ]
 crbug.com/591099 svg/custom/keyTimes-parsing-error.html [ Failure ]
-crbug.com/591099 svg/custom/linking-a-03-b-viewBox.svg [ Timeout ]
+crbug.com/591099 svg/custom/linking-a-03-b-viewBox.svg [ Pass Timeout ]
 crbug.com/591099 svg/custom/load-image-removed-in-onload.html [ Crash ]
 crbug.com/591099 svg/custom/load-image-reparented-in-onload.html [ Crash ]
 crbug.com/591099 svg/custom/load-non-wellformed.svg [ Failure ]
@@ -18746,17 +18917,19 @@
 crbug.com/591099 svg/custom/marker-default-width-height.svg [ Failure Pass ]
 crbug.com/591099 svg/custom/marker-orient-auto.html [ Failure ]
 crbug.com/591099 svg/custom/missing-xlink.svg [ Failure ]
+crbug.com/591099 svg/custom/mouse-move-on-svg-container-standalone.svg [ Failure Pass ]
 crbug.com/591099 svg/custom/mouse-move-on-svg-container.xhtml [ Timeout ]
 crbug.com/591099 svg/custom/mouse-move-on-svg-root.xhtml [ Timeout ]
 crbug.com/591099 svg/custom/no-fixed-in-svg-assert.html [ Failure ]
 crbug.com/591099 svg/custom/no-inherited-dashed-stroke.xhtml [ Failure ]
-crbug.com/591099 svg/custom/object-data-href.html [ Failure ]
+crbug.com/591099 svg/custom/object-data-href.html [ Failure Pass ]
 crbug.com/591099 svg/custom/object-sizing-explicit-height.xhtml [ Failure ]
 crbug.com/591099 svg/custom/object-sizing-explicit-width.xhtml [ Failure ]
 crbug.com/591099 svg/custom/object-sizing-no-width-height.xhtml [ Failure ]
 crbug.com/591099 svg/custom/object-sizing.xhtml [ Failure ]
 crbug.com/591099 svg/custom/object-sizing-zero-intrinsic-width-height.html [ Crash ]
 crbug.com/591099 svg/custom/path-bad-data.svg [ Failure ]
+crbug.com/591099 svg/custom/path-multiple-movetos.svg [ Crash Pass ]
 crbug.com/591099 svg/custom/pattern-3-step-cycle-dynamic-1.html [ Failure ]
 crbug.com/591099 svg/custom/pattern-3-step-cycle-dynamic-2.html [ Failure ]
 crbug.com/591099 svg/custom/pattern-3-step-cycle-dynamic-3.html [ Failure ]
@@ -18764,14 +18937,14 @@
 crbug.com/591099 svg/custom/pattern-3-step-cycle.html [ Failure ]
 crbug.com/591099 svg/custom/pattern-content-cycle-w-resourceless-container.html [ Failure ]
 crbug.com/591099 svg/custom/pattern-content-inheritance-cycle.html [ Failure ]
-crbug.com/591099 svg/custom/pattern-referencing-preserve-aspect-ratio.svg [ Failure ]
+crbug.com/591099 svg/custom/pattern-referencing-preserve-aspect-ratio.svg [ Failure Pass ]
 crbug.com/591099 svg/custom/pattern-userSpaceOnUse-userToBaseTransform.xhtml [ Failure ]
 crbug.com/591099 svg/custom/percentage-of-html-parent.xhtml [ Failure ]
 crbug.com/591099 svg/custom/pointer-events-on-svg-without-pointer.xhtml [ Failure ]
 crbug.com/591099 svg/custom/pointer-events-on-svg-with-pointer.xhtml [ Failure ]
 crbug.com/591099 svg/custom/poly-parsing-error.html [ Failure ]
 crbug.com/591099 svg/custom/removed-from-animation-crash.html [ Crash ]
-crbug.com/591099 svg/custom/rootelement.svg [ Crash ]
+crbug.com/591099 svg/custom/rootelement.svg [ Crash Pass ]
 crbug.com/591099 svg/custom/rootmost-svg-xy-attrs.xhtml [ Failure ]
 crbug.com/591099 svg/custom/root-size-attribute-changes.html [ Failure ]
 crbug.com/591099 svg/custom/scroll-to-svg-element-assertion.html [ Failure ]
@@ -18785,27 +18958,27 @@
 crbug.com/591099 svg/custom/svg-fonts-in-text-controls.html [ Failure ]
 crbug.com/591099 svg/custom/svg-fonts-no-latin-glyph.html [ Failure ]
 crbug.com/591099 svg/custom/svg-fonts-word-spacing.html [ Failure ]
-crbug.com/591099 svg/custom/svg-image-container-size.html [ Failure ]
+crbug.com/591099 svg/custom/svg-image-container-size.html [ Failure Pass ]
 crbug.com/591099 svg/custom/svg-image-intrinsic-size-with-cssstyle-auto-dynamic-image-change.html [ Crash ]
 crbug.com/591099 svg/custom/svg-image-intrinsic-size-with-cssstyle-auto.html [ Crash ]
-crbug.com/591099 svg/custom/svg-image-par-none-viewbox-percentage-size.html [ Crash ]
+crbug.com/591099 svg/custom/svg-image-par-none-viewbox-percentage-size.html [ Crash Pass ]
 crbug.com/591099 svg/custom/svg-modify-currentTranslate.html [ Failure ]
-crbug.com/591099 svg/custom/SVGRect-interface.svg [ Failure ]
+crbug.com/591099 svg/custom/SVGRect-interface.svg [ Failure Pass ]
 crbug.com/591099 svg/custom/svg-root-padding-border-margin.html [ Failure ]
 crbug.com/591099 svg/custom/svg-viewBox-dynamic.html [ Failure ]
 crbug.com/591099 svg/custom/svg-xml-dom-sync.html [ Failure ]
 crbug.com/591099 svg/custom/tabindex-order.html [ Failure ]
 crbug.com/591099 svg/custom/tearoffs-with-tearoffs.html [ Failure ]
-crbug.com/591099 svg/custom/text-dom-01-f.svg [ Failure ]
-crbug.com/591099 svg/custom/text-filter.svg [ Crash ]
+crbug.com/591099 svg/custom/text-dom-01-f.svg [ Failure Pass ]
+crbug.com/591099 svg/custom/text-filter.svg [ Crash Pass ]
 crbug.com/591099 svg/custom/text-match-highlight.html [ Failure ]
-crbug.com/591099 svg/custom/text-rotation.svg [ Failure ]
+crbug.com/591099 svg/custom/text-rotation.svg [ Failure Pass ]
 crbug.com/591099 svg/custom/text-use-click-crash.xhtml [ Crash ]
 crbug.com/591099 svg/custom/title-assertion.html [ Failure ]
 crbug.com/591099 svg/custom/touch-events.html [ Failure ]
 crbug.com/591099 svg/custom/tref-with-progress-tag-setpseudo-assert.html [ Failure ]
 crbug.com/591099 svg/custom/use-crash-in-non-wellformed-document.svg [ Failure ]
-crbug.com/591099 svg/custom/use-css-events.svg [ Failure ]
+crbug.com/591099 svg/custom/use-css-events.svg [ Failure Pass ]
 crbug.com/591099 svg/custom/use-event-retargeting.html [ Failure ]
 crbug.com/591099 svg/custom/use-font-face-crash.svg [ Failure ]
 crbug.com/591099 svg/custom/use-href-attr-removal-crash.html [ Failure ]
@@ -18813,10 +18986,10 @@
 crbug.com/591099 svg/custom/use-invalid-html.xhtml [ Failure ]
 crbug.com/591099 svg/custom/use-invalid-pattern.svg [ Failure ]
 crbug.com/591099 svg/custom/use-invalid-style.svg [ Failure ]
-crbug.com/591099 svg/custom/use-multiple-pending-resources.svg [ Failure ]
-crbug.com/591099 svg/custom/use-nested-sibling-symbols.html [ Crash ]
-crbug.com/591099 svg/custom/use-property-synchronization-crash.svg [ Failure ]
-crbug.com/591099 svg/custom/use-recalcStyle-crash.svg [ Failure ]
+crbug.com/591099 svg/custom/use-multiple-pending-resources.svg [ Failure Pass ]
+crbug.com/591099 svg/custom/use-nested-sibling-symbols.html [ Crash Pass ]
+crbug.com/591099 svg/custom/use-property-synchronization-crash.svg [ Failure Pass ]
+crbug.com/591099 svg/custom/use-recalcStyle-crash.svg [ Failure Pass ]
 crbug.com/591099 svg/custom/use-referencing-style-crash.svg [ Failure ]
 crbug.com/591099 svg/custom/use-transfer-width-height-properties-to-svg1.svg [ Crash Pass ]
 crbug.com/591099 svg/custom/use-transfer-width-height-properties-to-svg.svg [ Failure Pass ]
@@ -19226,17 +19399,19 @@
 crbug.com/591099 svg/dynamic-updates/SVGUseElement-dom-href2-attr.html [ Failure ]
 crbug.com/591099 svg/dynamic-updates/SVGUseElement-svgdom-href1-prop.html [ Failure ]
 crbug.com/591099 svg/dynamic-updates/SVGUseElement-svgdom-href2-prop.html [ Failure ]
-crbug.com/591099 svg/filters/big-width-filter.svg [ Crash ]
-crbug.com/591099 svg/filters/feColorMatrix-values.svg [ Failure ]
+crbug.com/591099 svg/filters/big-width-filter.svg [ Crash Pass ]
+crbug.com/591099 svg/filters/feColorMatrix-values.svg [ Failure Pass ]
 crbug.com/591099 svg/filters/feComponentTransfer-style-crash.xhtml [ Crash ]
 crbug.com/591099 svg/filters/feDisplacementMap-crash-test.xhtml [ Crash ]
-crbug.com/591099 svg/filters/feFlood-rgba-flood-color-w-opacity-1.svg [ Crash ]
-crbug.com/591099 svg/filters/feLighting-crash.svg [ Crash ]
+crbug.com/591099 svg/filters/feFlood-rgba-flood-color-w-opacity-1.svg [ Crash Pass ]
+crbug.com/591099 svg/filters/feGaussianBlur-subregion.svg [ Crash Pass ]
+crbug.com/591099 svg/filters/feLighting-crash.svg [ Crash Pass ]
 crbug.com/591099 svg/filters/feLight-non-lighting-parent-crash.html [ Failure ]
 crbug.com/591099 svg/filters/feTurbulence-bad-seeds.html [ Failure ]
-crbug.com/591099 svg/filters/feTurbulence-primitiveUnits.svg [ Crash ]
+crbug.com/591099 svg/filters/feTurbulence-primitiveUnits.svg [ Crash Pass ]
 crbug.com/591099 svg/filters/filter-detach-crash.html [ Crash ]
 crbug.com/591099 svg/filters/reparent-animated-filter-target.html [ Failure ]
+crbug.com/591099 svg/filters/sourceAlpha.svg [ Crash Pass ]
 crbug.com/591099 svg/foreignObject/background-render-phase.html [ Failure ]
 crbug.com/591099 svg/foreignObject/clip.html [ Failure ]
 crbug.com/591099 svg/foreignObject/filter.html [ Failure ]
@@ -19271,17 +19446,18 @@
 crbug.com/591099 svg/hittest/zero-length-butt-cap-path.xhtml [ Crash ]
 crbug.com/591099 svg/hittest/zero-length-round-cap-path.xhtml [ Crash ]
 crbug.com/591099 svg/hittest/zero-length-square-cap-path.xhtml [ Crash ]
-crbug.com/591099 svg/hixie/dynamic/003.xml [ Failure ]
-crbug.com/591099 svg/hixie/error/006.xml [ Crash ]
-crbug.com/591099 svg/hixie/error/011.xml [ Crash ]
+crbug.com/591099 svg/hixie/dynamic/003.xml [ Failure Pass ]
+crbug.com/591099 svg/hixie/error/006.xml [ Crash Pass ]
+crbug.com/591099 svg/hixie/error/011.xml [ Crash Pass ]
 crbug.com/591099 svg/hixie/error/012.xml [ Failure ]
 crbug.com/591099 svg/hixie/error/013.xml [ Failure ]
-crbug.com/591099 svg/hixie/intrinsic/003.html [ Failure ]
-crbug.com/591099 svg/hixie/links/001.xml [ Crash ]
+crbug.com/591099 svg/hixie/intrinsic/003.html [ Failure Pass ]
+crbug.com/591099 svg/hixie/links/001.xml [ Crash Pass ]
 crbug.com/591099 svg/hixie/mixed/003.xml [ Failure ]
 crbug.com/591099 svg/hixie/mixed/006.xml [ Failure ]
 crbug.com/591099 svg/hixie/mixed/008.xml [ Failure ]
 crbug.com/591099 svg/hixie/mixed/011.xml [ Failure ]
+crbug.com/591099 svg/in-html/overflow-svg-root-style.html [ Crash Pass ]
 crbug.com/591099 svg/in-html/sizing/svg-inline.html [ Failure ]
 crbug.com/591099 svg/in-html/sizing/svg-inline-vertical.html [ Crash ]
 crbug.com/591099 svg/overflow/overflow-on-outermost-svg-element-horizontal-auto.svg [ Failure ]
@@ -19321,42 +19497,45 @@
 crbug.com/591099 svg/text/selection-dragging-outside-1.html [ Crash ]
 crbug.com/591099 svg/text/selection-dragging-outside-2.html [ Crash ]
 crbug.com/591099 svg/text/selection-dragging-outside-3.html [ Crash ]
-crbug.com/591099 svg/text/selection-tripleclick.svg [ Failure ]
+crbug.com/591099 svg/text/selection-tripleclick.svg [ Failure Pass ]
 crbug.com/591099 svg/text/select-svg-text-with-collapsed-whitespace.html [ Crash ]
 crbug.com/591099 svg/text/select-text-inside-non-static-position.html [ Failure ]
-crbug.com/591099 svg/text/select-textLength-spacingAndGlyphs-squeeze-1.svg [ Failure ]
-crbug.com/591099 svg/text/select-textLength-spacingAndGlyphs-stretch-4.svg [ Failure ]
-crbug.com/591099 svg/text/select-x-list-2.svg [ Failure ]
+crbug.com/591099 svg/text/select-textLength-spacingAndGlyphs-squeeze-1.svg [ Failure Pass ]
+crbug.com/591099 svg/text/select-textLength-spacingAndGlyphs-stretch-4.svg [ Failure Pass ]
+crbug.com/591099 svg/text/select-x-list-2.svg [ Failure Pass ]
 crbug.com/591099 svg/text/select-x-list-with-tspans-4.svg [ Failure Pass ]
 crbug.com/591099 svg/text/svgtextcontentelement-glyphqueries-rtl.html [ Crash ]
 crbug.com/591099 svg/text/text-bbox-empty.html [ Crash ]
 crbug.com/591099 svg/text/text-bbox-of-empty-after-change.html [ Crash ]
+crbug.com/591099 svg/text/text-decoration-propagation-2.html [ Failure Pass ]
 crbug.com/591099 svg/text/text-getSubStringLength.html [ Crash ]
 crbug.com/591099 svg/text/text-layout-crash.html [ Failure ]
 crbug.com/591099 svg/text/text-outline-2.html [ Failure ]
-crbug.com/591099 svg/text/textPathBoundsBug.svg [ Failure ]
-crbug.com/591099 svg/text/textpath-outline.svg [ Failure ]
+crbug.com/591099 svg/text/textPathBoundsBug.svg [ Failure Pass ]
+crbug.com/591099 svg/text/textpath-outline.svg [ Failure Pass ]
 crbug.com/591099 svg/text/textpath-reference-crash.html [ Crash ]
 crbug.com/591099 svg/text/textquery-collapsed-whitespace.html [ Crash ]
 crbug.com/591099 svg/text/text-repaint-rects.xhtml [ Failure ]
-crbug.com/591099 svg/text/text-selection-align-01-b.svg [ Failure ]
+crbug.com/591099 svg/text/text-selection-align-01-b.svg [ Failure Pass ]
 crbug.com/591099 svg/text/text-selection-align-02-b.svg [ Failure Pass ]
+crbug.com/591099 svg/text/text-selection-align-03-b.svg [ Failure Pass ]
 crbug.com/591099 svg/text/text-selection-align-04-b.svg [ Failure Pass ]
-crbug.com/591099 svg/text/text-selection-align-05-b.svg [ Failure ]
+crbug.com/591099 svg/text/text-selection-align-05-b.svg [ Failure Pass ]
 crbug.com/591099 svg/text/text-selection-deco-01-b.svg [ Failure Pass ]
-crbug.com/591099 svg/text/text-selection-fonts-01-t.svg [ Failure ]
-crbug.com/591099 svg/text/text-selection-fonts-02-t.svg [ Failure ]
-crbug.com/591099 svg/text/text-selection-intro-05-t.svg [ Failure ]
-crbug.com/591099 svg/text/text-selection-path-01-b.svg [ Failure ]
+crbug.com/591099 svg/text/text-selection-fonts-01-t.svg [ Failure Pass ]
+crbug.com/591099 svg/text/text-selection-fonts-02-t.svg [ Failure Pass ]
+crbug.com/591099 svg/text/text-selection-intro-05-t.svg [ Failure Pass ]
+crbug.com/591099 svg/text/text-selection-path-01-b.svg [ Failure Pass ]
 crbug.com/591099 svg/text/text-selection-spacing-01-b.svg [ Failure Pass ]
-crbug.com/591099 svg/text/text-selection-text-01-b.svg [ Failure ]
-crbug.com/591099 svg/text/text-selection-text-04-t.svg [ Failure ]
-crbug.com/591099 svg/text/text-selection-text-06-t.svg [ Failure ]
-crbug.com/591099 svg/text/text-selection-text-07-t.svg [ Failure ]
+crbug.com/591099 svg/text/text-selection-text-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/text/text-selection-text-04-t.svg [ Failure Pass ]
+crbug.com/591099 svg/text/text-selection-text-06-t.svg [ Failure Pass ]
+crbug.com/591099 svg/text/text-selection-text-07-t.svg [ Failure Pass ]
 crbug.com/591099 svg/text/text-selection-text-08-b.svg [ Failure Pass ]
+crbug.com/591099 svg/text/text-selection-tselect-01-b.svg [ Failure Pass ]
 crbug.com/591099 svg/text/text-selection-tselect-02-f.svg [ Failure Pass ]
-crbug.com/591099 svg/text/text-selection-tspan-01-b.svg [ Failure ]
-crbug.com/591099 svg/text/text-selection-ws-01-t.svg [ Failure ]
+crbug.com/591099 svg/text/text-selection-tspan-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/text/text-selection-ws-01-t.svg [ Failure Pass ]
 crbug.com/591099 svg/text/tspan-multiple-outline.svg [ Failure ]
 crbug.com/591099 svg/text/unpaired-surrogate-with-trailing-char-crash.html [ Failure ]
 crbug.com/591099 svg/text/white-space-pre-wrap-whitespace-only-crash.html [ Failure ]
@@ -19373,272 +19552,291 @@
 crbug.com/591099 svg/transforms/transform-boxsize-usecounter-no-trigger-2.html [ Crash ]
 crbug.com/591099 svg/transforms/transform-origin-css-property.xhtml [ Failure ]
 crbug.com/591099 svg/transforms/transform-origin-presentation-attribute.xhtml [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-02-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-03-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-04-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-02-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-03-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-04-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-05-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-06-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-07-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-06-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-07-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-08-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-09-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-09-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-10-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-11-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-12-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-13-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-14-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-11-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-12-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-13-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-14-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-15-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-16-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-17-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-20-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-16-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-17-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-20-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-21-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-22-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-23-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-24-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-22-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-23-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-24-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-25-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-26-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-27-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-28-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-26-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-27-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-28-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-29-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-30-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-31-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-32-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-31-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-32-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-33-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-34-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-36-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-37-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-40-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-41-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-44-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-46-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-34-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-36-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-37-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-40-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-41-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-44-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-46-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-52-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-60-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-60-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-61-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-62-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-63-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-64-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-65-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-66-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-67-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-68-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-69-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-70-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-77-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-78-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-80-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-81-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-82-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-62-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-63-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-64-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-65-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-66-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-67-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-68-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-69-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-70-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-77-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-78-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-80-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-81-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-82-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-83-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-84-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-85-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/color-prof-01-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/color-prop-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/color-prop-02-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/color-prop-03-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-84-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/animate-elem-85-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/color-prof-01-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/color-prop-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/color-prop-02-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/color-prop-03-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/coords-coord-01-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/coords-coord-02-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/coords-trans-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/coords-trans-02-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/coords-coord-02-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/coords-trans-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/coords-trans-02-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/coords-trans-03-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/coords-trans-04-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/coords-trans-05-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/coords-units-01-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/coords-trans-04-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/coords-trans-05-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/coords-trans-06-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/coords-units-01-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/coords-units-02-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/coords-viewattr-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/coords-viewattr-02-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/coords-viewattr-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/coords-viewattr-02-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/coords-viewattr-03-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/extend-namespace-01-f.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/filters-blend-01-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/filters-color-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/filters-composite-02-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/filters-color-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/filters-composite-02-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/filters-conv-01-f.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/filters-diffuse-01-f.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/filters-diffuse-01-f.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/filters-example-01-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/filters-gauss-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/filters-image-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/filters-light-04-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/filters-morph-01-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/filters-offset-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/filters-specular-01-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/filters-tile-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/filters-turb-01-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/filters-turb-02-f.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/filters-gauss-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/filters-image-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/filters-light-01-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/filters-light-04-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/filters-morph-01-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/filters-offset-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/filters-specular-01-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/filters-tile-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/filters-turb-01-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/filters-turb-02-f.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/fonts-elem-03-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/fonts-elem-04-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/fonts-elem-07-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/fonts-elem-04-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/fonts-elem-07-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/interact-cursor-01-f.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/interact-dom-01-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/interact-events-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/interact-order-01-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/interact-events-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/interact-order-01-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/interact-order-02-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/interact-order-03-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/interact-order-03-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/interact-zoom-01-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/linking-a-01-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/linking-a-01-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/linking-a-02-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/linking-a-03-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/linking-a-04-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/linking-a-05-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/linking-a-03-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/linking-a-04-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/linking-a-05-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/linking-a-07-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/linking-uri-02-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/linking-uri-03-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/masking-intro-01-f.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/masking-intro-01-f.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/masking-mask-01-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/masking-opacity-01-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/masking-opacity-01-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/masking-path-01-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/masking-path-02-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/masking-path-03-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/masking-path-02-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/masking-path-03-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/masking-path-04-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/masking-path-05-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/metadata-example-01-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/masking-path-05-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/metadata-example-01-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/painting-fill-01-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/painting-fill-02-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/painting-fill-02-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/painting-fill-03-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/painting-fill-04-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/painting-fill-05-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/painting-marker-01-f.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/painting-fill-04-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/painting-fill-05-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/painting-marker-01-f.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/painting-marker-02-f.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/painting-marker-03-f.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/painting-stroke-01-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/painting-stroke-02-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/painting-stroke-01-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/painting-stroke-02-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/painting-stroke-03-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/painting-stroke-04-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/painting-stroke-07-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/paths-data-01-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/paths-data-02-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/paths-data-03-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/paths-data-04-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/paths-data-05-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/painting-stroke-07-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/paths-data-01-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/paths-data-02-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/paths-data-03-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/paths-data-04-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/paths-data-05-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/paths-data-06-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/paths-data-07-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/paths-data-08-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/paths-data-09-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/paths-data-07-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/paths-data-08-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/paths-data-09-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/paths-data-10-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/paths-data-12-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/paths-data-13-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/paths-data-14-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/paths-data-15-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-01-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/paths-data-12-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/paths-data-13-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/paths-data-14-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/paths-data-15-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-01-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-02-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-03-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-04-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-05-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-05-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-06-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-07-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-08-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-10-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-08-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-09-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-10-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-11-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-12-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-13-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-12-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-13-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-14-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-15-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-15-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-16-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-19-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/pservers-pattern-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/render-elems-01-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/render-elems-02-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-18-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/pservers-grad-19-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/pservers-pattern-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/render-elems-01-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/render-elems-02-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/render-elems-06-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/render-elems-07-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/render-elems-08-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/render-groups-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/render-groups-03-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/script-handle-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/script-handle-02-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/render-elems-08-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/render-groups-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/render-groups-03-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/script-handle-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/script-handle-02-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/script-handle-03-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/script-handle-04-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/color-prop-05-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/coords-dom-01-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/coords-dom-02-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/coords-dom-03-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/coords-dom-04-f.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/script-handle-04-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/color-prop-05-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/coords-dom-01-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/coords-dom-02-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/coords-dom-03-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/coords-dom-04-f.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1-SE/coords-units-03-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/filters-felem-01-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/filters-felem-01-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1-SE/filters-image-03-f.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1-SE/filters-image-05-f.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1-SE/interact-pointer-03-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/linking-uri-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/painting-control-04-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/painting-marker-05-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/painting-marker-07-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/pservers-grad-17-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/pservers-grad-20-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/linking-uri-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/painting-control-04-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/painting-marker-05-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/painting-marker-06-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/painting-marker-07-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/pservers-grad-17-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/pservers-grad-20-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1-SE/pservers-pattern-03-f.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1-SE/pservers-pattern-04-f.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/struct-dom-11-f.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/struct-dom-11-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/struct-use-11-f.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1-SE/struct-use-14-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/styling-css-04-f.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1-SE/styling-pres-02-f.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/svgdom-over-01-f.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/svgdom-over-01-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/text-intro-02-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1-SE/text-intro-05-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/text-intro-09-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/text-tspan-02-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/types-dom-02-f.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/text-intro-09-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/text-tspan-02-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/types-dom-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/types-dom-02-f.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1-SE/types-dom-03-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/types-dom-04-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/types-dom-04-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1-SE/types-dom-05-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1-SE/types-dom-07-f.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/shapes-circle-01-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/shapes-circle-02-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1-SE/types-dom-07-f.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/shapes-circle-01-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/shapes-circle-02-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/shapes-ellipse-01-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/shapes-ellipse-02-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/shapes-intro-01-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/shapes-line-01-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/shapes-polygon-01-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/shapes-polygon-01-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/shapes-polyline-01-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/shapes-rect-01-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/shapes-rect-02-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/shapes-rect-02-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/struct-cond-01-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-cond-02-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-cond-03-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-defs-01-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-dom-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-dom-02-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-cond-02-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-cond-03-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-defs-01-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-dom-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-dom-02-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/struct-dom-03-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/struct-dom-04-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/struct-dom-05-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/struct-dom-06-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-frag-01-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-frag-02-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-frag-03-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-frag-01-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-frag-02-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-frag-03-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/struct-frag-04-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-frag-05-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/struct-frag-06-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/struct-group-01-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-group-02-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-group-03-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-image-01-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-image-02-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-image-04-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-group-02-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-group-03-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-image-01-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-image-02-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-image-03-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-image-04-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/struct-image-05-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/struct-image-06-t.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-image-08-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-image-09-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-image-10-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-symbol-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-use-01-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/struct-use-03-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-image-08-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-image-09-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-image-10-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-symbol-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-use-01-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/struct-use-03-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/styling-css-01-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/styling-css-02-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/styling-css-03-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/styling-css-05-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/styling-css-06-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/styling-css-05-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/styling-css-06-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/styling-inherit-01-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/styling-pres-01-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-align-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-align-03-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-align-04-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-align-05-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-align-06-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-deco-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-fonts-01-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-fonts-02-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-intro-01-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/styling-pres-01-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-align-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-align-02-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-align-03-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-align-04-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-align-05-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-align-06-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-align-08-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-deco-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-fonts-01-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-fonts-02-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-intro-01-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/text-intro-03-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-intro-04-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-intro-04-t.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/text-path-01-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-spacing-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-text-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-text-03-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-text-04-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-text-05-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-text-06-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-text-07-t.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-spacing-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-text-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-text-03-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-text-04-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-text-05-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-text-06-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-text-07-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-text-08-b.svg [ Failure Pass ]
 crbug.com/591099 svg/W3C-SVG-1.1/text-tselect-01-b.svg [ Failure Pass ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-tspan-01-b.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-ws-01-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/text-ws-02-t.svg [ Failure ]
-crbug.com/591099 svg/W3C-SVG-1.1/types-basicDOM-01-b.svg [ Failure ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-tspan-01-b.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-ws-01-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/text-ws-02-t.svg [ Failure Pass ]
+crbug.com/591099 svg/W3C-SVG-1.1/types-basicDOM-01-b.svg [ Failure Pass ]
 crbug.com/591099 svg/wicd/rightsizing-grid.html [ Failure ]
 crbug.com/591099 svg/wicd/test-rightsizing-a.xhtml [ Failure ]
 crbug.com/591099 svg/wicd/test-rightsizing-b.xhtml [ Failure ]
@@ -19646,10 +19844,10 @@
 crbug.com/591099 svg/wicd/test-scalable-background-image2.xhtml [ Failure ]
 crbug.com/591099 svg/zoom/page/zoom-background-images.html [ Failure ]
 crbug.com/591099 svg/zoom/page/zoom-clip-path.html [ Failure ]
-crbug.com/591099 svg/zoom/page/zoom-css-transforms.svg [ Failure ]
+crbug.com/591099 svg/zoom/page/zoom-css-transforms.svg [ Failure Pass ]
 crbug.com/591099 svg/zoom/page/zoom-getBoundingClientRect.xhtml [ Failure ]
 crbug.com/591099 svg/zoom/page/zoom-hixie-mixed-008.xml [ Failure ]
-crbug.com/591099 svg/zoom/page/zoom-img-preserveAspectRatio-support-1.html [ Failure ]
+crbug.com/591099 svg/zoom/page/zoom-img-preserveAspectRatio-support-1.html [ Failure Pass ]
 crbug.com/591099 svg/zoom/page/zoom-replaced-intrinsic-ratio-001.htm [ Failure ]
 crbug.com/591099 svg/zoom/page/zoom-svg-as-background-with-relative-size-and-viewBox.html [ Failure ]
 crbug.com/591099 svg/zoom/page/zoom-svg-as-background-with-relative-size.html [ Failure ]
@@ -19670,86 +19868,86 @@
 crbug.com/591099 tables/layering/paint-test-layering-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/45621.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug10009.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug100334.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug10039.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug101674.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug102145-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug102145-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug102145-3.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug102145-4.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug10269-1.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug100334.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug10039.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug101674.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug102145-1.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug102145-2.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug102145-3.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug102145-4.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug10269-1.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug10296-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug10296-2.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug10296-2.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug1055-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug10565.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug106158-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug106158-2.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug106158-1.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug106158-2.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug10633.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug1067-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug106795.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug108340.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug1067-1.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug106795.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug108340.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug109043.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug11026.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug110566.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug11321.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug11321.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug113235-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug113235-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug113235-3.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug11384q.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug11384s.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug11944.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug119786.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug11944.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug119786.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug12008.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug120107.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug120107.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug120364.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug1220.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug1220.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug12268.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug12384.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug123862.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug12384.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug123862.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug1261.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug126742.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug12709.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug12709.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug1271.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug127267.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug128229.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug127267.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug128229.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug12908-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug12908-2.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug12908-2.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug12910.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug1296.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug1296.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug1302.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug131020-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug131020.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug131020_iframe.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug13105.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug13118.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug13169.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug13169.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug1318.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug13196.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug13196.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug133756-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug133756-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug133948.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug13484.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug13526.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug137388-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug137388-2.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug13484.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug13526.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug137388-1.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug137388-2.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug137388-3.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug138725.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug139524-1.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug139524-1.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug139524-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug139524-3.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug139524-4.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug139524-3.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug139524-4.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug14159-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug14159-3.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug14159-3.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug1430.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug14323.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug145572.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug1474.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug1474.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug149275-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug149275-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug14929.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug15247.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug14929.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug15247.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug154780.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug15544.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug15544.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug157890.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug15933.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug16012.html [ Failure ]
@@ -19759,216 +19957,217 @@
 crbug.com/591099 tables/mozilla/bugs/bug17138.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug17168.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug175455-4.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug17548.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug17548.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug17587.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug1800.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug1802.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug1802s.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug1809.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug1818-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug1818-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug1818-3.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug1818-4.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug1818-5.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug1818-1.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug1818-2.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug1818-3.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug1818-4.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug1818-5.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug1828.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug18359.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug18440.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug18558.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug18558.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug18664.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug18955.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug19061-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug19061-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug19356.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug19356.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug19599.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug196870.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug2050.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug20579.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug2065.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug2065.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug20804.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug2123.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug2123.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug215629.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug21918.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug219693-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug219693-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug22019.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug220536.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug220536.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug221784-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug221784-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug222336.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug222467.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug22513.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug2267.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug2296.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug23072.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug222336.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug222467.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug22513.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug2267.html [ Crash Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug2296.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug23072.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug23151.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug23235.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug23299.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug24200.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug24503.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug24503.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug24627.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug24661.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug24661.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug2469.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug2479-1.html [ Crash Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug2479-1.html [ Crash Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug2479-3.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug2479-4.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug2479-4.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug24880.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug25004.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug25074.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug25074.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug25086.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug2509.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug2516.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug25367.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug25663.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug2509.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug2516.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug25367.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug25663.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug2585.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug26178.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug26553.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug26178.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug26553.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug2684.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug269566.html [ Crash Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug27038-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug27038-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug27038-3.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug275625.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug275625.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug2773.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug278385.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug27993-1.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug27993-1.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug2886-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug2886.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug28928.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug29058-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug29058-3.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug29157.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug29058-1.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug29058-3.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug29157.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug29314.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug29326.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug29429.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug29429.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug2947.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug2954.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug2954.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug2962.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug2973.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug2981-1.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug2973.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug2981-1.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug2981-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug2997.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug30273.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug30273.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug30332-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug30332-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug3037-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug30418.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug3037-2.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug30418.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug30559.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug30692.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug30985.html [ Crash Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug3103.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug3103.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug3191.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug32205-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug32205-3.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug32205-5.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug32205-5.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug32447.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug3260.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug3263.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug32841.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug3260.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug3263.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug32841.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug3309-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug3309-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug33137.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug33855.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug34176.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug33855.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug34176.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug34538.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug35662.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug3681-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug3681-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug3718.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug35662.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug3681-1.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug3681-2.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug3718.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug38916.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug39209.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug3977.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug4093.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug41890.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug41890.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug42187.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug42443.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug42443.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug4284.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug43039.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug43204.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug4382.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug43854-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug43854-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug4385.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug4385.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug4427.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug4429.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug4429.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug44505.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug44523.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug4501.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug4501.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug45055-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug45055.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug4520.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug45055.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug4520.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug4523.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug4527.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug45350.html [ Crash Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug45486.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug45350.html [ Crash Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug45486.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug4576.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug46268-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug46268-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug46268-5.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug46268.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug46268-1.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug46268-2.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug46268-5.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug46268.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug46368-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug46368-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug46480-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug46480-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug46623-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug46623-2.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug46623-1.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug46623-2.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug46924.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug46944.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug4739.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug47432.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug46944.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug4739.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug47432.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug4849-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug4849.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug4849.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug48827.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug50695-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug50695-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug51037.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug51140.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug51727.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug5188.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug52505.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug52506.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug53690-1.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug5188.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug52505.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug52506.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug53690-1.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug53690-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug53891.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug54450.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug53891.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug54450.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug5538.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug55527.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug55545.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug55527.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug55545.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug55694.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug56201.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug56405.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug56201.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug56405.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug56563.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug57300.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug57378.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug57300.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug57378.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug57828-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug57828.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug5797.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug5798.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug5799.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug5835.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug5838.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug5838.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug58402-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug59354.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug60013.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug60749.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug60804.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug60807.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug59354.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug60013.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug60749.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug60804.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug60807.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug60992.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug6184.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug625.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug6304.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug63785.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug641-1.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug63785.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug641-1.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug641-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug647.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug650.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug650.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug6674.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug67864.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug67915-1.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug67864.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug67915-1.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug68912.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug68998.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug68998.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug69187.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug69382-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug69382-2.html [ Crash Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug709.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug69382-1.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug69382-2.html [ Crash Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug709.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug7112-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug7112-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug7121-1.html [ Failure ]
@@ -19976,14 +20175,14 @@
 crbug.com/591099 tables/mozilla/bugs/bug73321.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug7342.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug7471.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug75250.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug75250.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug7714.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug78162.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug80762-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug81934.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug78162.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug80762-1.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/bugs/bug81934.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug82946-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug82946-2.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug8361.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug8361.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug83786.html [ Crash Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug8381.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug86220.html [ Failure ]
@@ -19993,21 +20192,22 @@
 crbug.com/591099 tables/mozilla/bugs/bug88524.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug8858.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug8950.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug9072.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug9072.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug9123-1.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug9123-2.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug92143.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug92647-2.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug92647-2.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug92868.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug93363.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug96334.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug96343.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug96343.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug965.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug97138.html [ Failure ]
-crbug.com/591099 tables/mozilla/bugs/bug97383.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug97383.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/bugs/bug98196.html [ Failure ]
 crbug.com/591099 tables/mozilla/bugs/bug9879-1.html [ Failure ]
-crbug.com/591099 tables/mozilla/collapsing_borders/bug127040.html [ Failure ]
+crbug.com/591099 tables/mozilla/bugs/bug99948.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/collapsing_borders/bug127040.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/collapsing_borders/bug41262-3.html [ Crash Failure ]
 crbug.com/591099 tables/mozilla/collapsing_borders/bug41262-4.html [ Failure ]
 crbug.com/591099 tables/mozilla/core/bloomberg.html [ Failure ]
@@ -20018,7 +20218,7 @@
 crbug.com/591099 tables/mozilla/core/col_span.html [ Failure ]
 crbug.com/591099 tables/mozilla/core/col_widths_auto_autoFix.html [ Failure ]
 crbug.com/591099 tables/mozilla/core/col_widths_auto_autoFixPer.html [ Failure ]
-crbug.com/591099 tables/mozilla/core/col_widths_auto_auto.html [ Failure ]
+crbug.com/591099 tables/mozilla/core/col_widths_auto_auto.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/core/col_widths_auto_autoPer.html [ Failure ]
 crbug.com/591099 tables/mozilla/core/col_widths_auto_fix.html [ Failure ]
 crbug.com/591099 tables/mozilla/core/col_widths_auto_fixPer.html [ Failure ]
@@ -20066,83 +20266,83 @@
 crbug.com/591099 tables/mozilla/dom/insertRowsExpand1.html [ Failure ]
 crbug.com/591099 tables/mozilla/dom/insertRowsRebuild1.html [ Failure ]
 crbug.com/591099 tables/mozilla/dom/tableDom.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/97619.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/97619.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug1010.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug101759.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug104898.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug1055-2.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug106336.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug106336.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug106966.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug1128.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug11331.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug11945.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug11945.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug1262.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug131020-3.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug14007-1.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug14007-1.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug14007-2.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug14159-2.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug14159-2.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug14489.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug1647.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug1725.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug17826.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug18770.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug1647.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug1725.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug17826.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug18770.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug19526.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug21518.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug220653.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug22122.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug23847.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug2479-5.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug24880-1.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug24880-1.html [ Crash Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug25707.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug27993-2.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug29058-2.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug27993-2.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug29058-2.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-10.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-11.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-12.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-11.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-12.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-13.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-14.html [ Crash Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-15.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-16.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-17.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-18.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-1.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-2.html [ Crash Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-3.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-4.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-5.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-6.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-7.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-8.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-9.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-1.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-2.html [ Crash Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-3.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-4.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-5.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-6.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-7.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-8.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug3166-9.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug32205-1.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug32205-4.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug33784.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug32205-4.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug33784.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug42043.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug4294.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug45621.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug45621.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug47163.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug51000.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug56024.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug56024.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug58402-2.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug59252.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug59252.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug61042-1.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug61042-2.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug65372.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug67915-2.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug6933.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug6933.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug7113.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug7121-2.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug7121-2.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug72393.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug7243.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug73629.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug80762-2.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug73629.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug80762-2.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug8499.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug85016.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug89315.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug91057.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/bugs/bug92647-1.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/bugs/bug92647-1.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/bugs/bug9879-1.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/collapsing_borders/bug41262-1.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/collapsing_borders/bug41262-1.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/collapsing_borders/bug41262-5.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/collapsing_borders/bug41262-6.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/core/backgrounds.html [ Failure ]
@@ -20159,13 +20359,13 @@
 crbug.com/591099 tables/mozilla_expected_failures/dom/insertTbodyExpand1.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/dom/insertTbodyRebuild1.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/backgr_fixed-bg.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/marvin/table_frame_above.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/marvin/table_frame_below.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/marvin/table_frame_hsides.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/marvin/table_frame_lhs.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/marvin/table_frame_rhs.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/marvin/table_frame_void.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/marvin/table_frame_vsides.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/marvin/table_frame_above.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/marvin/table_frame_below.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/marvin/table_frame_hsides.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/marvin/table_frame_lhs.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/marvin/table_frame_rhs.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/marvin/table_frame_void.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/marvin/table_frame_vsides.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_caption_bottom.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_caption_hidden.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_caption_hidden_table.html [ Failure ]
@@ -20173,9 +20373,9 @@
 crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_caption_left.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_caption_right.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_caption_top.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_row.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_tbody.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_hidden_table.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody.html [ Failure ]
@@ -20192,19 +20392,19 @@
 crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_td_valign_bottom.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_td_valign_middle.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/table_overflow_td_valign_top.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/marvin/table_rules_cols.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/marvin/table_rules_rows.html [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/marvin/table_rules_cols.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/marvin/table_rules_rows.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/tables_caption_align_left.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/tables_caption_align_right.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/marvin/tables_cellspacing_pct.html [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/marvin/x_caption_align_right.xml [ Failure ]
-crbug.com/591099 tables/mozilla_expected_failures/marvin/x_table_rules_rows.xml [ Failure ]
+crbug.com/591099 tables/mozilla_expected_failures/marvin/x_caption_align_right.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla_expected_failures/marvin/x_table_rules_rows.xml [ Failure Pass ]
 crbug.com/591099 tables/mozilla_expected_failures/other/empty_cells.html [ Failure ]
 crbug.com/591099 tables/mozilla_expected_failures/other/test4.html [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/body_col.html [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/body_tbody.html [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/body_tfoot.html [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/body_thead.html [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/body_col.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/body_tbody.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/body_tfoot.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/body_thead.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/colgroup_align_center.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/colgroup_align_justify.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/colgroup_align_left.html [ Failure ]
@@ -20217,15 +20417,15 @@
 crbug.com/591099 tables/mozilla/marvin/colgroup_width_pct.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/colgroup_width_px.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/col_span.html [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/table_frame_border.html [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/table_frame_box.html [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/table_frame_border.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/table_frame_box.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/table_overflow_hidden_td.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/table_overflow_td_dynamic_deactivate.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/table_row_align_center.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/table_row_align_left.html [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/table_rules_all.html [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/table_rules_groups.html [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/table_rules_none.html [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/table_rules_all.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/table_rules_groups.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/table_rules_none.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/tables_align_center.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/tables_align_left.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/tables_align_right.html [ Failure ]
@@ -20269,7 +20469,7 @@
 crbug.com/591099 tables/mozilla/marvin/tables_class.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/tables_id.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/tables_row_th_nowrap.html [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/tables_style.html [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/tables_style.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/tables_td_colspan.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/tables_td_rowspan.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/tables_td_width.html [ Failure ]
@@ -20287,7 +20487,7 @@
 crbug.com/591099 tables/mozilla/marvin/tfoot_align_center.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/tfoot_align_char.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/tfoot_align_justify.html [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/tfoot_align_left.html [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/tfoot_align_left.html [ Crash Failure ]
 crbug.com/591099 tables/mozilla/marvin/tfoot_align_right.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/tfoot_char.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/thead_align_center.html [ Failure ]
@@ -20327,81 +20527,84 @@
 crbug.com/591099 tables/mozilla/marvin/tr_bgcolor_white_rgb.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/tr_bgcolor_yellow.html [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/tr_bgcolor_yellow_rgb.html [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_caption_class.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_caption_id.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_caption_style.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_col_align_center.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_col_align_justify.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_col_align_left.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_col_align_right.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_colgroup_align_center.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_colgroup_align_justify.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_colgroup_align_left.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_colgroup_align_right.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_colgroup_span.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_col_span.xml [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/tr_valign_middle.html [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_caption_class.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_caption_id.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_caption_style.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_col_align_center.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_col_align_justify.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_col_align_left.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_col_align_right.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_colgroup_align_center.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_colgroup_align_justify.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_colgroup_align_left.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_colgroup_align_right.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_colgroup_span.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_col_span.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_col_width_rel.xml [ Crash Pass ]
 crbug.com/591099 tables/mozilla/marvin/x_table_align_center.xml [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/x_table_align_left.xml [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/x_table_align_right.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_table_cellpadding_pct.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_table_cellpadding.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_table_cellspacing_pct.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_table_cellspacing.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_table_class.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_table_id.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_table_style.xml [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/x_table_cellpadding_pct.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_table_cellpadding.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_table_cellspacing_pct.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_table_cellspacing.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_table_class.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_table_id.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_table_rules_groups.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_table_style.xml [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/x_table_width_pct.xml [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/x_table_width_px.xml [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/x_table.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_tbody_class.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_tbody_id.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_tbody_style.xml [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/x_tbody_class.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_tbody_id.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_tbody_style.xml [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/x_td_align_center.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_td_align_justify.xml [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/x_td_align_justify.xml [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/x_td_align_left.xml [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/x_td_align_right.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_td_class.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_td_colspan.xml [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/x_td_class.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_td_colspan.xml [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/x_td_height.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_td_id.xml [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/x_td_id.xml [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/x_td_nowrap.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_td_rowspan.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_td_style.xml [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/x_td_rowspan.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_td_style.xml [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/x_td_width.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_tfoot_align_left.xml [ Failure Pass ]
-crbug.com/591099 tables/mozilla/marvin/x_tfoot_class.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_tfoot_id.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_tfoot_style.xml [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/x_tfoot_align_left.xml [ Crash Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_tfoot_class.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_tfoot_id.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_tfoot_style.xml [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/x_th_align_center.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_th_align_justify.xml [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/x_th_align_justify.xml [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/x_th_align_left.xml [ Failure ]
 crbug.com/591099 tables/mozilla/marvin/x_th_align_right.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_th_class.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_th_colspan.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_thead_class.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_thead_id.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_thead_style.xml [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/x_th_class.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_th_colspan.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_thead_class.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_thead_id.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_thead_style.xml [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/x_th_height.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_th_id.xml [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/x_th_id.xml [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/x_th_nowrap.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_th_rowspan.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_th_style.xml [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/x_th_rowspan.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_th_style.xml [ Failure Pass ]
 crbug.com/591099 tables/mozilla/marvin/x_th_width.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_tr_align_center.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_tr_align_justify.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_tr_align_left.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_tr_align_right.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_tr_class.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_tr_id.xml [ Failure ]
-crbug.com/591099 tables/mozilla/marvin/x_tr_style.xml [ Failure ]
-crbug.com/591099 tables/mozilla/other/body_col.html [ Failure ]
+crbug.com/591099 tables/mozilla/marvin/x_tr_align_center.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_tr_align_justify.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_tr_align_left.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_tr_align_right.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_tr_class.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_tr_id.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/marvin/x_tr_style.xml [ Failure Pass ]
+crbug.com/591099 tables/mozilla/other/body_col.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/other/cellspacing.html [ Failure ]
 crbug.com/591099 tables/mozilla/other/cell_widths.html [ Failure ]
 crbug.com/591099 tables/mozilla/other/move_row.html [ Failure ]
-crbug.com/591099 tables/mozilla/other/nested2.html [ Crash Failure ]
+crbug.com/591099 tables/mozilla/other/nested2.html [ Crash Failure Pass ]
 crbug.com/591099 tables/mozilla/other/nestedTables.html [ Failure ]
 crbug.com/591099 tables/mozilla/other/padding.html [ Failure ]
-crbug.com/591099 tables/mozilla/other/slashlogo.html [ Failure ]
+crbug.com/591099 tables/mozilla/other/slashlogo.html [ Failure Pass ]
 crbug.com/591099 tables/mozilla/other/test3.html [ Failure ]
 crbug.com/591099 tables/mozilla/other/test6.html [ Failure ]
 crbug.com/591099 tables/mozilla/other/wa_table_thtd_rowspan.html [ Failure ]
@@ -20977,7 +21180,7 @@
 crbug.com/591099 virtual/disable-spinvalidation/compositing/webgl/webgl-nonpremultiplied-blend.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/compositing/webgl/webgl-reflection.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/compositing/webgl/webgl-repaint.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/compositing/webgl/webgl-with-accelerated-background-color.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/compositing/webgl/webgl-with-accelerated-background-color.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/compositing/will-change/neutral-keyframe-not-decomposed.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/compositing/will-change/parse-will-change.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/compositing/writing-mode-rl-overflow.html [ Failure ]
@@ -21041,11 +21244,11 @@
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/bugzilla-3509.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/bugzilla-5699.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/bugzilla-6278.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/bugzilla-6388.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/bugzilla-6388.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/bugzilla-6473.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/bugzilla-7235.html [ Crash Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/button-checkbox-click-method-repaint.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/canvas-composite-repaint-by-all-imagesource.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/canvas-composite-repaint-by-all-imagesource.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/caret-change-paint-offset-keep-visual.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/caret-contenteditable-content-after.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/caret-invalidation-in-overflow-scroll.html [ Failure ]
@@ -21064,7 +21267,7 @@
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/composited-overflow-with-borderbox-background.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/composited-overflow-with-local-background.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/composited-overflow-with-negative-offset-outline.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/composited-table-row.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/composited-table-row.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/composited-vertical-rl-overflow.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/compositing/background-attachment-local-composited.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/compositing/background-attachment-local-equivalent.html [ Failure ]
@@ -21180,7 +21383,7 @@
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/inline-style-change-in-scrolled-view.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/inline-vertical-lr-overflow.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/inline-vertical-rl-overflow.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/input-overflow-in-table.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/input-overflow-in-table.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/insert-frame.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/intermediate-layout-position-clip.html [ Crash Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/intermediate-layout-position.html [ Failure ]
@@ -21189,7 +21392,7 @@
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/invalidate-caret-before-text-node-update.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/invalidate-caret-in-composited-scrolling-container.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/invalidate-caret-in-non-composited-scrolling-container.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/invalidate-cell-in-row-with-offset.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/invalidate-cell-in-row-with-offset.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/invalidate-descendants-when-receiving-paint-layer.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/invalidate-paint-for-fixed-pos-inside-iframe.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/invalidate-paint-in-iframe-in-composited-layer.html [ Failure ]
@@ -21259,6 +21462,7 @@
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/outline-clip-change.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/outline-containing-image-in-non-standard-mode.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/outline-continuations.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/outline-current-color.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/outline-inset.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/outline-not-affected-by-descendant.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/outline-repaint-glitch.html [ Failure ]
@@ -21329,7 +21533,7 @@
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/scroll-fixed-layer-with-transformed-parent-layer.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/scroll-in-clipped-layer.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/scroll-in-fixed-layer.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/scroll-inside-table-cell.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/scroll-inside-table-cell.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/scroll-in-transformed-layer.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/scroll-relative-table-inside-table-cell.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/scroll-with-transformed-parent-layer.html [ Failure ]
@@ -21345,7 +21549,7 @@
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-rl.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/selection/invalidation-rect-includes-newline.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/selection/invalidation-rect-with-br-includes-newline.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/selection-partial-invalidation-between-blocks.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/selection-partial-invalidation-between-blocks.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/selection/repaint-rect-for-vertical-writing-mode-with-positioned-root.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/selection-rl.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/selection/selection-in-composited-scrolling-container.html [ Failure ]
@@ -21365,7 +21569,7 @@
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/static-to-positioned.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/subpixel-shadow-included-in-invalidation.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/subtree-layoutstate-transform.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/subtree-root-clip-3.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/subtree-root-clip-3.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/subtree-root-skipped.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/svg/absolute-sized-content-with-resources.xhtml [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/svg/add-border-property-on-root.html [ Failure ]
@@ -21375,7 +21579,7 @@
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/svg/animated-svg-as-image-no-fixed-intrinsic-size.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/svg/animated-svg-as-image-offscreen.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/svg/animated-svg-as-image-same-image.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-1.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-2.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/svg/embedded-svg-size-changes.html [ Failure ]
@@ -21406,40 +21610,40 @@
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/svg/transform-focus-ring-repaint.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/svg/use-instanceRoot-event-bubbling.xhtml [ Timeout ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/svg/zoom-foreignObject.svg [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/animated-row-background.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/border-collapse-change-collapse-to-separate.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/border-collapse-change-separate-to-collapse.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-69296.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/animated-row-background.html [ Failure Pass ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/border-collapse-change-collapse-to-separate.html [ Failure Pass ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/border-collapse-change-separate-to-collapse.html [ Failure Pass ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-69296.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-cell-append.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-cell-border-color.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-cell-border-color.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-cell-border-width.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-cell-sl-border-color.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-col-border-color.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-col-border-color.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-col-border-width.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-colgroup-border-color.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-colgroup-border-color.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-colgroup-border-width.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-row-border-width.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-table-border-color.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-table-border-width.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-table-border-color.html [ Failure Pass ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-table-border-width.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/cached-change-tbody-border-width.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-cell-collapsed-border.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-cell-move.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-cell-overflow.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-cell-overflow.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-cell-vertical-overflow.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/collapsed-border-cell-resize.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-collapsed-border.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-extra-bottom-grow.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-outer-border.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-outer-border.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-overflow-auto-in-overflow-auto-scrolled.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-overflow-hidden-in-overflow-hidden-scrolled.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-overflow-scroll-in-overflow-scroll-scrolled.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/resize-table-row-repaint.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-row-bg-change.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-row-bg-change.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-row.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-section-overflow.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-section-repaint.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-shrink-row-repaint.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/table-section-visual-overflow.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table/table-section-visual-overflow.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-two-pass-layout-overpaint.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-writing-modes-h.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/table-writing-modes-v.html [ Failure ]
@@ -21480,7 +21684,7 @@
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/window-resize-no-layout-change2.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/invalidation/window-resize-vertical-writing-mode.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/masks/fieldset-mask.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/masks/table-cell-masks.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/masks/table-cell-masks.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/overflow/background-mask-should-be-recorded-full.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/overflow/interest-rect-change-scroll-down.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/overflow/non-composited-fixed-position-descendant.html [ Failure ]
@@ -21506,7 +21710,7 @@
 crbug.com/591099 virtual/disable-spinvalidation/paint/spellmarkers/inline-spelling-markers-hidpi-composited.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/spellmarkers/inline-spelling-markers-hidpi.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/spellmarkers/inline_spelling_markers.html [ Failure ]
-crbug.com/591099 virtual/disable-spinvalidation/paint/tables/collapsed-border-layered-table-and-cells.html [ Failure ]
+crbug.com/591099 virtual/disable-spinvalidation/paint/tables/collapsed-border-layered-table-and-cells.html [ Failure Pass ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/tables/huge-table-composited-scroll.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/tables/self-painting-row-background-vertical-clipped.html [ Failure ]
 crbug.com/591099 virtual/disable-spinvalidation/paint/tables/tbody-fixedposition.html [ Failure ]
@@ -21537,14 +21741,14 @@
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-closePath-single-point.html [ Crash ]
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-alpha.html [ Failure ]
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-canvas.html [ Failure ]
-crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite.html [ Failure ]
+crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite.html [ Failure Pass ]
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-image.html [ Failure ]
-crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-shadow.html [ Failure ]
+crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-shadow.html [ Failure Pass ]
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-stroke-alpha.html [ Failure ]
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-text-alpha.html [ Failure ]
-crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-transformclip.html [ Failure ]
-crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-video.html [ Failure ]
-crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-video-shadow.html [ Failure ]
+crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-transformclip.html [ Failure Pass ]
+crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-video.html [ Failure Pass ]
+crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-composite-video-shadow.html [ Failure Pass ]
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-createImageBitmap-blob-in-workers.html [ Failure ]
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-createImageBitmap-createPattern.html [ Failure ]
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/canvas-createImageBitmap-data-in-workers.html [ Failure ]
@@ -21686,8 +21890,8 @@
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/texImage-imageBitmap-from-canvas-resize.html [ Crash ]
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/tex-sub-image-cube-maps.html [ Failure ]
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/texture-color-profile.html [ Failure ]
-crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/webgl-composite-modes.html [ Failure ]
-crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/webgl-composite-modes-repaint.html [ Failure ]
+crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/webgl-composite-modes.html [ Failure Pass ]
+crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/webgl-composite-modes-repaint.html [ Failure Pass ]
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/webgl-composite-modes-tabswitching.html [ Failure ]
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/webgl-texture-binding-preserved.html [ Failure ]
 crbug.com/591099 virtual/display_list_2d_canvas/fast/canvas/webgl/webgl-viewport-parameters-preserved.html [ Failure ]
@@ -21714,14 +21918,14 @@
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-closePath-single-point.html [ Crash ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-alpha.html [ Failure ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-canvas.html [ Failure ]
-crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite.html [ Failure ]
+crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite.html [ Failure Pass ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-image.html [ Failure ]
-crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-shadow.html [ Failure ]
+crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-shadow.html [ Failure Pass ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-stroke-alpha.html [ Failure ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-text-alpha.html [ Failure ]
-crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-transformclip.html [ Failure ]
-crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-video.html [ Failure ]
-crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-video-shadow.html [ Failure ]
+crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-transformclip.html [ Failure Pass ]
+crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-video.html [ Failure Pass ]
+crbug.com/591099 virtual/gpu/fast/canvas/canvas-composite-video-shadow.html [ Failure Pass ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-blob-in-workers.html [ Failure ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-createPattern.html [ Failure ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-createImageBitmap-data-in-workers.html [ Failure ]
@@ -21791,7 +21995,7 @@
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-lineDash-input-sequence.html [ Crash ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-lineDash-invalid.html [ Crash ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-lineWidth-intact-after-strokeRect.html [ Crash ]
-crbug.com/591099 virtual/gpu/fast/canvas/canvas-lost-gpu-context.html [ Failure ]
+crbug.com/591099 virtual/gpu/fast/canvas/canvas-lost-gpu-context.html [ Crash Failure ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-negative-size.html [ Failure ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-normalize-string.html [ Failure ]
 crbug.com/591099 virtual/gpu/fast/canvas/canvas-path-context-clip.html [ Crash ]
@@ -21838,9 +22042,11 @@
 crbug.com/591099 virtual/gpu/fast/canvas/image-object-in-canvas.html [ Failure ]
 crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-2d-imageSmoothing-in-worker.html [ Crash Pass ]
 crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-constructor-in-worker.html [ Failure ]
+crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-empty-image-source.html [ Crash Pass ]
 crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-invalid-args-in-worker.html [ Failure ]
 crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-transferable-exceptions.html [ Failure ]
 crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-transferable.html [ Failure ]
+crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-zero-size-readback.html [ Crash Pass ]
 crbug.com/591099 virtual/gpu/fast/canvas/painting-on-bad-canvas.html [ Crash ]
 crbug.com/591099 virtual/gpu/fast/canvas/pattern-with-transform.html [ Crash ]
 crbug.com/591099 virtual/gpu/fast/canvas/pixelated-off-screen.html [ Crash Pass ]
@@ -21867,9 +22073,9 @@
 crbug.com/591099 virtual/gpu/fast/canvas/webgl/texImage-imageBitmap-from-canvas-resize.html [ Crash ]
 crbug.com/591099 virtual/gpu/fast/canvas/webgl/tex-sub-image-cube-maps.html [ Failure ]
 crbug.com/591099 virtual/gpu/fast/canvas/webgl/texture-color-profile.html [ Failure ]
-crbug.com/591099 virtual/gpu/fast/canvas/webgl/webgl-composite-modes.html [ Failure ]
+crbug.com/591099 virtual/gpu/fast/canvas/webgl/webgl-composite-modes.html [ Failure Pass ]
 crbug.com/591099 virtual/gpu/fast/canvas/webgl/webgl-composite-modes-repaint.html [ Failure Pass ]
-crbug.com/591099 virtual/gpu/fast/canvas/webgl/webgl-composite-modes-tabswitching.html [ Failure ]
+crbug.com/591099 virtual/gpu/fast/canvas/webgl/webgl-composite-modes-tabswitching.html [ Failure Pass ]
 crbug.com/591099 virtual/gpu/fast/canvas/webgl/webgl-texture-binding-preserved.html [ Failure ]
 crbug.com/591099 virtual/gpu/fast/canvas/webgl/webgl-viewport-parameters-preserved.html [ Failure ]
 crbug.com/591099 virtual/gpu/fast/canvas/zero-size-fill-rect.html [ Crash ]
@@ -21883,7 +22089,7 @@
 crbug.com/591099 virtual/gpu-rasterization/images/animated-background-image-crash.html [ Failure ]
 crbug.com/591099 virtual/gpu-rasterization/images/color-jpeg-with-color-profile.html [ Failure ]
 crbug.com/591099 virtual/gpu-rasterization/images/color-profile-background-image-cover.html [ Failure ]
-crbug.com/591099 virtual/gpu-rasterization/images/color-profile-background-image-cross-fade.html [ Failure ]
+crbug.com/591099 virtual/gpu-rasterization/images/color-profile-background-image-cross-fade.html [ Crash Failure ]
 crbug.com/591099 virtual/gpu-rasterization/images/color-profile-background-image-cross-fade-png.html [ Failure ]
 crbug.com/591099 virtual/gpu-rasterization/images/color-profile-background-image-repeat.html [ Failure ]
 crbug.com/591099 virtual/gpu-rasterization/images/color-profile-background-image-space.html [ Failure ]
@@ -21910,8 +22116,8 @@
 crbug.com/591099 virtual/gpu-rasterization/images/color-profile-munsell-srgb-to-srgb.html [ Failure ]
 crbug.com/591099 virtual/gpu-rasterization/images/color-profile-svg-foreign-object.html [ Failure ]
 crbug.com/591099 virtual/gpu-rasterization/images/content-url-broken-image-with-alt-text.html [ Crash Pass ]
-crbug.com/591099 virtual/gpu-rasterization/images/content-url-image-with-alt-text-dynamic-2.html [ Crash ]
-crbug.com/591099 virtual/gpu-rasterization/images/crash-when-fallback-content-deleted.html [ Crash ]
+crbug.com/591099 virtual/gpu-rasterization/images/content-url-image-with-alt-text-dynamic-2.html [ Crash Pass ]
+crbug.com/591099 virtual/gpu-rasterization/images/crash-when-fallback-content-deleted.html [ Crash Pass ]
 crbug.com/591099 virtual/gpu-rasterization/images/cross-fade-background-size.html [ Failure ]
 crbug.com/591099 virtual/gpu-rasterization/images/cross-fade-blending.html [ Failure ]
 crbug.com/591099 virtual/gpu-rasterization/images/cross-fade-invalidation.html [ Failure ]
@@ -22002,25 +22208,29 @@
 crbug.com/591099 virtual/gpu-rasterization/images/zoomed-img-size.html [ Failure ]
 crbug.com/591099 virtual/gpu-rasterization/images/zoomed-offset-size.html [ Crash ]
 crbug.com/591099 virtual/mojo-loading/http/tests/appcache/access-via-redirect.php [ Pass Timeout ]
-crbug.com/591099 virtual/mojo-loading/http/tests/appcache/main-resource-hash.html [ Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/appcache/fallback.html [ Pass Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/appcache/main-resource-hash.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/appcache/non-html.xhtml [ Pass Timeout ]
-crbug.com/591099 virtual/mojo-loading/http/tests/appcache/remove-cache.html [ Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/appcache/remove-cache.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/appcache/top-frame-1.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/appcache/update-cache.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/appcache/whitelist-wildcard.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/fetch/referrer/origin-when-cross-origin-serviceworker-from-document.html [ Crash Pass ]
-crbug.com/591099 virtual/mojo-loading/http/tests/filesystem/input-display.html [ Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/filesystem/input-display.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/filesystem/workers/resolve-url.html [ Failure Pass ]
 crbug.com/591099 virtual/mojo-loading/http/tests/inspector/appcache/appcache-iframe-manifests.html [ Pass Timeout ]
-crbug.com/591099 virtual/mojo-loading/http/tests/inspector/appcache/appcache-manifest-with-non-existing-file.html [ Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/inspector/appcache/appcache-manifest-with-non-existing-file.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/inspector/appcache/appcache-swap.html [ Pass Timeout ]
-crbug.com/591099 virtual/mojo-loading/http/tests/inspector/bindings/bindings-multiple-frames.html [ Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/inspector/bindings/bindings-multiple-frames.html [ Pass Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/inspector/elements/styles/xsl-transformed.xml [ Pass Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/inspector-enabled/console-log-before-frame-navigation.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/inspector/network/network-disable-cache-xhrs.html [ Pass Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/inspector/network/network-empty-xhr.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/inspector/network/network-filters.html [ Failure Pass ]
-crbug.com/591099 virtual/mojo-loading/http/tests/inspector/network/network-filters-internals.html [ Failure Timeout ]
-crbug.com/591099 virtual/mojo-loading/http/tests/inspector/network/request-parameters-decoding.html [ Timeout ]
-crbug.com/591099 virtual/mojo-loading/http/tests/inspector/network/waterfall-images.html [ Failure ]
-crbug.com/591099 virtual/mojo-loading/http/tests/inspector/persistence/persistence-move-breakpoints-on-reload.html [ Failure ]
+crbug.com/591099 virtual/mojo-loading/http/tests/inspector/network/network-filters-internals.html [ Failure Pass Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/inspector/network/request-parameters-decoding.html [ Pass Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/inspector/network/waterfall-images.html [ Failure Pass ]
+crbug.com/591099 virtual/mojo-loading/http/tests/inspector/persistence/persistence-move-breakpoints-on-reload.html [ Failure Pass ]
 crbug.com/591099 virtual/mojo-loading/http/tests/inspector-protocol/access-inspected-object.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/inspector-protocol/cookies-protocol-test.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/inspector-protocol/network-data-length.html [ Pass Timeout ]
@@ -22030,13 +22240,17 @@
 crbug.com/591099 virtual/mojo-loading/http/tests/inspector-protocol/request-mixed-content-status-optionally-blockable.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/inspector-protocol/request-referrer-policy.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/inspector/resource-tree/resource-tree-document-url.html [ Pass Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/inspector/resource-tree/resource-tree-htmlimports.html [ Pass Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/inspector/resource-tree/resource-tree-no-xhrs.html [ Crash Pass ]
 crbug.com/591099 virtual/mojo-loading/http/tests/inspector/search/search-in-static.html [ Pass Timeout ]
-crbug.com/591099 virtual/mojo-loading/http/tests/inspector/search/sources-search-scope.html [ Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/inspector/search/source-frame-replace-2.html [ Pass Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/inspector/search/sources-search-scope.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/inspector/service-workers/service-worker-manager.html [ Failure Pass ]
+crbug.com/591099 virtual/mojo-loading/http/tests/inspector/service-workers/service-workers-redundant.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/inspector-unit/test-failure.js [ Failure Pass ]
 crbug.com/591099 virtual/mojo-loading/http/tests/inspector/workers-on-navigation.html [ Failure Pass ]
 crbug.com/591099 virtual/mojo-loading/http/tests/misc/resource-timing-sizes-cache-worker.html [ Failure Pass ]
-crbug.com/591099 virtual/mojo-loading/http/tests/misc/resource-timing-sizes-redirect-worker.html [ Failure ]
+crbug.com/591099 virtual/mojo-loading/http/tests/misc/resource-timing-sizes-redirect-worker.html [ Failure Pass ]
 crbug.com/591099 virtual/mojo-loading/http/tests/permissions/chromium/test-request-sharedworker.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/push_messaging/application-server-key-format-test.html [ Failure Pass ]
 crbug.com/591099 virtual/mojo-loading/http/tests/push_messaging/subscribe-failure-mismatched-sender-id.html [ Failure Pass ]
@@ -22044,11 +22258,16 @@
 crbug.com/591099 virtual/mojo-loading/http/tests/security/contentSecurityPolicy/cascade/same-origin-with-own-policy.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/security/contentSecurityPolicy/cascade/same-origin-with-own-policy-window-open.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/security/contentSecurityPolicy/filesystem-urls-match-self.html [ Pass Timeout ]
-crbug.com/591099 virtual/mojo-loading/http/tests/security/contentSecurityPolicy/register-bypassing-scheme.html [ Crash ]
+crbug.com/591099 virtual/mojo-loading/http/tests/security/contentSecurityPolicy/register-bypassing-scheme.html [ Crash Pass ]
 crbug.com/591099 virtual/mojo-loading/http/tests/security/contentSecurityPolicy/register-bypassing-scheme-partial.html [ Crash Pass ]
+crbug.com/591099 virtual/mojo-loading/http/tests/security/cors-rfc1918/addressspace-document-csp-appcache.html [ Pass Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/security/cross-frame-mouse-source-capabilities.html [ Pass Timeout ]
+crbug.com/591099 virtual/mojo-loading/http/tests/security/filesystem-iframe-from-remote.html [ Pass Timeout ]
 crbug.com/591099 virtual/mojo-loading/http/tests/security/media-element-audio-source-node-cross-origin-allowed.html [ Failure Pass ]
 crbug.com/591099 virtual/mojo-loading/http/tests/security/media-element-audio-source-node-cross-origin-with-credentials.html [ Failure Pass ]
+crbug.com/591099 virtual/mojo-loading/http/tests/security/media-element-audio-source-node-same-origin.html [ Failure Pass ]
 crbug.com/591099 virtual/mojo-loading/http/tests/serviceworker/chromium/unregister-on-detached-iframe.html [ Crash Pass ]
+crbug.com/591099 virtual/mojo-loading/http/tests/serviceworker/ServiceWorkerGlobalScope/registration-attribute.html [ Failure Pass ]
 crbug.com/591099 virtual/mojo-localstorage/external/wpt/webstorage/event_no_duplicates.html [ Crash ]
 crbug.com/591099 virtual/mojo-localstorage/storage/domstorage/localstorage/missing-arguments.html [ Failure ]
 crbug.com/591099 virtual/mse-1mb-buffers/http/tests/media/media-source/stream_memory_tests/mediasource-appendbuffer-quota-exceeded-1mb-buffers.html [ Crash ]
@@ -22158,7 +22377,7 @@
 crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/custom-scrollbar-not-inherited-by-iframe.html [ Crash ]
 crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/custom-scrollbar-reconstruction-document-write.html [ Crash ]
 crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/custom-scrollbar-reconstruction-on-setting-newstyle.html [ Failure ]
-crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/custom-scrollbar-table-cell.html [ Failure ]
+crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/custom-scrollbar-table-cell.html [ Failure Pass ]
 crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/custom-scrollbar-with-incomplete-style.html [ Failure ]
 crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/disabled-composited-scrollbar.html [ Failure ]
 crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/disabled-scrollbar.html [ Failure ]
@@ -22177,7 +22396,7 @@
 crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-click-does-not-blur-content.html [ Crash ]
 crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-content-crash.html [ Failure ]
 crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-crash-on-refresh.html [ Failure ]
-crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-large-overflow-rectangle.html [ Crash ]
+crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-large-overflow-rectangle.html [ Crash Pass ]
 crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-miss-mousemove-disabled.html [ Failure ]
 crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-miss-mousemove.html [ Failure ]
 crbug.com/591099 virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-orientation.html [ Failure ]
@@ -22199,7 +22418,7 @@
 crbug.com/591099 virtual/rootlayerscrolls/fast/scrolling/fractional-scroll-offset-document.html [ Failure ]
 crbug.com/591099 virtual/rootlayerscrolls/fast/scrolling/hashtag-autoscroll.html [ Failure ]
 crbug.com/591099 virtual/rootlayerscrolls/fast/scrolling/horizontal-overflow-quirks.html [ Failure ]
-crbug.com/591099 virtual/rootlayerscrolls/fast/scrolling/hover-during-scroll.html [ Timeout ]
+crbug.com/591099 virtual/rootlayerscrolls/fast/scrolling/hover-during-scroll.html [ Failure Timeout ]
 crbug.com/591099 virtual/rootlayerscrolls/fast/scrolling/html-element-client-rect-excludes-scrollbars.html [ Failure ]
 crbug.com/591099 virtual/rootlayerscrolls/fast/scrolling/keyboard-scroll-page-scale.html [ Failure ]
 crbug.com/591099 virtual/rootlayerscrolls/fast/scrolling/non-composited-scrolling-repaint-to-ancestor-backing.html [ Failure ]
@@ -22238,7 +22457,7 @@
 crbug.com/591099 virtual/rootlayerscrolls/scrollbars/custom-scrollbar-not-inherited-by-iframe.html [ Crash ]
 crbug.com/591099 virtual/rootlayerscrolls/scrollbars/custom-scrollbar-reconstruction-document-write.html [ Crash ]
 crbug.com/591099 virtual/rootlayerscrolls/scrollbars/custom-scrollbar-reconstruction-on-setting-newstyle.html [ Failure ]
-crbug.com/591099 virtual/rootlayerscrolls/scrollbars/custom-scrollbar-table-cell.html [ Failure ]
+crbug.com/591099 virtual/rootlayerscrolls/scrollbars/custom-scrollbar-table-cell.html [ Failure Pass ]
 crbug.com/591099 virtual/rootlayerscrolls/scrollbars/custom-scrollbar-with-incomplete-style.html [ Failure ]
 crbug.com/591099 virtual/rootlayerscrolls/scrollbars/disabled-composited-scrollbar.html [ Failure ]
 crbug.com/591099 virtual/rootlayerscrolls/scrollbars/disabled-scrollbar.html [ Failure ]
@@ -22257,7 +22476,7 @@
 crbug.com/591099 virtual/rootlayerscrolls/scrollbars/scrollbar-click-does-not-blur-content.html [ Crash ]
 crbug.com/591099 virtual/rootlayerscrolls/scrollbars/scrollbar-content-crash.html [ Failure ]
 crbug.com/591099 virtual/rootlayerscrolls/scrollbars/scrollbar-crash-on-refresh.html [ Failure ]
-crbug.com/591099 virtual/rootlayerscrolls/scrollbars/scrollbar-large-overflow-rectangle.html [ Crash ]
+crbug.com/591099 virtual/rootlayerscrolls/scrollbars/scrollbar-large-overflow-rectangle.html [ Crash Pass ]
 crbug.com/591099 virtual/rootlayerscrolls/scrollbars/scrollbar-miss-mousemove-disabled.html [ Failure ]
 crbug.com/591099 virtual/rootlayerscrolls/scrollbars/scrollbar-miss-mousemove.html [ Failure ]
 crbug.com/591099 virtual/rootlayerscrolls/scrollbars/scrollbar-orientation.html [ Failure ]
@@ -22302,11 +22521,13 @@
 crbug.com/591099 virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-shared-worker.html [ Timeout ]
 crbug.com/591099 virtual/service-worker-navigation-preload-disabled/webexposed/nonstable-css-properties.html [ Failure ]
 crbug.com/591099 virtual/service-worker-navigation-preload-disabled/webexposed/permissions-attribute.html [ Failure ]
-crbug.com/591099 virtual/sharedarraybuffer/fast/canvas/canvas-createImageBitmap-webgl.html [ Failure ]
-crbug.com/591099 virtual/sharedarraybuffer/fast/canvas/OffscreenCanvas-2d-drawImage.html [ Failure ]
-crbug.com/591099 virtual/sharedarraybuffer/fast/canvas/OffscreenCanvas-commit-invalid-call.html [ Failure ]
+crbug.com/591099 virtual/sharedarraybuffer/fast/canvas/canvas-createImageBitmap-webgl.html [ Failure Pass ]
+crbug.com/591099 virtual/sharedarraybuffer/fast/canvas/canvas-toDataURL-webp.html [ Crash Pass ]
+crbug.com/591099 virtual/sharedarraybuffer/fast/canvas/OffscreenCanvas-2d-drawImage.html [ Failure Pass ]
+crbug.com/591099 virtual/sharedarraybuffer/fast/canvas/OffscreenCanvas-commit-invalid-call.html [ Failure Pass ]
 crbug.com/591099 virtual/sharedarraybuffer/fast/canvas/rendering-contexts-back-references.html [ Failure ]
-crbug.com/591099 virtual/sharedarraybuffer/fast/dom/minor-dom-gc.html [ Failure ]
+crbug.com/591099 virtual/sharedarraybuffer/fast/dom/minor-dom-gc.html [ Failure Pass ]
+crbug.com/591099 virtual/sharedarraybuffer/fast/dom/shadow/import-rule-in-shadow-tree-needs-document-style-recalc.html [ Failure Pass ]
 crbug.com/591099 virtual/sharedarraybuffer/fast/dom/StyleSheet/gc-styleheet-wrapper.xhtml [ Failure ]
 crbug.com/591099 virtual/sharedarraybuffer/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated.html [ Failure Pass ]
 crbug.com/591099 virtual/sharedarraybuffer/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced.html [ Failure Pass ]
@@ -22334,6 +22555,7 @@
 crbug.com/591099 virtual/stable/http/tests/navigation/forward-to-fragment-fires-onload.html [ Crash Failure ]
 crbug.com/591099 virtual/stable/http/tests/navigation/history-back-across-form-submission-to-fragment.html [ Failure ]
 crbug.com/591099 virtual/stable/http/tests/navigation/image-load-in-subframe-unload-handler.html [ Crash ]
+crbug.com/591099 virtual/stable/http/tests/navigation/image-load-in-unload-handler.html [ Crash Pass ]
 crbug.com/591099 virtual/stable/http/tests/navigation/javascriptlink-basic.html [ Timeout ]
 crbug.com/591099 virtual/stable/http/tests/navigation/javascriptlink-frames.html [ Timeout ]
 crbug.com/591099 virtual/stable/http/tests/navigation/javascriptlink-goback.html [ Timeout ]
@@ -22349,7 +22571,7 @@
 crbug.com/591099 virtual/stable/http/tests/navigation/no-referrer-target-blank.html [ Timeout ]
 crbug.com/591099 virtual/stable/http/tests/navigation/onload-navigation-iframe-2.html [ Failure ]
 crbug.com/591099 virtual/stable/http/tests/navigation/ping-cookie.html [ Crash Timeout ]
-crbug.com/591099 virtual/stable/http/tests/navigation/ping-cross-origin-from-https.html [ Timeout ]
+crbug.com/591099 virtual/stable/http/tests/navigation/ping-cross-origin-from-https.html [ Crash Timeout ]
 crbug.com/591099 virtual/stable/http/tests/navigation/ping-cross-origin.html [ Timeout ]
 crbug.com/591099 virtual/stable/http/tests/navigation/ping-same-origin.html [ Crash Timeout ]
 crbug.com/591099 virtual/stable/http/tests/navigation/post-basic.html [ Failure ]
@@ -22417,7 +22639,7 @@
 crbug.com/591099 virtual/threaded/animations/base-render-style-crash.html [ Crash ]
 crbug.com/591099 virtual/threaded/animations/checkbox-padding-animation-crash.html [ Crash ]
 crbug.com/591099 virtual/threaded/animations/clear-svg-animation-effects.html [ Crash ]
-crbug.com/591099 virtual/threaded/animations/composited-pseudo-element-animation.html [ Failure ]
+crbug.com/591099 virtual/threaded/animations/composited-pseudo-element-animation.html [ Failure Pass ]
 crbug.com/591099 virtual/threaded/animations/composition/background-position-composition.html [ Crash ]
 crbug.com/591099 virtual/threaded/animations/composition/caret-color-composition.html [ Crash ]
 crbug.com/591099 virtual/threaded/animations/composition/stroke-dasharray-composition.html [ Crash ]
@@ -22528,7 +22750,7 @@
 crbug.com/591099 virtual/threaded/animations/keyframes-iteration-count-non-integer.html [ Failure ]
 crbug.com/591099 virtual/threaded/animations/keyframes-rule.html [ Failure ]
 crbug.com/591099 virtual/threaded/animations/lazy-detached-animation-stop.html [ Failure ]
-crbug.com/591099 virtual/threaded/animations/length-zero-percent-crash.html [ Failure ]
+crbug.com/591099 virtual/threaded/animations/length-zero-percent-crash.html [ Failure Pass ]
 crbug.com/591099 virtual/threaded/animations/negative-delay-events.html [ Failure ]
 crbug.com/591099 virtual/threaded/animations/option-element-crash.html [ Crash ]
 crbug.com/591099 virtual/threaded/animations/option-opacity-inherit-crash.html [ Crash ]
@@ -22690,6 +22912,7 @@
 crbug.com/591099 virtual/threaded/animations/svg-length-unittype-crash.html [ Crash ]
 crbug.com/591099 virtual/threaded/animations/svg-presentation-attribute-animation.html [ Crash ]
 crbug.com/591099 virtual/threaded/animations/svg-responsive-to-timing-updates.html [ Crash ]
+crbug.com/591099 virtual/threaded/animations/timing-functions.html [ Pass Timeout ]
 crbug.com/591099 virtual/threaded/animations/timing-model.html [ Timeout ]
 crbug.com/591099 virtual/threaded/animations/zero-duration-infinite-iterations.html [ Failure ]
 crbug.com/591099 virtual/threaded/animations/zero-duration-large-start-delay.html [ Failure ]
@@ -22705,12 +22928,13 @@
 crbug.com/591099 virtual/threaded/compositing/webgl/webgl-nonpremultiplied-blend.html [ Failure ]
 crbug.com/591099 virtual/threaded/compositing/webgl/webgl-reflection.html [ Failure ]
 crbug.com/591099 virtual/threaded/compositing/webgl/webgl-repaint.html [ Failure ]
-crbug.com/591099 virtual/threaded/compositing/webgl/webgl-with-accelerated-background-color.html [ Failure ]
+crbug.com/591099 virtual/threaded/compositing/webgl/webgl-with-accelerated-background-color.html [ Failure Pass ]
 crbug.com/591099 virtual/threaded/fast/compositorworker/basic-plumbing-main-to-worker.html [ Failure ]
 crbug.com/591099 virtual/threaded/fast/compositorworker/basic-plumbing-worker-to-main.html [ Failure ]
 crbug.com/591099 virtual/threaded/fast/compositorworker/request-animation-frame.html [ Failure ]
-crbug.com/591099 virtual/threaded/fast/idle-callback/timeout.html [ Timeout ]
-crbug.com/591099 virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-worker.html [ Timeout ]
+crbug.com/591099 virtual/threaded/fast/idle-callback/timeout.html [ Pass Timeout ]
+crbug.com/591099 virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-main.html [ Pass Timeout ]
+crbug.com/591099 virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-worker.html [ Pass Timeout ]
 crbug.com/591099 virtual/threaded/fast/scroll-behavior/bordered-container-child-scroll.html [ Failure ]
 crbug.com/591099 virtual/threaded/fast/scroll-behavior/first-scroll-runs-on-compositor.html [ Failure ]
 crbug.com/591099 virtual/threaded/fast/scroll-behavior/main-frame-element-scrollBy.html [ Timeout ]
@@ -22878,7 +23102,7 @@
 crbug.com/591099 virtual/threaded/printing/thead-repeats-at-top-of-each-page.html [ Failure ]
 crbug.com/591099 virtual/threaded/printing/thead-repeats-at-top-of-each-page-multiple-tables.html [ Failure ]
 crbug.com/591099 virtual/threaded/printing/viewport-size-dependant-iframe-with-multicol-crash.html [ Failure ]
-crbug.com/591099 virtual/threaded/printing/webgl-repeated-printing.html [ Failure ]
+crbug.com/591099 virtual/threaded/printing/webgl-repeated-printing.html [ Failure Pass ]
 crbug.com/591099 virtual/threaded/transitions/3d/interrupted-transition.html [ Failure ]
 crbug.com/591099 virtual/threaded/transitions/bad-transition-shorthand-crash.html [ Failure ]
 crbug.com/591099 virtual/threaded/transitions/cubic-bezier-overflow-svg-length.html [ Crash ]
@@ -22923,6 +23147,7 @@
 crbug.com/591099 virtual/threaded/transitions/transition-shape-outside-crash.html [ Failure ]
 crbug.com/591099 virtual/threaded/transitions/transitions-parsing.html [ Timeout ]
 crbug.com/591099 virtual/threaded/transitions/transition-transform-translate-calculated-length-crash.html [ Failure ]
+crbug.com/591099 virtual/threaded/transitions/webkit-clip-path-equality.html [ Failure Pass ]
 crbug.com/591099 virtual/wheelscrolllatching/fast/events/wheel/mainthread-touchpad-fling-latching.html [ Failure ]
 crbug.com/591099 virtual/wheelscrolllatching/fast/events/wheel/mouse-wheel-scroll-latching.html [ Failure ]
 crbug.com/591099 virtual/wheelscrolllatching/fast/events/wheel/wheelevent-basic.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index ca49940..eab4e6a 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -2138,6 +2138,7 @@
 # We paint in an incorrect order when layers are present
 crbug.com/370604 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-paint-ordering-002.xhtml [ Failure ]
 
+crbug.com/582836 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-declaration-15.html [ Failure Pass ]
 crbug.com/582836 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-external-font-face-01.html [ Pass Failure ]
 crbug.com/582836 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-font-face-01.html [ Failure ]
 crbug.com/582836 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-font-face-02.html [ Failure ]
@@ -3465,3 +3466,5 @@
 
 crbug.com/713685 [ Linux ] fast/workers/termination-early.html [ Crash Pass ]
 crbug.com/713685 [ Linux ] virtual/sharedarraybuffer/fast/workers/termination-early.html [ Crash Pass ]
+
+crbug.com/715405 [ Win Mac ] virtual/mojo-loading/http/tests/inspector/network/waterfall-images.html [ Failure Pass ]
diff --git a/third_party/WebKit/LayoutTests/nfc/push.html b/third_party/WebKit/LayoutTests/nfc/push.html
index 44301ee..59c95a1b 100644
--- a/third_party/WebKit/LayoutTests/nfc/push.html
+++ b/third_party/WebKit/LayoutTests/nfc/push.html
@@ -9,6 +9,9 @@
 
 const invalid_messages =
     [
+      // Invalid NFCPushMessage type
+      undefined,
+
       // NFCMessage.data: should have at least 1 valid record.
       // https://w3c.github.io/web-nfc/#the-push-method - Step 8.
       createMessage([{}]),
@@ -56,18 +59,13 @@
     ];
 
 nfc_test(nfc => {
-  return assertRejectsWithError(navigator.nfc.push(undefined),
-      'TypeMismatchError');
-}, 'Test that passing undefined to nfc.push would raise TypeMismatchError.');
-
-nfc_test(nfc => {
   let promises = [];
   invalid_messages.forEach(message => {
     promises.push(
-        assertRejectsWithError(navigator.nfc.push(message), 'SyntaxError'));
+        assertRejectsWithError(navigator.nfc.push(message), 'TypeError'));
   });
   return Promise.all(promises)
-}, 'Test that promise is rejected with SyntaxError if NFCMessage is invalid.');
+}, 'Test that promise is rejected with TypeError if NFCMessage is invalid.');
 
 nfc_test(nfc => {
   nfc.mockNFC.setHWStatus(NFCHWStatus.DISABLED);
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8DOMConfiguration.cpp b/third_party/WebKit/Source/bindings/core/v8/V8DOMConfiguration.cpp
index 288633c..5c35cc0 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8DOMConfiguration.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/V8DOMConfiguration.cpp
@@ -91,41 +91,33 @@
     v8::Isolate* isolate,
     v8::Local<v8::Object> instance,
     v8::Local<v8::Object> prototype,
-    const V8DOMConfiguration::AttributeConfiguration& attribute,
+    const V8DOMConfiguration::AttributeConfiguration& config,
     const DOMWrapperWorld& world) {
-  if (!WorldConfigurationApplies(attribute, world))
+  if (!WorldConfigurationApplies(config, world))
     return;
-  v8::Local<v8::Name> name = V8AtomicString(isolate, attribute.name);
 
-  // This method is only being used for installing interfaces which are
-  // enabled through origin trials. Assert here that it is being called with
-  // an attribute configuration for a constructor.
-  // TODO(iclelland): Relax this constraint and allow arbitrary data-type
-  // properties to be added here.
-  DCHECK_EQ(&V8ConstructorAttributeGetter, attribute.getter);
+  v8::Local<v8::Name> name = V8AtomicString(isolate, config.name);
+  v8::AccessorNameGetterCallback getter = config.getter;
+  v8::AccessorNameSetterCallback setter = config.setter;
+  v8::Local<v8::Value> data =
+      v8::External::New(isolate, const_cast<WrapperTypeInfo*>(config.data));
+  v8::PropertyAttribute attribute =
+      static_cast<v8::PropertyAttribute>(config.attribute);
+  unsigned location = config.property_location_configuration;
 
-  V8PerContextData* per_context_data =
-      V8PerContextData::From(isolate->GetCurrentContext());
-  v8::Local<v8::Function> data =
-      per_context_data->ConstructorForType(attribute.data);
-
-  DCHECK(attribute.property_location_configuration);
-  if (attribute.property_location_configuration &
-      V8DOMConfiguration::kOnInstance)
+  DCHECK(location);
+  v8::Local<v8::Context> context = isolate->GetCurrentContext();
+  if (location & V8DOMConfiguration::kOnInstance) {
     instance
-        ->DefineOwnProperty(
-            isolate->GetCurrentContext(), name, data,
-            static_cast<v8::PropertyAttribute>(attribute.attribute))
+        ->SetNativeDataProperty(context, name, getter, setter, data, attribute)
         .ToChecked();
-  if (attribute.property_location_configuration &
-      V8DOMConfiguration::kOnPrototype)
+  }
+  if (location & V8DOMConfiguration::kOnPrototype) {
     prototype
-        ->DefineOwnProperty(
-            isolate->GetCurrentContext(), name, data,
-            static_cast<v8::PropertyAttribute>(attribute.attribute))
+        ->SetNativeDataProperty(context, name, getter, setter, data, attribute)
         .ToChecked();
-  if (attribute.property_location_configuration &
-      V8DOMConfiguration::kOnInterface)
+  }
+  if (location & V8DOMConfiguration::kOnInterface)
     NOTREACHED();
 }
 
diff --git a/third_party/WebKit/Source/build/scripts/make_computed_style_base.py b/third_party/WebKit/Source/build/scripts/make_computed_style_base.py
index 533c0cf8..b52ab45 100755
--- a/third_party/WebKit/Source/build/scripts/make_computed_style_base.py
+++ b/third_party/WebKit/Source/build/scripts/make_computed_style_base.py
@@ -12,9 +12,50 @@
 
 from name_utilities import (
     enum_for_css_keyword, enum_type_name, enum_value_name, class_member_name, method_name,
-    join_name
+    class_name, join_name
 )
-from collections import OrderedDict
+from collections import defaultdict, OrderedDict
+from itertools import chain
+
+# TODO(shend): Improve documentation and add docstrings.
+
+
+def _flatten_list(x):
+    """Flattens a list of lists into a single list."""
+    return list(chain.from_iterable(x))
+
+
+def _num_32_bit_words_for_bit_fields(bit_fields):
+    """Gets the number of 32 bit unsigned integers needed store a list of bit fields."""
+    num_buckets, cur_bucket = 0, 0
+    for field in bit_fields:
+        if field.size + cur_bucket > 32:
+            num_buckets += 1
+            cur_bucket = 0
+        cur_bucket += field.size
+    return num_buckets + (cur_bucket > 0)
+
+
+class Group(object):
+    """Represents a group of fields stored together in a class.
+
+    Attributes:
+        name: The name of the group as a string.
+        subgroups: List of Group instances that are stored as subgroups under this group.
+        fields: List of Field instances stored directly under this group.
+    """
+    def __init__(self, name, subgroups, fields):
+        self.name = name
+        self.subgroups = subgroups
+        self.fields = fields
+        self.type_name = class_name(join_name('style', name, 'data'))
+        self.member_name = class_member_name(join_name(name, 'data'))
+        self.num_32_bit_words_for_bit_fields = _num_32_bit_words_for_bit_fields(
+            field for field in fields if field.is_bit_field
+        )
+
+        # Recursively get all the fields in the subgroups as well
+        self.all_fields = _flatten_list(subgroup.all_fields for subgroup in subgroups) + fields
 
 
 class Field(object):
@@ -42,18 +83,21 @@
         type_name: Name of the C++ type exposed by the generated interface (e.g. EClear, int).
         field_template: Determines the interface generated for the field. Can be one of:
            keyword, flag, or monotonic_flag.
+        field_group: The name of the group that this field is inside.
         size: Number of bits needed for storage.
         default_value: Default value for this field when it is first initialized.
     """
 
     def __init__(self, field_role, name_for_methods, property_name, type_name,
-                 field_template, size, default_value, getter_method_name, setter_method_name,
-                 initial_method_name, **kwargs):
+                 field_template, field_group, size, default_value,
+                 getter_method_name, setter_method_name, initial_method_name, **kwargs):
         """Creates a new field."""
         self.name = class_member_name(name_for_methods)
         self.property_name = property_name
         self.type_name = type_name
         self.field_template = field_template
+        self.group_name = field_group
+        self.group_member_name = class_member_name(join_name(field_group, 'data')) if field_group else None
         self.size = size
         self.default_value = default_value
 
@@ -98,6 +142,17 @@
     return list(sorted(include_paths))
 
 
+def _group_fields(fields):
+    """Groups a list of fields by their group_name and returns the root group."""
+    groups = defaultdict(list)
+    for field in fields:
+        groups[field.group_name].append(field)
+
+    no_group = groups.pop(None)
+    subgroups = [Group(group_name, [], _reorder_fields(fields)) for group_name, fields in groups.items()]
+    return Group('', subgroups=subgroups, fields=_reorder_fields(no_group))
+
+
 def _create_enums(properties):
     """
     Returns an OrderedDict of enums to be generated, enum name -> [list of enum values]
@@ -165,6 +220,7 @@
         independent=property_['independent'],
         type_name=type_name,
         field_template=property_['field_template'],
+        field_group=property_['field_group'],
         size=size,
         default_value=default_value,
         getter_method_name=property_['getter'],
@@ -185,6 +241,7 @@
         property_name=property_['name'],
         type_name='bool',
         field_template='primitive',
+        field_group=property_['field_group'],
         size=1,
         default_value='true',
         getter_method_name=method_name(name_for_methods),
@@ -207,17 +264,22 @@
                 fields.append(_create_inherited_flag_field(property_))
 
             # TODO(shend): Get rid of the property/nonproperty field roles.
+            # If the field has_custom_compare_and_copy, then it does not appear in
+            # ComputedStyle::operator== and ComputedStyle::CopyNonInheritedFromCached.
             field_role = 'nonproperty' if property_['has_custom_compare_and_copy'] else 'property'
             fields.append(_create_field(field_role, property_))
 
     return fields
 
 
-def _pack_fields(fields):
+def _reorder_fields(fields):
     """
-    Group a list of fields into buckets to minimise padding.
-    Returns a list of buckets, where each bucket is a list of Field objects.
+    Returns a list of fields ordered to minimise padding.
     """
+    # Separate out bit fields from non bit fields
+    bit_fields = [field for field in fields if field.is_bit_field]
+    non_bit_fields = [field for field in fields if not field.is_bit_field]
+
     # Since fields cannot cross word boundaries, in order to minimize
     # padding, group fields into buckets so that as many buckets as possible
     # are exactly 32 bits. Although this greedy approach may not always
@@ -230,7 +292,7 @@
     field_buckets = []
     # Consider fields in descending order of size to reduce fragmentation
     # when they are selected. Ties broken in alphabetical order by name.
-    for field in sorted(fields, key=lambda f: (-f.size, f.name)):
+    for field in sorted(bit_fields, key=lambda f: (-f.size, f.name)):
         added_to_bucket = False
         # Go through each bucket and add this field if it will not increase
         # the bucket's size to larger than 32 bits. Otherwise, make a new
@@ -243,7 +305,8 @@
         if not added_to_bucket:
             field_buckets.append([field])
 
-    return field_buckets
+    # Non bit fields go first, then the bit fields.
+    return list(non_bit_fields) + _flatten_list(field_buckets)
 
 
 class ComputedStyleBaseWriter(make_style_builder.StyleBuilderWriter):
@@ -285,40 +348,9 @@
 
         all_fields = _create_fields(all_properties)
 
-        # Separate the normal fields from the bit fields
-        bit_fields = [field for field in all_fields if field.is_bit_field]
-        normal_fields = [field for field in all_fields if not field.is_bit_field]
-
-        # Pack bit fields into buckets
-        field_buckets = _pack_fields(bit_fields)
-
-        # The expected size of ComputedStyleBase is equivalent to as many words
-        # as the total number of buckets.
-        self._expected_bit_field_bytes = len(field_buckets)
-
-        # The most optimal size of ComputedStyleBase is the total sum of all the
-        # field sizes, rounded up to the nearest word. If this produces the
-        # incorrect value, either the packing algorithm is not optimal or there
-        # is no way to pack the fields such that excess padding space is not
-        # added.
-        # If this fails, increase extra_padding_bytes by 1, but be aware that
-        # this also increases ComputedStyleBase by 1 word.
-        # We should be able to bring extra_padding_bytes back to 0 from time to
-        # time.
-        extra_padding_bytes = 0
-        optimal_bit_field_bytes = int(math.ceil(sum(f.size for f in bit_fields) / 32.0))
-        real_bit_field_bytes = optimal_bit_field_bytes + extra_padding_bytes
-        assert self._expected_bit_field_bytes == real_bit_field_bytes, \
-            ('The field packing algorithm produced %s bytes, optimal is %s bytes' %
-             (self._expected_bit_field_bytes, real_bit_field_bytes))
-
-        # Normal fields go first, then the bit fields.
-        self._fields = list(normal_fields)
-
-        # Order the fields so fields in each bucket are adjacent.
-        for bucket in field_buckets:
-            for field in bucket:
-                self._fields.append(field)
+        # Organise fields into a tree structure where the root group
+        # is ComputedStyleBase.
+        self._root_group = _group_fields(all_fields)
 
         self._include_paths = _get_include_paths(all_properties)
         self._outputs = {
@@ -327,22 +359,21 @@
             'ComputedStyleBaseConstants.h': self.generate_base_computed_style_constants,
         }
 
-    @template_expander.use_jinja('ComputedStyleBase.h.tmpl')
+    @template_expander.use_jinja('ComputedStyleBase.h.tmpl', tests={'in': lambda a, b: a in b})
     def generate_base_computed_style_h(self):
         return {
             'properties': self._properties,
             'enums': self._generated_enums,
             'include_paths': self._include_paths,
-            'fields': self._fields,
+            'computed_style': self._root_group,
         }
 
-    @template_expander.use_jinja('ComputedStyleBase.cpp.tmpl')
+    @template_expander.use_jinja('ComputedStyleBase.cpp.tmpl', tests={'in': lambda a, b: a in b})
     def generate_base_computed_style_cpp(self):
         return {
             'properties': self._properties,
             'enums': self._generated_enums,
-            'fields': self._fields,
-            'expected_bit_field_bytes': self._expected_bit_field_bytes,
+            'computed_style': self._root_group,
         }
 
     @template_expander.use_jinja('ComputedStyleBaseConstants.h.tmpl')
@@ -350,7 +381,6 @@
         return {
             'properties': self._properties,
             'enums': self._generated_enums,
-            'fields': self._fields,
         }
 
 if __name__ == '__main__':
diff --git a/third_party/WebKit/Source/build/scripts/name_utilities.py b/third_party/WebKit/Source/build/scripts/name_utilities.py
index 0d80825..17755d5 100644
--- a/third_party/WebKit/Source/build/scripts/name_utilities.py
+++ b/third_party/WebKit/Source/build/scripts/name_utilities.py
@@ -152,6 +152,10 @@
     return 'k' + upper_camel_case(name)
 
 
+def class_name(name):
+    return upper_camel_case(name)
+
+
 def class_member_name(name):
     return snake_case(name) + "_"
 
diff --git a/third_party/WebKit/Source/build/scripts/template_expander.py b/third_party/WebKit/Source/build/scripts/template_expander.py
index 2edb5abc..f23d3de1 100644
--- a/third_party/WebKit/Source/build/scripts/template_expander.py
+++ b/third_party/WebKit/Source/build/scripts/template_expander.py
@@ -36,7 +36,7 @@
 import jinja2
 
 
-def apply_template(path_to_template, params, filters=None):
+def apply_template(path_to_template, params, filters=None, tests=None):
     dirname, basename = os.path.split(path_to_template)
     path_to_templates = os.path.join(_current_dir, 'templates')
     jinja_env = jinja2.Environment(
@@ -46,15 +46,17 @@
         trim_blocks=True)  # so don't need {%- -%} everywhere
     if filters:
         jinja_env.filters.update(filters)
+    if tests:
+        jinja_env.tests.update(tests)
     template = jinja_env.get_template(basename)
     return template.render(params)
 
 
-def use_jinja(template_file_name, filters=None):
+def use_jinja(template_file_name, filters=None, tests=None):
     def real_decorator(generator):
         def generator_internal(*args, **kwargs):
             parameters = generator(*args, **kwargs)
-            return apply_template(template_file_name, parameters, filters=filters)
+            return apply_template(template_file_name, parameters, filters=filters, tests=tests)
         generator_internal.func_name = generator.func_name
         return generator_internal
     return real_decorator
diff --git a/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.cpp.tmpl b/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.cpp.tmpl
index 6399fe1..e28efac9 100644
--- a/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.cpp.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.cpp.tmpl
@@ -1,4 +1,5 @@
 {% from 'macros.tmpl' import license %}
+{% from 'fields/field.tmpl' import getter_expression, setter_expression, fieldwise_copy %}
 {{license()}}
 
 #include "core/ComputedStyleBase.h"
@@ -7,35 +8,42 @@
 namespace blink {
 
 struct SameSizeAsComputedStyleBase {
-  {% for field in fields|rejectattr("is_bit_field") %}
+  {% if computed_style.subgroups is defined %}
+  void* dataRefs[{{computed_style.subgroups|length}}];
+  {% endif %}
+  {% for field in computed_style.fields|rejectattr("is_bit_field") %}
   {{field.type_name}} {{field.name}}};
   {% endfor %}
-  unsigned m_bit_fields[{{expected_bit_field_bytes}}];
+  unsigned m_bit_fields[{{computed_style.num_32_bit_words_for_bit_fields}}];
 };
+
 // If this fails, the packing algorithm in make_computed_style_base.py has
 // failed to produce the optimal packed size. To fix, update the algorithm to
 // ensure that the buckets are placed so that each takes up at most 1 word.
 ASSERT_SIZE(ComputedStyleBase, SameSizeAsComputedStyleBase);
 
-void ComputedStyleBase::InheritFrom(const ComputedStyleBase& inheritParent,
+void ComputedStyleBase::InheritFrom(const ComputedStyleBase& other,
                                     IsAtShadowBoundary isAtShadowBoundary) {
-  {% for field in fields if field.is_inherited %}
-  {{field.name}} = inheritParent.{{field.name}};
-  {% endfor %}
+  {{fieldwise_copy(computed_style, computed_style.all_fields
+      |selectattr("is_inherited")
+      |list
+    )|indent(2)}}
 }
 
 void ComputedStyleBase::CopyNonInheritedFromCached(
     const ComputedStyleBase& other) {
-  {% for field in fields if (field.is_property and not field.is_inherited) or field.is_inherited_flag %}
-  {{field.name}} = other.{{field.name}};
-  {% endfor %}
+  {{fieldwise_copy(computed_style, computed_style.all_fields
+      |rejectattr("is_nonproperty")
+      |rejectattr("is_inherited")
+      |list
+    )|indent(2)}}
 }
 
 void ComputedStyleBase::PropagateIndependentInheritedProperties(
     const ComputedStyleBase& parentStyle) {
-  {% for field in fields if field.is_property and field.is_independent %}
+  {% for field in computed_style.all_fields if field.is_property and field.is_independent %}
   if ({{field.is_inherited_method_name}}())
-    {{field.setter_method_name}}(parentStyle.{{field.getter_method_name}}());
+    {{setter_expression(field)}} = parentStyle.{{getter_expression(field)}};
   {% endfor %}
 }
 
diff --git a/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl b/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl
index 8c80bb7..65ce7ae7 100644
--- a/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl
@@ -1,4 +1,6 @@
 {% from 'macros.tmpl' import license, print_if %}
+{% from 'fields/field.tmpl' import encode, getter_expression, declare_storage, fieldwise_compare %}
+{% from 'fields/group.tmpl' import define_field_group_class %}
 {{license()}}
 
 #ifndef ComputedStyleBase_h
@@ -6,6 +8,7 @@
 
 #include "core/style/ComputedStyleConstants.h"
 #include "core/CoreExport.h"
+#include "core/style/DataRef.h"
 {% for path in include_paths %}
 #include "{{path}}"
 {% endfor %}
@@ -35,17 +38,23 @@
  public:
   inline bool IndependentInheritedEqual(const ComputedStyleBase& o) const {
     return (
-    {% for field in fields if field.is_inherited and field.is_independent %}
-        {{field.name}} == o.{{field.name}}{{print_if(not loop.last, ' &&')}}
-    {% endfor %}
+        {{fieldwise_compare(computed_style, computed_style.all_fields
+            |selectattr("is_inherited")
+            |selectattr("is_independent")
+            |list
+          )|indent(8)}}
+        true
     );
   }
 
   inline bool NonIndependentInheritedEqual(const ComputedStyleBase& o) const {
     return (
-    {% for field in fields if field.is_inherited and not field.is_independent %}
-        {{field.name}} == o.{{field.name}}{{print_if(not loop.last, ' &&')}}
-    {% endfor %}
+        {{fieldwise_compare(computed_style, computed_style.all_fields
+            |selectattr("is_inherited")
+            |rejectattr("is_independent")
+            |list
+          )|indent(8)}}
+        true
     );
   }
 
@@ -55,9 +64,12 @@
 
   inline bool NonInheritedEqual(const ComputedStyleBase& o) const {
     return (
-    {% for field in fields if field.is_property and not field.is_inherited %}
-        {{field.name}} == o.{{field.name}}{{print_if(not loop.last, ' &&')}}
-    {% endfor %}
+        {{fieldwise_compare(computed_style, computed_style.all_fields
+            |selectattr("is_property")
+            |rejectattr("is_inherited")
+            |list
+          )|indent(8)}}
+        true
     );
   }
 
@@ -79,21 +91,31 @@
   // TODO(sashab): Remove initialFoo() static methods and update callers to
   // use resetFoo(), which can be more efficient.
 
-  {% for field in fields %}
+  {% for field in computed_style.all_fields %}
   // {{field.property_name}}
   {{field_templates[field.field_template].decl_public_methods(field)|indent(2)}}
 
   {% endfor %}
+ private:
+  {% for subgroup in computed_style.subgroups %}
+  {{define_field_group_class(subgroup)|indent(2)}}
+
+  {% endfor %}
+
  protected:
   // Constructor and destructor are protected so that only the parent class ComputedStyle
   // can instantiate this class.
   ALWAYS_INLINE ComputedStyleBase() :
-  {% for field in fields %}
+  {% for field in computed_style.fields %}
       {{field.name}}({{encode(field, field.default_value)}}){{print_if(not loop.last, ',')}}
   {% endfor %}
-  {}
+  {
+    {% for subgroup in computed_style.subgroups %}
+    {{subgroup.member_name}}.Init();
+    {% endfor %}
+  }
 
-  {% for field in fields %}
+  {% for field in computed_style.fields %}
   {% if field.field_template in ('storage_only', 'monotonic_flag', 'external') %}
   // {{field.property_name}}
   {{field_templates[field.field_template].decl_protected_methods(field)|indent(2)}}
@@ -103,14 +125,14 @@
 
   ~ComputedStyleBase() = default;
 
- private:
   // Storage.
-  {% for field in fields %}
-  {% if field.is_bit_field %}
-  unsigned {{field.name}} : {{field.size}}; // {{field.type_name}}
-  {% else %}
-  {{field.type_name}} {{field.name}};
-  {% endif %}
+  {% for subgroup in computed_style.subgroups %}
+  DataRef<{{subgroup.type_name}}> {{subgroup.member_name}};
+  {% endfor %}
+
+ private:
+  {% for field in computed_style.fields %}
+  {{declare_storage(field)}}
   {% endfor %}
 };
 
diff --git a/third_party/WebKit/Source/build/scripts/templates/fields/base.tmpl b/third_party/WebKit/Source/build/scripts/templates/fields/base.tmpl
index 82ecd9e..ed8fb52 100644
--- a/third_party/WebKit/Source/build/scripts/templates/fields/base.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/fields/base.tmpl
@@ -1,4 +1,4 @@
-{% from 'fields/field.tmpl' import encode, decode, const_ref, nonconst_ref %}
+{% from 'fields/field.tmpl' import encode, decode, const_ref, nonconst_ref, getter_expression, setter_expression %}
 
 {% macro decl_initial_method(field) -%}
 inline static {{field.type_name}} {{field.initial_method_name}}() {
@@ -8,36 +8,36 @@
 
 {% macro decl_getter_method(field) -%}
 {{const_ref(field)}} {{field.getter_method_name}}() const {
-  return {{decode(field, field.name)}};
+  return {{decode(field, getter_expression(field))}};
 }
 {%- endmacro %}
 
 {% macro decl_setter_method(field) -%}
 void {{field.setter_method_name}}({{const_ref(field)}} v) {
-  {{field.name}} = {{encode(field, "v")}};
+  {{setter_expression(field)}} = {{encode(field, "v")}};
 }
 {%- endmacro %}
 
 {% macro decl_resetter_method(field) -%}
 inline void {{field.resetter_method_name}}() {
-  {{field.name}} = {{encode(field, field.default_value)}};
+  {{setter_expression(field)}} = {{encode(field, field.default_value)}};
 }
 {%- endmacro %}
 
 {% macro decl_mutable_method(field) -%}
 {{nonconst_ref(field)}} {{field.mutable_method_name}}() const {
-  return {{decode(field, field.name)}};
+  return {{decode(field, getter_expression(field))}};
 }
 {%- endmacro %}
 
 {% macro decl_internal_getter_method(field) -%}
 {{const_ref(field)}} {{field.internal_getter_method_name}}() const {
-  return {{decode(field, field.name)}};
+  return {{decode(field, getter_expression(field))}};
 }
 {%- endmacro %}
 
 {% macro decl_internal_setter_method(field) -%}
 void {{field.internal_setter_method_name}}({{const_ref(field)}} v) {
-  {{field.name}} = {{encode(field, "v")}};
+  {{setter_expression(field)}} = {{encode(field, "v")}};
 }
 {%- endmacro %}
diff --git a/third_party/WebKit/Source/build/scripts/templates/fields/external.tmpl b/third_party/WebKit/Source/build/scripts/templates/fields/external.tmpl
index c3375d97..488f1d3 100644
--- a/third_party/WebKit/Source/build/scripts/templates/fields/external.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/fields/external.tmpl
@@ -1,11 +1,12 @@
 {% import 'fields/base.tmpl' as base %}
+{% from 'fields/field.tmpl' import setter_expression %}
 
 {% macro decl_public_methods(field) %}
 {{base.decl_initial_method(field)}}
 {{base.decl_getter_method(field)}}
 {{base.decl_setter_method(field)}}
 void {{field.setter_method_name}}({{field.type_name}}&& v) {
-  {{field.name}} = std::move(v);
+  {{setter_expression(field)}} = std::move(v);
 }
 {{base.decl_resetter_method(field)}}
 {% endmacro %}
diff --git a/third_party/WebKit/Source/build/scripts/templates/fields/field.tmpl b/third_party/WebKit/Source/build/scripts/templates/fields/field.tmpl
index d5e4a2b1..ff20cf6 100644
--- a/third_party/WebKit/Source/build/scripts/templates/fields/field.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/fields/field.tmpl
@@ -14,6 +14,22 @@
 {%- endif %}
 {% endmacro %}
 
+{% macro getter_expression(field) %}
+{% if field.group_member_name -%}
+{{field.group_member_name}}->{{field.name}}
+{%- else -%}
+{{field.name}}
+{%- endif %}
+{% endmacro %}
+
+{% macro setter_expression(field) %}
+{% if field.group_member_name -%}
+{{field.group_member_name}}.Access()->{{field.name}}
+{%- else -%}
+{{field.name}}
+{%- endif %}
+{% endmacro %}
+
 {% macro nonconst_ref(field) %}
 {% if field.is_bit_field -%}
 {{field.type_name}}
@@ -29,3 +45,44 @@
 const {{field.type_name}}&
 {%- endif %}
 {% endmacro %}
+
+{% macro declare_storage(field) %}
+{% if field.is_bit_field %}
+unsigned {{field.name}} : {{field.size}}; // {{field.type_name}}
+{%- else %}
+{{field.type_name}} {{field.name}};
+{%- endif %}
+{% endmacro %}
+
+{# Given a group and a list of fields to compare, this generates a set of
+   equality comparisons on those fields. The generated comparisons take
+   advantage of group sharing. #}
+{% macro fieldwise_compare(group, fields_to_compare) %}
+{% for subgroup in group.subgroups %}
+  {# If every field in this subgroup is to be compared, we can compare the
+     group pointer instead. #}
+  {% if subgroup.all_fields|reject("in", fields_to_compare)|list|length == 0 -%}
+    {{subgroup.member_name}} == o.{{subgroup.member_name}} &&
+  {# Otherwise, we would have to recursively generate comparison operations
+     on fields in the subgroup. #}
+  {% elif subgroup.fields|select("in", fields_to_compare)|list|length > 0 -%}
+    {{fieldwise_compare(subgroup, fields_to_compare)}}
+  {% endif %}
+{% endfor %}
+{% for field in group.fields|select("in", fields_to_compare) -%}
+  {{getter_expression(field)}} == o.{{getter_expression(field)}} &&
+{% endfor %}
+{% endmacro %}
+
+{% macro fieldwise_copy(group, fields_to_copy) %}
+{% for subgroup in group.subgroups %}
+  {% if subgroup.all_fields|reject("in", fields_to_copy)|list|length == 0 -%}
+    {{subgroup.member_name}} = other.{{subgroup.member_name}};
+  {% elif subgroup.fields|select("in", fields_to_copy)|list|length > 0 -%}
+    {{fieldwise_copy(subgroup, fields_to_copy)}}
+  {% endif %}
+{% endfor %}
+{% for field in group.fields|select("in", fields_to_copy) -%}
+  {{setter_expression(field)}} = other.{{getter_expression(field)}};
+{% endfor %}
+{% endmacro %}
diff --git a/third_party/WebKit/Source/build/scripts/templates/fields/group.tmpl b/third_party/WebKit/Source/build/scripts/templates/fields/group.tmpl
new file mode 100644
index 0000000..dc27cf3e
--- /dev/null
+++ b/third_party/WebKit/Source/build/scripts/templates/fields/group.tmpl
@@ -0,0 +1,40 @@
+{% from 'fields/field.tmpl' import encode, declare_storage %}
+{% from 'macros.tmpl' import print_if %}
+{% macro define_field_group_class(group): -%}
+class {{group.type_name}} : public RefCounted<{{group.type_name}}> {
+ public:
+  static PassRefPtr<{{group.type_name}}> Create() {
+    return AdoptRef(new {{group.type_name}});
+  }
+  PassRefPtr<{{group.type_name}}> Copy() const {
+    return AdoptRef(new {{group.type_name}}(*this));
+  }
+
+  bool operator==(const {{group.type_name}}& other) const {
+    return (
+    {% for field in group.fields %}
+      {{field.name}} == other.{{field.name}}{{print_if(not loop.last, ' &&')}}
+    {% endfor %}
+    );
+  }
+  bool operator!=(const {{group.type_name}}& other) const { return !(*this == other); }
+
+  {% for field in group.fields %}
+  {{declare_storage(field)}}
+  {% endfor %}
+
+ private:
+  {{group.type_name}}() :
+  {% for field in group.fields %}
+      {{field.name}}({{encode(field, field.default_value)}}){{print_if(not loop.last, ',')}}
+  {% endfor %}
+  {}
+
+  ALWAYS_INLINE {{group.type_name}}(const {{group.type_name}}& other) :
+      RefCounted<{{group.type_name}}>(),
+  {% for field in group.fields %}
+      {{field.name}}(other.{{field.name}}){{print_if(not loop.last, ',')}}
+  {% endfor %}
+  {}
+};
+{%- endmacro %}
diff --git a/third_party/WebKit/Source/build/scripts/templates/fields/monotonic_flag.tmpl b/third_party/WebKit/Source/build/scripts/templates/fields/monotonic_flag.tmpl
index c78f9f7..01f0bdc 100644
--- a/third_party/WebKit/Source/build/scripts/templates/fields/monotonic_flag.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/fields/monotonic_flag.tmpl
@@ -1,10 +1,10 @@
 {% import 'fields/base.tmpl' as base %}
-{% from 'fields/field.tmpl' import encode %}
+{% from 'fields/field.tmpl' import encode, setter_expression %}
 
 {% macro decl_public_methods(field) %}
 {{base.decl_getter_method(field)}}
 void {{field.setter_method_name}}() {
-  {{field.name}} = {{encode(field, "true")}};
+  {{setter_expression(field)}} = {{encode(field, "true")}};
 }
 {% endmacro %}
 
diff --git a/third_party/WebKit/Source/core/BUILD.gn b/third_party/WebKit/Source/core/BUILD.gn
index a6cfbfd..ed20011 100644
--- a/third_party/WebKit/Source/core/BUILD.gn
+++ b/third_party/WebKit/Source/core/BUILD.gn
@@ -413,6 +413,7 @@
   in_files = [ "css/ComputedStyleExtraFields.json5" ]
   other_inputs = [
     "../build/scripts/templates/fields/field.tmpl",
+    "../build/scripts/templates/fields/group.tmpl",
     "../build/scripts/templates/fields/base.tmpl",
     "../build/scripts/templates/fields/keyword.tmpl",
     "../build/scripts/templates/fields/primitive.tmpl",
diff --git a/third_party/WebKit/Source/core/css/CSSProperties.json5 b/third_party/WebKit/Source/core/css/CSSProperties.json5
index 191cf0eb..3df68f3 100644
--- a/third_party/WebKit/Source/core/css/CSSProperties.json5
+++ b/third_party/WebKit/Source/core/css/CSSProperties.json5
@@ -61,6 +61,14 @@
       valid_values: ["parseSingleValue", "parseShorthand"],
     },
 
+    // - field_group
+    // Name of the group that this field belongs to. Fields in the same group are stored
+    // together as a nested class inside ComputedStyle and dynamically allocated on use.
+    // Leave this out if the field is stored directly on ComputedStyle.
+    field_group: {
+      value_type: "str"
+    },
+
     // - field_template
     // Affects how the interface to this field is generated.
     // TODO(sashab, meade): Remove this once TypedOM types are specified for
@@ -796,6 +804,10 @@
       keywords: ["auto"],
       supports_percentage: true,
       typedom_types: ["Length"],
+      field_template: "external",
+      field_type_path: "platform/Length",
+      field_group: "surround",
+      default_value: "Length()",
     },
     {
       name: "box-shadow",
@@ -1198,6 +1210,10 @@
       keywords: ["auto"],
       supports_percentage: true,
       typedom_types: ["Length"],
+      field_template: "external",
+      field_type_path: "platform/Length",
+      field_group: "surround",
+      default_value: "Length()",
     },
     {
       name: "letter-spacing",
@@ -1265,6 +1281,10 @@
       api_methods: ["parseSingleValue"],
       converter: "ConvertQuirkyLength",
       interpolable: true,
+      field_template: "external",
+      field_type_path: "platform/Length",
+      field_group: "surround",
+      default_value: "Length(kFixed)",
     },
     {
       name: "margin-left",
@@ -1272,6 +1292,10 @@
       api_methods: ["parseSingleValue"],
       converter: "ConvertQuirkyLength",
       interpolable: true,
+      field_template: "external",
+      field_type_path: "platform/Length",
+      field_group: "surround",
+      default_value: "Length(kFixed)",
     },
     {
       name: "margin-right",
@@ -1279,6 +1303,10 @@
       api_methods: ["parseSingleValue"],
       converter: "ConvertQuirkyLength",
       interpolable: true,
+      field_template: "external",
+      field_type_path: "platform/Length",
+      field_group: "surround",
+      default_value: "Length(kFixed)",
     },
     {
       name: "margin-top",
@@ -1286,6 +1314,10 @@
       api_methods: ["parseSingleValue"],
       converter: "ConvertQuirkyLength",
       interpolable: true,
+      field_template: "external",
+      field_type_path: "platform/Length",
+      field_group: "surround",
+      default_value: "Length(kFixed)",
     },
     {
       name: "marker-end",
@@ -1508,6 +1540,10 @@
       api_methods: ["parseSingleValue"],
       converter: "ConvertLength",
       interpolable: true,
+      field_template: "external",
+      field_type_path: "platform/Length",
+      field_group: "surround",
+      default_value: "Length(kFixed)",
     },
     {
       name: "padding-left",
@@ -1515,6 +1551,10 @@
       api_methods: ["parseSingleValue"],
       converter: "ConvertLength",
       interpolable: true,
+      field_template: "external",
+      field_type_path: "platform/Length",
+      field_group: "surround",
+      default_value: "Length(kFixed)",
     },
     {
       name: "padding-right",
@@ -1522,6 +1562,10 @@
       api_methods: ["parseSingleValue"],
       converter: "ConvertLength",
       interpolable: true,
+      field_template: "external",
+      field_type_path: "platform/Length",
+      field_group: "surround",
+      default_value: "Length(kFixed)",
     },
     {
       name: "padding-top",
@@ -1529,6 +1573,10 @@
       api_methods: ["parseSingleValue"],
       converter: "ConvertLength",
       interpolable: true,
+      field_template: "external",
+      field_type_path: "platform/Length",
+      field_group: "surround",
+      default_value: "Length(kFixed)",
     },
     {
       name: "paint-order",
@@ -1589,6 +1637,10 @@
       keywords: ["auto"],
       supports_percentage: true,
       typedom_types: ["Length"],
+      field_template: "external",
+      field_type_path: "platform/Length",
+      field_group: "surround",
+      default_value: "Length()",
     },
     {
       name: "r",
@@ -1907,6 +1959,10 @@
       keywords: ["auto"],
       supports_percentage: true,
       typedom_types: ["Length"],
+      field_template: "external",
+      field_type_path: "platform/Length",
+      field_group: "surround",
+      default_value: "Length()",
     },
     {
       name: "touch-action",
diff --git a/third_party/WebKit/Source/core/css/ComputedStyleExtraFields.json5 b/third_party/WebKit/Source/core/css/ComputedStyleExtraFields.json5
index eccee69b..719acfd 100644
--- a/third_party/WebKit/Source/core/css/ComputedStyleExtraFields.json5
+++ b/third_party/WebKit/Source/core/css/ComputedStyleExtraFields.json5
@@ -164,5 +164,12 @@
       type_name: "EVerticalAlign",
       has_custom_compare_and_copy: true,
     },
+    {
+      name: "border",
+      field_template: "storage_only",
+      field_type_path: "core/style/BorderData",
+      field_group: "surround",
+      default_value: "BorderData()",
+    },
   ],
 }
diff --git a/third_party/WebKit/Source/core/dom/PendingScript.h b/third_party/WebKit/Source/core/dom/PendingScript.h
index 1888204..b666717 100644
--- a/third_party/WebKit/Source/core/dom/PendingScript.h
+++ b/third_party/WebKit/Source/core/dom/PendingScript.h
@@ -58,7 +58,6 @@
 // https://html.spec.whatwg.org/#the-script-is-ready via PendingScriptClient.
 class CORE_EXPORT PendingScript
     : public GarbageCollectedFinalized<PendingScript> {
-  USING_PRE_FINALIZER(PendingScript, Dispose);
   WTF_MAKE_NONCOPYABLE(PendingScript);
 
  public:
diff --git a/third_party/WebKit/Source/core/editing/markers/DocumentMarker.h b/third_party/WebKit/Source/core/editing/markers/DocumentMarker.h
index 8dd5d00..25e398b 100644
--- a/third_party/WebKit/Source/core/editing/markers/DocumentMarker.h
+++ b/third_party/WebKit/Source/core/editing/markers/DocumentMarker.h
@@ -131,11 +131,6 @@
     MisspellingMarkers() : MarkerTypes(kSpelling | kGrammar) {}
   };
 
-  class SpellCheckClientMarkers : public MarkerTypes {
-   public:
-    SpellCheckClientMarkers() : MarkerTypes(kSpelling | kGrammar) {}
-  };
-
   enum class MatchStatus { kInactive, kActive };
 
   DocumentMarker(MarkerType,
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.cpp b/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.cpp
index 484e522..05c83354 100644
--- a/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.cpp
+++ b/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.cpp
@@ -262,8 +262,7 @@
 
   TextCheckingRequestData request_data = processing_request_->Data();
   if (request_data.Sequence() == sequence) {
-    DocumentMarker::MarkerTypes markers =
-        DocumentMarker::SpellCheckClientMarkers();
+    DocumentMarker::MarkerTypes markers = DocumentMarker::MisspellingMarkers();
     if (processing_request_->IsValid()) {
       Range* checking_range = processing_request_->CheckingRange();
       GetFrame().GetDocument()->Markers().RemoveMarkersInRange(
diff --git a/third_party/WebKit/Source/core/exported/BUILD.gn b/third_party/WebKit/Source/core/exported/BUILD.gn
index 0ca530df..69046a7 100644
--- a/third_party/WebKit/Source/core/exported/BUILD.gn
+++ b/third_party/WebKit/Source/core/exported/BUILD.gn
@@ -8,5 +8,7 @@
     "WebAssociatedURLLoaderImpl.cpp",
     "WebAssociatedURLLoaderImpl.h",
     "WebBlob.cpp",
+    "WebDataSourceImpl.cpp",
+    "WebDataSourceImpl.h",
   ]
 }
diff --git a/third_party/WebKit/Source/web/WebDataSourceImpl.cpp b/third_party/WebKit/Source/core/exported/WebDataSourceImpl.cpp
similarity index 98%
rename from third_party/WebKit/Source/web/WebDataSourceImpl.cpp
rename to third_party/WebKit/Source/core/exported/WebDataSourceImpl.cpp
index c3462bc..d2db829 100644
--- a/third_party/WebKit/Source/web/WebDataSourceImpl.cpp
+++ b/third_party/WebKit/Source/core/exported/WebDataSourceImpl.cpp
@@ -28,7 +28,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "web/WebDataSourceImpl.h"
+#include "core/exported/WebDataSourceImpl.h"
 
 #include <memory>
 #include "core/dom/Document.h"
diff --git a/third_party/WebKit/Source/web/WebDataSourceImpl.h b/third_party/WebKit/Source/core/exported/WebDataSourceImpl.h
similarity index 96%
rename from third_party/WebKit/Source/web/WebDataSourceImpl.h
rename to third_party/WebKit/Source/core/exported/WebDataSourceImpl.h
index 221e193..4a45d381 100644
--- a/third_party/WebKit/Source/web/WebDataSourceImpl.h
+++ b/third_party/WebKit/Source/core/exported/WebDataSourceImpl.h
@@ -32,6 +32,7 @@
 #define WebDataSourceImpl_h
 
 #include <memory>
+#include "core/CoreExport.h"
 #include "core/frame/FrameTypes.h"
 #include "core/loader/DocumentLoader.h"
 #include "platform/exported/WrappedResourceRequest.h"
@@ -43,7 +44,8 @@
 
 namespace blink {
 
-class WebDataSourceImpl final : public DocumentLoader, public WebDataSource {
+class CORE_EXPORT WebDataSourceImpl final : public DocumentLoader,
+                                            public WebDataSource {
  public:
   static WebDataSourceImpl* Create(LocalFrame*,
                                    const ResourceRequest&,
diff --git a/third_party/WebKit/Source/core/frame/FrameView.cpp b/third_party/WebKit/Source/core/frame/FrameView.cpp
index 51eabe3b..e8e0eaa 100644
--- a/third_party/WebKit/Source/core/frame/FrameView.cpp
+++ b/third_party/WebKit/Source/core/frame/FrameView.cpp
@@ -4098,8 +4098,6 @@
   if (scroll_delta.IsZero())
     return;
 
-  ShowOverlayScrollbars();
-
   if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
     // Don't scroll the FrameView!
     ASSERT_NOT_REACHED();
@@ -4144,6 +4142,8 @@
   }
 
   if (IsExplicitScrollType(scroll_type)) {
+    if (scroll_type != kCompositorScroll)
+      ShowOverlayScrollbars();
     ClearFragmentAnchor();
     ClearScrollAnchor();
   }
diff --git a/third_party/WebKit/Source/core/frame/VisualViewport.cpp b/third_party/WebKit/Source/core/frame/VisualViewport.cpp
index fd74773..69454fc 100644
--- a/third_party/WebKit/Source/core/frame/VisualViewport.cpp
+++ b/third_party/WebKit/Source/core/frame/VisualViewport.cpp
@@ -637,9 +637,13 @@
 
 void VisualViewport::UpdateScrollOffset(const ScrollOffset& position,
                                         ScrollType scroll_type) {
-  if (DidSetScaleOrLocation(scale_, FloatPoint(position)) &&
-      scroll_type != kAnchoringScroll)
+  if (!DidSetScaleOrLocation(scale_, FloatPoint(position)))
+    return;
+  if (IsExplicitScrollType(scroll_type)) {
     NotifyRootFrameViewport();
+    if (scroll_type != kCompositorScroll && LayerForScrolling())
+      LayerForScrolling()->PlatformLayer()->ShowScrollbars();
+  }
 }
 
 GraphicsLayer* VisualViewport::LayerForContainer() const {
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunner.cpp b/third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunner.cpp
index 6836584e..316d1a8 100644
--- a/third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunner.cpp
+++ b/third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunner.cpp
@@ -162,10 +162,7 @@
   DCHECK(host_);
 }
 
-HTMLParserScriptRunner::~HTMLParserScriptRunner() {
-  // Verify that detach() has been called.
-  DCHECK(!document_);
-}
+HTMLParserScriptRunner::~HTMLParserScriptRunner() {}
 
 void HTMLParserScriptRunner::Detach() {
   if (!document_)
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunner.h b/third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunner.h
index 8059a7d..09a30e5 100644
--- a/third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunner.h
+++ b/third_party/WebKit/Source/core/html/parser/HTMLParserScriptRunner.h
@@ -55,7 +55,6 @@
       private PendingScriptClient {
   WTF_MAKE_NONCOPYABLE(HTMLParserScriptRunner);
   USING_GARBAGE_COLLECTED_MIXIN(HTMLParserScriptRunner);
-  USING_PRE_FINALIZER(HTMLParserScriptRunner, Detach);
 
  public:
   static HTMLParserScriptRunner* Create(HTMLParserReentryPermit* reentry_permit,
@@ -65,8 +64,10 @@
   }
   ~HTMLParserScriptRunner();
 
-  // Prepares this object to be destroyed. Invoked when the parser is detached,
-  // or failing that, as a pre-finalizer.
+  // Invoked when the parser is detached.
+  //
+  // We don't need to call Detach() as a prefinalizer, because PendingScripts
+  // are Dispose()d in PendingScripts' prefinalizers.
   void Detach();
 
   // Processes the passed in script and any pending scripts if possible.
diff --git a/third_party/WebKit/Source/core/layout/LayoutListItem.cpp b/third_party/WebKit/Source/core/layout/LayoutListItem.cpp
index 2c7650c..b8055d1a 100644
--- a/third_party/WebKit/Source/core/layout/LayoutListItem.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutListItem.cpp
@@ -523,7 +523,7 @@
     return;
 
   Node* list_node = EnclosingList(this);
-  DCHECK(list_node);
+  CHECK(list_node);
 
   bool is_list_reversed = false;
   HTMLOListElement* o_list_element =
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
index deb91d4..ce48c55f 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
@@ -372,7 +372,6 @@
   if (GetScrollOffset() == new_offset)
     return;
 
-  ShowOverlayScrollbars();
   scroll_offset_ = new_offset;
 
   LocalFrame* frame = Box().GetFrame();
@@ -472,6 +471,8 @@
   }
 
   if (IsExplicitScrollType(scroll_type)) {
+    if (scroll_type != kCompositorScroll)
+      ShowOverlayScrollbars();
     frame_view->ClearFragmentAnchor();
     if (RuntimeEnabledFeatures::scrollAnchoringEnabled())
       GetScrollAnchor()->Clear();
diff --git a/third_party/WebKit/Source/core/style/BUILD.gn b/third_party/WebKit/Source/core/style/BUILD.gn
index ce98389..f380bf60 100644
--- a/third_party/WebKit/Source/core/style/BUILD.gn
+++ b/third_party/WebKit/Source/core/style/BUILD.gn
@@ -104,8 +104,6 @@
     "StyleScrollSnapData.cpp",
     "StyleScrollSnapData.h",
     "StyleSelfAlignmentData.h",
-    "StyleSurroundData.cpp",
-    "StyleSurroundData.h",
     "StyleTransformData.cpp",
     "StyleTransformData.h",
     "StyleVisualData.cpp",
diff --git a/third_party/WebKit/Source/core/style/ComputedStyle.cpp b/third_party/WebKit/Source/core/style/ComputedStyle.cpp
index 6864f7d5..2fa033d 100644
--- a/third_party/WebKit/Source/core/style/ComputedStyle.cpp
+++ b/third_party/WebKit/Source/core/style/ComputedStyle.cpp
@@ -117,7 +117,6 @@
   box_data_.Init();
   visual_data_.Init();
   background_data_.Init();
-  surround_data_.Init();
   rare_non_inherited_data_.Init();
   rare_non_inherited_data_.Access()->deprecated_flexible_box_.Init();
   rare_non_inherited_data_.Access()->flexible_box_.Init();
@@ -140,7 +139,6 @@
       box_data_(o.box_data_),
       visual_data_(o.visual_data_),
       background_data_(o.background_data_),
-      surround_data_(o.surround_data_),
       rare_non_inherited_data_(o.rare_non_inherited_data_),
       rare_inherited_data_(o.rare_inherited_data_),
       style_inherited_data_(o.style_inherited_data_),
@@ -336,7 +334,6 @@
   box_data_ = other.box_data_;
   visual_data_ = other.visual_data_;
   background_data_ = other.background_data_;
-  surround_data_ = other.surround_data_;
   rare_non_inherited_data_ = other.rare_non_inherited_data_;
 
   // The flags are copied one-by-one because they contain
@@ -485,7 +482,6 @@
          box_data_ == other.box_data_ &&
          visual_data_ == other.visual_data_ &&
          background_data_ == other.background_data_ &&
-         surround_data_ == other.surround_data_ &&
          rare_non_inherited_data_ == other.rare_non_inherited_data_ &&
          svg_style_->NonInheritedEqual(*other.svg_style_);
 }
diff --git a/third_party/WebKit/Source/core/style/ComputedStyle.h b/third_party/WebKit/Source/core/style/ComputedStyle.h
index ab15aeba..221444d 100644
--- a/third_party/WebKit/Source/core/style/ComputedStyle.h
+++ b/third_party/WebKit/Source/core/style/ComputedStyle.h
@@ -53,7 +53,6 @@
 #include "core/style/StyleRareNonInheritedData.h"
 #include "core/style/StyleReflection.h"
 #include "core/style/StyleSelfAlignmentData.h"
-#include "core/style/StyleSurroundData.h"
 #include "core/style/StyleTransformData.h"
 #include "core/style/StyleVisualData.h"
 #include "core/style/StyleWillChangeData.h"
@@ -188,7 +187,6 @@
   DataRef<StyleBoxData> box_data_;
   DataRef<StyleVisualData> visual_data_;
   DataRef<StyleBackgroundData> background_data_;
-  DataRef<StyleSurroundData> surround_data_;
   DataRef<StyleRareNonInheritedData> rare_non_inherited_data_;
 
   // inherited attributes
@@ -599,27 +597,6 @@
     SET_VAR(surround_data_, border_.bottom_right_, s);
   }
 
-  // Offset properties.
-  // left
-  static Length InitialLeft() { return Length(); }
-  const Length& Left() const { return surround_data_->left_; }
-  void SetLeft(const Length& v) { SET_VAR(surround_data_, left_, v); }
-
-  // right
-  static Length InitialRight() { return Length(); }
-  const Length& Right() const { return surround_data_->right_; }
-  void SetRight(const Length& v) { SET_VAR(surround_data_, right_, v); }
-
-  // top
-  static Length InitialTop() { return Length(); }
-  const Length& Top() const { return surround_data_->top_; }
-  void SetTop(const Length& v) { SET_VAR(surround_data_, top_, v); }
-
-  // bottom
-  static Length InitialBottom() { return Length(); }
-  const Length& Bottom() const { return surround_data_->bottom_; }
-  void SetBottom(const Length& v) { SET_VAR(surround_data_, bottom_, v); }
-
   // box-shadow (aka -webkit-box-shadow)
   static ShadowList* InitialBoxShadow() { return 0; }
   ShadowList* BoxShadow() const {
@@ -1094,36 +1071,6 @@
     rare_non_inherited_data_.Access()->isolation_ = v;
   }
 
-  // Margin properties.
-
-  // margin-top
-  static Length InitialMarginTop() { return Length(kFixed); }
-  const Length& MarginTop() const { return surround_data_->margin_top_; }
-  void SetMarginTop(const Length& v) {
-    SET_VAR(surround_data_, margin_top_, v);
-  }
-
-  // margin-bottom
-  static Length InitialMarginBottom() { return Length(kFixed); }
-  const Length& MarginBottom() const { return surround_data_->margin_bottom_; }
-  void SetMarginBottom(const Length& v) {
-    SET_VAR(surround_data_, margin_bottom_, v);
-  }
-
-  // margin-left
-  static Length InitialMarginLeft() { return Length(kFixed); }
-  const Length& MarginLeft() const { return surround_data_->margin_left_; }
-  void SetMarginLeft(const Length& v) {
-    SET_VAR(surround_data_, margin_left_, v);
-  }
-
-  // margin-right
-  static Length InitialMarginRight() { return Length(kFixed); }
-  const Length& MarginRight() const { return surround_data_->margin_right_; }
-  void SetMarginRight(const Length& v) {
-    SET_VAR(surround_data_, margin_right_, v);
-  }
-
   // -webkit-margin-before-collapse (aka -webkit-margin-top-collapse)
   static EMarginCollapse InitialMarginBeforeCollapse() {
     return kMarginCollapseCollapse;
@@ -1302,38 +1249,6 @@
     SET_VAR(rare_non_inherited_data_, outline_.offset_, v);
   }
 
-  // Padding properties.
-
-  // padding-bottom
-  static Length InitialPaddingBottom() { return Length(kFixed); }
-  const Length& PaddingBottom() const {
-    return surround_data_->padding_bottom_;
-  }
-  void SetPaddingBottom(const Length& v) {
-    SET_VAR(surround_data_, padding_bottom_, v);
-  }
-
-  // padding-left
-  static Length InitialPaddingLeft() { return Length(kFixed); }
-  const Length& PaddingLeft() const { return surround_data_->padding_left_; }
-  void SetPaddingLeft(const Length& v) {
-    SET_VAR(surround_data_, padding_left_, v);
-  }
-
-  // padding-right
-  static Length InitialPaddingRight() { return Length(kFixed); }
-  const Length& PaddingRight() const { return surround_data_->padding_right_; }
-  void SetPaddingRight(const Length& v) {
-    SET_VAR(surround_data_, padding_right_, v);
-  }
-
-  // padding-top
-  static Length InitialPaddingTop() { return Length(kFixed); }
-  const Length& PaddingTop() const { return surround_data_->padding_top_; }
-  void SetPaddingTop(const Length& v) {
-    SET_VAR(surround_data_, padding_top_, v);
-  }
-
   // perspective (aka -webkit-perspective)
   static float InitialPerspective() { return 0; }
   float Perspective() const { return rare_non_inherited_data_->perspective_; }
diff --git a/third_party/WebKit/Source/core/style/StyleSurroundData.cpp b/third_party/WebKit/Source/core/style/StyleSurroundData.cpp
deleted file mode 100644
index 8d04a40..0000000
--- a/third_party/WebKit/Source/core/style/StyleSurroundData.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org)
- * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#include "core/style/StyleSurroundData.h"
-
-namespace blink {
-
-StyleSurroundData::StyleSurroundData()
-    : margin_left_(kFixed),
-      margin_right_(kFixed),
-      margin_top_(kFixed),
-      margin_bottom_(kFixed),
-      padding_left_(kFixed),
-      padding_right_(kFixed),
-      padding_top_(kFixed),
-      padding_bottom_(kFixed) {}
-
-StyleSurroundData::StyleSurroundData(const StyleSurroundData& o)
-    : RefCounted<StyleSurroundData>(),
-      left_(o.left_),
-      right_(o.right_),
-      top_(o.top_),
-      bottom_(o.bottom_),
-      margin_left_(o.margin_left_),
-      margin_right_(o.margin_right_),
-      margin_top_(o.margin_top_),
-      margin_bottom_(o.margin_bottom_),
-      padding_left_(o.padding_left_),
-      padding_right_(o.padding_right_),
-      padding_top_(o.padding_top_),
-      padding_bottom_(o.padding_bottom_),
-      border_(o.border_) {}
-
-bool StyleSurroundData::operator==(const StyleSurroundData& o) const {
-  return (left_ == o.left_ && right_ == o.right_ && top_ == o.top_ &&
-          bottom_ == o.bottom_) &&
-         (margin_left_ == o.margin_left_ && margin_right_ == o.margin_right_ &&
-          margin_top_ == o.margin_top_ && margin_bottom_ == o.margin_bottom_) &&
-         (padding_left_ == o.padding_left_ &&
-          padding_right_ == o.padding_right_ &&
-          padding_top_ == o.padding_top_ &&
-          padding_bottom_ == o.padding_bottom_) &&
-         border_ == o.border_;
-}
-
-}  // namespace blink
diff --git a/third_party/WebKit/Source/core/style/StyleSurroundData.h b/third_party/WebKit/Source/core/style/StyleSurroundData.h
deleted file mode 100644
index 9807fde336..0000000
--- a/third_party/WebKit/Source/core/style/StyleSurroundData.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
- *           (C) 2000 Antti Koivisto (koivisto@kde.org)
- *           (C) 2000 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef StyleSurroundData_h
-#define StyleSurroundData_h
-
-#include "core/style/BorderData.h"
-#include "platform/LengthBox.h"
-#include "platform/wtf/PassRefPtr.h"
-#include "platform/wtf/RefCounted.h"
-
-namespace blink {
-
-// TODO(sashab): Move this into a private class on ComputedStyle, and remove
-// all methods on it, merging them into copy/creation methods on ComputedStyle
-// instead. Keep the allocation logic, only allocating a new object if needed.
-class CORE_EXPORT StyleSurroundData : public RefCounted<StyleSurroundData> {
- public:
-  static PassRefPtr<StyleSurroundData> Create() {
-    return AdoptRef(new StyleSurroundData);
-  }
-  PassRefPtr<StyleSurroundData> Copy() const {
-    return AdoptRef(new StyleSurroundData(*this));
-  }
-
-  bool operator==(const StyleSurroundData&) const;
-  bool operator!=(const StyleSurroundData& o) const { return !(*this == o); }
-
-  Length left_;
-  Length right_;
-  Length top_;
-  Length bottom_;
-  Length margin_left_;
-  Length margin_right_;
-  Length margin_top_;
-  Length margin_bottom_;
-  Length padding_left_;
-  Length padding_right_;
-  Length padding_top_;
-  Length padding_bottom_;
-  BorderData border_;
-
- private:
-  StyleSurroundData();
-  StyleSurroundData(const StyleSurroundData&);
-};
-
-}  // namespace blink
-
-#endif  // StyleSurroundData_h
diff --git a/third_party/WebKit/Source/modules/bluetooth/testing/clusterfuzz/gatt_aliases.py b/third_party/WebKit/Source/modules/bluetooth/testing/clusterfuzz/gatt_aliases.py
index 8b477129..e28d502 100644
--- a/third_party/WebKit/Source/modules/bluetooth/testing/clusterfuzz/gatt_aliases.py
+++ b/third_party/WebKit/Source/modules/bluetooth/testing/clusterfuzz/gatt_aliases.py
@@ -6,11 +6,9 @@
 
 These values are copied from:
 
-https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx
+https://www.bluetooth.com/specifications/gatt/services
 
-https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicsHome.aspx
-
-https://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorsHomePage.aspx
+https://www.bluetooth.com/specifications/gatt/characteristics
 """
 
 
@@ -27,6 +25,7 @@
     'cycling_speed_and_cadence',
     'device_information',
     'environmental_sensing',
+    'fitness_machine',
     'generic_access',
     'generic_attribute',
     'glucose',
@@ -91,6 +90,7 @@
     'cgm_session_start_time',
     'cgm_specific_ops_control_point',
     'cgm_status',
+    'cross_trainer_data',
     'csc_feature',
     'csc_measurement',
     'current_time',
@@ -116,6 +116,9 @@
     'fat_burn_heart_rate_upper_limit',
     'firmware_revision_string',
     'first_name',
+    'fitness_machine_control_point',
+    'fitness_machine_feature',
+    'fitness_machine_status',
     'five_zone_heart_rate_limits',
     'floor_number',
     'gender',
@@ -139,6 +142,7 @@
     'https_security',
     'humidity',
     'ieee_11073-20601_regulatory_certification_data_list',
+    'indoor_bike_data',
     'indoor_positioning_configuration',
     'intermediate_cuff_pressure',
     'intermediate_temperature',
@@ -191,9 +195,11 @@
     'reference_time_information',
     'report',
     'report_map',
+    'resolvable_private_address_only',
     'resting_heart_rate',
     'ringer_control_point',
     'ringer_setting',
+    'rower_data',
     'rsc_feature',
     'rsc_measurement',
     'sc_control_point',
@@ -203,7 +209,14 @@
     'gatt.service_changed',
     'software_revision_string',
     'sport_type_for_aerobic_and_anaerobic_thresholds',
+    'stair_climber_data',
+    'step_climber_data',
+    'supported_heart_rate_range',
+    'supported_inclination_range',
     'supported_new_alert_category',
+    'supported_power_range',
+    'supported_resistance_level_range',
+    'supported_speed_range',
     'supported_unread_alert_category',
     'system_id',
     'tds_control_point',
@@ -217,6 +230,8 @@
     'time_update_state',
     'time_with_dst',
     'time_zone',
+    'training_status',
+    'treadmill_data',
     'true_wind_direction',
     'true_wind_speed',
     'two_zone_heart_rate_limit',
diff --git a/third_party/WebKit/Source/modules/nfc/NFC.cpp b/third_party/WebKit/Source/modules/nfc/NFC.cpp
index 8193078..0818bb7d 100644
--- a/third_party/WebKit/Source/modules/nfc/NFC.cpp
+++ b/third_party/WebKit/Source/modules/nfc/NFC.cpp
@@ -431,33 +431,34 @@
   return false;
 }
 
-DOMException* IsValidNFCRecordArray(const HeapVector<NFCRecord>& records) {
-  // https://w3c.github.io/web-nfc/#the-push-method
-  // If NFCMessage.data is empty, reject promise with SyntaxError
+bool IsValidNFCRecordArray(const HeapVector<NFCRecord>& records) {
   if (records.IsEmpty())
-    return DOMException::Create(kSyntaxError);
+    return false;
 
   for (const auto& record : records) {
     if (!IsValidNFCRecord(record))
-      return DOMException::Create(kSyntaxError);
+      return false;
   }
 
-  return nullptr;
+  return true;
 }
 
-DOMException* IsValidNFCPushMessage(const NFCPushMessage& message) {
+bool IsValidNFCPushMessage(const NFCPushMessage& message) {
+  // If NFCPushMessage of invalid type, reject promise with TypeError
   if (!message.isNFCMessage() && !message.isString() &&
       !message.isArrayBuffer())
-    return DOMException::Create(kTypeMismatchError);
+    return false;
 
   if (message.isNFCMessage()) {
+    // https://w3c.github.io/web-nfc/#the-push-method
+    // If NFCMessage.data is empty, reject promise with TypeError
     if (!message.getAsNFCMessage().hasData())
-      return DOMException::Create(kTypeMismatchError);
+      return false;
 
     return IsValidNFCRecordArray(message.getAsNFCMessage().data());
   }
 
-  return nullptr;
+  return true;
 }
 
 bool SetURL(const String& origin,
@@ -614,9 +615,12 @@
   if (!promise.IsEmpty())
     return promise;
 
-  DOMException* exception = IsValidNFCPushMessage(push_message);
-  if (exception)
-    return ScriptPromise::RejectWithDOMException(script_state, exception);
+  if (!IsValidNFCPushMessage(push_message)) {
+    return ScriptPromise::Reject(
+        script_state, V8ThrowException::CreateTypeError(
+                          script_state->GetIsolate(),
+                          "Invalid NFCPushMessage type was provided."));
+  }
 
   device::nfc::mojom::blink::NFCMessagePtr message =
       device::nfc::mojom::blink::NFCMessage::From(push_message);
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp b/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp
index 55132629..78c7c18 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp
+++ b/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp
@@ -397,7 +397,6 @@
 }
 
 void ScrollableArea::ContentsResized() {
-  ShowOverlayScrollbars();
   if (ScrollAnimatorBase* scroll_animator = ExistingScrollAnimator())
     scroll_animator->ContentsResized();
 }
diff --git a/third_party/WebKit/Source/platform/scroll/Scrollbar.cpp b/third_party/WebKit/Source/platform/scroll/Scrollbar.cpp
index 0cc3aa1..fe31bb2 100644
--- a/third_party/WebKit/Source/platform/scroll/Scrollbar.cpp
+++ b/third_party/WebKit/Source/platform/scroll/Scrollbar.cpp
@@ -544,8 +544,11 @@
   enabled_ = e;
   GetTheme().UpdateEnabledState(*this);
 
-  ScrollbarPart invalid_parts = GetTheme().InvalidateOnEnabledChange();
-  SetNeedsPaintInvalidation(invalid_parts);
+  // We can skip thumb/track repaint when hiding an overlay scrollbar, but not
+  // when showing (since the proportions may have changed while hidden).
+  bool skipPartsRepaint = IsOverlayScrollbar() && scrollable_area_ &&
+                          scrollable_area_->ScrollbarsHidden();
+  SetNeedsPaintInvalidation(skipPartsRepaint ? kNoPart : kAllParts);
 }
 
 int Scrollbar::ScrollbarThickness() const {
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollbarTestSuite.h b/third_party/WebKit/Source/platform/scroll/ScrollbarTestSuite.h
index e2d1c5a..c80dbbda 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollbarTestSuite.h
+++ b/third_party/WebKit/Source/platform/scroll/ScrollbarTestSuite.h
@@ -44,6 +44,7 @@
   MOCK_CONST_METHOD0(LayerForVerticalScrollbar, GraphicsLayer*());
   MOCK_CONST_METHOD0(HorizontalScrollbar, Scrollbar*());
   MOCK_CONST_METHOD0(VerticalScrollbar, Scrollbar*());
+  MOCK_CONST_METHOD0(ScrollbarsHidden, bool());
 
   bool UserInputScrollable(ScrollbarOrientation) const override { return true; }
   bool ScrollbarsCanBeActive() const override { return true; }
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollbarTheme.h b/third_party/WebKit/Source/platform/scroll/ScrollbarTheme.h
index 75b4c55..935014bd 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollbarTheme.h
+++ b/third_party/WebKit/Source/platform/scroll/ScrollbarTheme.h
@@ -94,10 +94,6 @@
     return kAllParts;
   }
 
-  // Returns parts of the scrollbar which must be repainted following a change
-  // in enabled state.
-  virtual ScrollbarPart InvalidateOnEnabledChange() const { return kAllParts; }
-
   virtual void PaintScrollCorner(GraphicsContext&,
                                  const DisplayItemClient&,
                                  const IntRect& corner_rect);
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollbarThemeOverlay.cpp b/third_party/WebKit/Source/platform/scroll/ScrollbarThemeOverlay.cpp
index b978eec..7bb561d 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollbarThemeOverlay.cpp
+++ b/third_party/WebKit/Source/platform/scroll/ScrollbarThemeOverlay.cpp
@@ -69,10 +69,6 @@
   return kNoPart;
 }
 
-ScrollbarPart ScrollbarThemeOverlay::InvalidateOnEnabledChange() const {
-  return kNoPart;
-}
-
 int ScrollbarThemeOverlay::ScrollbarThickness(
     ScrollbarControlSize control_size) {
   return thumb_thickness_ + scrollbar_margin_;
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollbarThemeOverlay.h b/third_party/WebKit/Source/platform/scroll/ScrollbarThemeOverlay.h
index 4c0b2d4..41814eb 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollbarThemeOverlay.h
+++ b/third_party/WebKit/Source/platform/scroll/ScrollbarThemeOverlay.h
@@ -53,8 +53,6 @@
       float old_position,
       float new_position) const override;
 
-  ScrollbarPart InvalidateOnEnabledChange() const override;
-
   int ScrollbarThickness(ScrollbarControlSize) override;
   int ScrollbarMargin() const override;
   bool UsesOverlayScrollbars() const override;
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollbarThemeOverlayTest.cpp b/third_party/WebKit/Source/platform/scroll/ScrollbarThemeOverlayTest.cpp
index e52e70a..7beab665 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollbarThemeOverlayTest.cpp
+++ b/third_party/WebKit/Source/platform/scroll/ScrollbarThemeOverlayTest.cpp
@@ -115,17 +115,23 @@
   vertical_scrollbar->ClearThumbNeedsRepaint();
   mock_scrollable_area->ClearNeedsPaintInvalidationForScrollControls();
 
-  // Disabling the scrollbar is used to hide it so it should cause invalidation
-  // but only in the general sense since the compositor will have hidden it
-  // without a repaint.
+  // Hiding the scrollbar should invalidate the layer (SetNeedsDisplay) but not
+  // trigger repaint of the thumb resouce, since the compositor will give the
+  // entire layer opacity 0.
+  EXPECT_CALL(*mock_scrollable_area, ScrollbarsHidden()).WillOnce(Return(true));
   vertical_scrollbar->SetEnabled(false);
   EXPECT_FALSE(vertical_scrollbar->ThumbNeedsRepaint());
   EXPECT_TRUE(mock_scrollable_area->VerticalScrollbarNeedsPaintInvalidation());
 
   mock_scrollable_area->ClearNeedsPaintInvalidationForScrollControls();
 
+  // Showing the scrollbar needs to repaint the thumb resource, since it may
+  // have been repainted in the disabled state while hidden (e.g. from
+  // SetProportion on bounds changes).
+  EXPECT_CALL(*mock_scrollable_area, ScrollbarsHidden())
+      .WillOnce(Return(false));
   vertical_scrollbar->SetEnabled(true);
-  EXPECT_FALSE(vertical_scrollbar->ThumbNeedsRepaint());
+  EXPECT_TRUE(vertical_scrollbar->ThumbNeedsRepaint());
   EXPECT_TRUE(mock_scrollable_area->VerticalScrollbarNeedsPaintInvalidation());
 
   ThreadState::Current()->CollectAllGarbage();
diff --git a/third_party/WebKit/Source/web/BUILD.gn b/third_party/WebKit/Source/web/BUILD.gn
index 3ba1328..8d854b2 100644
--- a/third_party/WebKit/Source/web/BUILD.gn
+++ b/third_party/WebKit/Source/web/BUILD.gn
@@ -140,8 +140,6 @@
     "WebDOMFileSystem.cpp",
     "WebDOMMediaStreamTrack.cpp",
     "WebDOMMessageEvent.cpp",
-    "WebDataSourceImpl.cpp",
-    "WebDataSourceImpl.h",
     "WebDatabase.cpp",
     "WebDateTimeSuggestion.cpp",
     "WebDevToolsAgentImpl.cpp",
diff --git a/third_party/WebKit/Source/web/ContextMenuClientImpl.cpp b/third_party/WebKit/Source/web/ContextMenuClientImpl.cpp
index d2fd4a6..17689b0 100644
--- a/third_party/WebKit/Source/web/ContextMenuClientImpl.cpp
+++ b/third_party/WebKit/Source/web/ContextMenuClientImpl.cpp
@@ -39,6 +39,7 @@
 #include "core/editing/Editor.h"
 #include "core/editing/markers/DocumentMarkerController.h"
 #include "core/editing/spellcheck/SpellChecker.h"
+#include "core/exported/WebDataSourceImpl.h"
 #include "core/frame/FrameView.h"
 #include "core/frame/Settings.h"
 #include "core/frame/VisualViewport.h"
@@ -76,7 +77,6 @@
 #include "public/web/WebTextCheckClient.h"
 #include "public/web/WebViewClient.h"
 #include "web/ContextMenuAllowedScope.h"
-#include "web/WebDataSourceImpl.h"
 #include "web/WebLocalFrameImpl.h"
 #include "web/WebPluginContainerImpl.h"
 #include "web/WebViewImpl.h"
diff --git a/third_party/WebKit/Source/web/LocalFrameClientImpl.cpp b/third_party/WebKit/Source/web/LocalFrameClientImpl.cpp
index 698387f6..764f5373 100644
--- a/third_party/WebKit/Source/web/LocalFrameClientImpl.cpp
+++ b/third_party/WebKit/Source/web/LocalFrameClientImpl.cpp
@@ -38,6 +38,7 @@
 #include "core/events/MessageEvent.h"
 #include "core/events/MouseEvent.h"
 #include "core/events/UIEventWithKeyState.h"
+#include "core/exported/WebDataSourceImpl.h"
 #include "core/frame/FrameView.h"
 #include "core/frame/Settings.h"
 #include "core/html/HTMLFrameElementBase.h"
@@ -101,7 +102,6 @@
 #include "v8/include/v8.h"
 #include "web/DevToolsEmulator.h"
 #include "web/SharedWorkerRepositoryClientImpl.h"
-#include "web/WebDataSourceImpl.h"
 #include "web/WebDevToolsAgentImpl.h"
 #include "web/WebDevToolsFrontendImpl.h"
 #include "web/WebLocalFrameImpl.h"
@@ -212,8 +212,7 @@
     v8::Local<v8::Context> context,
     int world_id) {
   if (web_frame_->Client()) {
-    web_frame_->Client()->WillReleaseScriptContext(web_frame_, context,
-                                                   world_id);
+    web_frame_->Client()->WillReleaseScriptContext(context, world_id);
   }
 }
 
@@ -223,7 +222,7 @@
 
 void LocalFrameClientImpl::DidChangeScrollOffset() {
   if (web_frame_->Client())
-    web_frame_->Client()->DidChangeScrollOffset(web_frame_);
+    web_frame_->Client()->DidChangeScrollOffset();
 }
 
 void LocalFrameClientImpl::DidUpdateCurrentHistoryItem() {
diff --git a/third_party/WebKit/Source/web/WebEmbeddedWorkerImpl.cpp b/third_party/WebKit/Source/web/WebEmbeddedWorkerImpl.cpp
index 897aa72..72cdbe4 100644
--- a/third_party/WebKit/Source/web/WebEmbeddedWorkerImpl.cpp
+++ b/third_party/WebKit/Source/web/WebEmbeddedWorkerImpl.cpp
@@ -35,6 +35,7 @@
 #include "core/dom/Document.h"
 #include "core/dom/SecurityContext.h"
 #include "core/dom/TaskRunnerHelper.h"
+#include "core/exported/WebDataSourceImpl.h"
 #include "core/frame/csp/ContentSecurityPolicy.h"
 #include "core/inspector/ConsoleMessage.h"
 #include "core/loader/FrameLoadRequest.h"
@@ -76,7 +77,6 @@
 #include "web/IndexedDBClientImpl.h"
 #include "web/ServiceWorkerGlobalScopeClientImpl.h"
 #include "web/ServiceWorkerGlobalScopeProxy.h"
-#include "web/WebDataSourceImpl.h"
 #include "web/WebLocalFrameImpl.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp b/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
index 7575f0a..ff374255 100644
--- a/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
+++ b/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
@@ -121,6 +121,7 @@
 #include "core/editing/serializers/Serialization.h"
 #include "core/editing/spellcheck/SpellChecker.h"
 #include "core/exported/WebAssociatedURLLoaderImpl.h"
+#include "core/exported/WebDataSourceImpl.h"
 #include "core/frame/FrameView.h"
 #include "core/frame/LocalDOMWindow.h"
 #include "core/frame/PageScaleConstraintsSet.h"
@@ -226,7 +227,6 @@
 #include "web/SharedWorkerRepositoryClientImpl.h"
 #include "web/TextCheckerClientImpl.h"
 #include "web/TextFinder.h"
-#include "web/WebDataSourceImpl.h"
 #include "web/WebDevToolsAgentImpl.h"
 #include "web/WebFrameWidgetImpl.h"
 #include "web/WebPluginContainerImpl.h"
diff --git a/third_party/WebKit/Source/web/WebPluginContainerImpl.cpp b/third_party/WebKit/Source/web/WebPluginContainerImpl.cpp
index 6b626f6..cecd62cc 100644
--- a/third_party/WebKit/Source/web/WebPluginContainerImpl.cpp
+++ b/third_party/WebKit/Source/web/WebPluginContainerImpl.cpp
@@ -50,6 +50,7 @@
 #include "core/events/ResourceProgressEvent.h"
 #include "core/events/TouchEvent.h"
 #include "core/events/WheelEvent.h"
+#include "core/exported/WebDataSourceImpl.h"
 #include "core/frame/EventHandlerRegistry.h"
 #include "core/frame/FrameView.h"
 #include "core/frame/LocalFrame.h"
@@ -102,7 +103,6 @@
 #include "public/web/WebPrintPresetOptions.h"
 #include "public/web/WebViewClient.h"
 #include "web/ChromeClientImpl.h"
-#include "web/WebDataSourceImpl.h"
 #include "web/WebInputEventConversion.h"
 #include "web/WebLocalFrameImpl.h"
 #include "web/WebViewImpl.h"
diff --git a/third_party/WebKit/Source/web/WebSharedWorkerImpl.cpp b/third_party/WebKit/Source/web/WebSharedWorkerImpl.cpp
index 02e2ad20..ccb47ded8 100644
--- a/third_party/WebKit/Source/web/WebSharedWorkerImpl.cpp
+++ b/third_party/WebKit/Source/web/WebSharedWorkerImpl.cpp
@@ -34,6 +34,7 @@
 #include "core/dom/Document.h"
 #include "core/dom/TaskRunnerHelper.h"
 #include "core/events/MessageEvent.h"
+#include "core/exported/WebDataSourceImpl.h"
 #include "core/inspector/ConsoleMessage.h"
 #include "core/loader/FrameLoadRequest.h"
 #include "core/loader/FrameLoader.h"
@@ -74,7 +75,6 @@
 #include "public/web/WebWorkerContentSettingsClientProxy.h"
 #include "web/IndexedDBClientImpl.h"
 #include "web/LocalFileSystemClient.h"
-#include "web/WebDataSourceImpl.h"
 #include "web/WebLocalFrameImpl.h"
 
 namespace blink {
diff --git a/third_party/WebKit/Source/web/tests/VisualViewportTest.cpp b/third_party/WebKit/Source/web/tests/VisualViewportTest.cpp
index 0f100a0..8bc5872 100644
--- a/third_party/WebKit/Source/web/tests/VisualViewportTest.cpp
+++ b/third_party/WebKit/Source/web/tests/VisualViewportTest.cpp
@@ -1113,7 +1113,7 @@
 class MockWebFrameClient : public FrameTestHelpers::TestWebFrameClient {
  public:
   MOCK_METHOD1(ShowContextMenu, void(const WebContextMenuData&));
-  MOCK_METHOD1(DidChangeScrollOffset, void(WebLocalFrame*));
+  MOCK_METHOD0(DidChangeScrollOffset, void());
 };
 
 MATCHER_P2(ContextMenuAtLocation,
@@ -1167,7 +1167,7 @@
   // should still appear at the location of the event, relative to the WebView.
   VisualViewport& visualViewport = frame()->GetPage()->GetVisualViewport();
   webViewImpl()->SetPageScaleFactor(2);
-  EXPECT_CALL(mockWebFrameClient, DidChangeScrollOffset(_));
+  EXPECT_CALL(mockWebFrameClient, DidChangeScrollOffset());
   visualViewport.SetLocation(FloatPoint(60, 80));
   EXPECT_CALL(mockWebFrameClient, ShowContextMenu(ContextMenuAtLocation(
                                       mouseDownEvent.PositionInWidget().x,
@@ -1196,17 +1196,17 @@
   webViewImpl()->SetPageScaleFactor(2);
   VisualViewport& visualViewport = frame()->GetPage()->GetVisualViewport();
 
-  EXPECT_CALL(mockWebFrameClient, DidChangeScrollOffset(_));
+  EXPECT_CALL(mockWebFrameClient, DidChangeScrollOffset());
   visualViewport.SetLocation(FloatPoint(60, 80));
   Mock::VerifyAndClearExpectations(&mockWebFrameClient);
 
   // Scroll vertically.
-  EXPECT_CALL(mockWebFrameClient, DidChangeScrollOffset(_));
+  EXPECT_CALL(mockWebFrameClient, DidChangeScrollOffset());
   visualViewport.SetLocation(FloatPoint(60, 90));
   Mock::VerifyAndClearExpectations(&mockWebFrameClient);
 
   // Scroll horizontally.
-  EXPECT_CALL(mockWebFrameClient, DidChangeScrollOffset(_));
+  EXPECT_CALL(mockWebFrameClient, DidChangeScrollOffset());
   visualViewport.SetLocation(FloatPoint(70, 90));
 
   // Reset the old client so destruction can occur naturally.
diff --git a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
index 17a956bc..a293e66 100644
--- a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
+++ b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
@@ -4449,32 +4449,69 @@
     int world_id;
   };
 
+  ContextLifetimeTestWebFrameClient(
+      Vector<std::unique_ptr<Notification>>& create_notifications,
+      Vector<std::unique_ptr<Notification>>& release_notifications)
+      : create_notifications_(create_notifications),
+        release_notifications_(release_notifications) {}
+
   ~ContextLifetimeTestWebFrameClient() override { Reset(); }
 
   void Reset() {
-    create_notifications.clear();
-    release_notifications.clear();
+    create_notifications_.clear();
+    release_notifications_.clear();
   }
 
-  Vector<std::unique_ptr<Notification>> create_notifications;
-  Vector<std::unique_ptr<Notification>> release_notifications;
-
  private:
+  Vector<std::unique_ptr<Notification>>& create_notifications_;
+  Vector<std::unique_ptr<Notification>>& release_notifications_;
+
   void DidCreateScriptContext(WebLocalFrame* frame,
                               v8::Local<v8::Context> context,
                               int world_id) override {
-    create_notifications.push_back(
+    ASSERT_EQ(Frame(), frame);
+    create_notifications_.push_back(
         WTF::MakeUnique<Notification>(frame, context, world_id));
   }
 
-  void WillReleaseScriptContext(WebLocalFrame* frame,
-                                v8::Local<v8::Context> context,
+  void WillReleaseScriptContext(v8::Local<v8::Context> context,
                                 int world_id) override {
-    release_notifications.push_back(
-        WTF::MakeUnique<Notification>(frame, context, world_id));
+    release_notifications_.push_back(
+        WTF::MakeUnique<Notification>(Frame(), context, world_id));
   }
 };
 
+class ContextLifetimeTestMainFrameClient
+    : public ContextLifetimeTestWebFrameClient {
+ public:
+  ContextLifetimeTestMainFrameClient(
+      Vector<std::unique_ptr<Notification>>& create_notifications,
+      Vector<std::unique_ptr<Notification>>& release_notifications)
+      : ContextLifetimeTestWebFrameClient(create_notifications,
+                                          release_notifications),
+        child_client_(create_notifications, release_notifications) {}
+
+  WebLocalFrame* CreateChildFrame(
+      WebLocalFrame* parent,
+      WebTreeScopeType scope,
+      const WebString& name,
+      const WebString& fallback_name,
+      WebSandboxFlags sandbox_flags,
+      const WebParsedFeaturePolicy& container_policy,
+      const WebFrameOwnerProperties&) override {
+    WebLocalFrame* frame =
+        WebLocalFrame::Create(scope, &child_client_, nullptr, nullptr);
+    child_client_.SetFrame(frame);
+    parent->AppendChild(frame);
+    return frame;
+  }
+
+  ContextLifetimeTestWebFrameClient& ChildClient() { return child_client_; }
+
+ private:
+  ContextLifetimeTestWebFrameClient child_client_;
+};
+
 TEST_P(ParameterizedWebFrameTest, ContextNotificationsLoadUnload) {
   v8::HandleScope handle_scope(v8::Isolate::GetCurrent());
 
@@ -4483,7 +4520,12 @@
 
   // Load a frame with an iframe, make sure we get the right create
   // notifications.
-  ContextLifetimeTestWebFrameClient web_frame_client;
+  Vector<std::unique_ptr<ContextLifetimeTestWebFrameClient::Notification>>
+      create_notifications;
+  Vector<std::unique_ptr<ContextLifetimeTestWebFrameClient::Notification>>
+      release_notifications;
+  ContextLifetimeTestMainFrameClient web_frame_client(create_notifications,
+                                                      release_notifications);
   FrameTestHelpers::WebViewHelper web_view_helper;
   web_view_helper.InitializeAndLoad(
       base_url_ + "context_notifications_test.html", true, &web_frame_client);
@@ -4491,11 +4533,11 @@
   WebFrame* main_frame = web_view_helper.WebView()->MainFrame();
   WebFrame* child_frame = main_frame->FirstChild();
 
-  ASSERT_EQ(2u, web_frame_client.create_notifications.size());
-  EXPECT_EQ(0u, web_frame_client.release_notifications.size());
+  ASSERT_EQ(2u, create_notifications.size());
+  EXPECT_EQ(0u, release_notifications.size());
 
-  auto& first_create_notification = web_frame_client.create_notifications[0];
-  auto& second_create_notification = web_frame_client.create_notifications[1];
+  auto& first_create_notification = create_notifications[0];
+  auto& second_create_notification = create_notifications[1];
 
   EXPECT_EQ(main_frame, first_create_notification->frame);
   EXPECT_EQ(main_frame->MainWorldScriptContext(),
@@ -4511,9 +4553,9 @@
   // the same as the create ones, in reverse order.
   web_view_helper.Reset();
 
-  ASSERT_EQ(2u, web_frame_client.release_notifications.size());
-  auto& first_release_notification = web_frame_client.release_notifications[0];
-  auto& second_release_notification = web_frame_client.release_notifications[1];
+  ASSERT_EQ(2u, release_notifications.size());
+  auto& first_release_notification = release_notifications[0];
+  auto& second_release_notification = release_notifications[1];
 
   ASSERT_TRUE(
       first_create_notification->Equals(second_release_notification.get()));
@@ -4527,7 +4569,12 @@
   RegisterMockedHttpURLLoad("context_notifications_test.html");
   RegisterMockedHttpURLLoad("context_notifications_test_frame.html");
 
-  ContextLifetimeTestWebFrameClient web_frame_client;
+  Vector<std::unique_ptr<ContextLifetimeTestWebFrameClient::Notification>>
+      create_notifications;
+  Vector<std::unique_ptr<ContextLifetimeTestWebFrameClient::Notification>>
+      release_notifications;
+  ContextLifetimeTestMainFrameClient web_frame_client(create_notifications,
+                                                      release_notifications);
   FrameTestHelpers::WebViewHelper web_view_helper;
   web_view_helper.InitializeAndLoad(
       base_url_ + "context_notifications_test.html", true, &web_frame_client);
@@ -4535,25 +4582,22 @@
   // Refresh, we should get two release notifications and two more create
   // notifications.
   FrameTestHelpers::ReloadFrame(web_view_helper.WebView()->MainFrame());
-  ASSERT_EQ(4u, web_frame_client.create_notifications.size());
-  ASSERT_EQ(2u, web_frame_client.release_notifications.size());
+  ASSERT_EQ(4u, create_notifications.size());
+  ASSERT_EQ(2u, release_notifications.size());
 
   // The two release notifications we got should be exactly the same as the
   // first two create notifications.
-  for (size_t i = 0; i < web_frame_client.release_notifications.size(); ++i) {
-    EXPECT_TRUE(web_frame_client.release_notifications[i]->Equals(
-        web_frame_client
-            .create_notifications[web_frame_client.create_notifications.size() -
-                                  3 - i]
-            .get()));
+  for (size_t i = 0; i < release_notifications.size(); ++i) {
+    EXPECT_TRUE(release_notifications[i]->Equals(
+        create_notifications[create_notifications.size() - 3 - i].get()));
   }
 
   // The last two create notifications should be for the current frames and
   // context.
   WebFrame* main_frame = web_view_helper.WebView()->MainFrame();
   WebFrame* child_frame = main_frame->FirstChild();
-  auto& first_refresh_notification = web_frame_client.create_notifications[2];
-  auto& second_refresh_notification = web_frame_client.create_notifications[3];
+  auto& first_refresh_notification = create_notifications[2];
+  auto& second_refresh_notification = create_notifications[3];
 
   EXPECT_EQ(main_frame, first_refresh_notification->frame);
   EXPECT_EQ(main_frame->MainWorldScriptContext(),
@@ -4573,7 +4617,12 @@
   RegisterMockedHttpURLLoad("context_notifications_test.html");
   RegisterMockedHttpURLLoad("context_notifications_test_frame.html");
 
-  ContextLifetimeTestWebFrameClient web_frame_client;
+  Vector<std::unique_ptr<ContextLifetimeTestWebFrameClient::Notification>>
+      create_notifications;
+  Vector<std::unique_ptr<ContextLifetimeTestWebFrameClient::Notification>>
+      release_notifications;
+  ContextLifetimeTestMainFrameClient web_frame_client(create_notifications,
+                                                      release_notifications);
   FrameTestHelpers::WebViewHelper web_view_helper;
   web_view_helper.InitializeAndLoad(
       base_url_ + "context_notifications_test.html", true, &web_frame_client);
@@ -4588,8 +4637,8 @@
       isolated_world_id, &script_source, num_sources);
 
   // We should now have a new create notification.
-  ASSERT_EQ(1u, web_frame_client.create_notifications.size());
-  auto& notification = web_frame_client.create_notifications[0];
+  ASSERT_EQ(1u, create_notifications.size());
+  auto& notification = create_notifications[0];
   ASSERT_EQ(isolated_world_id, notification->world_id);
   ASSERT_EQ(web_view_helper.WebView()->MainFrame(), notification->frame);
 
@@ -4602,14 +4651,13 @@
 
   // We should have gotten three release notifications (one for each of the
   // frames, plus one for the isolated context).
-  ASSERT_EQ(3u, web_frame_client.release_notifications.size());
+  ASSERT_EQ(3u, release_notifications.size());
 
   // And one of them should be exactly the same as the create notification for
   // the isolated context.
   int match_count = 0;
-  for (size_t i = 0; i < web_frame_client.release_notifications.size(); ++i) {
-    if (web_frame_client.release_notifications[i]->Equals(
-            web_frame_client.create_notifications[0].get()))
+  for (size_t i = 0; i < release_notifications.size(); ++i) {
+    if (release_notifications[i]->Equals(create_notifications[0].get()))
       ++match_count;
   }
   EXPECT_EQ(1, match_count);
@@ -6956,11 +7004,11 @@
   bool WasFrameScrolled() const { return did_scroll_frame_; }
 
   // WebFrameClient:
-  void DidChangeScrollOffset(WebLocalFrame* frame) override {
-    if (frame->Parent())
+  void DidChangeScrollOffset() override {
+    if (Frame()->Parent())
       return;
     EXPECT_FALSE(did_scroll_frame_);
-    FrameView* view = ToWebLocalFrameImpl(frame)->GetFrameView();
+    FrameView* view = ToWebLocalFrameImpl(Frame())->GetFrameView();
     // FrameView can be scrolled in FrameView::setFixedVisibleContentRect which
     // is called from LocalFrame::createView (before the frame is associated
     // with the the view).
@@ -11579,9 +11627,6 @@
   frame->ExecuteScript(WebScriptSource(
       "document.getElementById('space').style.height = '500px';"));
   frame->View()->UpdateAllLifecyclePhases();
-
-  EXPECT_FALSE(scrollable_area->ScrollbarsHidden());
-  testing::RunDelayedTasks(kMockOverlayFadeOutDelayMs);
   EXPECT_TRUE(scrollable_area->ScrollbarsHidden());
 
   frame->ExecuteScript(WebScriptSource(
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py
index 9147c2c..758f59f9 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py
@@ -48,6 +48,8 @@
 
     BUILD_REQUIREMENTS_URL = 'https://chromium.googlesource.com/chromium/src/+/master/docs/linux_build_instructions.md'
 
+    XVFB_START_TIMEOUT = 5.0  # Wait up to 5 seconds for Xvfb to start.
+
     @classmethod
     def determine_full_port_name(cls, host, options, port_name):
         if port_name.endswith('linux'):
@@ -168,6 +170,19 @@
         if self._xvfb_process.poll() is not None:
             _log.warn('Failed to start Xvfb on display "%s."', display)
 
+        start_time = self.host.time()
+        while self.host.time() - start_time < self.XVFB_START_TIMEOUT:
+            # We don't explicitly set the display, as we want to check the
+            # environment value.
+            exit_code = self.host.executive.run_command(
+                ['xdpyinfo'], return_exit_code=True)
+            if exit_code == 0:
+                _log.info('Successfully started Xvfb with display "%s".', display)
+                return
+            _log.warn('xdpyinfo check failed with exit code %s while starting Xvfb on "%s".', exit_code, display)
+            self.host.sleep(0.1)
+        _log.fatal('Failed to start Xvfb on display "%s" (xdpyinfo check failed).', display)
+
     def _find_display(self):
         """Tries to find a free X display, looping if necessary."""
         # The "xvfb-run" command uses :99 by default.
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux_unittest.py
index 9b6a25e5..9b96ae6 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux_unittest.py
@@ -116,22 +116,37 @@
         self.assertFalse(port.host.filesystem.exists(temp_home_dir))
 
     def test_setup_test_run_starts_xvfb(self):
+        def run_command_fake(args):
+            if args[0] == 'xdpyinfo':
+                if '-display' in args:
+                    return 1
+            return 0
+
         port = self.make_port()
-        port.host.executive = MockExecutive(exit_code=1)
+        port.host.executive = MockExecutive(
+            run_command_fn=run_command_fake)
         port.setup_test_run()
         self.assertEqual(
             port.host.executive.calls,
             [
                 ['xdpyinfo', '-display', ':99'],
                 ['Xvfb', ':99', '-screen', '0', '1280x800x24', '-ac', '-dpi', '96'],
+                ['xdpyinfo'],
             ])
         env = port.setup_environ_for_server()
         self.assertEqual(env['DISPLAY'], ':99')
 
     def test_setup_test_runs_finds_free_display(self):
+        def run_command_fake(args):
+            if args[0] == 'xdpyinfo':
+                if '-display' in args:
+                    if ':102' in args:
+                        return 1
+            return 0
+
         port = self.make_port()
         port.host.executive = MockExecutive(
-            run_command_fn=lambda args: 1 if ':102' in args else 0)
+            run_command_fn=run_command_fake)
         port.setup_test_run()
         self.assertEqual(
             port.host.executive.calls,
@@ -141,6 +156,56 @@
                 ['xdpyinfo', '-display', ':101'],
                 ['xdpyinfo', '-display', ':102'],
                 ['Xvfb', ':102', '-screen', '0', '1280x800x24', '-ac', '-dpi', '96'],
+                ['xdpyinfo'],
             ])
         env = port.setup_environ_for_server()
         self.assertEqual(env['DISPLAY'], ':102')
+
+    def test_setup_test_runs_multiple_checks_when_slow_to_start(self):
+        count = [0]
+
+        def run_command_fake(args):
+            if args[0] == 'xdpyinfo':
+                if '-display' in args:
+                    return 1
+                if count[0] < 3:
+                    count[0] += 1
+                    return 1
+            return 0
+
+        port = self.make_port()
+        port.host.executive = MockExecutive(
+            run_command_fn=run_command_fake)
+        port.setup_test_run()
+        self.assertEqual(
+            port.host.executive.calls,
+            [
+                ['xdpyinfo', '-display', ':99'],
+                ['Xvfb', ':99', '-screen', '0', '1280x800x24', '-ac', '-dpi', '96'],
+                ['xdpyinfo'],
+                ['xdpyinfo'],
+                ['xdpyinfo'],
+                ['xdpyinfo'],
+            ])
+        env = port.setup_environ_for_server()
+        self.assertEqual(env['DISPLAY'], ':99')
+
+    def test_setup_test_runs_eventually_failes_on_failure(self):
+        def run_command_fake(args):
+            if args[0] == 'xdpyinfo':
+                return 1
+            return 0
+
+        host = MockSystemHost(os_name=self.os_name, os_version=self.os_version)
+        port = self.make_port(host=host)
+        port.host.executive = MockExecutive(
+            run_command_fn=run_command_fake)
+        port.setup_test_run()
+        self.assertEqual(
+            port.host.executive.calls,
+            [
+                ['xdpyinfo', '-display', ':99'],
+                ['Xvfb', ':99', '-screen', '0', '1280x800x24', '-ac', '-dpi', '96'],
+            ] + [['xdpyinfo']] * 51)
+        env = port.setup_environ_for_server()
+        self.assertEqual(env['DISPLAY'], ':99')
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py
index aec5831..37b0a644 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py
@@ -595,13 +595,6 @@
 
         _log.debug('')
         _log.debug('Testing completed, Exit status: %d', run_details.exit_code)
-
-        # Temporary process dump for debugging windows timeout issues, see crbug.com/522396.
-        _log.debug('')
-        _log.debug('Process dump:')
-        for process in port.host.executive.process_dump():
-            _log.debug('\t%s', process)
-
         return run_details
 
     finally:
diff --git a/third_party/WebKit/public/web/WebDataSource.h b/third_party/WebKit/public/web/WebDataSource.h
index 577d6223..da476fe 100644
--- a/third_party/WebKit/public/web/WebDataSource.h
+++ b/third_party/WebKit/public/web/WebDataSource.h
@@ -48,7 +48,7 @@
 template <typename T>
 class WebVector;
 
-class WebDataSource {
+class BLINK_EXPORT WebDataSource {
  public:
   class ExtraData {
    public:
diff --git a/third_party/WebKit/public/web/WebFrameClient.h b/third_party/WebKit/public/web/WebFrameClient.h
index 0f1458a..1a90bcb 100644
--- a/third_party/WebKit/public/web/WebFrameClient.h
+++ b/third_party/WebKit/public/web/WebFrameClient.h
@@ -609,14 +609,12 @@
                                       int world_id) {}
 
   // WebKit is about to release its reference to a v8 context for a frame.
-  virtual void WillReleaseScriptContext(WebLocalFrame*,
-                                        v8::Local<v8::Context>,
-                                        int world_id) {}
+  virtual void WillReleaseScriptContext(v8::Local<v8::Context>, int world_id) {}
 
   // Geometry notifications ----------------------------------------------
 
   // The main frame scrolled.
-  virtual void DidChangeScrollOffset(WebLocalFrame*) {}
+  virtual void DidChangeScrollOffset() {}
 
   // If the frame is loading an HTML document, this will be called to
   // notify that the <body> will be attached soon.
diff --git a/ui/message_center/views/message_center_view.cc b/ui/message_center/views/message_center_view.cc
index e3327a5..defba47 100644
--- a/ui/message_center/views/message_center_view.cc
+++ b/ui/message_center/views/message_center_view.cc
@@ -177,7 +177,7 @@
   if (is_closing_)
     return;
 
-  is_clearing_ = true;
+  is_clearing_all_notifications_ = true;
   UpdateButtonBarStatus();
   SetViewHierarchyEnabled(scroller_, false);
   message_list_view_->ClearAllClosableNotifications(
@@ -185,7 +185,7 @@
 }
 
 void MessageCenterView::OnAllNotificationsCleared() {
-  is_clearing_ = false;
+  is_clearing_all_notifications_ = false;
   SetViewHierarchyEnabled(scroller_, true);
   button_bar_->SetCloseAllButtonEnabled(false);
 
@@ -625,7 +625,7 @@
 
 void MessageCenterView::UpdateButtonBarStatus() {
   // Disables all buttons during animation of cleaning of all notifications.
-  if (is_clearing_) {
+  if (is_clearing_all_notifications_) {
     button_bar_->SetSettingsAndQuietModeButtonsEnabled(false);
     button_bar_->SetCloseAllButtonEnabled(false);
     return;
diff --git a/ui/message_center/views/message_center_view.h b/ui/message_center/views/message_center_view.h
index aebbc3f..8ff0637 100644
--- a/ui/message_center/views/message_center_view.h
+++ b/ui/message_center/views/message_center_view.h
@@ -156,7 +156,7 @@
   // ignored.
   bool is_closing_;
 
-  bool is_clearing_ = false;
+  bool is_clearing_all_notifications_ = false;
   bool is_locked_ = false;
 
   // Current view mode. During animation, it is the target mode.
diff --git a/ui/message_center/views/message_list_view.cc b/ui/message_center/views/message_list_view.cc
index bd731b7..06cce39 100644
--- a/ui/message_center/views/message_list_view.cc
+++ b/ui/message_center/views/message_list_view.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <algorithm>
+
 #include "base/command_line.h"
 #include "base/location.h"
 #include "base/single_thread_task_runner.h"
@@ -100,6 +102,20 @@
 void MessageListView::RemoveNotification(MessageView* view) {
   DCHECK_EQ(view->parent(), this);
 
+  // TODO(yhananda): We should consider consolidating clearing_all_views_,
+  // deleting_views_ and deleted_when_done_.
+  if (std::find(clearing_all_views_.begin(), clearing_all_views_.end(), view) !=
+          clearing_all_views_.end() ||
+      deleting_views_.find(view) != deleting_views_.end() ||
+      deleted_when_done_.find(view) != deleted_when_done_.end()) {
+    // Let's skip deleting the view if it's already scheduled for deleting.
+    // Even if we check clearing_all_views_ here, we actualy have no idea
+    // whether the view is due to be removed or not because it could be in its
+    // animation before removal.
+    // In short, we could delete the view twice even if we check these three
+    // lists.
+    return;
+  }
 
   if (GetContentsBounds().IsEmpty()) {
     delete view;
@@ -120,6 +136,11 @@
 
 void MessageListView::UpdateNotification(MessageView* view,
                                          const Notification& notification) {
+  // Skip updating the notification being cleared
+  if (std::find(clearing_all_views_.begin(), clearing_all_views_.end(), view) !=
+      clearing_all_views_.end())
+    return;
+
   int index = GetIndexOf(view);
   DCHECK_LE(0, index);  // GetIndexOf is negative if not a child.
 
@@ -242,6 +263,15 @@
       continue;
     if (child->IsPinned())
       continue;
+    if (deleting_views_.find(child) != deleting_views_.end() ||
+        deleted_when_done_.find(child) != deleted_when_done_.end()) {
+      // We don't check clearing_all_views_ here, so this can lead to a
+      // notification being deleted twice. Even if we do check it, there is a
+      // problem similar to the problem in RemoveNotification(), it could be
+      // currently in its animation before removal, and we could similarly
+      // delete it twice. This is a bug.
+      continue;
+    }
     clearing_all_views_.push_back(child);
   }
   if (clearing_all_views_.empty()) {
@@ -298,7 +328,9 @@
          deleting_views_.find(const_cast<views::View*>(child)) ==
              deleting_views_.end() &&
          deleted_when_done_.find(const_cast<views::View*>(child)) ==
-             deleted_when_done_.end();
+             deleted_when_done_.end() &&
+         std::find(clearing_all_views_.begin(), clearing_all_views_.end(),
+                   child) == clearing_all_views_.end();
 }
 
 void MessageListView::DoUpdateIfPossible() {
diff --git a/ui/vector_icons/BUILD.gn b/ui/vector_icons/BUILD.gn
index 9530a13..0634415 100644
--- a/ui/vector_icons/BUILD.gn
+++ b/ui/vector_icons/BUILD.gn
@@ -8,31 +8,33 @@
 aggregate_vector_icons("ui_vector_icons") {
   icon_directory = "."
 
-  icons = [
-    "back_arrow.1x.icon",
-    "back_arrow.icon",
-    "business.icon",
-    "check_circle.icon",
-    "close.1x.icon",
-    "close.icon",
-    "error_circle.icon",
-    "forward_arrow.1x.icon",
-    "forward_arrow.icon",
-    "info_outline.icon",
-    "location_on.icon",
-    "media_router_active.icon",
-    "media_router_error.icon",
-    "media_router_idle.icon",
-    "media_router_warning.icon",
-    "microphone.icon",
-    "midi.icon",
-    "notifications.icon",
-    "notifications_off.icon",
-    "protocol_handler.icon",
-    "search.icon",
-    "videocam.icon",
-    "warning.icon",
-  ]
+  icons = [ "info_outline.icon" ]
+  if (!is_android) {
+    icons += [
+      "back_arrow.1x.icon",
+      "back_arrow.icon",
+      "business.icon",
+      "check_circle.icon",
+      "close.1x.icon",
+      "close.icon",
+      "error_circle.icon",
+      "forward_arrow.1x.icon",
+      "forward_arrow.icon",
+      "location_on.icon",
+      "media_router_active.icon",
+      "media_router_error.icon",
+      "media_router_idle.icon",
+      "media_router_warning.icon",
+      "microphone.icon",
+      "midi.icon",
+      "notifications.icon",
+      "notifications_off.icon",
+      "protocol_handler.icon",
+      "search.icon",
+      "videocam.icon",
+      "warning.icon",
+    ]
+  }
 }
 
 static_library("vector_icons") {
diff --git a/ui/webui/resources/cr_elements/shared_style_css.html b/ui/webui/resources/cr_elements/shared_style_css.html
index f4157f6..0fa2270 100644
--- a/ui/webui/resources/cr_elements/shared_style_css.html
+++ b/ui/webui/resources/cr_elements/shared_style_css.html
@@ -36,7 +36,8 @@
       .action-button,
       .cancel-button {
         font-weight: 500;
-        padding: 0 16px;
+        padding-left: 16px;
+        padding-right: 16px;
       }
 
       [actionable] {