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] {